From baeeada60eba799f3ff764460bb48b3d630e6a9c Mon Sep 17 00:00:00 2001 From: asal sahami <asalsahami22@gmail.com> Date: Wed, 7 Aug 2024 19:01:31 +0200 Subject: [PATCH] Committing changes before pulling --- package.json | 6 +- src/App/App.tsx | 129 +- ....timestamp-1722421512320-2974732830fc5.mjs | 347 +++++ yarn.lock | 1141 ++++++++++------- 4 files changed, 1102 insertions(+), 521 deletions(-) create mode 100644 vite.config.js.timestamp-1722421512320-2974732830fc5.mjs diff --git a/package.json b/package.json index 6e040629..e0826e4f 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@refinedev/core": "^4.53.0", "beautiful-react-diagrams": "^0.5.1", "bootstrap": "^5.3.3", + "chart.js": "^4.4.3", "dangerously-set-html-content": "^1.1.0", "dompurify": "^3.1.5", "framer-motion": "^11.2.13", @@ -30,12 +31,13 @@ "markmap-toolbar": "^0.17.0", "react": "^18.2.0", "react-bootstrap": "^2.10.2", + "react-chartjs-2": "^5.2.0", "react-collapsed": "^4.1.2", "react-dom": "^18.2.0", "react-js-diagrams": "^3.1.3", "react-pdf": "^9.0.0", "react-photo-album": "^2.4.1", - "react-router-dom": "^6.23.0", + "react-router-dom": "^6.26.0", "react-select": "^5.8.0", "react-slick": "^0.30.2", "sass": "^1.77.6", @@ -52,7 +54,7 @@ "@types/react-slick": "^0.23.13", "@typescript-eslint/eslint-plugin": "^7.2.0", "@typescript-eslint/parser": "^7.2.0", - "@vitejs/plugin-react": "^4.2.1", + "@vitejs/plugin-react": "^4.3.1", "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.6", diff --git a/src/App/App.tsx b/src/App/App.tsx index 917e0a51..a38626cf 100644 --- a/src/App/App.tsx +++ b/src/App/App.tsx @@ -1,10 +1,10 @@ -import { useState, useEffect } from "react"; +import React, { useEffect } from "react"; import "./App.css"; -import "../contents/example.css" +import "../contents/example.css"; import "./App.scss"; import 'beautiful-react-diagrams/styles.css'; import "bootstrap/dist/css/bootstrap.min.css"; -import { Route, Routes } from "react-router-dom"; +import { Routes, Route } from "react-router-dom"; import { Footer } from "../components/Footer.tsx"; import { NotFound } from "../components/NotFound.tsx"; import { Navbar } from "../components/Navbar.tsx"; @@ -12,12 +12,10 @@ import { getPathMapping } from "../utils/getPathMapping.ts"; import { stringToSlug } from "../utils/stringToSlug.ts"; import { Villbuttonrow } from "../components/Buttons.tsx"; import "../utils/highlight.js"; -import LoadingScreen from "../components/LoadingScreen.tsx"; import "./LoadingScreen.css"; +import { Description } from "../contents/description.tsx"; const App = () => { - const [isLoading, setIsLoading] = useState(true); - const pathMapping = getPathMapping(); const currentPath = location.pathname @@ -32,69 +30,72 @@ const App = () => { document.title = `${title || ""} | ${import.meta.env.VITE_TEAM_NAME} - iGEM ${import.meta.env.VITE_TEAM_YEAR}`; }, [title]); - useEffect(() => { - const timer = setTimeout(() => { - console.log("Hiding loading screen"); - setIsLoading(false); - }, 0); // Adjust the delay as needed, Update the loading state after 3 seconds - - return () => { - console.log("Cleaning up timer"); - clearTimeout(timer); // Clear the timer on component unmount - }; - }, []); - return ( <> - {isLoading ? ( - <LoadingScreen /> - ) : ( - <> - {/* Navigation */} - <Navbar/> + {/* Navigation */} + <Navbar /> - {/* Header and PageContent */} - <Routes> - {Object.entries(pathMapping).map(([path, {header: Header, component: Component, navlist: Sidebar}]) => ( - <Route - key={path} - path={path} - element={ - <> - <Header/> - {/* Page content */} - <div className="container-fluid"> - <div className="row"> - <Sidebar/> - <div className="col"> - <Component /> - <Villbuttonrow/> - </div> - <div className="col-1 d-none d-lg-block"> - {/* <!-- empty!--> */} - </div> - </div> + {/* Header and PageContent */} + <Routes> + {Object.entries(pathMapping).map(([path, { header: Header, component: Component, navlist: Sidebar }]) => ( + <Route + key={path} + path={path} + element={ + <> + <Header /> + {/* Page content */} + <div className="container-fluid"> + <div className="row"> + <Sidebar /> + <div className="col"> + <Component /> + <Villbuttonrow /> </div> - {/* End page content */} - </> - } - /> - ))} - <Route - path="*" - element={ - <> - - <NotFound /> - </> - } - /> - </Routes> + <div className="col-1 d-none d-lg-block"> + {/* <!-- empty!--> */} + </div> + </div> + </div> + {/* End page content */} + </> + } + /> + ))} + {/* Add a route for the Description component */} + <Route + path="/description" + element={ + <> + {/* Page content */} + <div className="container-fluid"> + <div className="row"> + <div className="col"> + + <Description /> + <Villbuttonrow /> + </div> + <div className="col-1 d-none d-lg-block"> + {/* <!-- empty!--> */} + </div> + </div> + </div> + </> + } + /> + + <Route + path="*" + element={ + <> + <NotFound /> + </> + } + /> + </Routes> - {/* Footer */} - <Footer /> - </> - )} + {/* Footer */} + <Footer /> </> ); }; diff --git a/vite.config.js.timestamp-1722421512320-2974732830fc5.mjs b/vite.config.js.timestamp-1722421512320-2974732830fc5.mjs new file mode 100644 index 00000000..fb4971ed --- /dev/null +++ b/vite.config.js.timestamp-1722421512320-2974732830fc5.mjs @@ -0,0 +1,347 @@ +// vite.config.js +import { defineConfig, loadEnv } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/vite/dist/node/index.js"; +import react from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/@vitejs/plugin-react/dist/index.mjs"; + +// src/contents/Home.tsx +import { Fragment, jsx, jsxs } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/team.tsx +import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/attributions.tsx +import { useEffect } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js"; +import { Fragment as Fragment3, jsx as jsx3, jsxs as jsxs3 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/contribution.tsx +import { Fragment as Fragment4, jsx as jsx4 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/headings.tsx +import { jsx as jsx5, jsxs as jsxs4 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/Shapes.tsx +import { jsx as jsx6 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/description.tsx +import { jsx as jsx7, jsxs as jsxs5 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/Sidebar.tsx +import { useEffect as useEffect2 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js"; +import { jsx as jsx8 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/sidebars/descS.tsx +import { jsx as jsx9 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/engineering.tsx +import { Fragment as Fragment5, jsx as jsx10 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/experiments.tsx +import { Fragment as Fragment6, jsx as jsx11 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/notebook.tsx +import { Fragment as Fragment7, jsx as jsx12 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/results.tsx +import { Fragment as Fragment8, jsx as jsx13, jsxs as jsxs6 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/safety.tsx +import { Fragment as Fragment9, jsx as jsx14, jsxs as jsxs7 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/Buttons.tsx +import { Link } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react-router-dom/dist/main.js"; +import { Fragment as Fragment10, jsx as jsx15, jsxs as jsxs8 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/HorizontalTimeline.tsx +import { jsx as jsx16, jsxs as jsxs9 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/Tabs.tsx +import { jsx as jsx17 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/Quotes.tsx +import { jsx as jsx18, jsxs as jsxs10 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/human-practices.tsx +import { Box, Tab } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/@mui/material/node/index.js"; +import { TabContext, TabList, TabPanel } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/@mui/lab/node/index.js"; +import React from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js"; +import { Fragment as Fragment11, jsx as jsx19, jsxs as jsxs11 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; +{ +} + +// src/sidebars/hpS.tsx +import { jsx as jsx20 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/My-Timeline.tsx +import { Fragment as Fragment12, jsx as jsx21, jsxs as jsxs12 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/photo-grid.tsx +import { jsx as jsx22 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/pdfs.tsx +import { jsx as jsx23, jsxs as jsxs13 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/Bfh.tsx +import { Fragment as Fragment13, jsx as jsx24, jsxs as jsxs14 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/wiki.tsx +import { Box as Box2, Tab as Tab2 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/@mui/material/node/index.js"; +import { TabContext as TabContext2, TabList as TabList2, TabPanel as TabPanel2 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/@mui/lab/node/index.js"; +import React3 from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js"; + +// src/components/Collapsible.tsx +import { useState } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js"; +import { Fragment as Fragment14, jsx as jsx25, jsxs as jsxs15 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/Filter.tsx +import Select from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react-select/dist/react-select.cjs.mjs"; +import React2 from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js"; +import { jsx as jsx26 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; +var wikioptions = [ + { value: "all", label: "Show all" }, + { value: "react", label: "React" }, + { value: "type", label: "Types" }, + { value: "property", label: "Properties" }, + { value: "pipeline", label: "GitLab Pipeline" }, + { value: "html", label: "HTML" }, + { value: "css", label: "CSS" } +]; +function filterMultiSelection(arr) { + let nono = document.getElementById("nono"); + nono.className = "noshow"; + var x, i; + x = document.getElementsByClassName("filterable"); + for (i = 0; i < x.length; i++) { + let el = x[i]; + w3RemoveClass(el, "show"); + } + let shownum = 0; + let boo = true; + for (i = 0; i < x.length; i++) { + arr.forEach((entry) => { + if (x[i].className.indexOf(entry.value) <= -1) { + boo = false; + } else { + if (!x[i].classList.contains(entry.value)) { + boo = false; + } + } + }); + if (boo) { + w3AddClass(x[i], "show"); + shownum++; + } + } + let y = document.getElementsByClassName("show").length; + if (y < 1) { + console.log(y); + nono.className = "show"; + } +} +function w3AddClass(element, name) { + var i, arr1, arr2; + arr1 = element.className.split(" "); + arr2 = name.split(" "); + for (i = 0; i < arr2.length; i++) { + if (arr1.indexOf(arr2[i]) == -1) { + element.className += " " + arr2[i]; + } + } +} +function w3RemoveClass(element, name) { + var i, arr1, arr2; + arr1 = element.className.split(" "); + arr2 = name.split(" "); + for (i = 0; i < arr2.length; i++) { + while (arr1.indexOf(arr2[i]) > -1) { + arr1.splice(arr1.indexOf(arr2[i]), 1); + } + } + element.className = arr1.join(" "); +} +var WikiAction = class extends React2.Component { + state = { + selectedOption: null + }; + handleChange = (selectedOption) => { + this.setState( + { selectedOption }, + () => console.log(`Option selected:`, this.state.selectedOption) + ); + filterMultiSelection(selectedOption); + }; + render() { + const { selectedOption } = this.state; + return /* @__PURE__ */ jsx26( + Select, + { + value: selectedOption, + onChange: this.handleChange, + isMulti: true, + options: wikioptions, + defaultValue: [wikioptions[0]], + className: "basic-multi-select", + classNamePrefix: "select" + } + ); + } +}; + +// src/contents/code.tsx +import { jsx as jsx27 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/wiki.tsx +import { Fragment as Fragment15, jsx as jsx28, jsxs as jsxs16 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/drylab.tsx +import { Fragment as Fragment16, jsx as jsx29, jsxs as jsxs17 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/impressum.tsx +import { Fragment as Fragment17, jsx as jsx30, jsxs as jsxs18 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/measurement.tsx +import { Fragment as Fragment18, jsx as jsx31, jsxs as jsxs19 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/partners.tsx +import { Fragment as Fragment19, jsx as jsx32, jsxs as jsxs20 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/supplementary-material.tsx +import { Fragment as Fragment20, jsx as jsx33, jsxs as jsxs21 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/interviews.tsx +import { Fragment as Fragment21, jsx as jsx34 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/bhf-h.tsx +import { Fragment as Fragment22, jsx as jsx35, jsxs as jsxs22 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/header-box.tsx +import { Fragment as Fragment23, jsx as jsx36, jsxs as jsxs23 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/attribution-h.tsx +import { jsx as jsx37 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/cont-h.tsx +import { jsx as jsx38 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/desc-h.tsx +import { jsx as jsx39 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/home-h.tsx +import { jsx as jsx40 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/exp-h.tsx +import { jsx as jsx41 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/hp-h.tsx +import { jsx as jsx42 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/imp-h.tsx +import { jsx as jsx43 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/note-h.tsx +import { jsx as jsx44 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/res-h.tsx +import { jsx as jsx45 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/safe-h.tsx +import { jsx as jsx46 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/team-h.tsx +import { jsx as jsx47 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/wiki-h.tsx +import { jsx as jsx48 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/ints-h.tsx +import { jsx as jsx49 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/spons-h.tsx +import { jsx as jsx50 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/dry-h.tsx +import { jsx as jsx51 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/eng-h.tsx +import { jsx as jsx52 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/sup-h.tsx +import { jsx as jsx53 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/mes-h.tsx +import { jsx as jsx54 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/parts.tsx +import { Fragment as Fragment24, jsx as jsx55, jsxs as jsxs24 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/part-h.tsx +import { jsx as jsx56 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/proof.tsx +import { Fragment as Fragment25, jsx as jsx57 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/proof-h.tsx +import { jsx as jsx58 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/design.tsx +import { Fragment as Fragment26, jsx as jsx59 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/des-h.tsx +import { jsx as jsx60 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/judging.tsx +import { Fragment as Fragment27, jsx as jsx61, jsxs as jsxs25 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/judge-h.tsx +import { jsx as jsx62 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/ethics.tsx +import { Fragment as Fragment28, jsx as jsx63 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/headers/eth-h.tsx +import { jsx as jsx64 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/components/slider.tsx +import Slider from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react-slick/lib/index.js"; +import { Fragment as Fragment29, jsx as jsx65 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/contents/example.tsx +import { Fragment as Fragment30, jsx as jsx66, jsxs as jsxs26 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/sidebars/none.tsx +import { jsx as jsx67 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/jsx-runtime.js"; + +// src/utils/stringToSlug.ts +function stringToSlug(string) { + let slug = String(string).toLowerCase(); + slug = slug.replace(/[^a-z0-9-]/g, "-"); + slug = slug.replace(/-+/g, "-"); + const start = slug.search(/[^-]/); + const end = slug.search(/-+$/); + return slug.substring(start, end === -1 ? void 0 : end); +} + +// src/utils/useScript.ts +import { useEffect as useEffect3 } from "file:///Users/sahamiasad/wiki.css/bielefeld-cebitec/node_modules/react/index.js"; + +// vite.config.js +var vite_config_default = () => { + const env = loadEnv("dev", process.cwd()); + if (!env.VITE_TEAM_NAME) { + throw new Error("VITE_TEAM_NAME environment variable is not defined"); + } + console.log(`VITE_TEAM_NAME: ${env.VITE_TEAM_NAME}`); + const baseSlug = stringToSlug(env.VITE_TEAM_NAME); + console.log("VITE_TEAM_NAME:", env.VITE_TEAM_NAME); + console.log("Base Slug:", baseSlug); + return defineConfig({ + base: `/${stringToSlug(env.VITE_TEAM_NAME)}/`, + plugins: [react()], + build: { + outDir: "dist" + }, + publicDir: "pubpub" + }); +}; +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiLCAic3JjL2NvbnRlbnRzL0hvbWUudHN4IiwgInNyYy9jb250ZW50cy90ZWFtLnRzeCIsICJzcmMvY29udGVudHMvYXR0cmlidXRpb25zLnRzeCIsICJzcmMvY29udGVudHMvY29udHJpYnV0aW9uLnRzeCIsICJzcmMvY29tcG9uZW50cy9oZWFkaW5ncy50c3giLCAic3JjL2NvbXBvbmVudHMvU2hhcGVzLnRzeCIsICJzcmMvY29udGVudHMvZGVzY3JpcHRpb24udHN4IiwgInNyYy9jb21wb25lbnRzL1NpZGViYXIudHN4IiwgInNyYy9zaWRlYmFycy9kZXNjUy50c3giLCAic3JjL2NvbnRlbnRzL2VuZ2luZWVyaW5nLnRzeCIsICJzcmMvY29udGVudHMvZXhwZXJpbWVudHMudHN4IiwgInNyYy9jb250ZW50cy9ub3RlYm9vay50c3giLCAic3JjL2NvbnRlbnRzL3Jlc3VsdHMudHN4IiwgInNyYy9jb250ZW50cy9zYWZldHkudHN4IiwgInNyYy9jb21wb25lbnRzL0J1dHRvbnMudHN4IiwgInNyYy9jb21wb25lbnRzL0hvcml6b250YWxUaW1lbGluZS50c3giLCAic3JjL2NvbXBvbmVudHMvVGFicy50c3giLCAic3JjL2NvbXBvbmVudHMvUXVvdGVzLnRzeCIsICJzcmMvY29udGVudHMvaHVtYW4tcHJhY3RpY2VzLnRzeCIsICJzcmMvc2lkZWJhcnMvaHBTLnRzeCIsICJzcmMvY29tcG9uZW50cy9NeS1UaW1lbGluZS50c3giLCAic3JjL2NvbXBvbmVudHMvcGhvdG8tZ3JpZC50c3giLCAic3JjL2NvbXBvbmVudHMvcGRmcy50c3giLCAic3JjL2NvbnRlbnRzL0JmaC50c3giLCAic3JjL2NvbnRlbnRzL3dpa2kudHN4IiwgInNyYy9jb21wb25lbnRzL0NvbGxhcHNpYmxlLnRzeCIsICJzcmMvY29tcG9uZW50cy9GaWx0ZXIudHN4IiwgInNyYy9jb250ZW50cy9jb2RlLnRzeCIsICJzcmMvY29udGVudHMvZHJ5bGFiLnRzeCIsICJzcmMvY29udGVudHMvaW1wcmVzc3VtLnRzeCIsICJzcmMvY29udGVudHMvbWVhc3VyZW1lbnQudHN4IiwgInNyYy9jb250ZW50cy9wYXJ0bmVycy50c3giLCAic3JjL2NvbnRlbnRzL3N1cHBsZW1lbnRhcnktbWF0ZXJpYWwudHN4IiwgInNyYy9jb250ZW50cy9pbnRlcnZpZXdzLnRzeCIsICJzcmMvaGVhZGVycy9iaGYtaC50c3giLCAic3JjL2NvbXBvbmVudHMvaGVhZGVyLWJveC50c3giLCAic3JjL2hlYWRlcnMvYXR0cmlidXRpb24taC50c3giLCAic3JjL2hlYWRlcnMvY29udC1oLnRzeCIsICJzcmMvaGVhZGVycy9kZXNjLWgudHN4IiwgInNyYy9oZWFkZXJzL2hvbWUtaC50c3giLCAic3JjL2hlYWRlcnMvZXhwLWgudHN4IiwgInNyYy9oZWFkZXJzL2hwLWgudHN4IiwgInNyYy9oZWFkZXJzL2ltcC1oLnRzeCIsICJzcmMvaGVhZGVycy9ub3RlLWgudHN4IiwgInNyYy9oZWFkZXJzL3Jlcy1oLnRzeCIsICJzcmMvaGVhZGVycy9zYWZlLWgudHN4IiwgInNyYy9oZWFkZXJzL3RlYW0taC50c3giLCAic3JjL2hlYWRlcnMvd2lraS1oLnRzeCIsICJzcmMvaGVhZGVycy9pbnRzLWgudHN4IiwgInNyYy9oZWFkZXJzL3Nwb25zLWgudHN4IiwgInNyYy9oZWFkZXJzL2RyeS1oLnRzeCIsICJzcmMvaGVhZGVycy9lbmctaC50c3giLCAic3JjL2hlYWRlcnMvc3VwLWgudHN4IiwgInNyYy9oZWFkZXJzL21lcy1oLnRzeCIsICJzcmMvY29udGVudHMvcGFydHMudHN4IiwgInNyYy9oZWFkZXJzL3BhcnQtaC50c3giLCAic3JjL2NvbnRlbnRzL3Byb29mLnRzeCIsICJzcmMvaGVhZGVycy9wcm9vZi1oLnRzeCIsICJzcmMvY29udGVudHMvZGVzaWduLnRzeCIsICJzcmMvaGVhZGVycy9kZXMtaC50c3giLCAic3JjL2NvbnRlbnRzL2p1ZGdpbmcudHN4IiwgInNyYy9oZWFkZXJzL2p1ZGdlLWgudHN4IiwgInNyYy9jb250ZW50cy9ldGhpY3MudHN4IiwgInNyYy9oZWFkZXJzL2V0aC1oLnRzeCIsICJzcmMvY29tcG9uZW50cy9zbGlkZXIudHN4IiwgInNyYy9jb250ZW50cy9leGFtcGxlLnRzeCIsICJzcmMvc2lkZWJhcnMvbm9uZS50c3giLCAic3JjL3V0aWxzL3N0cmluZ1RvU2x1Zy50cyIsICJzcmMvdXRpbHMvdXNlU2NyaXB0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3NhaGFtaWFzYWQvd2lraS5jc3MvYmllbGVmZWxkLWNlYml0ZWNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9zYWhhbWlhc2FkL3dpa2kuY3NzL2JpZWxlZmVsZC1jZWJpdGVjL3ZpdGUuY29uZmlnLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9zYWhhbWlhc2FkL3dpa2kuY3NzL2JpZWxlZmVsZC1jZWJpdGVjL3ZpdGUuY29uZmlnLmpzXCI7aW1wb3J0IHsgZGVmaW5lQ29uZmlnLCBsb2FkRW52IH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCByZWFjdCBmcm9tIFwiQHZpdGVqcy9wbHVnaW4tcmVhY3RcIjtcbmltcG9ydCB7IHN0cmluZ1RvU2x1ZyB9IGZyb20gXCIuL3NyYy91dGlsc1wiO1xuXG4vLyBodHRwczovL3ZpdGVqcy5kZXYvY29uZmlnL1xuZXhwb3J0IGRlZmF1bHQgKCkgPT4ge1xuICBjb25zdCBlbnYgPSBsb2FkRW52KFwiZGV2XCIsIHByb2Nlc3MuY3dkKCkpO1xuICAgIC8vIFNpY2hlcnN0ZWxsZW4sIGRhc3MgZGllIFVtZ2VidW5nc3ZhcmlhYmxlIHZvcmhhbmRlbiBpc3RcbiAgaWYgKCFlbnYuVklURV9URUFNX05BTUUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJWSVRFX1RFQU1fTkFNRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZGVmaW5lZFwiKTtcbiAgfVxuICAvLyBEZWJ1Z2dpbmctTG9nLCB1bSBkZW4gV2VydCBkZXIgVW1nZWJ1bmdzdmFyaWFibGUgenUgXHUwMEZDYmVycHJcdTAwRkNmZW5cbiAgY29uc29sZS5sb2coYFZJVEVfVEVBTV9OQU1FOiAke2Vudi5WSVRFX1RFQU1fTkFNRX1gKTtcblxuXG4gIGNvbnN0IGJhc2VTbHVnID0gc3RyaW5nVG9TbHVnKGVudi5WSVRFX1RFQU1fTkFNRSk7XG5cbiAgY29uc29sZS5sb2coXCJWSVRFX1RFQU1fTkFNRTpcIiwgZW52LlZJVEVfVEVBTV9OQU1FKTsgLy8gRGVidWdnaW5nLUF1c2dhYmVcbiAgY29uc29sZS5sb2coXCJCYXNlIFNsdWc6XCIsIGJhc2VTbHVnKTsgLy8gRGVidWdnaW5nLUF1c2dhYmVcbiAgXG4gIHJldHVybiBkZWZpbmVDb25maWcoe1xuICAgIGJhc2U6IGAvJHtzdHJpbmdUb1NsdWcoZW52LlZJVEVfVEVBTV9OQU1FKX0vYCxcbiAgICBwbHVnaW5zOiBbcmVhY3QoKV0sXG4gICAgYnVpbGQ6IHtcbiAgICAgIG91dERpcjogXCJkaXN0XCIsXG4gICAgfSxcbiAgICBwdWJsaWNEaXI6ICdwdWJwdWInLFxuICB9KTtcbiAgXG59O1xuIiwgIlxuZXhwb3J0IGZ1bmN0aW9uIEhvbWUoKSB7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICA8aDI+V2lraSB1bmRlciBjb25zdHJ1Y3Rpb24hPC9oMj5cbiAgICAgICAgICA8aHIvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICBcbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuIiwgIlxuXG5leHBvcnQgZnVuY3Rpb24gVGVhbSgpIHtcbiAgXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgPFN0ZWNrYnJpZWYgdXJsPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIj4gIyA8L1N0ZWNrYnJpZWY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgIDxTdGVja2JyaWVmIHVybD1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCI+ICMgPC9TdGVja2JyaWVmPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgPFN0ZWNrYnJpZWYgdXJsPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIj4gIyA8L1N0ZWNrYnJpZWY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBjZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICA8U3RlY2ticmllZiB1cmw9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiPiAjIDwvU3RlY2ticmllZj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgPFN0ZWNrYnJpZWYgdXJsPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIj4gIyA8L1N0ZWNrYnJpZWY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICA8U3RlY2ticmllZiB1cmw9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiPiAjIDwvU3RlY2ticmllZj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuXG5pbnRlcmZhY2UgU3RlY2tQcm9wc3tcbiAgbmFtZT86IHN0cmluZzsgXG4gIHVybDogc3RyaW5nOyBcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTsgXG5cbn1cblxuZnVuY3Rpb24gU3RlY2ticmllZih7Y2hpbGRyZW4sIHVybH06IFN0ZWNrUHJvcHMpe1xuICByZXR1cm4oXG4gICAgPD5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImxucCBjZW50ZXJcIj5cbiAgICA8aW1nIHNyYz17dXJsfSBjbGFzc05hbWU9XCJpbWctcm91bmRcIj48L2ltZz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNlbnRlclwiPlxuICAgICAgPHA+SGk8L3A+XG4gICAgPC9kaXY+XG4gICAge2NoaWxkcmVufVxuICAgIDwvPlxuICApXG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBBdHRyaWJ1dGlvbnMoKSB7XG4gIGNvbnN0IHRlYW1JRCA9IGltcG9ydC5tZXRhLmVudi5WSVRFX1RFQU1fSUQ7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBsaXN0ZW5Ub0lmcmFtZUhlaWdodChlOiBNZXNzYWdlRXZlbnQpIHtcbiAgICAgIGlmIChlLm9yaWdpbiA9PT0gXCJodHRwczovL3RlYW1zLmlnZW0ub3JnXCIpIHtcbiAgICAgICAgY29uc3QgeyB0eXBlLCBkYXRhIH0gPSBKU09OLnBhcnNlKGUuZGF0YSk7XG4gICAgICAgIGlmICh0eXBlID09PSBcImlnZW0tYXR0cmlidXRpb24tZm9ybVwiKSB7XG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaWdlbS1hdHRyaWJ1dGlvbi1mb3JtXCIpO1xuICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2RhdGEgKyAxMDB9cHhgO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbGlzdGVuVG9JZnJhbWVIZWlnaHQpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbGlzdGVuVG9JZnJhbWVIZWlnaHQpO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpZnJhbWVcbiAgICAgICAgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiIH19XG4gICAgICAgIGlkPVwiaWdlbS1hdHRyaWJ1dGlvbi1mb3JtXCJcbiAgICAgICAgc3JjPXtgaHR0cHM6Ly90ZWFtcy5pZ2VtLm9yZy93aWtpLyR7dGVhbUlEfS9hdHRyaWJ1dGlvbnNgfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gQ29udHJpYnV0aW9uKCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiXG5leHBvcnQgZnVuY3Rpb24gSGhvcHAoe3RleHR9Ont0ZXh0OiBzdHJpbmd9KXtcbiAgICBjb25zdCBhcnIgPSBbXTsgXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHggPSB0ZXh0LmNoYXJBdChpKTsgXG4gICAgICAgIGFyci5wdXNoKDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt4fTwvc3Bhbj4pXG4gICAgfVxuICAgIHJldHVybihcbiAgICAgICAgPGgxIGNsYXNzTmFtZT1cInBsYXlmdWxcIiBhcmlhLWxhYmVsPVwiV2FzaCB5b3VyIGhhbmRzXCI+XG4gICAgICAgICAgICB7YXJyfSAgICAgICAgXG4gICAgICAgIDwvaDE+XG4gICAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSHNtb2tlKHt0ZXh0fTp7dGV4dDogc3RyaW5nfSl7XG4gICAgY29uc3QgYXJyID0gW107IFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB4ID0gdGV4dC5jaGFyQXQoaSk7IFxuICAgICAgICBhcnIucHVzaCg8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eH08L3NwYW4+KVxuICAgIH1cbiAgICByZXR1cm4oXG4gICAgICAgIDxoMSBjbGFzc05hbWU9XCJzbW9rZVwiIGFyaWEtbGFiZWw9XCJXYXNoIHlvdXIgaGFuZHNcIj5cbiAgICAgICAgICAgIHthcnJ9ICAgICAgICBcbiAgICAgICAgPC9oMT5cbiAgICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIMSh7dGV4dH06e3RleHQ6IHN0cmluZ30pe1xuICAgIHJldHVybihcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBob25lXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiPlxuICAgICAgICA8dGV4dCB4PVwiMCVcIiB5PVwiNjAlXCI+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgICA8L3RleHQ+XG4gICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgKVxufVxuXG4vKiBleHBvcnQgZnVuY3Rpb24gSHByb21wdCh7dGV4dH06e3RleHQ6IHN0cmluZ30pe1xuICAgIHJldHVybihcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMj57dGV4dH08L2gyPlxuICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEgyKHt0ZXh0fTp7dGV4dDogc3RyaW5nfSl7XG4gICAgcmV0dXJuKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgyPnt0ZXh0fTwvaDI+XG4gICAgICAgICAgICA8aHIvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGhpZ2hsaWdodCh7Y2hpbGRyZW59OntjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlfSl7XG4gICAgcmV0dXJuKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGVudCB2MlwiPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICAgKVxufVxuZXhwb3J0IGZ1bmN0aW9uIEhzcG9pbGVyKHtjaGlsZHJlbn06e2NoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGV9KXtcbiAgICByZXR1cm4oXG4gICAgPGRpdiBjbGFzc05hbWU9XCJjb250ZW50IHYzXCI+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBId2F2ZSh7dGV4dH06e3RleHQ6IHN0cmluZ30pe1xuICAgIHJldHVybihcbiAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDEwMCAyMFwiPlxuICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cImdyYWRpZW50XCIgeDE9XCIwXCIgeDI9XCIwXCIgeTE9XCIwXCIgeTI9XCIxXCI+XG4gICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCI1JVwiIHN0b3AtY29sb3I9XCIjODUwRjc4XCIvPlxuICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiOTUlXCIgc3RvcC1jb2xvcj1cIiNBMEE3RjNcIi8+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgPHBhdHRlcm4gaWQ9XCJ3YXZlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMTIwXCIgaGVpZ2h0PVwiMjBcIiBwYXR0ZXJuVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxuICAgICAgICAgICAgPHBhdGggaWQ9XCJ3YXZlUGF0aFwiIGQ9XCJNLTQwIDkgUS0zMCA3IC0yMCA5IFQwIDkgVDIwIDkgVDQwIDkgVDYwIDkgVDgwIDkgVDEwMCA5IFQxMjAgOSBWMjAgSC00MHpcIiBtYXNrPVwidXJsKCNtYXNrKVwiIGZpbGw9XCJ1cmwoI2dyYWRpZW50KVwiPiBcbiAgICAgICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybVxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgYmVnaW49XCIwc1wiXG4gICAgICAgICAgICAgICAgICAgIGR1cj1cIjEuNXNcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgZnJvbT1cIjAsMFwiXG4gICAgICAgICAgICAgICAgICAgIHRvPVwiNDAsMFwiXG4gICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiIC8+XG4gICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICA8L3BhdHRlcm4+XG4gICAgICAgIDwvZGVmcz5cbiAgICAgICAgPHRleHQgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiB4PVwiNTBcIiB5PVwiMTVcIiBmb250LXNpemU9XCIxN1wiIGZpbGw9XCJ1cmwoI3dhdmUpXCIgIGZpbGwtb3BhY2l0eT1cIjAuNlwiPnt0ZXh0fTwvdGV4dD5cbiAgICAgICAgPHRleHQgdGV4dC1hbmNob3I9XCJtaWRkbGVcIiB4PVwiNTBcIiB5PVwiMTVcIiBmb250LXNpemU9XCIxN1wiIGZpbGw9XCJ1cmwoI2dyYWRpZW50KVwiIGZpbGwtb3BhY2l0eT1cIjAuMVwiPnt0ZXh0fTwvdGV4dD5cbiAgICAgICAgPC9zdmc+XG4gICAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSHBvcGFydCh7dGV4dH06e3RleHQ6IHN0cmluZ30pe1xucmV0dXJuKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBwb3BhcnRcIj5cbiAgICAgICAgICAgIHt0ZXh0fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhzaGFkb25lKHt0ZXh0fTp7dGV4dDogc3RyaW5nfSl7XG4gICAgcmV0dXJuKFxuICAgIDxkaXY+XG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInN0cm9rZSBzaGFkb3ctc3Ryb2tlXCI+e3RleHR9PC9wPlxuICAgIDwvZGl2PlxuICAgIClcbn1cbmV4cG9ydCBkZWZhdWx0IEgxOyIsICJcblxuZXhwb3J0IGZ1bmN0aW9uIENpcmNsZSh7dGV4dH06e3RleHQ6IHN0cmluZ30pe1xuICAgIHJldHVybihcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wgY2lyY2xlXCI+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJzaGFwZS10ZXh0XCI+e3RleHR9PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59IiwgImltcG9ydCB7IEgyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGluZ3NcIjtcbmltcG9ydCB7IENpcmNsZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL1NoYXBlc1wiO1xuLyogaW1wb3J0ICB7TGluZUNoYXJ0fSBmcm9tICdAbXVpL3gtY2hhcnRzL0xpbmVDaGFydCc7ICovXG4vKiBpbXBvcnQgXCIuLi91dGlscy90ZXh0LmpzXCI7ICovXG4vKiBpbXBvcnQgeyBDb2xsYXBzaWJsZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL0NvbGxhcHNpYmxlXCI7XG5pbXBvcnQgeyBCdXR0b25Sb3dUYWJzIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGFic1wiO1xuaW1wb3J0IHtUYWJCdXR0b25Sb3d9IGZyb20gXCIuLi9jb21wb25lbnRzL0J1dHRvbnNcIjsgKi9cbi8qIGltcG9ydCB7IEluZm9Cb3ggfSBmcm9tIFwiLi4vY29tcG9uZW50cy9Cb3hlc1wiOyAgKi9cblxuZXhwb3J0IGZ1bmN0aW9uIERlc2NyaXB0aW9uKCkgeyBcbiAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IG10LTRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICA8ZGl2ICBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGlkPVwiQWJzdHJhY3RcIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPEgyIHRleHQ9XCJBYnN0cmFjdFwiLz5cbiAgICAgICAgICAgICAgICA8cD5XZSBhcmUgcHJvdWQgdG8gaW50cm9kdWNlIG91ciBuZXh0LWdlbmVyYXRpb24gcHJpbWUgZWRpdGluZyB0ZWNobm9sb2d5IDxhIGhyZWY9XCIjXCIgY2xhc3NOYW1lPVwidW5kZXJsaW5lLS1tYWdpY2FsXCI+UHJlQ3lzZTwvYT4uIFdlIGFpbSB0byBkZXZlbG9wIGFuIGlubm92YXRpdmUgZ2VuZSB0aGVyYXB5IGFnYWluc3QgY3lzdGljIGZpYnJvc2lzLCB0YWNrbGluZyB0aGUgbW9zdCBjb21tb24gbXV0YXRpb24gXHUwMzk0RjUwOCBvZiB0aGUgQ0ZUUiAoQ3lzdGljIEZpYnJvc2lzIFRyYW5zbWVtYnJhbmUgQ29uZHVjdGFuY2UgUmVndWxhdG9yKSBnZW5lLiBXZSBvcHRpbWl6ZSBsaXBpZCBuYW5vcGFydGljbGVzIGZvciB0aGUgZWZmaWNpZW50IGFuZCBjZWxsLXNwZWNpZmljIGRlbGl2ZXJ5IG9mIG91ciB0aGVyYXBldXRpYyBtUk5BLiBDdXJyZW50IHRyZWF0bWVudCBzdHJhdGVnaWVzIGFyZSBsaW1pdGVkIGluIHRlcm1zIG9mIHNwZWVkLCBwcmVjaXNpb24gYW5kIGVmZmVjdGl2ZW5lc3MsIG9mdGVuIGZhaWxpbmcgdG8gYWNoaWV2ZSBsb25nLWxhc3RpbmcgaW1wcm92ZW1lbnRzLiBJbiBhZGRpdGlvbiwgaGlnaCBjb3N0cyBhbmQgbGltaXRlZCBhY2Nlc3NpYmlsaXR5IG9mIHBoYXJtYWNldXRpY2FscyBjb250cmlidXRlIHRvIGFkdmVyc2UgcHJvZ25vc2lzIG9mIG1hbnkgcGF0aWVudHMuIFdlIHdhbnQgdG8gZGV2ZWxvcCBhIG1vbnRobHkgYXBwbGllZCB3aGljaCByZXByZXNlbnRzIGEgY3VyZSB0aGF0IGlzIG1vcmUgYWR2YW5jZWQgYW5kIHVzZXItZnJpZW5kbHkgY29tcGFyZWQgdG8gb3RoZXIgbWVkaWNhdGlvbnMgZHVlIHRvIGl0cyBsb25nZXIgbGFzdGluZyB0aW1lLCBsb3dlcmluZyB0aGUgZnJlcXVlbmN5IG9mIHVzZS4gPC9wPlxuICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8L2Rpdj4gXG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgPHNlY3Rpb24gaWQ9XCJDeXN0aWMgRmlicm9zaXNcIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPEgyIHRleHQ9XCJDeXN0aWMgRmlicm9zaXNcIi8+XG4gICAgICAgICAgICAgICAgey8qIDxoMz5HZW5lcmFsPC9oMz4gKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBkYXRhLWFvcz1cInpvb20teS1vdXRcIiA+Q3lzdGljIGZpYnJvc2lzIChDRikgaXMgdGhlIG1vc3QgY29tbW9uIGxpZmUtbGltaXRpbmcgZ2VuZXRpYyBkaXNvcmRlciBpbiB0aGUgQ2F1Y2FzaWFuIHBvcHVsYXRpb24uIEluIEV1cm9wZSwgQ0YgYWZmZWN0aW5nIGFib3V0IDEgaW4gMywwMDAgbmV3Ym9ybnM8YSBocmVmPVwiI2Rlc2Mtb25lXCI+PHN1cD4xPC9zdXA+PC9hPi48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD4gSXQgaXMgY2F1c2VkIGJ5IG11dGF0aW9ucyBpbiB0aGUgQ0ZUUiBnZW5lLCB3aGljaCBjb250cm9scyBpb25zIGFuZCB3YXRlciBtb3ZlbWVudCBpbiBjZWxscy4gVGhpcyBsZWFkcyB0byB0aGljayBtdWN1cywgY2xvZ2dpbmcgYWlyd2F5cywgYW5kIGZyZXF1ZW50IGluZmVjdGlvbnMuIFRoZSBkZWZlY3RpdmUgQ0ZUUiBwcm90ZWluIGltcGFjdHMgdGhlIHJlc3BpcmF0b3J5IGFuZCBkaWdlc3RpdmUgc3lzdGVtcywgY2F1c2luZyBjaHJvbmljIGx1bmcgaW5mZWN0aW9ucywgYnJlYXRoaW5nIGRpZmZpY3VsdGllcywgYW5kIG1hbG51dHJpdGlvbi4gQ0YncyBzZXZlcml0eSB2YXJpZXMsIGJ1dCBpdCByZWR1Y2VzIGxpZmUgcXVhbGl0eSBhbmQgZXhwZWN0YW5jeS4gVGhlcmUgYXJlIG92ZXIgMSw3MDAgQ0ZUUiBtdXRhdGlvbnM7IHRoZSBcdTAzOTRGNTA4IG11dGF0aW9uIGlzIG1vc3QgY29tbW9uLCBwcmVzZW50IGluIDcwJSBvZiBjYXNlcy4gSXQgcHJldmVudHMgcHJvcGVyIHByb3RlaW4gZm9sZGluZywgYWZmZWN0aW5nIGl0cyBmdW5jdGlvbi4gPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMiBcIj4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPENpcmNsZSB0ZXh0PVwiMTozMDAwIG5ld2Jvcm5zIHdvcmxkd2lkZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2lyY2xlIHRleHQ9XCJ4OnkgbmV3Ym9ybnMgaW4gR2VybWFueVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2lyY2xlIHRleHQ9XCJrb3N0ZW5cIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7LyogPExpbmVDaGFydFxuICAgICAgICAgICAgICAgICAgICB4QXhpcz17W3sgZGF0YTogWzEsIDIsIDMsIDUsIDgsIDEwXSB9XX1cbiAgICAgICAgICAgICAgICAgICAgc2VyaWVzPXtbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBbMiwgNS41LCAyLCA4LjUsIDEuNSwgNV0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD17NTAwfVxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezMwMH1cbiAgICAgICAgICAgICAgICAgICAgLz4gKi99XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICB7LyogIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvY2hhcnRzLW1hcHMvY2ZwZXIxMC0wMDAucG5nXCI+PC9pbWc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGgzPkNGVFI8L2gzPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0yIFwiPiBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIi8+IFxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgIDxwPlRleHQgYWJvdXQgQ0ZUUjwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9jaGFydHMtbWFwcy9jZnBlcjEwLTAwMC5wbmdcIi8+XG4gICAgICAgICAgICAgICAgPGgzPlN5bXB0b21zPC9oMz5cbiAgICAgICAgICAgICAgICA8cD5UZXh0IGFib3V0IHN5bXB0b21zPC9wPlxuICAgICAgICAgICAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIkhvdyB0aGUgc3ltcHRvbXMgYWZmZWN0IGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgYm9keVwiID48L0NvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICAgIDxoMz5EaWFnbm9zaXM8L2gzPlxuICAgICAgICAgICAgICAgIDxwPkFib3V0IHRoZSB3YXlzIG9uZSBjYW4gYmUgZGlhZ25vc2VkPC9wPiBcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICBIb3cgbmV3Ym9ybnNjcmVlbmluZyBhZmZlY3RlZCB0aGUgbnVtYmVycy5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+Ki99IFxuICAgICAgICAgICAgICAgey8qICA8aDM+VHJlYXRtZW50PC9oMz4gICovfSBcbiAgICAgICAgICAgICAgICB7Lyo8aW1nIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIvPiAqL30gXG4gICAgICAgICAgICAgICB7LyogIDxDb2xsYXBzaWJsZSB0aXRsZT1cIkRpZmZlcmVudCB0eXBlcyBvZiBkcnVnc1wiID5cbiAgICAgICAgICAgICAgICA8VGFiQnV0dG9uUm93IGRhdGE9e21lZGlidXR0b25yb3dkYXRhfSBvcGVudHlwZT1cIm1lZGl0YWJzXCIgY2xvc2luZz1cIlwiLz5cbiAgICAgICAgICAgICAgICA8QnV0dG9uUm93VGFicyBkYXRhPXttZWRpYnV0dG9ucm93ZGF0YX0gY2xhPVwibWVkaXRhYnNcIi8+XG4gICAgICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT4gKi99XG4gICAgICAgICAgICAgICAgey8qIDxwPldoeSB3ZSBzdGlsbCBuZWVkIG90aGVyIG9wdGlvbnM8L3A+ICAqL30gXG4gICAgICAgICAgICAgICB7LyogPGltZyBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9jaGFydHMtbWFwcy9jZnBlcjEwLTAwMC5wbmdcIi8+ICovfSBcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8c2VjdGlvbiBpZD1cIk91ciBtb3RpdmF0aW9uXCIgY2xhc3NOYW1lPVwic2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxIMiB0ZXh0PVwiT3VyIG1vdGl2YXRpb25cIj48L0gyPlxuICAgICAgICAgICAgICAgIDxwPldlIGNob3NlIHRvIGZvY3VzIG9uIENGIGFuZCBzcGVjaWZpY2FsbHkgdGhlIFx1MDM5NEY1MDggbXV0YXRpb24gZHVlIHRvIGl0cyBwcmV2YWxlbmNlIGFuZCB0aGUgc2V2ZXJlIGltcGFjdCBpdCBoYXMgb24gcGF0aWVudHMnIGxpdmVzLiBBZGRpdGlvbmFsbHksIG91ciB0ZWFtIGluY2x1ZGVzIG1lbWJlcnMgd2hvIGhhdmUgY2xvc2UgZnJpZW5kcyBhZmZlY3RlZCBieSB0aGlzIGNvbmRpdGlvbiwgZ2l2aW5nIHVzIGEgcGVyc29uYWwgY29ubmVjdGlvbiBhbmQgYSBzdHJvbmcgbW90aXZhdGlvbiB0byBmaW5kIGEgc29sdXRpb24uIEJ5IHRhcmdldGluZyB0aGUgXHUwMzk0RjUwOCBtdXRhdGlvbiwgd2UgYWltIHRvIGRldmVsb3AgYSB0aGVyYXB5IHRoYXQgY291bGQgcG90ZW50aWFsbHksIG5vdCBvbmx5IGJlbmVmaXQgbWFueSBDRiBwYXRpZW50cyBhbmQgbWFrZSBhIHNpZ25pZmljYW50IGltcHJvdmVtZW50IGluIHRoZWlyIGxpdmVzLCBidXQgYWxzbyBjYW4gc2VydmUgYXMgYSB0ZW1wbGF0ZSwgd2hpY2ggcmVzZWFyY2ggZ3JvdXBzIGNhbiB1c2UgdG8gdGFyZ2V0IG90aGVyIGdlbmV0aWMgZGlzZWFzZXMuIDwvcD5cbiAgICAgICAgICAgICAgICB7LyogPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQWJvdXQgZGVsNTA4XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cD5NYXg8L3A+ICovfVxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGlkPVwiQXBwcm9hY2hcIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPEgyIHRleHQ9XCJBcHByb2FjaFwiPjwvSDI+XG4gICAgICAgICAgICAgICAgPHA+VG8gY29ycmVjdCB0aGUgbXV0YXRpb24sIHdlIGFyZSB1dGlsaXppbmcgUHJpbWUgRWRpdGluZyB0ZWNobm9sb2dpZXMuIFByaW1lIEVkaXRpbmcgaXMgYSBnZW5vbWUgZWRpdGluZyB0ZWNobmlxdWUgdGhhdCBhbGxvd3MgcHJlY2lzZSBETkEgbW9kaWZpY2F0aW9ucyB3aXRob3V0IGNhdXNpbmcgZG91YmxlLXN0cmFuZCBicmVha3M8YSBocmVmPVwiI2Rlc2MtdHdvXCI+PHN1cD4yPC9zdXA+PC9hPi4gU3RydWN0dXJhbGx5LCB0aGUgUHJpbWUgRWRpdGluZyBjb21wbGV4IGNvbnNpc3RzIG9mIGEgQ2FzOSBlbmRvbnVjbGVhc2UgZnVzZWQgdG8gYSByZXZlcnNlIHRyYW5zY3JpcHRhc2UgKFJUKSBhbmQgZ3VpZGVkIGJ5IGEgcGVnUk5BLCB3aGljaCBkaXJlY3RzIHRoZSBjb21wbGV4IHRvIHRoZSB0YXJnZXQgc2l0ZSBpbiB0aGUgZ2Vub21lLiAgPC9wPlxuey8qICAgICAgICAgICAgICAgICA8SW5mb0JveCB0aXRsZT1cIlByaW1lIEVkaXRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgQWJvdXQgcHJpbWUgZWRpdGluZ1xuICAgICAgICAgICAgICAgIDwvSW5mb0JveD4gKi99XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctcmlnaHQgaW1nLWhhbGZcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zY2llbnRpZmljLWZpZ3VyZXMva29tcGxleC1rb21wbGV0dC1iZXNjaHJpZnRldC5zdmdcIi8+ICAgIFxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwPkhvd2V2ZXIsIHRoZSBQcmltZSBFZGl0aW5nIGNvbXBsZXggaXMgcmVsYXRpdmVseSBsYXJnZSwgcG9zaW5nIGNoYWxsZW5nZXMgZm9yIHRoZXJhcGV1dGljIGRlbGl2ZXJ5PGEgaHJlZj1cIiNkZXNjLXRocmVlXCI+PHN1cD4zPC9zdXA+PC9hPi4gQWRkaXRpb25hbGx5LCBQcmltZSBFZGl0aW5nIGhhcyBiZWVuIHNob3duIHRvIGJlIHJlbGF0aXZlbHkgaW5lZmZpY2llbnQgaW4gdGVybXMgb2YgZ2VuZSBlZGl0aW5nIHJhdGVzLCB3aGljaCBjb3VsZCBsaW1pdCBpdHMgdGhlcmFwZXV0aWMgdXRpbGl0eTxhIGhyZWY9XCIjZGVzYy1mb3VyXCI+PHN1cD40PC9zdXA+PC9hPi4gT3VyIHByb2plY3QgYWltcyB0byBlbmhhbmNlIHRoZSBQcmltZSBFZGl0aW5nIGFwcHJvYWNoIGJ5IG1pbmlhdHVyaXppbmcgaXRzIGNvbXBvbmVudHMuIEZhbnpvciwgYSByZWNlbnRseSBkaXNjb3ZlcmVkIGV1a2FyeW90aWMgZW5kb251Y2xlYXNlLCBwZXJmb3JtcyBmdW5jdGlvbnMgc2ltaWxhciB0byBDYXM5LCBhIGNydWNpYWwgcGFydCBvZiB0aGUgUHJpbWUgRWRpdGluZyBjb21wbGV4LCBidXQgaXMgc2lnbmlmaWNhbnRseSBzbWFsbGVyLiBXZSBhaW0gdG8gc3Vic3RpdHV0ZSBDYXM5IHdpdGggRmFuem9yLiA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwPkFkZGl0aW9uYWxseSwgd2UgcGxhbiB0byByZXBsYWNlIHRoZSByZXZlcnNlIHRyYW5zY3JpcHRhc2UgaW4gdGhlIFByaW1lIEVkaXRpbmcgY29tcGxleCB3aXRoIGEgc21hbGxlciBSVCB2YXJpYW50LiBGdXJ0aGVybW9yZSwgTUNQIHByb3RlaW5zIHdpbGwgYmUgYWRkZWQgdG8gdGhlIFByaW1lIEVkaXRpbmcgY29tcGxleCB0byBpbmNyZWFzZSBpdHMgc3RhYmlsaXR5PGEgaHJlZj1cIiNkZXNjLWZpdmVcIj48c3VwPjU8L3N1cD48L2E+LiAgPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHsvKiA8Q29sbGFwc2libGUgdGl0bGU9XCJDYXMgdnMuIEZhbnpvclwiID48L0NvbGxhcHNpYmxlPiAqL31cbiAgICAgICAgICAgICAgICA8cD5UaGUgcGVnUk5BIGlzIG9wdGltaXplZCB2aWEgYW4gZXh0ZW5zaW9uIGJ5IGEgc3RlbSBsb29wLCB3aGljaCBzdGFiaWxpemVzIHRoZSBSTkEgYnkgcHJvdGVjdGluZyBpdCBmcm9tIFJOYXNlcyBhbmQgc2VydmVzIGFzIGEgYmluZGluZyBzaXRlIGZvciB0aGUgTUNQLCB3aGljaCBhbHNvIHN1cHBvcnRzIHRoZSBzZWNvbmRhcnkgUk5BIHN0cnVjdHVyZS4gQWRkaXRpb25hbGx5LCB0aGUgcGVnUk5BIGNvbnRhaW5zIGEgcmlib3N3aXRjaCwgYSBzb2RpdW0gaW9uLWNvbnRyb2xsZWQgcmVndWxhdG9yIHRoYXQgc3dpdGNoZXMgb2ZmIHRoZSBjb21wbGV4LiBUaGlzIHJlcHJlc2VudHMgYSBtYWpvciBiaW9zYWZldHkgZmVhdHVyZSBpbiB0aGF0IHRoZSBjb21wbGV4IGlzIHN3aXRjaGVkIG9mZiBhZnRlciBzdWNjZXNzZnVsIEROQSBlZGl0aW5nIGFuZCB0aGUgc3Vic2VxdWVudCBpbmNyZWFzZWQgaW5mbHV4IG9mIGNobG9yaWRlIGlvbnMgaW50byB0aGUgY2VsbC4gVGhlIHBlZ1JOQSBpcyBjb21iaW5lZCB3aXRoIGFuIG9wdGltaXplZCBzZ1JOQSByZXN1bHRpbmcgaW4gaGlnaGVyIG9uLXRhcmdldCBlZmZlY3QuIE92ZXJhbGwsIGl0cyBvcHRpbWl6YXRpb24gbGVhZHMgdG8gYSBsb25nZXIgc2hlbGYgbGlmZSBhbmQgYW4gaW5jcmVhc2UgaW4gdGhlIGJpb3NhZmV0eSBvZiB0aGUgY29tcGxleC4gPC9wPlxuey8qICAgICAgICAgICAgICAgICA8SW5mb0JveCB0aXRsZT1cIlJpYm9zd2l0Y2hcIj5cbiAgICAgICAgICAgICAgICAgICAgQWJvdXQgdGhlIFJpYm9zd2l0Y2hcbiAgICAgICAgICAgICAgICA8L0luZm9Cb3g+ICovfVxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGlkPVwiRGVsaXZlcnlcIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPEgyIHRleHQ9XCJEZWxpdmVyeVwiPjwvSDI+XG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctbGVmdCBpbWctaGFsZiBzcGluXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc2NpZW50aWZpYy1maWd1cmVzL2xucC5wbmdcIiBoZWlnaHQ9e1wiMjAwdndcIn0vPiAgXG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHA+V2UgY2hvc2UgTE5QcyBhcyB0aGUgZGVsaXZlcnkgc3lzdGVtIG9mIG91ciBOZXh0LUdlbmVyYXRpb24gUHJpbWUgRWRpdGluZyBUZWNobm9sb2d5LiBCZWNhdXNlIG9mIHRoZWlyIGxhcmdlIGNhcGFjaXR5IGFuZCBsZXNzIGltbXVub2dlbmljIHNpZGUgZWZmZWN0cyBjb21wYXJlZCB0byBvdGhlciBkZWxpdmVyeSBzeXN0ZW1zIGxpa2UgQWRlbm8tYXNzb2NpYXRlZCBWaXJ1c2VzIChBVlYpPGEgaHJlZj1cIiNkZXNjLXNpeFwiPjxzdXA+Njwvc3VwPjwvYT4uIE91ciBhaW0gaXMgdG8gb3B0aW1pemUgdGhlIExOUCBmb3JtdWxhdGlvbiB0byBpbXByb3ZlIGRlbGl2ZXJ5IHRvIGx1bmcgdGlzc3VlIHZpYSBpbmhhbGF0aW9uLiBCZWNhdXNlIG9mIG91ciBjb2xsYWJvcmF0aW9ucywgd2UgYXJlIGFibGUgdG8gdGVzdCBhbmQgb3B0aW1pemUgZGlmZmVyZW50IGRlbGl2ZXJ5IHN5c3RlbXMgdG8gaW1wcm92ZSBvdXIgb3JnYW4gc3BlY2lmaWMgdGhlcmFwZXV0aWMgYXBwcm9hY2guIFRoZXJlZm9yZSwgb3VyIExOUCBkZXNpZ24gZm9jdXNzZXMgb24gc3RhYmlsaXR5IGFuZCB0YXJnZXRpbmcuIFN0YWJpbGl0eSBpcyBhY2hpZXZlZCBieSBhIHBvbHlldGh5bGVuZSBnbHljb2wgKFBFRykgY29hdGluZyB0aGF0IHByb3RlY3RzIHRoZSBMTlBzIGZyb20gZGVncmFkYXRpb24gYnkgdGhlIGltbXVuZSBzeXN0ZW08YSBocmVmPVwiI2Rlc2Mtc2V2ZW5cIj48c3VwPjc8L3N1cD48L2E+LiBNb3Jlb3Zlciwgd2UgdXNlIGNhcHNhaWNpbiBpbiBjb21iaW5hdGlvbiB3aXRoIGNoaXRvc2FuIHRvIGltcHJvdmUgdGhlIHVwdGFrZSBvZiBvdXIgY29uc3RydWN0IHRocm91Z2ggdGhlaXIgbXVjdXMtYWRoZXNpdmUgcHJvcGVydGllczxhIGhyZWY9XCIjZGVzYy1laWdodFwiPjxzdXA+ODwvc3VwPjwvYT4uIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbnsvKiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBMQWdlcnRlbXBlcmF0dXIgZGVyIFBhcnRzXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVHJvY2tudW5nXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAqL31cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cD5XZSBhcmUgZnVydGhlcm1vcmUgb3B0aW1pc2luZyB0aGUgTE5QcyBmb3IgcHVsbW9uYXJ5IHRoZXJhcHkgYW5kIGludmVzdGlnYXRpbmcgZGVsaXZlcnkgYnkgbmVidWxpc2F0aW9uIGFzIGEgbm9uLWludmFzaXZlIG1ldGhvZCBjb21wYXJlZCB0byBzeXN0ZW1pYyBhcHByb2FjaGVzIHRvIG1ha2UgdGhlIHRoZXJhcHkgbW9yZSBjb252ZW5pZW50IGZvciBwYXRpZW50cy4gRm9yIHNwZWNpZmljIHRhcmdldGluZywgd2UgYXJlIGZvY3Vzc2luZyBvbiBtYXJrZXIgcHJvdGVpbnMgb2YgYmFzYWwgY2VsbHMgYW5kIGlvbm9jeXRlcyB0aGF0IHByb2R1Y2UgcGFydGljdWxhcmx5IGhpZ2ggbGV2ZWxzIG9mIENGVFIgcHJvdGVpbiBhbmQgd2hpY2ggd2Ugd2FudCB0byB0YXJnZXQgd2l0aCBhcHByb3ByaWF0ZSBhbnRpYm9kaWVzPGEgaHJlZj1cIiNkZXNjLW5pbmVcIj48c3VwPjk8L3N1cD48L2E+LiBPdXIgd29ya2Zsb3cgaW5jbHVkZXMgdGVzdGluZyBvdXIgbmV4dCBnZW5lcmF0aW9uIFByaW1lIEVkaXRpbmcgVGVjaG5vbG9neSBkZWxpdmVyZWQgYnkgb3VyIG9wdGltaXplZCBMTlBzIGluIGNlbGwgY3VsdHVyZSBsaW5lcyBidXQgYWxzbyBpbiBwcmltYXJ5IG5hc2FsIGVwaXRoZWxpYWwgY2VsbHMgb2YgQ0YgcGF0aWVudHMgdG8gZXZhbHVhdGUgb3VyIG9wdGltaXphdGlvbnMgYW5kIGZ1cnRoZXIgaW1wcm92ZW1lbnRzIGluIHZpdHJvLiBXZSBjYW4gYWxzbyBwcm92aWRlIHRoZSBvdXRsb29rIG9uIHRoZSBhZGFwdGF0aW9uIG9mIHRoZSBkZWxpdmVyeSBzeXN0ZW0gZW5hYmxpbmcgc3lzdGVtaWMgYXBwbGljYXRpb25zIGFzIHdlbGwuIDwvcD5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8c2VjdGlvbiBpZD1cIk91ciB2aXNpb25cIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPEgyIHRleHQ9XCJPdXIgdmlzaW9uXCI+PC9IMj4gICBcbiAgICAgICAgICAgICAgICA8cD5XZSBhcmUgZW52aXNpb25pbmcgYSBwb3RlbnRpYWwgaW50ZWdyYXRpb24gaW50byBhIGJyb2FkZXIgdGhlcmFwZXV0aWMgZnJhbWV3b3JrIGludm9sdmluZyBjdXN0b21pemVkIGdlbmUgZWRpdGluZyB0b29scyBmb3IgdmFyaW91cyBnZW5ldGljIGRpc29yZGVycywgdGhhdCBwcmVzZW50IHNpbWlsYXIgcHJvYmxlbXMvZGlmZmljdWx0aWVzIHRvIHRoZSBGNTA4ZGVsIG11dGF0aW9uLCBhcyB3ZWxsIGFzIG90aGVyIGdlbmV0aWMgZGlzZWFzZXMgb2YgZGlmZmVyZW50IGNhdXNlcy4gVGhpcyBjb3VsZCBpbmNsdWRlIGNvbGxhYm9yYXRpb25zIHdpdGggcGhhcm1hY2V1dGljYWwgY29tcGFuaWVzIHRvIGRldmVsb3AgbmV3IHRyZWF0bWVudCBtb2RhbGl0aWVzIGZvciBnZW5ldGljIGRpc2Vhc2VzIGJleW9uZCBjeXN0aWMgZmlicm9zaXMsIHV0aWxpemluZyBhZHZhbmNlZCBkZWxpdmVyeSBzeXN0ZW1zIGFuZCBwZXJzb25hbGl6ZWQgbWVkaWNpbmUgYXBwcm9hY2hlcy4gPC9wPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB7LyogU291cmNlcyAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgPHNlY3Rpb24gaWQ9XCJSZWZlcmVuY2VzXCI+XG4gICAgICAgICAgICA8SDIgdGV4dD1cIlJlZmVyZW5jZXNcIj48L0gyPiAgICBcbiAgICAgICAgICAgIDxvbD5cbiAgICAgICAgICAgICAgICB7LyogPCEtLSBDaXRhdGlvbiBudW0gMS0tPiAqL31cbiAgICAgICAgICAgICAgICA8bGkgdHlwZW9mPVwic2NoZW1hOlNjb2xhcmx5QXJ0aWNsZVwiIHJvbGU9XCJkb2MtYmlibGlvZW50cnlcIiBwcm9wZXJ0eT1cInNjaGVtYTpjaXRhdGlvblwiIGlkPVwiZGVzYy1vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6YXV0aG9yXCIgdHlwZW9mPVwic2NoZW1hOlBlcnNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPlNjb3RldCwgVi48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPkd1dGllcnJleiwgSC48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPkZhcnJlbGwsIFAuIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpuYW1lXCI+TmV3Ym9ybiBTY3JlZW5pbmcgZm9yIENGIGFjcm9zcyB0aGUgR2xvYmVcdTIwMTRXaGVyZSBJcyBJdCBXb3J0aHdoaWxlPyA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxpIHByb3BlcnR5PVwic2NoZW1hOnB1Ymxpc2hlclwiIHR5cGVvZj1cInNjaGVtYTpPcmdhbml6YXRpb25cIj5JbnQgSiBOZW9uYXRhbCBTY3JlZW4gPC9pPlxuICAgICAgICAgICAgICAgICAgICA8YiBwcm9wZXJ0eT1cImlzc3VlTnVtYmVyXCIgdHlwZW9mPVwiUHVibGljYXRpb25Jc3N1ZVwiPjY8L2I+LFxuICAgICAgICAgICAgICAgICAgICAoPHRpbWUgcHJvcGVydHk9XCJzY2hlbWE6ZGF0ZVB1Ymxpc2hlZFwiIGRhdGF0eXBlPVwieHNkOmdZZWFyXCIgZGF0ZVRpbWU9XCIyMDIwXCI+MjAyMDwvdGltZT4pLiBcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwiZG9pXCIgaHJlZj1cImh0dHBzOi8vZG9pLm9yZy8xMC4zMzkwL2lqbjYwMTAwMThcIj4gZG9pOiAxMC4zMzkwL2lqbjYwMTAwMTg8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgIHsvKiA8IS0tIENpdGF0aW9uIG51bSAyLS0+ICovfVxuICAgICAgICAgICAgICAgIDxsaSB0eXBlb2Y9XCJzY2hlbWE6U2NvbGFybHlBcnRpY2xlXCIgcm9sZT1cImRvYy1iaWJsaW9lbnRyeVwiIHByb3BlcnR5PVwic2NoZW1hOmNpdGF0aW9uXCIgaWQ9XCJkZXNjLXR3b1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTphdXRob3JcIiB0eXBlb2Y9XCJzY2hlbWE6UGVyc29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+QW56YWxvbmUsIEEuVi48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPlJhbmRvbHBoLCBQLkIuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5EYXZpcywgSi5SLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+U291c2EsIEEuQS48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPktvYmxhbiwgTC5XLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+TGV2eSwgSi5NLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+TmV3YnksIEcuQS48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPlJhZ3VyYW0sIEEuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5MaXUsIEQuUi4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOm5hbWVcIj5TZWFyY2gtYW5kLXJlcGxhY2UgZ2Vub21lIGVkaXRpbmcgd2l0aG91dCBkb3VibGUtc3RyYW5kIGJyZWFrcyBvciBkb25vciBETkEuIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGkgcHJvcGVydHk9XCJzY2hlbWE6cHVibGlzaGVyXCIgdHlwZW9mPVwic2NoZW1hOk9yZ2FuaXphdGlvblwiPk5hdHVyZSA8L2k+XG4gICAgICAgICAgICAgICAgICAgIDxiIHByb3BlcnR5PVwiaXNzdWVOdW1iZXJcIiB0eXBlb2Y9XCJQdWJsaWNhdGlvbklzc3VlXCI+NTc0PC9iPixcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6cGFnZUJlZ2luXCI+IDU4OTwvc3Bhbj4tPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6cGFnZUVuZFwiPjU5NCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAoPHRpbWUgcHJvcGVydHk9XCJzY2hlbWE6ZGF0ZVB1Ymxpc2hlZFwiIGRhdGF0eXBlPVwieHNkOmdZZWFyXCIgZGF0ZVRpbWU9XCIyMDE5XCI+MjAxOTwvdGltZT4pLlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJkb2lcIiBocmVmPVwiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMzgvczQxNTg2LTAxOS0xNzExLTRcIj4gZG9pOiAxMC4xMDM4L3M0MTU4Ni0wMTktMTcxMS00PC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICB7LyogPCEtLSBDaXRhdGlvbiBudW0gMy0tPiAqL31cbiAgICAgICAgICAgICAgICA8bGkgdHlwZW9mPVwic2NoZW1hOlNjb2xhcmx5QXJ0aWNsZVwiIHJvbGU9XCJkb2MtYmlibGlvZW50cnlcIiBwcm9wZXJ0eT1cInNjaGVtYTpjaXRhdGlvblwiIGlkPVwiZGVzYy10aHJlZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTphdXRob3JcIiB0eXBlb2Y9XCJzY2hlbWE6UGVyc29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+QnJvYWQgSW5zdGl0dXRlIG9mIE1JVCBhbmQgSGFydmFyZC4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOm5hbWVcIj5SZXNlYXJjaGVycyBlbmdpbmVlciBpbiB2aXZvIGRlbGl2ZXJ5IHN5c3RlbSBmb3IgcHJpbWUgZWRpdGluZywgcGFydGlhbGx5IHJlc3RvcmluZyB2aXNpb24gaW4gbWljZS4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aSBwcm9wZXJ0eT1cInNjaGVtYTpwdWJsaXNoZXJcIiB0eXBlb2Y9XCJzY2hlbWE6T3JnYW5pemF0aW9uXCI+UGh5cy5vcmcgPC9pPlxuICAgICAgICAgICAgICAgICAgICAoPHRpbWUgcHJvcGVydHk9XCJzY2hlbWE6ZGF0ZVB1Ymxpc2hlZFwiIGRhdGF0eXBlPVwieHNkOmdZZWFyXCIgZGF0ZVRpbWU9XCIyMDI0XCI+MjAyNDwvdGltZT4pLlxuICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICB7LyogPCEtLSBDaXRhdGlvbiBudW0gNC0tPiAqL31cbiAgICAgICAgICAgICAgICA8bGkgdHlwZW9mPVwic2NoZW1hOlNjb2xhcmx5QXJ0aWNsZVwiIHJvbGU9XCJkb2MtYmlibGlvZW50cnlcIiBwcm9wZXJ0eT1cInNjaGVtYTpjaXRhdGlvblwiIGlkPVwiZGVzYy1mb3VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOmF1dGhvclwiIHR5cGVvZj1cInNjaGVtYTpQZXJzb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5HYXVkZWxsaSwgTi48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPktvbW9yLCBBLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+UmVlcywgSC48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPlBhY2tlciwgTS48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPkJhZHJhbiwgQS48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPkJyeXNvbiwgRC48L3NwYW4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPkxpdSwgRC4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOm5hbWVcIj5Qcm9ncmFtbWFibGUgZWRpdGluZyBvZiBhIHRhcmdldCBiYXNlIGluIGdlbm9taWMgRE5BIHdpdGhvdXQgZG91YmxlLXN0cmFuZGVkIEROQSBjbGVhdmFnZS4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aSBwcm9wZXJ0eT1cInNjaGVtYTpwdWJsaXNoZXJcIiB0eXBlb2Y9XCJzY2hlbWE6T3JnYW5pemF0aW9uXCI+TmF0dXJlIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgPGIgcHJvcGVydHk9XCJpc3N1ZU51bWJlclwiIHR5cGVvZj1cIlB1YmxpY2F0aW9uSXNzdWVcIj41MzM8L2I+LFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpwYWdlQmVnaW5cIj4gNDIwPC9zcGFuPi08c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpwYWdlRW5kXCI+NDI0IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKDx0aW1lIHByb3BlcnR5PVwic2NoZW1hOmRhdGVQdWJsaXNoZWRcIiBkYXRhdHlwZT1cInhzZDpnWWVhclwiIGRhdGVUaW1lPVwiMjAxNlwiPjIwMTY8L3RpbWU+KS4gXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cImRvaVwiIGhyZWY9XCJodHRwczovL2RvaS5vcmcvMTAuMTAzOC9uYXR1cmUxNzk0NlwiPiBkb2k6IDEwLjEwMzgvbmF0dXJlMTc5NDY8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgIHsvKiA8IS0tIENpdGF0aW9uIG51bSA1LS0+ICovfVxuICAgICAgICAgICAgICAgIDxsaSB0eXBlb2Y9XCJzY2hlbWE6U2NvbGFybHlBcnRpY2xlXCIgcm9sZT1cImRvYy1iaWJsaW9lbnRyeVwiIHByb3BlcnR5PVwic2NoZW1hOmNpdGF0aW9uXCIgaWQ9XCJkZXNjLWZpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6YXV0aG9yXCIgdHlwZW9mPVwic2NoZW1hOlBlcnNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPk9wZW5FZCBDVU5ZLiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6bmFtZVwiPlJOQSBTdGFiaWxpdHkgYW5kIHRoZSBSb2xlIG9mIFJOQS1CaW5kaW5nIFByb3RlaW5zLiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxpIHByb3BlcnR5PVwic2NoZW1hOnB1Ymxpc2hlclwiIHR5cGVvZj1cInNjaGVtYTpPcmdhbml6YXRpb25cIj5PcGVuRWQgQ1VOWSA8L2k+XG4gICAgICAgICAgICAgICAgICAgICg8dGltZSBwcm9wZXJ0eT1cInNjaGVtYTpkYXRlUHVibGlzaGVkXCIgZGF0YXR5cGU9XCJ4c2Q6Z1llYXJcIiBkYXRlVGltZT1cIjIwMjRcIj4yMDI0PC90aW1lPikuXG4gICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgIHsvKiA8IS0tIENpdGF0aW9uIG51bSA2LS0+ICovfVxuICAgICAgICAgICAgICAgIDxsaSB0eXBlb2Y9XCJzY2hlbWE6U2NvbGFybHlBcnRpY2xlXCIgcm9sZT1cImRvYy1iaWJsaW9lbnRyeVwiIHByb3BlcnR5PVwic2NoZW1hOmNpdGF0aW9uXCIgaWQ9XCJkZXNjLXNpeFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTphdXRob3JcIiB0eXBlb2Y9XCJzY2hlbWE6UGVyc29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+U2FoYXksIEcuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5BbGFraG92YSwgRC5ZLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+S2FiYW5vdiwgQS5WLiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6bmFtZVwiPkVuZG9jeXRvc2lzIG9mIG5hbm9tZWRpY2luZXMuIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGkgcHJvcGVydHk9XCJzY2hlbWE6cHVibGlzaGVyXCIgdHlwZW9mPVwic2NoZW1hOk9yZ2FuaXphdGlvblwiPkpvdXJuYWwgb2YgQ29udHJvbGxlZCBSZWxlYXNlIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgPGIgcHJvcGVydHk9XCJpc3N1ZU51bWJlclwiIHR5cGVvZj1cIlB1YmxpY2F0aW9uSXNzdWVcIj4xNDU8L2I+LFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpwYWdlQmVnaW5cIj4gMTgyPC9zcGFuPi08c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpwYWdlRW5kXCI+MTk1IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKDx0aW1lIHByb3BlcnR5PVwic2NoZW1hOmRhdGVQdWJsaXNoZWRcIiBkYXRhdHlwZT1cInhzZDpnWWVhclwiIGRhdGVUaW1lPVwiMjAxMFwiPjIwMTA8L3RpbWU+KS5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwiZG9pXCIgaHJlZj1cImh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2L2ouamNvbnJlbC4yMDEwLjAxLjAzNlwiPiBkb2k6IDEwLjEwMTYvai5qY29ucmVsLjIwMTAuMDEuMDM2PC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICB7LyogPCEtLSBDaXRhdGlvbiBudW0gNy0tPiAqL31cbiAgICAgICAgICAgICAgICA8bGkgdHlwZW9mPVwic2NoZW1hOlNjb2xhcmx5QXJ0aWNsZVwiIHJvbGU9XCJkb2MtYmlibGlvZW50cnlcIiBwcm9wZXJ0eT1cInNjaGVtYTpjaXRhdGlvblwiIGlkPVwiZGVzYy1zZXZlblwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTphdXRob3JcIiB0eXBlb2Y9XCJzY2hlbWE6UGVyc29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+UmFtYWNoYW5kcmFuLCBTLjwvc3Bhbj4sXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpOYW1lXCI+U2F0YXBhdGh5LCBTLlIuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5EdXR0YSwgVC4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOm5hbWVcIj5EZWxpdmVyeSBTdHJhdGVnaWVzIGZvciBtUk5BIFZhY2NpbmVzLiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxpIHByb3BlcnR5PVwic2NoZW1hOnB1Ymxpc2hlclwiIHR5cGVvZj1cInNjaGVtYTpPcmdhbml6YXRpb25cIj5QaGFybWFjZXV0aWNhbCBNZWRpY2luZSA8L2k+XG4gICAgICAgICAgICAgICAgICAgIDxiIHByb3BlcnR5PVwiaXNzdWVOdW1iZXJcIiB0eXBlb2Y9XCJQdWJsaWNhdGlvbklzc3VlXCI+MzY8L2I+LFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpwYWdlQmVnaW5cIj4gMTE8L3NwYW4+LTxzcGFuIHByb3BlcnR5PVwic2NoZW1hOnBhZ2VFbmRcIj4yMCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICg8dGltZSBwcm9wZXJ0eT1cInNjaGVtYTpkYXRlUHVibGlzaGVkXCIgZGF0YXR5cGU9XCJ4c2Q6Z1llYXJcIiBkYXRlVGltZT1cIjIwMjJcIj4yMDIyPC90aW1lPikuXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cImRvaVwiIGhyZWY9XCJodHRwczovL2RvaS5vcmcvMTAuMTAwNy9zNDAyOTAtMDIxLTAwNDE3LTVcIj4gZG9pOiAxMC4xMDA3L3M0MDI5MC0wMjEtMDA0MTctNTwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgey8qIDwhLS0gQ2l0YXRpb24gbnVtIDgtLT4gKi99XG4gICAgICAgICAgICAgICAgPGxpIHR5cGVvZj1cInNjaGVtYTpTY29sYXJseUFydGljbGVcIiByb2xlPVwiZG9jLWJpYmxpb2VudHJ5XCIgcHJvcGVydHk9XCJzY2hlbWE6Y2l0YXRpb25cIiBpZD1cImRlc2MtZWlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6YXV0aG9yXCIgdHlwZW9mPVwic2NoZW1hOlBlcnNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6TmFtZVwiPkJhbmRpLCBTLlAuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5CaGF0bmFnYXIsIFMuPC9zcGFuPixcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHByb3BlcnR5PVwic2NoZW1hOk5hbWVcIj5WZW51Z2FudGksIFYuVi5LLiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gcHJvcGVydHk9XCJzY2hlbWE6bmFtZVwiPkFkdmFuY2VkIG1hdGVyaWFscyBmb3IgZHJ1ZyBkZWxpdmVyeSBhY3Jvc3MgbXVjb3NhbCBiYXJyaWVycy4gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aSBwcm9wZXJ0eT1cInNjaGVtYTpwdWJsaXNoZXJcIiB0eXBlb2Y9XCJzY2hlbWE6T3JnYW5pemF0aW9uXCI+QWN0YSBCaW9tYXRlcmlhbGlhIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgPGIgcHJvcGVydHk9XCJpc3N1ZU51bWJlclwiIHR5cGVvZj1cIlB1YmxpY2F0aW9uSXNzdWVcIj4xMTk8L2I+LFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBwcm9wZXJ0eT1cInNjaGVtYTpwYWdlQmVnaW5cIj4gMTM8L3NwYW4+LTxzcGFuIHByb3BlcnR5PVwic2NoZW1hOnBhZ2VFbmRcIj4yOSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICg8dGltZSBwcm9wZXJ0eT1cInNjaGVtYTpkYXRlUHVibGlzaGVkXCIgZGF0YXR5cGU9XCJ4c2Q6Z1llYXJcIiBkYXRlVGltZT1cIjIwMjFcIj4yMDIxPC90aW1lPikuXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cImRvaVwiIGhyZWY9XCJodHRwczovL2RvaS5vcmcvMTAuMTAxNi9qLmFjdGJpby4yMDIwLjEwLjAzMVwiPiBkb2k6IDEwLjEwMTYvai5hY3RiaW8uMjAyMC4xMC4wMzE8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvb2w+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2Rpdj5cblxuXG4gICAgICAgIDwvZGl2PiAgXG4gICAgICA8L2Rpdj4gICAgXG4gICk7XG59XG5cbi8qIGxldCBtZWRpYnV0dG9ucm93ZGF0YSA9W1xuICAgIHtcbiAgICAgICAgbm9kZTogPGRpdj5BYm91dDwvZGl2PiwgXG4gICAgICAgIGJ1dHRvbm5hbWU6IFwiQWJvdXRcIiwgXG4gICAgICAgIGNzc25hbWU6IFwiRmlyc3RcIlxuICAgICAgICBcbiAgICB9LFxuICAgIHsgICBcbiAgICAgICAgbm9kZTogPGgyPk1vZHVsYXRvcnM8L2gyPixcbiAgICAgICAgYnV0dG9ubmFtZTogXCJNb2R1bGF0b3JzXCIsIFxuICAgICAgICBjc3NuYW1lOiBcIm1vZHVsYXRvcnNcIlxuICAgIH0sXG4gICAge1xuICAgICAgICBub2RlOiA8aDI+SW5oYWxhdGlvbnM8L2gyPiwgXG4gICAgICAgIGJ1dHRvbm5hbWU6IFwiSW5oYWxhdGlvbnNcIiwgXG4gICAgICAgIGNzc25hbWU6IFwiaW5oYWxhdGlvbnNcIlxuICAgIH0sXG5dXG4gKi8iLCAiXG5cbmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuZnVuY3Rpb24gU2lkZUl0ZW0oe2hlc2gsIG51bX06e2hlc2g6IHN0cmluZzsgbnVtOiBudW1iZXJ9KXtcbiAgICBsZXQgbGluayA9IFwiI1wiICsgaGVzaFxuICAgIGxldCBzdWJkaSA9IFwic3VidGl0bGVcIiArIG51bVxuICAgIHJldHVybihcbiAgICAgICAgPGRpdj4gICBcbiAgICAgICAgICAgIDxhIGhyZWY9e2xpbmt9PlxuICAgICAgICAgICAgICAgIDxzcGFuIGlkPXtzdWJkaX0+XG4gICAgICAgICAgICAgICAgICAgIHtoZXNofVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+ICAgXG4gICAgKVxufVxuXG5cblxuLyogTE9hZGluZyB0b28gc2xvdy4uLlxuZnVuY3Rpb24gU2lkZWJhcigpe1xuICAgIGNvbnN0IGFsbFdpdGhDbGFzcyA9IEFycmF5LmZyb20oXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NlY3Rpb24nKVxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKGFsbFdpdGhDbGFzcyk7XG4gICAgbGV0IGNvbnRlbnQgPSBbXTtcbiAgICBmb3IobGV0IGlkeCBpbiBhbGxXaXRoQ2xhc3Mpe1xuICAgICAgICBjb25zdCBpdGVtID0gYWxsV2l0aENsYXNzW2lkeF07XG4gICAgICAgIGNvbnN0IGlkID0gaXRlbS5pZDsgXG4gICAgICAgIGNvbnNvbGUubG9nKFwiaWR4OiBcIiArIGlkeCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiaXRlbTogXCIgKyBpdGVtKTsgXG4gICAgICAgIGNvbnNvbGUubG9nKFwiaWQ6IFwiICsgaWQpO1xuICAgICAgICBjb250ZW50LnB1c2goPFNpZGVJdGVtIGtleT17aWR9IGhlc2g9e2lkfT48L1NpZGVJdGVtPik7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICAgIDxuYXYgY2xhc3NOYW1lPVwic2lkZWJhclwiPlxuICAgICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgIDwvbmF2PiAgICAgICAgXG4gICAgKVxuICAgIFxufSAqL1xuXG5cbiAgICBmdW5jdGlvbiBTaWRlYmFyKHtudW1zfTp7bnVtczogQXJyYXk8c3RyaW5nPn0pe1xuXG4gICAgICBcbiAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgIH0sIFtdKTtcblxuICAgICAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgICAgICAgICBmb3IobGV0IGlkeCBpbiBudW1zKXtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gbnVtc1tpZHhdO1xuICAgICAgICAgICAgICAgIGxldCBpbmQgPSBudW1zLmZpbmRJbmRleCgoZSkgPT4gZSA9PSBpdGVtKVxuICAgICAgICAgICAgICAgIGxldCBzdWJkaSA9IFwic3VidGl0bGVcIiArIGluZCBcbiAgICAgICAgICAgICAgICBIaWdobGlnaHQoe2VsOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdGVtKSF9LCB7c3VidGl0bGU6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN1YmRpKSF9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmdW5jdGlvbiBIaWdobGlnaHRDaGVja1wiKVxuICAgICAgICB9XG4gICAgICBcblxuICAgICAgICBjb25zb2xlLmxvZyhudW1zKVxuICAgICAgICBsZXQgY29udGVudCA9IFtdOyBcbiAgICAgICAgZm9yKGxldCBpZHggaW4gbnVtcyl7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gbnVtc1tpZHhdO1xuICAgICAgICAgICAgLyogY29uc29sZS5sb2coXCJpZHg6IFwiICsgaWR4KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiaXRlbTogXCIgKyBpdGVtKTsgICovXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlR5cGU6IFwiICsgdHlwZW9mKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0ZW0pKSlcbiAgICAgICAgICAgIGxldCBpbmQgPSBudW1zLmZpbmRJbmRleCgoZSkgPT4gZSA9PSBpdGVtKVxuICAgICAgICAgICAgY29udGVudC5wdXNoKDxTaWRlSXRlbSBrZXk9e2l0ZW19IGhlc2g9e2l0ZW19IG51bT17aW5kfT48L1NpZGVJdGVtPik7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmKG51bXMubGVuZ3RoID4gMSlcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxuYXYgY2xhc3NOYW1lPVwic2lkZWJhclwiPlxuICAgICAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgIDwvbmF2PiAgICAgICAgXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuKFxuICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cbiAgICBcblxuXG4gICAgICBmdW5jdGlvbiBIaWdobGlnaHQoe2VsfToge2VsOiBIVE1MRWxlbWVudCB8IG51bGx9LCB7c3VidGl0bGV9OntzdWJ0aXRsZTogSFRNTEVsZW1lbnQgfCBudWxsfSl7XG4gICAgICAgIGxldCBUb3BEaXN0YW5jZSA9IDEwMDsgXG4gICAgICAgIGlmIChlbCAhPSBudWxsICYmIHN1YnRpdGxlICE9IG51bGwpe1xuICAgICAgICAgICAgaWYgKGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA8IFRvcERpc3RhbmNlICsgMSAmJiBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gPiBUb3BEaXN0YW5jZSl7XG4gICAgICAgICAgICAgICAgc3VidGl0bGUuc3R5bGUuY29sb3IgPSBcIiNGRkY2RjJcIjtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiM4NTBGNzhcIjtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZS5zdHlsZS5ib3JkZXJSYWRpdXMgPSBcIjE1cHhcIjtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZS5zdHlsZS5ib3JkZXJXaWR0aCA9IFwiMTVweFwiOyBcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZS5zdHlsZS5ib3JkZXJDb2xvciA9IFwiIzg1MEY3OFwiOyBcbi8qICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInN1YnRpdGxlOiBcIixzdWJ0aXRsZSlcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInN0eWxlOiBcIiwgc3VidGl0bGUuc3R5bGUpXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJjb2xvcjogXCIsc3VidGl0bGUuc3R5bGUuY29sb3IpXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJiYWNrY29sb3I6IFwiLHN1YnRpdGxlLnN0eWxlLmJhY2tncm91bmRDb2xvcikgICAgKi8gICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZS5zdHlsZS5jb2xvciA9IFwiIzg1MEY3OFwiO1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICB9XG4gICAgXG5cbmV4cG9ydCBkZWZhdWx0IFNpZGViYXI7IiwgImltcG9ydCBTaWRlYmFyIGZyb20gXCIuLi9jb21wb25lbnRzL1NpZGViYXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIERlc2NTaWRlYmFyKCl7XG4gICAgcmV0dXJuKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0yIGQtbm9uZSBkLWxnLWJsb2NrXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInN0aWNreS10b3Agc2lkZWJhclwiPlxuICAgICAgICAgICAgICAgIDxTaWRlYmFyIG51bXM9e1tcIkFic3RyYWN0XCIsIFwiQ3lzdGljIEZpYnJvc2lzXCIsIFwiT3VyIG1vdGl2YXRpb25cIiwgXG4gICAgICAgICAgICAgICAgXCJBcHByb2FjaFwiLCBcIkRlbGl2ZXJ5XCIsIFwiT3VyIHZpc2lvblwiLCBcIlJlZmVyZW5jZXNcIl19PjwvU2lkZWJhcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59IiwgIlxuXG5leHBvcnQgZnVuY3Rpb24gRW5naW5lZXJpbmcoKSB7XG4gIFxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbGctOFwiPlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gIFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgICk7XG4gIH0iLCAiXG5cbmV4cG9ydCBmdW5jdGlvbiBFeHBlcmltZW50cygpIHtcbiAgXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IG10LTRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbGctOFwiPlxuICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiXG5cbmV4cG9ydCBmdW5jdGlvbiBOb3RlYm9vaygpIHtcbiBcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgbXQtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1sZy04XCI+XG4gICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3VsdHMoKSB7XG5cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLWxnLTVcIj5cbiAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgbXQtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1sZy04XCI+XG4gICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gU2FmZXR5KCkge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgbXQtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgXG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgbXQtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1sZy04XCI+XG4gICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1sZy00XCI+XG4gICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBMaW5rIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcblxuaW50ZXJmYWNlIFVybEJ1dHRvblByb3Bze1xuICAgIGhyZWY6IHN0cmluZyxcbiAgICBjaGlsZHJlbjogc3RyaW5nLFxuICB9O1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBWaWxsYWdlYnV0dG9uKHsgdGl0bGUsIHNvdXJjZSwgcGFnZSB9OiB7IHRpdGxlOiBzdHJpbmc7IHNvdXJjZTogc3RyaW5nOyBwYWdlOnN0cmluZ30pIHtcbiAgcmV0dXJuIChcbiAgICA8TGluayBjbGFzc05hbWU9XCJidG4gdmlsbGFnZS1zdHlsZS1idXR0b25cIiByb2xlPVwiYnV0dG9uXCIgdG89e3BhZ2V9PlxuICAgICAgPGltZyBzcmM9e3NvdXJjZX0gY2xhc3NOYW1lPVwiZC1ibG9jayBteC1hdXRvIG1iLTJcIiBhbHQ9XCJcIj48L2ltZz5cbiAgICAgIDxoMz57dGl0bGV9PC9oMz5cbiAgICA8L0xpbms+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFZpbGxidXR0b25yb3coKXtcbiAgcmV0dXJuKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGJvdHRvbS1idXR0b25zXCI+XG4gICAgICAgIDxWaWxsYWdlYnV0dG9uIHBhZ2U9XCIvaHVtYW4tcHJhY3RpY2VzXCIgc291cmNlPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvZGVzaWduL2ljb25zL2h1bWFucHJhY3RpY2VzLnBuZ1wiIHRpdGxlPVwiSHVtYW4gUHJhY3RpY2VcIj48L1ZpbGxhZ2VidXR0b24+XG4gICAgICAgIDxWaWxsYWdlYnV0dG9uIHBhZ2U9XCIvdGVhbVwiIHNvdXJjZT1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy90ZWFtLnBuZ1wiIHRpdGxlPVwiVGVhbVwiPjwvVmlsbGFnZWJ1dHRvbj5cbiAgICAgICAgPFZpbGxhZ2VidXR0b24gcGFnZT1cIi9leHBlcmltZW50c1wiIHNvdXJjZT1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy9sYWIucG5nXCIgdGl0bGU9XCJFeHBlcmltZW50c1wiPjwvVmlsbGFnZWJ1dHRvbj5cbiAgICAgICAgPFZpbGxhZ2VidXR0b24gcGFnZT1cIi9kZXNjcmlwdGlvblwiIHNvdXJjZT1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy9kbmEucG5nXCIgdGl0bGU9XCJEZXNjcmlwdGlvblwiPjwvVmlsbGFnZWJ1dHRvbj5cbiAgICAgICAgPFZpbGxhZ2VidXR0b24gcGFnZT1cIi9lbmdpbmVlcmluZ1wiIHNvdXJjZT1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy9nZW5ldGljLWVuZ2luZWVyaW5nLnBuZ1wiIHRpdGxlPVwiRW5naW5lZXJpbmdcIj48L1ZpbGxhZ2VidXR0b24+XG4gICAgICAgIDxWaWxsYWdlYnV0dG9uIHBhZ2U9XCIvc2FmZXR5XCIgc291cmNlPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvZGVzaWduL2ljb25zL3NhZmV0eS5wbmdcIiB0aXRsZT1cIlNhZmV0eVwiPjwvVmlsbGFnZWJ1dHRvbj5cbiAgICAgICAgPFZpbGxhZ2VidXR0b24gcGFnZT1cIi9yZXN1bHRzXCIgc291cmNlPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvZGVzaWduL2ljb25zL3Jlc3VsdHMucG5nXCIgdGl0bGU9XCJSZXN1bHRzXCI+PC9WaWxsYWdlYnV0dG9uPlxuICAgICAgPC9kaXY+ICBcbiAgKVxufVxuXG5cbmV4cG9ydCBjb25zdCBVcmxCdXR0b24gPSAoeyBocmVmLCBjaGlsZHJlbiB9OlVybEJ1dHRvblByb3BzKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxhIGhyZWY9e2hyZWZ9IGNsYXNzTmFtZT1cInVybC1idXR0b25cIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9hPlxuICAgICk7XG4gIH1cblxuXG5cblxuZXhwb3J0IGNvbnN0IERvd25sb2FkTGluayA9ICh7IHVybCwgZmlsZU5hbWUgfToge3VybDogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nfSkgPT4ge1xuY29uc3QgaGFuZGxlRG93bmxvYWQgPSAoKSA9PiB7XG4gICAgZmV0Y2godXJsKVxuICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuYmxvYigpKVxuICAgIC50aGVuKChibG9iKSA9PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtibG9iXSkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lIHx8IFwiZG93bmxvYWRlZC1maWxlXCI7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG5cbiAgICAgICAgbGluay5jbGljaygpO1xuXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyB0aGUgZmlsZTpcIiwgZXJyb3IpO1xuICAgIH0pO1xufTtcbiAgXG5yZXR1cm4gKFxuXG4gICAgPGEgdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZURvd25sb2FkfSBjbGFzc05hbWU9XCJkb3dubG9hZC1idXR0XCI+XG4gICAgICAgIERvd25sb2FkXG4gICAgPC9hPlxuXG4pO1xufTtcblxuXG5leHBvcnQgZnVuY3Rpb24gVGFiQnV0dG9uUm93KHtkYXRhLCBjbGFzc3ksIG9wZW50eXBlLCBjbG9zaW5nfToge2RhdGE6IEFycmF5PFRhYkRhdGVuc2F0ej4sIGNsYXNzeT86IHN0cmluZywgb3BlbnR5cGU6IHN0cmluZywgY2xvc2luZzogc3RyaW5nfSl7XG4gIGxldCByb3dzID0gW11cbiAgZm9yICggbGV0IGkgPSAwOyAgaSA8IGRhdGEubGVuZ3RoOyBpKysgKXtcbiAgICBpZihjbGFzc3kpe1xuICAgICAgcm93cy5wdXNoKDxUYWJCdXR0b24gY2xhc3N5PXtjbGFzc3l9IHR5cGU9e2RhdGFbaV0uY3NzbmFtZX0gbmFtZT17ZGF0YVtpXS5idXR0b25uYW1lfSBvcGVudHlwZT17b3BlbnR5cGV9IGNsb3Npbmc9e2Nsb3Npbmd9Lz4pXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICByb3dzLnB1c2goPFRhYkJ1dHRvbiB0eXBlPXtkYXRhW2ldLmNzc25hbWV9IG5hbWU9e2RhdGFbaV0uYnV0dG9ubmFtZX0gb3BlbnR5cGU9e29wZW50eXBlfSBjbG9zaW5nPXtjbG9zaW5nfS8+KVxuICAgIH1cbiAgfVxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJhbGlnbi1pdGVtcy1jZW50ZXIgbm9ybWFsLWJ1dHRvbnNcIj5cbiAgICB7cm93c31cbiAgPC9kaXY+OyBcbn1cblxuXG5cbmludGVyZmFjZSBUYWJCdXR0b25Qcm9wc3tcbiAgY2xhc3N5Pzogc3RyaW5nLCBcbiAgY2xvc2luZzogc3RyaW5nLCBcbiAgb3BlbnR5cGU6IHN0cmluZ1xuICAvKiBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSwgICovXG4gIC8qIG9uQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudCwgTW91c2VFdmVudD4pID0+IHZvaWQsICAqL1xuICBuYW1lOiBzdHJpbmcsXG4gIHR5cGU6IHN0cmluZ1xufVxuLy8gbmV1ZXIgXG5leHBvcnQgZnVuY3Rpb24gVGFiQnV0dG9uKHtjbGFzc3ksIG5hbWUsIGNsb3NpbmcsIG9wZW50eXBlLCB0eXBlfTpUYWJCdXR0b25Qcm9wcyl7XG4gIGlmICghY2xhc3N5KXtcbiAgICBjbGFzc3kgPSBcIlwiXG4gIH1cbiAgbGV0IGNsYXNzbmFtZSA9IFwidGFiYnV0dG9uIFwiICsgdHlwZSArIFwiIFwiICsgY2xhc3N5OyBcbiAgcmV0dXJuKFxuICAgIDw+XG4gICAgPGJ1dHRvbiBjbGFzc05hbWU9e2NsYXNzbmFtZX0gb25DbGljaz17b3BlblRhYih7Y2l0eU5hbWU6IHR5cGUsIGNsYTogb3BlbnR5cGUsIHdlZzogY2xvc2luZyB9KX0+IHtuYW1lfTwvYnV0dG9uPlxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIUE1vcmVCdXR0b24oe25hbWV9OiB7bmFtZTogc3RyaW5nfSl7XG4gIGxldCBjID0gXCJ0aW1lbGluZXBlcnNvbnRhYnNcIlxuICByZXR1cm4oXG4gICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ0YWJsaW5rcyBocC1tb3JlLWJ1dHRvblwiIG9uQ2xpY2s9e29wZW5UYWIoe2NpdHlOYW1lOiBuYW1lLCBjbGE6IGN9KX0+IE1vcmU8L2J1dHRvbj5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlblRhYih7Y2l0eU5hbWUsIGNsYSwgd2VnfTp7Y2l0eU5hbWU6IHN0cmluZywgY2xhOiBzdHJpbmcsIHdlZz86IHN0cmluZ30pIHtcbiAgY29uc3Qgb3BlbmNpdHkgPSAgKGV2ZW50IDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudCwgTW91c2VFdmVudD4pID0+e1xuICAgIHZhciBpLCB0YWJjb250ZW50LCB0YWJsaW5rcywgd2VnY29udGVudDtcbiAgdGFiY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhKTtcbiAgZm9yIChpID0gMDsgaSA8IHRhYmNvbnRlbnQubGVuZ3RoOyBpKyspIHtcbiAgICAodGFiY29udGVudFtpXSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICB9XG4gIHRhYmxpbmtzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRhYmJ1dHRvblwiKTtcbiAgZm9yIChpID0gMDsgaSA8IHRhYmxpbmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGFibGlua3NbaV0uY2xhc3NOYW1lID0gdGFibGlua3NbaV0uY2xhc3NOYW1lLnJlcGxhY2UoXCIgYWN0aXZlXCIsIFwiXCIpO1xuICB9XG4gIGlmICh3ZWcpe1xuICAgIHdlZ2NvbnRlbnQgID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh3ZWcpO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3ZWdjb250ZW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAod2VnY29udGVudFtpXSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgIH1cbiAgfVxuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjaXR5TmFtZSkhLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQuY2xhc3NOYW1lICs9IFwiIGFjdGl2ZVwiO1xuICB9XG4gIHJldHVybiBvcGVuY2l0eTsgXG59IiwgImltcG9ydCB7IEhQTW9yZUJ1dHRvbiB9IGZyb20gXCIuL0J1dHRvbnNcIjtcblxuZnVuY3Rpb24gVGltZUl0ZW0oe3RhZywgdGl0bGUsIHBpYywgYXV0aG9yLCB0YWJpZH06IEl0ZW1Qcm9wcyl7XG4gICAgbGV0IGNsID0gXCJ0LXRhZyBcIiArIHRhZztcbiAgICByZXR1cm4oXG4gICAgPGxpIGNsYXNzTmFtZT1cInRpbWVsaW5lb2xsaVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lbGluZS1pdGVtIG1vcmV0b3BcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbH0+XG4gICAgICAgICAgICAgICAge3RhZ31cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIiA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRsLWJ1dHRcIiBvbkNsaWNrPXtPcGVuKHtwZXJzb246IGF1dGhvcn0pfT4gPGltZyBjbGFzc05hbWU9XCJpbWctcm91bmRcIiBzcmM9e3BpY30gLz48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiID5cbiAgICAgICAgICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7bWFyZ2luVG9wOiBcIjEwcHhcIn19PnthdXRob3J9PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGFiXCI+XG4gICAgICAgICAgICAgICAgPEhQTW9yZUJ1dHRvbiBuYW1lPXt0YWJpZH0vPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICAgIClcbiAgfVxuICBcbiAgXG4gIFxuICBcbiAgZXhwb3J0IGZ1bmN0aW9uIEFsbFBvcHVzKCl7XG4gICAgbGV0IHJvd3MgPSBbXVxuICAgIGZvciAoIGxldCBpID0gMDsgIGkgPCBkYXRhLmxlbmd0aDsgaSsrICl7XG4gICAgICByb3dzLnB1c2goPFBvcHVwIHBlcnNvbj17ZGF0YVtpXS5hdXRob3J9PlxuICAgICAgICBIaVxuICAgICAgPC9Qb3B1cD4pXG4gICAgfVxuICAgIHJldHVybiByb3dzOyBcbiAgfVxuICBcbiAgZXhwb3J0IGZ1bmN0aW9uIFRpbWVIb3JpKHt0YWJ9Ont0YWI6IHN0cmluZ30pe1xuICAgIGxldCBub2Q7IFxuICAgIC8qIGNvbnNvbGUubG9nKFwiVGltZUhvcmlcIikgKi9cbiAgICBpZiAodGFiID09PSBcIlwiKXsgIFxuICAgICAgbm9kID0gPEFsbEl0ZW1zPjwvQWxsSXRlbXM+XG4gICAgICAvKiBjb25zb2xlLmxvZyhcIlRhYiA9ICcnXCIpICovXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICAvKiBjb25zb2xlLmxvZyhcIlRhYlwiKSAqL1xuICAgICAgbm9kID0gZ2V0SXRlbXNCeVR5cGUodGFiKTtcbiAgICB9XG4gICAgcmV0dXJuKFxuICAgIDxkaXY+XG4gIDxzZWN0aW9uIGNsYXNzTmFtZT1cInRpbWVsaW5lIHJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgPG9sIGNsYXNzTmFtZT1cInRpbWVsaW5lb2xcIj5cbiAgICAgIHtub2R9XG4gICAgPGxpIGNsYXNzTmFtZT1cInRpbWVsaW5lb2xsaVwiPjwvbGk+XG4gIDwvb2w+XG4gIFxuICBcbiAgPC9zZWN0aW9uPlxuICA8L2Rpdj5cbiAgXG4gICAgKVxuICB9XG4gIFxuICBmdW5jdGlvbiBPcGVuKHtwZXJzb259OntwZXJzb246IHN0cmluZ30pe1xuICAgIGNvbnN0IG9wZW5Qb3AgPSAgKF9ldmVudCA6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQsIE1vdXNlRXZlbnQ+KSA9PiB7XG4gICAgICB2YXIgcG9wdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwZXJzb24pO1xuICAgICAgcG9wdXAhLmNsYXNzTGlzdC50b2dnbGUoXCJzaG93XCIpO1xuICAgIH1cbiAgICByZXR1cm4gb3BlblBvcDsgXG4gICAgfVxuICBcbiAgaW50ZXJmYWNlIFBvcFByb3BzIHtcbiAgICBwZXJzb246IHN0cmluZywgXG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuICAgIH1cbiAgICBcbiAgXG4gIGZ1bmN0aW9uIFBvcHVwKHtwZXJzb24sIGNoaWxkcmVufTogUG9wUHJvcHMpe1xuICAgIHJldHVybihcbiAgICAgIDxkaXYgaWQ9XCJteVBvcHVwXCIgY2xhc3NOYW1lPVwicG9wdXBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicG9wdXB0ZXh0XCIgaWQ9e3BlcnNvbn0+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtPcGVuKHtwZXJzb259KX0gPkNsb3NlPC9idXR0b24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgXG4gICAgICA8L2Rpdj5cbiAgICApXG4gICAgfVxuICBcbiAgXG4gICAgIGV4cG9ydCBmdW5jdGlvbiBvcGVuQ2l0eSh7Y2l0eU5hbWV9OntjaXR5TmFtZTogc3RyaW5nfSkge1xuICAgICAgICBjb25zdCBvcGVuY2l0eSA9ICAoZXZlbnQgOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50LCBNb3VzZUV2ZW50PikgPT57XG4gICAgICAgICAgdmFyIGksIHRhYmNvbnRlbnQsIHRhYmxpbmtzO1xuICAgICAgICB0YWJjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRhYmNvbnRlbnRcIik7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0YWJjb250ZW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgKHRhYmNvbnRlbnRbaV0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgfVxuICAgICAgICB0YWJsaW5rcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ0YWJsaW5rc1wiKTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRhYmxpbmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGFibGlua3NbaV0uY2xhc3NOYW1lID0gdGFibGlua3NbaV0uY2xhc3NOYW1lLnJlcGxhY2UoXCIgYWN0aXZlXCIsIFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNpdHlOYW1lKSEuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5jbGFzc05hbWUgKz0gXCIgYWN0aXZlXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wZW5jaXR5OyBcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaW50ZXJmYWNlIEl0ZW1Qcm9wcyB7XG4gICAgICAgIHRpdGxlOiBzdHJpbmcgLFxuICAgICAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICAgICAgICB0YWc6IHN0cmluZywgXG4gICAgICAgIHBpYzogc3RyaW5nLFxuICAgICAgICBhdXRob3I6IHN0cmluZywgXG4gICAgICAgIHRhYmlkOiBzdHJpbmdcbiAgICAgICAgfVxuICAgIFxuICAgICAgICBcblxuXG4gICAgICBmdW5jdGlvbiBBbGxJdGVtcygpe1xuICAgICAgICBsZXQgcm93cyA9IFtdXG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgIGkgPCBkYXRhLmxlbmd0aDsgaSsrICl7XG4gICAgICAgICAgcm93cy5wdXNoKDxUaW1lSXRlbSBcbiAgICAgICAgICAgIHRpdGxlPXtkYXRhW2ldLnRpdGxlfVxuICAgICAgICAgICAgcGljPXtkYXRhW2ldLnBpY31cbiAgICAgICAgICAgIHRhZz17ZGF0YVtpXS50YWd9XG4gICAgICAgICAgICBhdXRob3I9e2RhdGFbaV0uYXV0aG9yfVxuICAgICAgICAgICAgdGFiaWQ9e2RhdGFbaV0udGFiaWR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtkYXRhW2ldLnRleHR9XG4gICAgICAgICAgICA8L1RpbWVJdGVtPilcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93czsgXG4gICAgICB9XG5cbiAgICAgIFxuICAgICAgZXhwb3J0IGZ1bmN0aW9uIGdldEl0ZW1zQnlUeXBlKHRhYmlkOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IHJvd3MgPSBbXVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0YWJpZCA9PT0gZGF0YVtpXS50YWcpIHtcbiAgICAgICAgICAgICAgICByb3dzLnB1c2goPFRpbWVJdGVtXG4gICAgICAgICAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e2RhdGFbaV0udGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIHBpYz17ZGF0YVtpXS5waWN9XG4gICAgICAgICAgICAgICAgICAgIHRhZz17ZGF0YVtpXS50YWd9XG4gICAgICAgICAgICAgICAgICAgIGF1dGhvcj17ZGF0YVtpXS5hdXRob3J9XG4gICAgICAgICAgICAgICAgICAgIHRhYmlkPXtkYXRhW2ldLnRhYmlkfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2RhdGFbaV0udGV4dH1cbiAgICAgICAgICAgICAgICA8L1RpbWVJdGVtPilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93czsgXG4gICAgfVxuICAgIFxuICAgICAgXG4gICAgICBsZXQgZGF0YSA9IFtcbiAgICAgICAge1xuICAgICAgICB0aXRsZTogXCJGaXJzdCBJbXByZXNzaW9uXCIsXG4gICAgICAgIHBpYzogXCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLFxuICAgICAgICB0YWc6IFwiUGF0aWVudFwiLFxuICAgICAgICBhdXRob3I6IFwiTWF4IEJlY2ttYW5uXCIsXG4gICAgICAgIHRhYmlkOiBcIkludk1heFwiLFxuICAgICAgICB0ZXh0OiBcIiBcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgIHRpdGxlOiBcIlBoeXNpb3RoZXJhcGllXCIgLFxuICAgICAgICBwaWM6IFwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIixcbiAgICAgICAgdGFnOiAgXCJNZWRpY2FsIFByb2Zlc3Npb25hbFwiLFxuICAgICAgICBhdXRob3I6IFwiS2F0cmluIFdlc3Rob2ZmXCIsXG4gICAgICAgIHRhYmlkOiBcIkludldlc3Rob2ZmXCIsXG4gICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiXCIgLFxuICAgICAgICAgIHBpYzogXCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLFxuICAgICAgICAgIHRhZzogIFwiTWVkaWNhbCBQcm9mZXNzaW9uYWxcIixcbiAgICAgICAgICBhdXRob3I6IFwiRHIuIENocmlzdGlhbiBPbGFyaXVcIixcbiAgICAgICAgICB0YWJpZDogXCJJbnZPbGFyaXVcIixcbiAgICAgICAgICB0ZXh0OiBcIlRleHRcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiBcIlwiICxcbiAgICAgICAgICBwaWM6IFwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIixcbiAgICAgICAgICB0YWc6ICBcIlBhdGllbnRcIixcbiAgICAgICAgICBhdXRob3I6IFwiSnVsaWFcIixcbiAgICAgICAgICB0YWJpZDogXCJJbnZKdWxpYVwiLFxuICAgICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiXCIgLFxuICAgICAgICAgIHBpYzogXCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLFxuICAgICAgICAgIHRhZzogIFwiRXRoaWNzXCIsXG4gICAgICAgICAgYXV0aG9yOiBcIk5pY29sZSBGcmllZGxlaW5cIixcbiAgICAgICAgICB0YWJpZDogXCJJbnZGcmllZGxlaW5cIixcbiAgICAgICAgICB0ZXh0OiBcIlRleHRcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiBcIkFwcHJvYWNoPz9cIiAsXG4gICAgICAgICAgcGljOiBcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIsXG4gICAgICAgICAgdGFnOiAgXCJBY2FkZW1pYVwiLFxuICAgICAgICAgIGF1dGhvcjogXCJQcm9mLiBEci4gU3RlZmFuIEhhbW1lclwiLFxuICAgICAgICAgIHRhYmlkOiBcIkludkhhbW1lclwiLFxuICAgICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogXCJBcHByb2FjaD8/XCIgLFxuICAgICAgICAgICAgcGljOiBcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIsXG4gICAgICAgICAgICB0YWc6ICBcIkFjYWRlbWlhXCIsXG4gICAgICAgICAgICBhdXRob3I6IFwiUHJvZi4gRHIuIENocmlzdG9waCBXZWJlclwiLFxuICAgICAgICAgICAgdGFiaWQ6IFwiSW52V2ViZXJcIixcbiAgICAgICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6IFwiXCIgLFxuICAgICAgICAgICAgICBwaWM6IFwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIixcbiAgICAgICAgICAgICAgdGFnOiAgXCJBY2FkZW1pYVwiLFxuICAgICAgICAgICAgICBhdXRob3I6IFwiTWF0dGlqcyBCdWxjYWVuXCIsXG4gICAgICAgICAgICAgIHRhYmlkOiBcIkludkJ1bGNhZW4xXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiRmlyc3QgU3RlcHMgaW4gTE5QXCIgLFxuICAgICAgICAgIHBpYzogXCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLFxuICAgICAgICAgIHRhZzogIFwiQWNhZGVtaWFcIixcbiAgICAgICAgICBhdXRob3I6IFwiRHIuIEthdGhhcmluYSBLb2xvbmtvXCIsXG4gICAgICAgICAgdGFiaWQ6IFwiSW52S29sb25rb1wiLFxuICAgICAgICAgIHRleHQ6IFwiVGV4dFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiSHlnaWVuZSBDb25jZXB0XCIsXG4gICAgICAgICAgcGljOiBcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3BsYWNlaG9sZGVycy9wbGFjZWhpbGRlcnBlcnNvbi5qcGVnXCIsXG4gICAgICAgICAgdGFnOiBcIlBhdGllbnRcIixcbiAgICAgICAgICBhdXRob3I6IFwiTWF4IEJlY2ttYW5uXCIsXG4gICAgICAgICAgdGFiaWQ6IFwiSW52TWF4XCIsXG4gICAgICAgICAgdGV4dDogXCIgXCJcbiAgICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiXCIgLFxuICAgICAgICAgIHBpYzogXCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9wbGFjZWhvbGRlcnMvcGxhY2VoaWxkZXJwZXJzb24uanBlZ1wiLFxuICAgICAgICAgIHRhZzogIFwiUGF0aWVudFwiLFxuICAgICAgICAgIGF1dGhvcjogXCJKb3NodWFcIixcbiAgICAgICAgICB0YWJpZDogXCJJbnZKb3NodWFcIixcbiAgICAgICAgICB0ZXh0OiBcIlRleHRcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiBcIlwiICxcbiAgICAgICAgICBwaWM6IFwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIixcbiAgICAgICAgICB0YWc6ICBcIkluZHVzdHJ5XCIsXG4gICAgICAgICAgYXV0aG9yOiBcIlJOYWxlXCIsXG4gICAgICAgICAgdGFiaWQ6IFwiSW52Uk5hbGVcIixcbiAgICAgICAgICB0ZXh0OiBcIlRleHRcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiBcIlwiICxcbiAgICAgICAgICBwaWM6IFwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGxhY2Vob2xkZXJzL3BsYWNlaGlsZGVycGVyc29uLmpwZWdcIixcbiAgICAgICAgICB0YWc6ICBcIkFjYWRlbWlhXCIsXG4gICAgICAgICAgYXV0aG9yOiBcIk1hdHRpanMgQnVsY2FlblwiLFxuICAgICAgICAgIHRhYmlkOiBcIkludkJ1bGNhZW4yXCIsXG4gICAgICAgICAgdGV4dDogXCJUZXh0XCIsXG4gICAgICAgICAgfVxuICAgICAgICBdIiwgIi8vIFRoZSBtYWluIHRhYiBoYXMgdG8gYmUgZ2l2ZW4gZGlzcGxheTogYmxvY2s7IHZpYSBpZCBjc3Mgb3IgYmUgZ2l2ZW4gdGhlIGlkIFwiRmlyc3RcIlxuZXhwb3J0IGZ1bmN0aW9uIEJ1dHRvblJvd1RhYnMoe2RhdGEsIGNsYX06IHtkYXRhOiBBcnJheTxUYWJEYXRlbnNhdHo+LCBjbGE6IHN0cmluZ30pIHtcbiAgICBsZXQgcm93cyA9IFtdXG4gICAgZm9yICggbGV0IGkgPSAwOyAgaSA8IGRhdGEubGVuZ3RoOyBpKysgKXtcbiAgICAgIHJvd3MucHVzaChcbiAgICAgICAgPGRpdiBpZD17ZGF0YVtpXS5jc3NuYW1lfSBjbGFzc05hbWU9e2NsYX0+XG4gICAgICAgICAgICB7ZGF0YVtpXS5ub2RlfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHJvd3M7IFxuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBCRkhTdHlsZVRhYnMoe2RhdGEsIGNsYX06IHtkYXRhOiBBcnJheTxOb2RlRGF0ZW5zYXR6PiwgY2xhOiBzdHJpbmd9KSB7XG4gICAgbGV0IHJvd3MgPSBbXVxuICAgIGZvciAoIGxldCBpID0gMDsgIGkgPCBkYXRhLmxlbmd0aDsgaSsrICl7XG4gICAgICByb3dzLnB1c2goXG4gICAgICAgIDxkaXYgaWQ9e2RhdGFbaV0uY3NzbmFtZX0gY2xhc3NOYW1lPXtjbGF9PlxuICAgICAgICAgICAge2RhdGFbaV0ubm9kZX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiByb3dzOyBcbiAgfSIsICJcblxuZXhwb3J0IGZ1bmN0aW9uIEJsb2NrUXVvdGUoe3RleHQsIGNpdGV9OiB7dGV4dDogc3RyaW5nOyBjaXRlOiBzdHJpbmd9KXtcbiAgICByZXR1cm4oXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2txdW90ZS13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2NrcXVvdGVcIj5cbiAgICAgICAgICAgICAgICA8aDI+XG4gICAgICAgICAgICAgICAgICAgIHt0ZXh0fVxuICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgPGg0PjxlbT57Y2l0ZX08L2VtPjwvaDQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJsb2NrUXVvdGVCKHt0ZXh0LCBjaXRlLCBpZH06IHt0ZXh0OiBzdHJpbmc7IGNpdGU6IHN0cmluZywgaWQ/OiBzdHJpbmd9KXtcbiAgICBpZiAoaWQpe1xuICAgICAgICBsZXQgaCA9IFwiI1wiICsge2lkfVxuICAgICAgICByZXR1cm4oXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2NrcXVvdGUtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2txdW90ZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgyPlxuICAgICAgICAgICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDxoND48ZW0+e2NpdGV9PC9lbT4gPGEgaHJlZj17aH0+PHN1cD57aWR9PC9zdXA+PC9hPjwvaDQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSAgXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICAgIHJldHVybihcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2txdW90ZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9ja3F1b3RleFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dGV4dH1cbiAgICAgICAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPGg0PjxlbT57Y2l0ZX08L2VtPjwvaDQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG4gICAgXG59XG5cblxuLyogPHNwYW4+V2luc3RvbiBDaHVyY2hpbGw8L3NwYW4+XG4gIDxibG9ja3F1b3RlPlxuICAgIDxwPjxpPiZsZHF1bztTdWNjZXNzIGNvbnNpc3RzIG9mIGdvaW5nIGZyb20gZmFpbHVyZSB0byBmYWlsdXJlIHdpdGhvdXQgbG9zcyBvZiBlbnRodXNpYXNtLiZyZHF1bzsgPC9pPjwvcD5cbiAgPC9ibG9ja3F1b3RlPiAqLyIsICIvKiBcbi0gc2VpdHdcdTAwRTRydHMgXG4tIG1pdCBGYXJiZW4gdW5kIFRleHQgYW56ZWlnZW4gd296dSBkaWUgZ2VoXHUwMEY2cmVuIFxuLSBiZWkgc2hvdyBtb3JlIHVudGVuIGRydW50ZXIgVGFicyBcdTAwRjZmZm5lblxuLSB3ZW5uIG1hbiBhdWYgZGllIFBlcnNvbiBrbGlja3Qgc29sbCBlcyBJbmZvcyBcdTAwRkNiZXIgZGllIFBlcnNvbiBhbnplaWdlbiBcbi0ga2FubiBtbiBkaWUgS2FydGVuIG5hY2ggTGlua3MgdW5kIG5hY2ggcmVjaHRzIGF1c3dlaXRlbiB6YiBmXHUwMEZDciBNZWhyIGluZm9zIGZcdTAwRkNyIGRpZSBQZXJzb24/IFxuLSBNZWlsZW5zdGVpbmUgYWxzIFBvcHVwXG4tIEZpbHRlciBtaXQgSGFsYmtyZWlzRGluZyBhbHMgVGFic3RldWVydW5nIHwgRWludGVpbHVuZyBuYWNoIEJlcmVpY2ggKEFjYWRlbWlhLCBJbnN1c3RyeSwgLi4uLCB1bmQgYXVjaCBuYWNoIERlbGl2ZXJ5IHVuZCBNZWNoYW5pc20pIFxuLSBETkEgU3RyYW5nIGFscyBUaW1lbGluZT8gXG4qL1xuaW1wb3J0IHsgVGltZUhvcmkgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9Ib3Jpem9udGFsVGltZWxpbmVcIjtcbmltcG9ydCB7IEFsbFBvcHVzIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvSG9yaXpvbnRhbFRpbWVsaW5lXCI7XG5pbXBvcnQgeyBCRkhTdHlsZVRhYnMsIEJ1dHRvblJvd1RhYnMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UYWJzXCI7XG5pbXBvcnQgeyBUYWJCdXR0b25Sb3csIG9wZW5UYWIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9CdXR0b25zXCI7XG5pbXBvcnQgeyBCbG9ja1F1b3RlQiB9IGZyb20gXCIuLi9jb21wb25lbnRzL1F1b3Rlc1wiO1xuaW1wb3J0IHsgQm94LCBUYWIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtUYWJDb250ZXh0LCBUYWJMaXN0LCBUYWJQYW5lbH0gZnJvbSAnQG11aS9sYWInO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5cbmxldCB0aW1lbGluZWJ1dHRvbnJvd2RhdGEgPSBbXG4gIHtcbiAgICBidXR0b25uYW1lOiBcIkFsbFwiLCBcbiAgICBub2RlOiA8VGltZUhvcmkgdGFiPVwiXCIgPjwvVGltZUhvcmk+LCBcbiAgICBjc3NuYW1lOiBcIkZpcnN0XCJcbiAgfSxcbiAgeyBcbiAgICBub2RlOiA8VGltZUhvcmkgdGFiPVwiUGF0aWVudFwiID48L1RpbWVIb3JpPixcbiAgICBidXR0b25uYW1lOiBcIlBhdGllbnRzXCIsIFxuICAgIGNzc25hbWU6IFwiUGF0aWVudFwiXG4gIH0sXG4gIHtcbiAgICBub2RlOiA8VGltZUhvcmkgdGFiPVwiTWVkaWNhbCBQcm9mZXNzaW9uYWxcIiA+PC9UaW1lSG9yaT4sXG4gICAgYnV0dG9ubmFtZTogXCJNZWRpY2FsIFByb2Zlc3Npb25hbHNcIiwgXG4gICAgY3NzbmFtZTogXCJNZWRpY2FsXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDxUaW1lSG9yaSB0YWI9XCJBY2FkZW1pYVwiID48L1RpbWVIb3JpPixcbiAgICBidXR0b25uYW1lOiBcIkFjYWRlbWlhXCIsIFxuICAgIGNzc25hbWU6IFwiQWNhZGVtaWFcIlxuICB9LFxuICB7IFxuICAgIG5vZGU6IDxUaW1lSG9yaSB0YWI9XCJJbmR1c3RyeVwiID48L1RpbWVIb3JpPixcbiAgICBidXR0b25uYW1lOiBcIkluZHVzdHJ5XCIsIFxuICAgIGNzc25hbWU6IFwiSW5kdXN0cnlcIlxuICB9XG5dXG5cbmxldCB0aW1lbGluZXBlcnNvbnRhYnMgPVtcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgICAgICAgPGgzPk1heDwvaDM+XG4gICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgIDwvPiwgXG4gICAgY3NzbmFtZTogXCJJbnZNYXhcIlxuICB9LFxuICB7XG4gICAgbm9kZTogPD5cblxuICAgICAgICAgIDwvPixcbiAgICBjc3NuYW1lOiBcIkJlcmVuc1wiXG4gIH0sXG4gIHtcbiAgICBub2RlOiA8PlxuXG4gICAgICAgICAgPC8+LFxuICAgIGNzc25hbWU6IFwiV2lzY2htZXllclwiXG4gIH0sXG4gIHtcbiAgICBub2RlOiA8PlxuXG4gICAgICAgICAgPC8+LFxuICAgIGNzc25hbWU6IFwiSW52RnJpZWRsZWluXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgICAgICAgICA8aDM+Um5oYWxlPC9oMz5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICA8Lz4sXG4gICAgY3NzbmFtZTogXCJJbnZSTmFsZVwiXG4gIH0sXG4gIHtcbiAgICBub2RlOiA8PlxuICAgICAgICAgICAgPGgzPk1hdHRpanM8L2gzPlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgIDwvPixcbiAgICBjc3NuYW1lOiBcIkludkJ1bGNhZW4xXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgICAgICAgICA8aDM+TWF0dGlqczwvaDM+XG4gICAgICAgICAgICA8cD48L3A+XG4gICAgICAgICAgPC8+LFxuICAgIGNzc25hbWU6IFwiSW52QnVsY2FlbjJcIlxuICB9LFxuICB7XG4gICAgbm9kZTogPD5cblxuICAgICAgICAgIDwvPixcbiAgICBjc3NuYW1lOiBcIkludkp1bGlhXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG5cbiAgICAgICAgICA8Lz4sXG4gICAgY3NzbmFtZTogXCJJbnZKb3NodWFcIlxuICB9LFxuICB7XG4gICAgbm9kZTogPD5cbiAgICAgICAgICAgIDxoMz5LYXRyaW48L2gzPlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgIDwvPixcbiAgICBjc3NuYW1lOiBcIkludldlc3Rob2ZmXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgICAgICAgICA8aDM+T2xhcml1PC9oMz5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICA8Lz4sXG4gICAgY3NzbmFtZTogXCJJbnZPbGFyaXVcIlxuICB9LFxuICB7XG4gICAgbm9kZTogPD5cbiAgICAgICAgICAgIDxoMz5Lb2xvbmtvPC9oMz5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICA8Lz4sXG4gICAgY3NzbmFtZTogXCJJbnZLb2xvbmtvXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgICAgICAgICA8aDM+V2ViZXI8L2gzPlxuICAgICAgICAgICAgPHA+PC9wPlxuICAgICAgICAgIDwvPixcbiAgICBjc3NuYW1lOiBcIkludldlYmVyXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDw+XG4gICAgICAgICAgICA8aDM+SGFtbWVyPC9oMz5cbiAgICAgICAgICAgIDxwPjwvcD5cbiAgICAgICAgICA8Lz4sXG4gICAgY3NzbmFtZTogXCJJbnZIYW1tZXJcIlxuICB9LFxuXVxuLy8gZGllIGhlaWdodCBmXHUwMEZDciBjbGFzc05hbWU9XCJ0aW1lbGluZSByb3cgYWxpZ24taXRlbXMtY2VudGVyXCIgbXVzcyBhbmdlcGFzc3Qgd2VyZGVuLCBkYW1pdCBkaWUgQm94ZW4gaFx1MDBGNmhlciBzZWluIGtcdTAwRjZubmVuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIEh1bWFuUHJhY3RpY2VzKCkge1xuICBvcGVuVGFiKHtjaXR5TmFtZTogXCJBbGxcIiwgY2xhOiBcInRpbWVsaW5lY2FyZHRhYnNcIn0pOyBcbiAgcmV0dXJuICggIFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IG10LTRcIj5cbiAgICA8QmxvY2tRdW90ZUJcbiAgICAgIHRleHQ9XCJIdW1hbiBQcmFjdGljZXMgaXMgdGhlIHN0dWR5IG9mIGhvdyB5b3VyIHdvcmsgYWZmZWN0cyB0aGUgd29ybGQsIGFuZCBob3cgdGhlIHdvcmxkIGFmZmVjdHMgeW91ciB3b3JrLlwiXG4gICAgICBjaXRlPVwiLSBQZXRlciBDYXJyLCBEaXJlY3RvciBvZiBKdWRnaW5nXCJcbiAgICAgIC8+IFxuICAgIDxIUE92ZXJ2aWV3Lz4gXG4gICAgPEhQVGltZWxpbmUvPlxuICAgIDxzZWN0aW9uIGlkPVwiSW5zcGlyYXRpb25cIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNlbnRlclwiPlxuICAgICAgICA8aDMgIGNsYXNzTmFtZT1cImNvbCBwZXJzb25hbHN0eWxlb25lXCI+SW5zcGlyYXRpb248L2gzPlxuICAgICAgPC9kaXY+IFxuICAgIDwvc2VjdGlvbj5cbiAgICA8c2VjdGlvbiBpZD1cIk1ldGhvZHNcIiBjbGFzc05hbWU9XCJzZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNlbnRlclwiPlxuICAgICAgICA8aDMgIGNsYXNzTmFtZT1cImNvbCBwZXJzb25hbHN0eWxlb25lXCI+TWV0aG9kczwvaDM+XG4gICAgICA8L2Rpdj4gXG4gICAgPC9zZWN0aW9uPlxuICAgIDxzZWN0aW9uIGlkPVwiQW5hbHlzaXNcIj5cbiAgICAgIDxkaXYgIGNsYXNzTmFtZT1cImNlbnRlclwiID5cbiAgICAgICAgPGgzICBjbGFzc05hbWU9XCJjb2wgcGVyc29uYWxzdHlsZW9uZVwiPkFuYWx5c2lzPC9oMz5cbiAgICAgIDwvZGl2PiBcbiAgICAgIDxIUFRhYnMvPlxuICAgIDwvc2VjdGlvbj5cbiAgICBcbiAgICBcblxuXG4gICAgPHNlY3Rpb24gaWQ9XCJSZWZsZWN0aW9uXCIgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjZW50ZXJcIj5cbiAgICAgICAgPGgzICBjbGFzc05hbWU9XCJjb2wgcGVyc29uYWxzdHlsZW9uZVwiPlJlZmxlY3Rpb24gRnJhbWV3b3JrPC9oMz5cbiAgICAgIDwvZGl2PiBcbiAgICAgICAgICA8SFBUYWJzVHdvLz5cbiAgICA8L3NlY3Rpb24+XG4gICAgXG5cbiAgICA8c2VjdGlvbiBpZD1cIkltcGxlbWVudGF0aW9uXCIgY2xhc3NOYW1lPVwic2VjdGlvblwiPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiY2VudGVyXCI+XG4gICAgICA8aDMgY2xhc3NOYW1lPVwiY29sIHBlcnNvbmFsc3R5bGVvbmVcIj5JbXBsZW1lbnRhdGlvbjwvaDM+XG4gICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPC9kaXY+XG4gICAgXG4gICk7ICBcbn1cblxuXG5mdW5jdGlvbiBIUFRhYnMoKXtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZSgnMScpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfZXZlbnQ6IFJlYWN0LlN5bnRoZXRpY0V2ZW50LCBuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICByZXR1cm4oXG4gICAgPEJveCBzeD17eyB3aWR0aDogJzEwMCUnLCB0eXBvZ3JhcGh5OiAnYm9keTEnIH19PlxuICAgIDxUYWJDb250ZXh0IHZhbHVlPXt2YWx1ZX0+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckJvdHRvbTogMSwgYm9yZGVyQ29sb3I6ICdkaXZpZGVyJyB9fT5cbiAgICAgICAgPFRhYkxpc3Qgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gYXJpYS1sYWJlbD1cImxhYiBBUEkgdGFicyBleGFtcGxlXCI+XG4gICAgICAgICAgPFRhYiBsYWJlbD1cIlBhdGllbnQgTmVlZHNcIiB2YWx1ZT1cIjFcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJTY2llbnRpZmljIENoYWxsZW5nZXNcIiB2YWx1ZT1cIjJcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJBY2FkZW1pYyBjb25zaWRlcmF0aW9uXCIgdmFsdWU9XCIzXCIgLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPVwiRXRoaWNhbCBxdWVzdGlvbnNcIiB2YWx1ZT1cIjRcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJNZWRpY2FsIHBlcnNwZWN0aXZlc1wiIHZhbHVlPVwiNVwiIC8+XG4gICAgICAgICAgXG4gICAgICAgICAgXG4gICAgICAgIDwvVGFiTGlzdD5cbiAgICAgIDwvQm94PlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPVwiMVwiPiAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjJcIj4gICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPVwiM1wiPiAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9XCI0XCI+ICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjVcIj4gICA8L1RhYlBhbmVsPlxuICAgIDwvVGFiQ29udGV4dD5cbiAgPC9Cb3g+XG4gIClcbn1cblxuZnVuY3Rpb24gSFBUYWJzVHdvKCl7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoJzEnKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoX2V2ZW50OiBSZWFjdC5TeW50aGV0aWNFdmVudCwgbmV3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgcmV0dXJuKFxuICAgIDw+XG4gICAgPEJveCBzeD17eyB3aWR0aDogJzEwMCUnLCB0eXBvZ3JhcGh5OiAnYm9keTEnIH19PlxuICAgIDxUYWJDb250ZXh0IHZhbHVlPXt2YWx1ZX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtM1wiPlxuICAgICAgICA8Qm94IHN4PXt7IGJvcmRlckJvdHRvbTogMSwgYm9yZGVyQ29sb3I6ICdkaXZpZGVyJyB9fT5cbiAgICAgICAgPFRhYkxpc3Qgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gYXJpYS1sYWJlbD1cImxhYiBBUEkgdGFicyBleGFtcGxlXCI+XG4gICAgICAgICAgPFRhYiBsYWJlbD1cIlBhdGllbnQgTmVlZHNcIiB2YWx1ZT1cIjFcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJTY2llbnRpZmljIENoYWxsZW5nZXNcIiB2YWx1ZT1cIjJcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJBY2FkZW1pYyBjb25zaWRlcmF0aW9uXCIgdmFsdWU9XCIzXCIgLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPVwiRXRoaWNhbCBxdWVzdGlvbnNcIiB2YWx1ZT1cIjRcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJNZWRpY2FsIHBlcnNwZWN0aXZlc1wiIHZhbHVlPVwiNVwiIC8+XG4gICAgICAgIDwvVGFiTGlzdD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICA8VGFiUGFuZWwgdmFsdWU9XCIxXCI+IDEgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjJcIj4gIDIgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjNcIj4gMyAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjRcIj4gIDQgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjVcIj4gNSAgPC9UYWJQYW5lbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwvVGFiQ29udGV4dD5cbiAgICA8L0JveD4gXG4gICAgPC8+XG4gIClcbn1cbnsvKiBcbiAgIFxuICAgICAgXG4gICAgICAgIFxuICAgICAgXG5cbiAgICBcbiAgKi99XG5cbi8qICA8VGFiIGxhYmVsPVwiUHJvYmxlbVwiIHZhbHVlPVwiMVwiIC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD1cIkluZmx1ZW5jZVwiIHZhbHVlPVwiNVwiIC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD1cIlBhdGllbnQgTmVlZHNcIiB2YWx1ZT1cIjJcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJTY2llbnRpZmljIENoYWxsZW5nZXNcIiB2YWx1ZT1cIjNcIiAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9XCJTdXJ2ZXlzXCIgdmFsdWU9XCI0XCIgLz4gKi9cblxuZnVuY3Rpb24gSFBPdmVydmlldygpe1xuICByZXR1cm4oXG4gICAgPHNlY3Rpb24gaWQ9XCJPdmVydmlld1wiIGNsYXNzTmFtZT1cInNlY3Rpb25cIj5cbiAgICA8ZGl2ICBjbGFzc05hbWU9XCJjZW50ZXJcIiA+XG4gICAgICA8aDMgIGNsYXNzTmFtZT1cImNvbCBwZXJzb25hbHN0eWxlb25lXCI+T3ZlcnZpZXc8L2gzPlxuICAgIDwvZGl2PiBcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiIHN0eWxlPXt7cG9zaXRpb246IFwicmVsYXRpdmVcIiwgaGVpZ2h0OiBcImZpdC1jb250ZW50XCJ9fT5cbiAgICAgIDxNaW5kTWFwVHdvPjwvTWluZE1hcFR3bz5cbiAgICA8L2Rpdj4gXG4gIDwvc2VjdGlvbj5cbiAgKVxufVxuXG5mdW5jdGlvbiBIUFRpbWVsaW5lKCl7XG4gIHJldHVybihcbiAgICA8c2VjdGlvbiBpZD1cIlRpbWVsaW5lXCIgY2xhc3NOYW1lPVwic2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjZW50ZXJcIj5cbiAgICAgICAgPGgzICBjbGFzc05hbWU9XCJjb2wgcGVyc29uYWxzdHlsZW9uZVwiPlRpbWVsaW5lPC9oMz5cbiAgICAgIDwvZGl2PiBcbiAgICAgIDxUYWJCdXR0b25Sb3cgZGF0YT17dGltZWxpbmVidXR0b25yb3dkYXRhfSBjbGFzc3k9XCJcIiBvcGVudHlwZT1cInRpbWVsaW5lY2FyZHRhYnNcIiBjbG9zaW5nPVwidGltZWxpbmVwZXJzb250YWJzXCIgLz5cbiAgICAgIDxBbGxQb3B1cz48L0FsbFBvcHVzPlxuICAgICAgPEJ1dHRvblJvd1RhYnMgY2xhPVwidGltZWxpbmVjYXJkdGFic1wiIGRhdGE9e3RpbWVsaW5lYnV0dG9ucm93ZGF0YX0vPiBcbiAgICAgIDxCRkhTdHlsZVRhYnMgY2xhPVwidGltZWxpbmVwZXJzb250YWJzXCIgZGF0YT17dGltZWxpbmVwZXJzb250YWJzfT48L0JGSFN0eWxlVGFicz4gXG4gICAgPC9zZWN0aW9uPlxuICApXG59XG5cbmZ1bmN0aW9uIE1pbmRNYXBUd28oKXtcbiAgcmV0dXJuKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWluZG1hcFwiPlxuXG4gIHsvKiA8IS0tTEVGVC0tPiAqL31cbiAgPG9sIGNsYXNzTmFtZT1cImNoaWxkcmVuIGNoaWxkcmVuX2xlZnRicmFuY2hcIj5cbiAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCIgPlxuICAgICAgICA8ZGl2IGlkPVwiTDFcIiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj4gTWVkaWNhbCA8YnIvPiBQcm9mZXNzaW9uYWxzPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxvbCBjbGFzc05hbWU9XCJjaGlsZHJlblwiPlxuICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICAgICAgPGRpdiBpZD1cIkwxLjFcIiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5LYXRyaW48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJMMS4yXCIgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+Q3Jpc3RpYW48L2Rpdj4gXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L29sPlxuICAgIDwvbGk+XG4gICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICA8ZGl2IGlkPVwiTDJcIiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5JbmR1c3RyeTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8b2wgY2xhc3NOYW1lPVwiY2hpbGRyZW5cIj5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+TDIuMTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5MMi4yPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPkwyLjM8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvb2w+XG4gICAgPC9saT5cbiAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJMM1wiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPmlHZW08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG9sIGNsYXNzTmFtZT1cImNoaWxkcmVuXCI+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPkwyLjE8L2Rpdj4gXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPkwyLjI8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5MMi4zPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvb2w+XG4gICAgPC9saT5cbiAgPC9vbD5cblxuIHsvKiAgPCEtLUNFTlRFUi0tPiAqL31cbiAgPGRpdiBjbGFzc05hbWU9XCJub2RlIG5vZGVfcm9vdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPlN0YWtlaG9sZGVyczwvZGl2PlxuICA8L2Rpdj5cblxuICB7LyogPCEtLVJJR0hULS0+ICovfVxuICA8b2wgY2xhc3NOYW1lPVwiY2hpbGRyZW4gY2hpbGRyZW5fcmlnaHRicmFuY2hcIj5cbiAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgIDxkaXYgaWQ9XCJSMVwiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPlBhdGllbnRzICYgPGJyLz4gbmV4dCBvZiBraW4gPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxvbCBjbGFzc05hbWU9XCJjaGlsZHJlblwiPlxuICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICAgICAgPGRpdiBpZD1cIlIxLjFcIiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5NYXg8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICAgICAgPGRpdiBpZD1cIlIxLjJcIiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5KdWxpYTwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiUjEuM1wiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPkpvc2h1YTwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L29sPlxuICAgIDwvbGk+XG4gICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICA8ZGl2IGlkPVwiUjJcIiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5BY2FkZW1pYTwvZGl2PlxuICAgICAgICBcbiAgICAgIDwvZGl2PlxuICAgICAgPG9sIGNsYXNzTmFtZT1cImNoaWxkcmVuXCI+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiUjIuMVwiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPk1hdHRpanM8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5SMi4yPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzTmFtZT1cImNoaWxkcmVuX2l0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+UjIuMzwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPlIyLjQ8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgPC9vbD5cbiAgICA8L2xpPlxuICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVcIj5cbiAgICAgICAgPGRpdiBpZD1cIlIzXCIgY2xhc3NOYW1lPVwibm9kZV90ZXh0XCI+U29jaWV0eTwvZGl2PlxuICAgICAgICBcbiAgICAgIDwvZGl2PlxuICAgICAgPG9sIGNsYXNzTmFtZT1cImNoaWxkcmVuXCI+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGlkPVwiUjMuMVwiIGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPktyYW5ray48L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY2hpbGRyZW5faXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9kZVwiPlxuICAgICAgICAgICAgPGRpdiBpZD1cIlIzLjJcIiBjbGFzc05hbWU9XCJub2RlX3RleHRcIj5FdGhpazwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJjaGlsZHJlbl9pdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vZGVfdGV4dFwiPlIzLjM8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgPC9vbD5cbiAgICA8L2xpPlxuICA8L29sPlxuICAgIDwvZGl2PlxuXG5cblxuXG5cbiAgKVxufVxuIiwgImltcG9ydCBTaWRlYmFyIGZyb20gXCIuLi9jb21wb25lbnRzL1NpZGViYXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIEhwU2lkZWJhcigpe1xuICAgIHJldHVybihcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMiBkLW5vbmUgZC1sZy1ibG9ja1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzdGlja3ktdG9wIHNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8U2lkZWJhciBudW1zPXtbXCJPdmVydmlld1wiLCBcIlRpbWVsaW5lXCIsIFwiSW5zcGlyYXRpb25cIiwgXCJNZXRob2RzXCIsIFwiQW5hbHlzaXNcIiwgXCJSZWZsZWN0aW9uXCIsIFwiSW1wbGVtZW50YXRpb25cIl19PjwvU2lkZWJhcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59IiwgIlxuXG5cblxuXG5pbnRlcmZhY2UgSXRlbVByb3BzIHtcbiAgICBkYXRlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICB0YWc6IHN0cmluZywgXG4gICAgY29sb3I6IHN0cmluZyBcbn1cblxuLyogaW1wb3J0IEltYWdlRXZlbnQgZnJvbSAnLi9JbWFnZUV2ZW50LnRzeCc7XG5pbXBvcnQgVXJsQnV0dG9uIGZyb20gJy4vVXJsQnV0dG9uLnRzeCc7ICovXG5cblxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lSXRlbSAgPSAoeyBkYXRlLCB0YWcsIGNvbG9yLCBjaGlsZHJlbiB9Okl0ZW1Qcm9wcykgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtaXRlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lLWl0ZW0tY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGFnXCIgc3R5bGU9e3sgYmFja2dyb3VuZDogY29sb3IgfX0+XG4gICAgICAgICAgICAgICAge3RhZ31cbiAgICAgICAgICAgIDwvc3Bhbj4gXG4gICAgICAgICAgICA8dGltZT57ZGF0ZX08L3RpbWU+XG4gICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiY2lyY2xlXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4pO1xuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIE15VGltZWxpbmUgKCkge1xuICAgIHJldHVybihcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3RpbWVsaW5lLWJlZ2luJz5cbiAgICAgICAgICAgICAgICBPcGVuaW5nXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8VGltZWxpbmVJdGVtXG4gICAgICAgICAgICAgICAgZGF0ZT0nU2NpZW50aWZpYyBUYWxrIEkuJ1xuICAgICAgICAgICAgICAgIHRhZz0gJ1RhbGtzJ1xuICAgICAgICAgICAgICAgIGNvbG9yPSd2YXIoLS1saWdodGJsdWUpJ1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgU2NpZW50aWZpYyBUYWxrIDEgYnkgS3Jpc3RpYW4gTVx1MDBGQ2xsZXIgYW5kIFJhbSBTaGFrYXJcbiAgICAgICAgICAgICAgICAgICAgey8qIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZUV2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlPVwiNC8xMy8xOVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PVwiWW91IGNhbiBlbWJlZCBpbWFnZXMuLi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9yZXMuY2xvdWRpbmFyeS5jb20vZG92b3E4am91L2ltYWdlL3VwbG9hZC92MTU2NDc3MjE5NC9qZWxseWZpc2guanBnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImplbGx5ZmlzaCBzd2ltbWluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVkaXQ9XCJQaG90byBieSBbQHRhdmkwMDRdKGh0dHBzOi8vdW5zcGxhc2guY29tL0B0YXZpMDA0KVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9J1NjaWVudGlmaWMgVGFsayBJLic+XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VXJsQnV0dG9uIGhyZWY9XCJodHRwczovL3Vuc3BsYXNoLmNvbS9zZWFyY2gvcGhvdG9zL3VuZGVyc2VhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgbW9yZSB1bmRlcnNlYSBwaG90b3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9VcmxCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JbWFnZUV2ZW50PiAqL31cblxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdIb3cgdG8gV2lraSdcbiAgICAgICAgICAgICAgICB0YWc9J1dvcmtzaG9wIFNlc3Npb24gSS4nXG4gICAgICAgICAgICAgICAgY29sb3I9J3ZhcigtLXRleHQtcHJpbWFyeSknXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIExlYXJuaW5nIHRoZSBiYXNpY3Mgb2YgV2lraSBjb2RpbmcgYW5kIGRlc2lnbi4gSW4gdGhpcyB3b3Jrc2hvcCwgdGhlIHBhcnRpY2lwYW50cyBnZWluZWQgZXhwZXJ0aXNlIHRvIGVsZXZhdGUgdGhlaXIgdGVhbXMgd2lraS5cbiAgICAgICAgICAgICAgICA8L1RpbWVsaW5lSXRlbT5cbiAgICAgICAgICAgICAgICA8VGltZWxpbmVJdGVtXG4gICAgICAgICAgICAgICAgZGF0ZT0nSG93IHRvIFN5bkJpbydcbiAgICAgICAgICAgICAgICB0YWc9J1dvcmtzaG9wIFNlc3Npb24gSS4nXG4gICAgICAgICAgICAgICAgY29sb3I9J3ZhcigtLXRleHQtcHJpbWFyeSknXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIERlc2lnbiBnZW5ldGljIGNvbnN0cnVjdHMgYW5kIHJlLXdyaXRlIHRoZSBnZW5vbWljIGNvZGUsIGFuZCBwbGFuIGV4cGVyaW1lbnRzIHVzaW5nIEFJLiBMZWFybiBob3cgdG8gZWZmZWN0aXZlbHkgYnVpbGQgZ2VuZXRpYyBjaXJjdWl0IHN5c3RlbXMgZm9yIGltcGxlbWVudGF0aW9uIGluIHlvdXIgaUdFTSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdIb3cgdG8gdXNlIEFJIGFzIGEgc2NpZW50aXN0J1xuICAgICAgICAgICAgICAgIHRhZz0nV29ya3Nob3AgU2Vzc2lvbiBJLidcbiAgICAgICAgICAgICAgICBjb2xvcj0ndmFyKC0tdGV4dC1wcmltYXJ5KSdcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxoNT5Nb2Rlcm4gcHJvYmxlbXMgcmVxdWlyZSBtb2Rlcm4gc29sdXRpb25zPC9oNT5cbiAgICAgICAgICAgICAgICAgICAgIENvbXB1dGF0aW9uYWwgdGVjaG5vbG9naWVzIGFyZSBnZXR0aW5nIG1vcmUgaW4gdGhlIGZvY3VzIG9mIHNjaWVudGlmaWMgcmVzZWFyY2guIEludGVncmF0aW9uIG9mIGdlbmVyYXRpdmUgS0kgbGlrZSBHZW5BSSBieXBhc3MgbGltaXRhdGlvbnMgYW5kIG9mZmVycyBwb3RlbnRpYWwgcmlza3MgLSBsZWFybiBob3cgdG8gaW1wbGVtZW50IEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlLlxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdTY2llbnRpZmljIFRhbGsgSUkuJ1xuICAgICAgICAgICAgICAgIHRhZz0gJ1RhbGtzJ1xuICAgICAgICAgICAgICAgIGNvbG9yPSd2YXIoLS1saWdodGJsdWUpJ1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgU2NpZW50aWZpYyBUYWxrIDIgYnkgS2FybGEgV2FnbmVyXG4gICAgICAgICAgICAgICAgPC9UaW1lbGluZUl0ZW0+XG4gICAgICAgICAgICAgICAgPFRpbWVsaW5lSXRlbVxuICAgICAgICAgICAgICAgIGRhdGU9J1RlYW0gcHJvamVjdCBwcmVzZW50YXRpb25zJ1xuICAgICAgICAgICAgICAgIHRhZz0gJ1RlYW0gcHJlc2VudGF0aW9ucydcbiAgICAgICAgICAgICAgICBjb2xvcj0ndmFyKC0tYWNjZW50LXByaW1hcnknXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aDU+VGVhbSBwcm9qZWN0IHByZXNlbnRhdGlvbnM8L2g1PlxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdQb3N0ZXIgRXhoaWJpdGlvbiBCb290aCdcbiAgICAgICAgICAgICAgICB0YWc9ICdUZWFtIHByZXNlbnRhdGlvbnMnXG4gICAgICAgICAgICAgICAgY29sb3I9J3ZhcigtLWFjY2VudC1wcmltYXJ5KSdcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxoNT5Qb3N0ZXIgRXhoaWJpdGlvbiBCb290aCA8L2g1PlxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdIb3cgdG8gd29yayBzYWZlJ1xuICAgICAgICAgICAgICAgIHRhZz0nV29ya3Nob3AgU2Vzc2lvbiBJSS4nXG4gICAgICAgICAgICAgICAgY29sb3I9J3ZhcigtLXRleHQtcHJpbWFyeSknXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aDU+QWJvdXQgRHVhbC11c2UgYW5kIEJpb3NhZmV0eTwvaDU+XG4gICAgICAgICAgICAgICAgICAgIE5vdmVsIHRlY2hub2xvZ2llcyBvcGVuZWQgcG9zc2liaWxpdGllcyBhbmQgcmlza3MuIExlYXJuIGhvdyB5b3UgaW1wbGVtZW50IFNhZmV0eSBhbmQgU2VjdXJpdHkgU3RyYXRlZ2llcyB3aXRoaW4geW91ciBwcm9qZWN0IGFuZCB0aGluayBtb3JlIHJlc3BvbnNpYmxlIGluIHRlcm1zIG9mIER1YWwgVXNlLlxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdIb3cgdG8gQ29tbXVuaWNhdGUgU2NpZW5jZSdcbiAgICAgICAgICAgICAgICB0YWc9J1dvcmtzaG9wIFNlc3Npb24gSUkuJ1xuICAgICAgICAgICAgICAgIGNvbG9yPSd2YXIoLS10ZXh0LXByaW1hcnkpJ1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgRXhwZXJpZW5jZSBob3cgc2NpZW5jZSBjb21tdW5pY2F0aW9uIGNvdWxkIGJlLiBMZWFybiBjcmVhdGl2ZSBhbmQgZnVubnkgd2F5cyB0byBjb21tdW5pY2F0ZSBkaWZmaWN1bHQgdG9waWNzLiBcbiAgICAgICAgICAgICAgICAgICAgVGhpbmsgb3V0c2lkZSB0aGUgYm94IGFuZCB0cmFpbiB5b3VyIHNraWxscy4gICAgXG4gICAgICAgICAgICAgICAgPC9UaW1lbGluZUl0ZW0+XG4gICAgICAgICAgICAgICAgPFRpbWVsaW5lSXRlbVxuICAgICAgICAgICAgICAgIGRhdGU9J0hvdyB0byBQaXRjaCBZb3VyIFByb2plY3QnXG4gICAgICAgICAgICAgICAgdGFnPSdXb3Jrc2hvcCBTZXNzaW9uIElJLidcbiAgICAgICAgICAgICAgICBjb2xvcj0ndmFyKC0tdGV4dC1wcmltYXJ5KSdcbiAgICAgICAgICAgICAgICA+IFxuICAgICAgICAgICAgICAgIEltYWdlIHlvdSBoYXZlIG9ubHkgdGhyZWUgbWludXRlcyB3aXRoIHlvdXIgYm9zcyB0byBzZWxsIHlvdXIgaWRlYS4uLiBcbiAgICAgICAgICAgICAgICBBZnRlciBvdXIgd29ya3Nob3AgeW91IGxlYXJuZWQgdGVjaG5pcXVlcyB0byBzZWxsIGV2ZXJ5IHBlbiBhbmQgZXZlbiBtb3JlIHRvIGV2ZXJ5IGJvc3Mgb24gdGhlIHBsYW5ldC4gICAgICAgXG4gICAgICAgICAgICAgICAgPC9UaW1lbGluZUl0ZW0+XG4gICAgICAgICAgICAgICAgPFRpbWVsaW5lSXRlbVxuICAgICAgICAgICAgICAgIGRhdGU9J0hvdyB0byBNdWx0aSBNZWRpYSdcbiAgICAgICAgICAgICAgICB0YWc9J1dvcmtzaG9wIFNlc3Npb24gSUkuJ1xuICAgICAgICAgICAgICAgIGNvbG9yPSd2YXIoLS10ZXh0LXByaW1hcnkpJ1xuICAgICAgICAgICAgICAgID4gXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgTGVhcm4gdGhlIGJhc2ljcyBvZiBmaWxtbWFraW5nIGFuZCB2aWRlbyBwcm9kdWN0aW9uLiBcbiAgICAgICAgICAgICAgICBMb29rIGJlaGluZCB0aGUgc2NlbmVzIGFuZCBnZXQgaW4gdG91Y2ggd2l0aCBwcm9mZXNzaW9uYWxzLiBcbiAgICAgICAgICAgICAgICBUcmFpbiB5b3VyIHNraWxscyB0byBkaXJlY3QgaUdFTS1yZWxhdGVkIHZpZGVvcyBhbmQgbW92aWVzLlxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdQYW5lbCBEaXNjdXNzaW9uJ1xuICAgICAgICAgICAgICAgIHRhZz0gJ1RhbGtzJ1xuICAgICAgICAgICAgICAgIGNvbG9yPSd2YXIoLS1saWdodGJsdWUpJ1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgUGFuZWwgRGlzY3Vzc2lvblxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdpR0VNZXIgVGVkIFRhbGtzJ1xuICAgICAgICAgICAgICAgIHRhZz0gJ1RhbGtzJ1xuICAgICAgICAgICAgICAgIGNvbG9yPSd2YXIoLS1saWdodGJsdWUpJ1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgaUdFTWVyIFRlZCBUYWxrc1xuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUl0ZW1cbiAgICAgICAgICAgICAgICBkYXRlPSdTY2llbmNlIFNsYW0gU2Vzc2lvbidcbiAgICAgICAgICAgICAgICB0YWc9ICdUYWxrcydcbiAgICAgICAgICAgICAgICBjb2xvcj0ndmFyKC0tbGlnaHRibHVlKSdcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFNjaWVuY2UgU2xhbSBTZXNzaW9uXG4gICAgICAgICAgICAgICAgPC9UaW1lbGluZUl0ZW0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3RpbWVsaW5lLWVuZCc+XG4gICAgICAgICAgICAgICAgICAgIEF3YXJkIENlcmVtb255XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPC8+XG4gICAgICAgIClcbiAgICBcbn1cbiIsICIvKiAgKi9cblxuY29uc3QgaW1hZ2VzID0gW1xuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9iYWRnZXMuanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL2pvZXJuLmpwZWdcIiwgIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvY2hla2luLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9zaW5hbi5qcGVnXCIsICB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL3BhcnR5LmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9vcmdhdGVhbS5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvaGFsbC5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvYnllMS5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvdW5pLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC90YWxraW5nLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9rcmlzdGlhbi5qcGVnXCIsICB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL2FmZmUuanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL21hcmdidXJnLmpwZWdcIiwgIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvZGlldHouanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL3dhZ2VuaW5nZW4uanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL2FhY2hlbi5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvb3JnYXRlYW0uanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL29yZ2F0ZWFtLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9iYWRnZXMuanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL2pvZXJuLmpwZWdcIiwgIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyLCB0YWJzOiBcIlwifSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvY2hla2luLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTIsIHRhYnM6IFwiXCJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9zaW5hbi5qcGVnXCIsICB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMiwgdGFiczogXCJcIn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL3BhcnR5LmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9vcmdhdGVhbS5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyfSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvb3JnYXRlYW0uanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMn0sXG4gIHtzcmM6XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9waG90b3MvbWVldHVwL29yZ2F0ZWFtLmpwZWdcIiwgd2lkdGg6IDMyMCwgaGVpZ2h0OiAyMTJ9LFxuICB7c3JjOlwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGhvdG9zL21lZXR1cC9vcmdhdGVhbS5qcGVnXCIsIHdpZHRoOiAzMjAsIGhlaWdodDogMjEyfSxcbiAge3NyYzpcImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Bob3Rvcy9tZWV0dXAvb3JnYXRlYW0uanBlZ1wiLCB3aWR0aDogMzIwLCBoZWlnaHQ6IDIxMn0sXG5dXG5cblxuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJGSEdhbGxlcnkoKXtcbiAgbGV0IHJvd3MgPSBbXVxuICBmb3IgKCBsZXQgaSA9IDA7ICBpIDwgaW1hZ2VzLmxlbmd0aDsgaSsrICl7XG4gICAgcm93cy5wdXNoKDxkaXY+PGltZyBzcmM9e2ltYWdlc1tpXS5zcmN9Lz48L2Rpdj4pIFxuICB9XG4gICAgcmV0dXJuKCBcbiAgICAgICAgPGRpdiBpZD1cImdhbGxlcnlcIj5cbiAgICAgICAgICB7cm93c31cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuXG4iLCAiaW1wb3J0IHsgRG93bmxvYWRMaW5rIH0gZnJvbSBcIi4vQnV0dG9uc1wiXG5cblxuZXhwb3J0IGZ1bmN0aW9uIFBERih7bGluaywgbmFtZX06IHtsaW5rOiBzdHJpbmcsIG5hbWU6c3RyaW5nfSl7XG4gICAgcmV0dXJuKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncm93IGFsaWduLWl0ZW1zLWNlbnRlcic+XG4gICAgICAgICAgICAgICAgPGlmcmFtZSBzcmM9e2xpbmt9IHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjUzMHZ3XCIgdGl0bGU9XCJ0aXRsZVwiIGNsYXNzTmFtZT0nc21hbGwtaSc+XG4gICAgICAgICAgICAgICAgPC9pZnJhbWU+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3JvdyBkb3dubG9hZC1jb2wnPlxuICAgICAgICAgICAgICAgIDxEb3dubG9hZExpbmsgdXJsPXtsaW5rfSBmaWxlTmFtZT17bmFtZX0gPjwvRG93bmxvYWRMaW5rPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgKVxufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQkZIcGRmKCl7XG4gICAgcmV0dXJuKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncm93IGFsaWduLWl0ZW1zLWNlbnRlcic+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nY29sJz5cbiAgICAgICAgICAgIDxQREYgbGluaz0naHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGRmcy9iZmgtZmx5ZXItZXVyb3BlYW4tbWVldHVwLnBkZicgbmFtZT1cImJmaC1mbHllci1ldXJvcGVhbi1tZWV0dXAucGRmXCIvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nY29sLTInPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nY29sJz5cbiAgICAgICAgICAgIDxQREYgbGluaz0naHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvcGRmcy9iZmgtbWVldC11cC1ndWlkZWxpbmUucGRmJyBuYW1lPVwiYmZoLW1lZXQtdXAtZ3VpZGVsaW5lLnBkZlwiLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgKVxufSIsICJpbXBvcnQgeyBNeVRpbWVsaW5lIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvTXktVGltZWxpbmVcIjtcbmltcG9ydCBCRkhHYWxsZXJ5IGZyb20gXCIuLi9jb21wb25lbnRzL3Bob3RvLWdyaWRcIjtcbmltcG9ydCBCRkhwZGYgZnJvbSBcIi4uL2NvbXBvbmVudHMvcGRmc1wiO1xuaW1wb3J0IHsgSDJ9IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRpbmdzXCI7XG5pbXBvcnQgeyBCRkhTdHlsZVRhYnMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UYWJzXCI7XG5sZXQgdGFiYnlzID0gW1xuICB7XG4gICAgbm9kZTogPEJGSHBkZj48L0JGSHBkZj4sIFxuICAgIGNzc25hbWU6IFwicGRmXCIsXG4gICAgYnV0dG9ubmFtZTogXCJQREZzXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDxNeVRpbWVsaW5lPjwvTXlUaW1lbGluZT4sIFxuICAgIGNzc25hbWU6IFwidGltZWxpbmVcIixcbiAgICBidXR0b25uYW1lOiBcIlRpbWVsaW5lXCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDxCRkhHYWxsZXJ5Lz4sXG4gICAgY3NzbmFtZTogXCJnYWxsXCIsXG4gICAgYnV0dG9ubmFtZTogXCJHYWxsZXJ5XCJcbiAgfSxcbiAge1xuICAgIG5vZGU6IDxBYm91dC8+LCBcbiAgICBjc3NuYW1lOiBcImFib3V0XCIsXG4gICAgYnV0dG9ubmFtZTogXCJBYm91dFwiXG4gIH1cbl1cbmV4cG9ydCBmdW5jdGlvbiBCZmgoKSB7XG4gIFxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIlwiIC8qIHN0eWxlPXt7IHBhZGRpbmdUb3A6IFwiNXZ3XCJ9fSAqLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCIgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCIgc3R5bGU9e3twb3NpdGlvbjogXCJyZWxhdGl2ZVwifX0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4cGxvcmVcIj5cbiAgICAgICAgICAgIDxiIGNsYXNzTmFtZT1cImZhbmN5XCI+RXhwbG9yZSE8L2I+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJnYWxsLWFcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImdhbGwtYlwiIHR5cGVvZj1cImJ1dHRvblwiIG9uQ2xpY2s9e29wZW5DaXR5KHtjaXR5TmFtZTogXCJhYm91dFwifSl9PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy91bml0ZWQucG5nXCIgYWx0PVwiYSBob3VzZSBvbiBhIG1vdW50YWluXCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImdhbGwtYlwiIHR5cGVvZj1cImJ1dHRvblwiICBvbkNsaWNrPXtvcGVuQ2l0eSh7Y2l0eU5hbWU6IFwiZ2FsbFwifSl9PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy9nYWxsZXJ5LnBuZ1wiIGFsdD1cImEgaG91c2Ugb24gYSBtb3VudGFpblwiLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJnYWxsLWJcIiB0eXBlb2Y9XCJidXR0b25cIiBvbkNsaWNrPXtvcGVuQ2l0eSh7Y2l0eU5hbWU6IFwidGltZWxpbmVcIn0pfT5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9kZXNpZ24vaWNvbnMvdGltZWxpbmUucG5nXCIgYWx0PVwiYSBob3VzZSBvbiBhIG1vdW50YWluXCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImdhbGwtYlwiIHR5cGVvZj1cImJ1dHRvblwiIG9uQ2xpY2s9e29wZW5DaXR5KHtjaXR5TmFtZTogXCJwZGZcIn0pfT5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvZGVzaWduL2ljb25zL2ZpbGUucG5nXCIgYWx0PVwiYSBob3VzZSBvbiBhIG1vdW50YWluXCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJ1ZmZlclwiPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgIDxCRkhTdHlsZVRhYnMgZGF0YT17dGFiYnlzfSBjbGE9XCJ0YWJjb250ZW50XCI+PC9CRkhTdHlsZVRhYnM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIEFib3V0KCl7XG4gIHJldHVybihcbiAgICA8ZGl2PlxuICAgICAgPEgyIHRleHQ9XCJBYm91dCBPdXIgQ29vcGVyYXRpb25cIi8+XG4gICAgICA8cD5PdmVyIHRoZSBwYXN0IHllYXJzLCB3ZSBoYXZlIGFsbCBtYWRlIG1hbnkgZnJpZW5kcyBhbmQgZXhwYW5kZWQgb3VyIHNjaWVudGlmaWMgbmV0d29yayBkdXJpbmcgdGhlIGlHRU0gY29tcGV0aXRpb24gYW5kIGFmdGVyd2FyZHMuIFRoZSBpZGVhIGJlaGluZCB0aGUgY29vcGVyYXRpb24gYmV0d2VlbiBCaWVsZWZlbGQsIEZyYW5rZnVydCBhbmQgSGFtYnVyZyBpcyBiYXNlZCBvbiB0aGUgZnJpZW5kc2hpcCB0aGF0IGZvcm1lciBwYXJ0aWNpcGFudHMgaGF2ZSBnYWluZWQgYWxvbmdzaWRlIHRoZSBpR0VNIGNvbXBldGl0aW9uLiBPdXIgbWlzc2lvbiBpcyB0byBwcm9tb3RlIGZ1dHVyZSBwcm9qZWN0cyBhbmQgYnJpbmcgdGVhbXMgdG9nZXRoZXIuIFRoZSBsb2NhdGlvbiBvZiB0aGUgQkZIIEV1cm9wZWFuIE1lZXQtVXAgMjAyNCB3aWxsIGFsdGVybmF0ZSBiZXR3ZWVuIHRoZSB1bml2ZXJzaXRpZXMgb2YgQmllbGVmZWxkLCBGcmFua2Z1cnQsIGFuZCBIYW1idXJnLiBXZSB3aXNoIHlvdSBsb3RzIG9mIGZ1biBhbmQgaG9wZSB0aGF0IHRoZSBpR0VNIGNvbXBldGl0aW9uIGZ1bGZpbGxzIHlvdSBhcyBtdWNoIGFzIGl0IGhhcyBmdWxmaWxsZWQgdXMuPC9wPlxuICAgICAgPEgyIHRleHQ9XCJBYm91dCBOZXR3b3JraW5nXCIvPiBcbiAgICAgIDxwPldlIHdhbnQgdG8gY29ubmVjdCB3aXRoIGVhY2ggb3RoZXIhIEFuZCBpbiB0aGUgbGFzdCB5ZWFycywgaUdFTSB0ZWFtcyBhbGwgYXJvdW5kIHRoZSB3b3JsZCBhcmUgZ2V0dGluZyB0b2dldGhlciBhbmQgZXhjaGFuZ2UgZnVubnkgbWVtZXMgb3IgY29udGFjdCBkYXRhIHZpYSBzdGlja2Vycy4gVGhlcmVmb3JlIHdlIGVzdGFibGlzaCB0aGUgZmlyc3QgaUdFTSBUZWFtcyBTdGlja2VyIEFsYnVtIGV2ZXIgY3JlYXRlZC4gWW91IHdhbnQgdG8gcGFydGljaXBhdGUgaW50byB0aGUgYmlnZ2VzdCBzb2NpYWwgbmV0d29ya2luZyBldmVudCwgY29sbGVjdCBhbGwgc3RpY2tlcnMgYW5kIHdpbiBzcGVjaWFsIHByaXplcz8gU2lnbiB1cCBhbmQgZ290dGEgY2F0Y2ggJ2VtIGFsbCFcbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5cbmZ1bmN0aW9uIG9wZW5DaXR5KHtjaXR5TmFtZX06e2NpdHlOYW1lOiBzdHJpbmd9KSB7XG4gIGNvbnN0IG9wZW5jaXR5ID0gIChldmVudCA6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQsIE1vdXNlRXZlbnQ+KSA9PntcbiAgICB2YXIgaSwgdGFiY29udGVudCwgdGFibGlua3M7XG4gIHRhYmNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidGFiY29udGVudFwiKTtcbiAgZm9yIChpID0gMDsgaSA8IHRhYmNvbnRlbnQubGVuZ3RoOyBpKyspIHtcbiAgICAodGFiY29udGVudFtpXSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICB9XG4gIHRhYmxpbmtzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImdhbGwtYlwiKTtcbiAgZm9yIChpID0gMDsgaSA8IHRhYmxpbmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgdGFibGlua3NbaV0uY2xhc3NOYW1lID0gdGFibGlua3NbaV0uY2xhc3NOYW1lLnJlcGxhY2UoXCIgYmctYWN0XCIsIFwiXCIpO1xuICB9XG5cbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2l0eU5hbWUpIS5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xuICBldmVudC5jdXJyZW50VGFyZ2V0LmNsYXNzTmFtZSArPSBcIiBiZy1hY3RcIjtcbiAgfVxuICByZXR1cm4gb3BlbmNpdHk7IFxufVxuXG5cblxuICAgICIsICJpbXBvcnQgeyBCb3gsIFRhYiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1RhYkNvbnRleHQsIFRhYkxpc3QsIFRhYlBhbmVsfSBmcm9tICdAbXVpL2xhYic7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgQ29sbGFwc2libGUgZnJvbSBcIi4uL2NvbXBvbmVudHMvQ29sbGFwc2libGVcIjsgXG5cbmV4cG9ydCBmdW5jdGlvbiBXaWtpICAoKSB7XG5cbiAgcmV0dXJuIChcbiAgICAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgPFdpa2lUYWJzPjwvV2lraVRhYnM+IFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuXG4gZXhwb3J0IGZ1bmN0aW9uIFdpa2lUYWJzKCkge1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKCcxJyk7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF9ldmVudDogUmVhY3QuU3ludGhldGljRXZlbnQsIG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IHN4PXt7IHdpZHRoOiAnMTAwJScsIHR5cG9ncmFwaHk6ICdib2R5MScgfX0+XG4gICAgICA8VGFiQ29udGV4dCB2YWx1ZT17dmFsdWV9PlxuICAgICAgICA8Qm94IHN4PXt7IGJvcmRlckJvdHRvbTogMSwgYm9yZGVyQ29sb3I6ICdkaXZpZGVyJyB9fT5cbiAgICAgICAgICA8VGFiTGlzdCBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfSBhcmlhLWxhYmVsPVwibGFiIEFQSSB0YWJzIGV4YW1wbGVcIj5cbiAgICAgICAgICAgIDxUYWIgbGFiZWw9XCJBYm91dFwiIHZhbHVlPVwiMVwiIC8+XG4gICAgICAgICAgICA8VGFiIGxhYmVsPVwiR2V0dGluZyBzdGFydGVkXCIgdmFsdWU9XCI2XCIgLz5cbiAgICAgICAgICAgIDxUYWIgbGFiZWw9XCJUcm91Ymxlc2hvb3RpbmdcIiB2YWx1ZT1cIjJcIiAvPlxuICAgICAgICAgICAgPFRhYiBsYWJlbD1cIkNvbXBvbmVudHNcIiB2YWx1ZT1cIjNcIiAvPlxuICAgICAgICAgICAgPFRhYiBsYWJlbD1cIkRvd25sb2Fkc1wiIHZhbHVlPVwiNFwiIC8+XG4gICAgICAgICAgICA8VGFiIGxhYmVsPVwiUmVzb3VyY2VzXCIgdmFsdWU9XCI1XCIgLz5cbiAgICAgICAgICAgIFxuICAgICAgICAgIDwvVGFiTGlzdD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjFcIj4gICA8L1RhYlBhbmVsPlxuICAgICAgICA8VGFiUGFuZWwgdmFsdWU9XCI2XCI+IDxTdGFydGVkLz4gIDwvVGFiUGFuZWw+XG4gICAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjJcIj4gPFRyb3VibGVzaG9vdGluZy8+IDwvVGFiUGFuZWw+XG4gICAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjNcIj4gIDwvVGFiUGFuZWw+XG4gICAgICAgIDxUYWJQYW5lbCB2YWx1ZT1cIjRcIj4gICA8L1RhYlBhbmVsPlxuICAgICAgICA8VGFiUGFuZWwgdmFsdWU9XCI1XCI+ICA8U291cmNlcy8+IDwvVGFiUGFuZWw+XG4gICAgICA8L1RhYkNvbnRleHQ+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFN0YXJ0ZWQoKXtcblxuICByZXR1cm4oXG4gICAgPD5cbiAgICA8aDM+RGlmZmVyZW5jZXMgYmV0d2VlbiBSZWFjdCBhbmQgcGxhaW4gSFRNTDwvaDM+XG4gICAgPHA+VGhlcmUgYXJlIHNvbWUgZGlmZmVyZW5jZXMgaW4gdGhlIHN5bnRheCB0aGF0IGNhbiBsZWFkIHRvIGVycm9ycy48L3A+XG4gICAgPHRhYmxlPlxuICAgICAgPHRyPlxuICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgPHRoPlBsYWluIEhUTUw8L3RoPlxuICAgICAgICA8dGg+VXNpbmcgUmVhY3Q8L3RoPlxuICAgICAgPC90cj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRoPiA8Y29kZT4mbHQ7dGFncyZndDsgPC9jb2RlPiA8L3RoPlxuICAgICAgICA8dGg+IFxuICAgICAgICAgIDxwPiBNb3N0IHRhZ3MgaGF2ZSB0byBiZSBvcGVuZWQgYW5kIGNsb3NlZCwgYnV0IHNvbWUgY2FuIGJlIG9ubHkgb3BlbmVkLiA8L3A+IFxuICAgICAgICAgIDxwPiBlLmcuIGltZywgYnIsIC4uLiA8Y29kZT4gJmx0O2ltZyBzcmM6XCJzb21lc291cmNlXCIgYWx0PVwiYWx0XCImZ3Q7ICA8L2NvZGU+IDwvcD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoPlxuICAgICAgICAgIDxwPiBFdmVyeSB0YWcgaGFzIHRvIGJlIGNsb3NlZC4gIDwvcD5cbiAgICAgICAgICA8cD4gZS5nLiBpbWcsIGJyLCAuLi4gXG4gICAgICAgICAgICA8Y29kZT4gJmx0O2ltZyBzcmM6XCJzb21lc291cmNlXCIgYWx0PVwiYWx0XCIvJmd0OzwvY29kZT4gb3IgXG4gICAgICAgICAgICA8Y29kZT4gJmx0O2ltZyBzcmM6XCJzb21lc291cmNlXCIgYWx0PVwiYWx0XCImZ3Q7ICZsdDsvaW1nJmd0OyA8L2NvZGU+ICA8L3A+XG4gICAgICAgIDwvdGg+XG4gICAgICA8L3RyPlxuICAgICAgPHRyPlxuICAgICAgICA8dGg+QXR0cmlidXRlIE5hbWVzPC90aD5cbiAgICAgICAgPHRoPlxuICAgICAgICAgIDxwPiBHbG9iYWwgYXR0cmlidXRlIG5hbWVzIGFyZSBhbHdheXMgd3JpdHRlbiBpbiBsb3dlcmNhc2UgYW5kIHR3byB3b3JkcyBhcmUgZnVzZWQgaW50byBvbmUgYnkgXCItXCIuIDwvcD5cbiAgICAgICAgICA8cD4gRS5nLiBcImNsYXNzXCIsIFwiY2hhcnNldFwiLCAuLi48L3A+XG4gICAgICAgICAgPHA+IFRoaXMgaXMgYWxzbyB0aGUgY2FzZSB3aGVuIHVzaW5nIHRoZSBzeWxlLWF0dHJpYnV0ZS4gPC9wPlxuICAgICAgICAgIDxwPiBFLmcuIDxjb2RlPnN0eWxlPVwiY29sb3I6Ymx1ZTsgdGV4dC1hbGlnbjpjZW50ZXJcIjwvY29kZT48L3A+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aD4gXG4gICAgICAgICAgPHA+R2xvYmFsIGF0dHJpYnV0ZSBuYW1lcyBhcmUgZ2VuZXJhbGx5IHdyaXR0ZW4gaW4gbG93ZXJjYXNlIGJ1dCB1c2UgdGhlIGNhbWVsIGNhc2UgaWYgdHdvIHdvcmRzIGhhdmUgdG8gYmUgZnVzZWQuIFNvbWUgYXR0cnVidXRlcyBoYXZlIHNsaWdodGx5IGRpZmZlcmVudCBuYW1lcy48L3A+XG4gICAgICAgICAgPHA+RS5nLiBcImNsYXNzTmFtZVwiLCBcImNoYXJTZXRcIiwgLi4uPC9wPlxuICAgICAgICAgIDxwPiBUaGlzIGlzIGFsc28gdGhlIGNhc2Ugd2hlbiB1c2luZyB0aGUgc3R5bGUtYXR0cmlidXRlLjwvcD5cbiAgICAgICAgICA8cD4gRS5nLiA8Y29kZT5zdHlsZT0mIzEyMzsmIzEyMzt2ZWN0b3JFZmZlY3Q6ICZxdW90O25vbi1zY2FsaW5nLXN0cm9rZSZxdW90OyYjMTI1OyYjMTI1OzwvY29kZT48L3A+XG4gICAgICAgICAgPHA+VGhpcyBkb2VzIG5vdCBhcHBseSB0byB0aGUgY3NzIGZpbGUhPC9wPlxuICAgICAgICA8L3RoPlxuICAgICAgPC90cj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRoPlN0eWxlIGF0dHJpYnV0ZTwvdGg+XG4gICAgICAgIDx0aD5cbiAgICAgICAgICA8cD4gc3R5bGU9XCI8dmFyPmF0dHJpYnV0ZTwvdmFyPjogPHZhcj52YWx1ZTwvdmFyPjsgPHZhcj5hdHRyaWJ1dGU8L3Zhcj46IDx2YXI+dmFsdWU8L3Zhcj5cIiA8L3A+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aD5cbiAgICAgICAgICA8cD4gc3R5bGU9JiMxMjM7JiMxMjM7PHZhcj5hdHRyaWJ1dGU8L3Zhcj46IFwiPHZhcj52YWx1ZTwvdmFyPlwiLCA8dmFyPmF0dHJpYnV0ZTwvdmFyPjogXCI8dmFyPnZhbHVlPC92YXI+XCIgJiMxMjU7JiMxMjU7PC9wPlxuICAgICAgICA8L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RhYmxlPlxuICAgIDwvPlxuICApXG59XG5cblxuIGZ1bmN0aW9uIFNvdXJjZXMoKXtcbiAgcmV0dXJuKFxuICAgIDxkaXY+XG4gICAgICA8Q29sbGFwc2libGUgdGl0bGU9XCJJbWFnZXMgYW5kIEljb25zXCIgPlxuICAgICAgTW9zdCB0ZWFtcyBuZWVkIGEgbG90IG9mIHBpY3R1cmVzLCBjb21wb25lbnRzLCBpY29ucyBhbmQgYWxpa2UuIFRoZXkgY2FuIGJlIGRpZmZpY3VsdCB0byBmaW5kLCBlc3BlY2lhbGx5IGZyZWUgYW5kIG9wZW4gc291cmNlIG9uZXMuXG4gICAgICBcbiAgICAgICAgPHVsPlxuICAgICAgICAgIDxsaT4gPGEgaHJlZj1cImh0dHBzOi8vYmlvaWNvbnMuY29tL1wiPiBodHRwczovL2Jpb2ljb25zLmNvbS88L2E+IDwvbGk+XG4gICAgICAgICAgPGxpPiA8YSBocmVmPVwiaHR0cHM6Ly90b2dvdHYuZGJjbHMuanAvZW4vcGljcy5odG1sXCIgPiBodHRwczovL3RvZ290di5kYmNscy5qcC9lbi9waWNzLmh0bWwgPC9hPiA8L2xpPlxuICAgICAgICAgIDxsaT4gPGEgaHJlZj1cImh0dHBzOi8vc21hcnQuc2Vydmllci5jb20vXCIgPmh0dHBzOi8vc21hcnQuc2Vydmllci5jb20vPC9hPiA8L2xpPlxuICAgICAgICAgIDxsaT4gPGEgaHJlZj1cImh0dHBzOi8vb3BlbmNsaXBhcnQub3JnL1wiID4gaHR0cHM6Ly9vcGVuY2xpcGFydC5vcmcvPC9hPiA8L2xpPlxuICAgICAgICAgIDxsaT4gPGEgaHJlZj1cImh0dHBzOi8vY29tbW9ucy53aWtpbWVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6U1ZHX2ZpbGVzXCIgPmh0dHBzOi8vY29tbW9ucy53aWtpbWVkaWEub3JnL3dpa2kvQ2F0ZWdvcnk6U1ZHX2ZpbGVzPC9hPiA8L2xpPlxuICAgICAgICAgIDxsaT4gPGEgaHJlZj1cImh0dHBzOi8vd3d3LmZsYXRpY29uLmNvbS9cIj5odHRwczovL3d3dy5mbGF0aWNvbi5jb20vPC9hPiA8L2xpPlxuICAgICAgICAgIDxsaT4gPGEgaHJlZj1cImh0dHBzOi8vYmlvbG9naWNhbGljb25zLmNvbS9lblwiPmh0dHBzOi8vYmlvbG9naWNhbGljb25zLmNvbS9lbjwvYT4gPC9saT5cbiAgICAgICAgICA8bGk+IDxhIGhyZWY9XCJodHRwczovL3d3dy5zdmdyZXBvLmNvbS9cIj5odHRwczovL3d3dy5zdmdyZXBvLmNvbS88L2E+IDwvbGk+XG4gICAgICAgICAgPGxpPiA8YSBocmVmPVwiaHR0cHM6Ly93d3cuaHVtYW5iaW9tZWRpYS5vcmcvXCI+aHR0cHM6Ly93d3cuaHVtYW5iaW9tZWRpYS5vcmcvPC9hPiA8L2xpPlxuICAgICAgICA8L3VsPlxuXG4gICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgPENvbGxhcHNpYmxlIHRpdGxlPVwiQ29sb3Vyc1wiID5cbiAgICAgICAgTmVlZCBhIHNsaWdodGx5IGxpZ2h0ZXIgdmVyc2lvbiBvZiBvbmUgb2YgeW91ciBjb2xvdXJzIG9yIGEgbWl4IG9mIHR3byBjb2xvdXJzPyBcbiAgICAgICAgPHVsPlxuICAgICAgICAgIDxsaT48YSBocmVmPVwiaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9jb2xvcnMvY29sb3JzX21peGVyLmFzcFwiPiBodHRwczovL3d3dy53M3NjaG9vbHMuY29tL2NvbG9ycy9jb2xvcnNfbWl4ZXIuYXNwPC9hPjwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgPENvbGxhcHNpYmxlIHRpdGxlPVwiQ29kaW5nIFRvb2xzXCI+XG4gICAgICAgIEdlbmVyYXRvcnNcbiAgICAgICAgPHVsPlxuICAgICAgICAgIDxsaT48YSBocmVmPVwiaHR0cHM6Ly93d3cuY3NzcG9ydGFsLmNvbS9cIj5odHRwczovL3d3dy5jc3Nwb3J0YWwuY29tLzwvYT48L2xpPlxuICAgICAgICAgIDxsaT48YSBocmVmPVwiaHR0cHM6Ly9odG1sY3NzLnRvb2xzL1wiPmh0dHBzOi8vaHRtbGNzcy50b29scy88L2E+PC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvQ29sbGFwc2libGU+XG5cbiAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIlBsYWNlaG9sZGVyc1wiPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpPjxhIGhyZWY9XCJodHRwczovL3d3dy5sb3JlbWlwc3VtLmRlL1wiPmh0dHBzOi8vd3d3LmxvcmVtaXBzdW0uZGUvPC9hPjwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L0NvbGxhcHNpYmxlPlxuXG4gICAgICA8Q29sbGFwc2libGUgdGl0bGU9XCJTVkdzXCI+XG4gICAgICAgIDx1bD5cbiAgICAgICAgICA8bGk+PGEgaHJlZj1cImh0dHBzOi8vc3VwZXJkZXNpZ25lci5jby90b29scy9zdmctYmFja2dyb3VuZHNcIj5odHRwczovL3N1cGVyZGVzaWduZXIuY28vdG9vbHMvc3ZnLWJhY2tncm91bmRzPC9hPjwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L0NvbGxhcHNpYmxlPlxuXG4gICAgICA8Q29sbGFwc2libGUgdGl0bGU9XCJBY2Nlc3NpYmlsaXR5XCI+XG4gICAgICA8dWw+XG4gICAgICAgIDxsaT48YSBocmVmPVwiaHR0cHM6Ly9zY2hlbWEub3JnXCI+aHR0cHM6Ly9zY2hlbWEub3JnPC9hPjwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICA8L2Rpdj5cblxuICApXG59IFxuXG5cblxuaW1wb3J0IHsgV2lraVNlbGVjdG9yIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRmlsdGVyXCI7XG5pbXBvcnQgeyBDb2RlIH0gZnJvbSBcIi4vY29kZVwiO1xuZnVuY3Rpb24gVHJvdWJsZXNob290aW5nKCl7XG4gIFxuICByZXR1cm4oXG4gICAgPGRpdj5cbiAgICAgIFBsZWFzZSBzZWxlY3Qgd2hhdCB5b3Ugd2FudCB0byB0cm91Ymxlc2hvb3QgZm9yLiBcbiAgICAgIDxXaWtpU2VsZWN0b3I+PC9XaWtpU2VsZWN0b3I+XG4gICAgICA8ZGl2IGlkPVwibm9ub1wiIGNsYXNzTmFtZT1cIm5vc2hvd1wiPlxuICAgICAgICBUaGlzIGNvbWJpbmF0aW9uIHJldHVybnMgbm8gaW5zdGFuY2VzLiBcbiAgICAgIDwvZGl2PlxuICAgICAgey8qIDxkaXYgY2xhc3NOYW1lPVwiZmlsdGVyYWJsZSBhbGwgcmVhY3QgdHlwZSBwcm9wZXJ0eVwiPlxuICAgICAgICA8Q29sbGFwc2libGUgdGl0bGU9XCJBcmd1bWVudCBvZiB0eXBlIFggaXMgbm90IGFzc2lnbmFibGUgdG8gcGFyYW1ldGVyIG9mIHR5cGUgWS5cIj5cbiAgICAgICAgPGg2PkV4YW1wbGU8L2g2PlxuICAgICAgICA8aDY+U29sdXRpb25zPC9oNj5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWx0ZXJhYmxlIGFsbCByZWFjdCB0eXBlXCI+IFxuICAgICAgICA8Q29sbGFwc2libGUgdGl0bGU9XCJUeXBlIFggaXMgbm90IGFzc2lnbmFibGUgdG8gdHlwZSBZLlwiPlxuICAgICAgICA8aDY+RXhhbXBsZTwvaDY+XG4gICAgICAgIDxoNj5Tb2x1dGlvbnM8L2g2PlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlcmFibGUgYWxsICByZWFjdCB0eXBlIHByb3BlcnR5XCI+XG4gICAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIlByb3BlcnR5IHggaXMgbWlzc2luZyBpbiB0eXBlIHkgYnV0IHJlcXVpcmVkIGluIHR5cGUgei5cIj5cbiAgICAgICAgPGg2PkV4YW1wbGU8L2g2PlxuICAgICAgICA8aDY+U29sdXRpb25zPC9oNj5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWx0ZXJhYmxlIGFsbCByZWFjdCB0eXBlIHByb3BlcnR5XCI+XG4gICAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIlByb3BlcnR5IHggZG9lcyBub3QgZXhpc3Qgb24gdHlwZSBZLlwiPlxuICAgICAgICA8aDY+RXhhbXBsZTwvaDY+XG4gICAgICAgIDxoNj5Tb2x1dGlvbnM8L2g2PlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlcmFibGUgYWxsIHJlYWN0IHR5cGUgcHJvcGVydHlcIj5cbiAgICAgICAgPENvbGxhcHNpYmxlIHRpdGxlPVwiVHlwZSBYIGlzIG1pc3NpbmcgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGZyb20gdHlwZSBZOiBhLCBiLCBjXCI+XG4gICAgICAgIDxoNj5FeGFtcGxlPC9oNj5cbiAgICAgICAgPGg2PlNvbHV0aW9uczwvaDY+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsdGVyYWJsZSBhbGwgcmVhY3QgdHlwZVwiPlxuICAgICAgICA8Q29sbGFwc2libGUgdGl0bGU9XCJUeXBlICd4IHwgdW5kZWZpbmVkJyBpcyBub3QgYXNzaWduYWJsZSB0byB0eXBlICd4Jy5cIj5cbiAgICAgICAgPGg2PkV4YW1wbGU8L2g2PlxuICAgICAgICA8aDY+U29sdXRpb25zPC9oNj5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWx0ZXJhYmxlIGFsbCByZWFjdCB0eXBlXCI+XG4gICAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIlR5cGUgJ3VuZGVmaW5lZCcgY2Fubm90IGJlIHVzZWQgYXMgYW4gaW5kZXggdHlwZVwiPlxuICAgICAgICA8aDY+RXhhbXBsZTwvaDY+XG4gICAgICAgIDxoNj5Tb2x1dGlvbnM8L2g2PlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlcmFibGUgYWxsIHJlYWN0IG92ZXJsb2FkXCI+XG4gICAgICAgIDxDb2xsYXBzaWJsZSB0aXRsZT1cIk5vIG92ZXJsb2FkIG1hdGNoZXMgdGhpcyBjYWxsLlwiPlxuICAgICAgICA8aDY+RXhhbXBsZTwvaDY+XG4gICAgICAgIDxoNj5Tb2x1dGlvbnM8L2g2PlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgPC9kaXY+ICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWx0ZXJhYmxlIGFsbCByZWFjdCBtb2R1bGVcIj5cbiAgICAgICAgPENvbGxhcHNpYmxlIHRpdGxlPVwiTW9kdWxlIFogaGFzIGFscmVhZHkgZXhwb3J0ZWQgYSBtZW1iZXIgbmFtZWQgQS4gQ29uc2lkZXIgZXhwbGljaXRseSByZS1leHBvcnRpbmcgdG8gcmVzb2x2ZSB0aGUgYW1iaWd1aXR5LlwiPlxuICAgICAgICA8aDY+RXhhbXBsZTwvaDY+XG4gICAgICAgIGluZGV4LnRzeDogXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInByb2JsZW0tZXJyb3JcIj4gTW9kdWxlIFwiLi9CZmgudHN4XCIgaGFzIGFscmVhZHkgZXhwb3J0ZWQgYSBtZW1iZXIgbmFtZWQgJ0xhYlRhYnMnLiBDb25zaWRlciBleHBsaWNpdGx5IHJlLWV4cG9ydGluZyB0byByZXNvbHZlIHRoZSBhbWJpZ3VpdHkuPC9wPlxuICAgICAgICA8aDY+U29sdXRpb25zPC9oNj5cbiAgICAgICAgU2ltcGx5IHJlbmFtZSB0aGUgZnVuY3Rpb24gaW4gb25lIG9mIHRoZSBtb2R1bGVzIG9yIGNvbnNpZGVyIG1ha2luZyBpdCBhIGNvbXBvbmVudCBpZiB5b3UgcGxhbiBvbiB1c2luZyBpdCBmcmVxdWVudGx5LiAgXG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsdGVyYWJsZSBhbGwgcGlwZWxpbmVcIj5cbiAgICAgICAgPENvbGxhcHNpYmxlIHRpdGxlPVwiZXJyb3IgVFM2MTMzOiAnZXZlbnQnIGlzIGRlY2xhcmVkIGJ1dCBpdHMgdmFsdWUgaXMgbmV2ZXIgcmVhZC5cIj5cbiAgICAgICAgICA8aDY+RXhhbXBsZTwvaDY+XG4gICAgICAgICAgSG9yaXpvbnRhbFRpbWVsaW5lLnRzeDogXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXJtaW5hbC1ib3hcIj5cbiAgICAgICAgICAgICQgeWFybiBidWlsZFxuICAgICAgICAgICAgPHA+eWFybiBydW4gdjEuMjIuMTk8L3A+XG4gICAgICAgICAgICA8cD4kIHRzYyAmJiB2aXRlIGJ1aWxkPC9wPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGVybWluYWwtZXJyb3JcIj5zcmMvY29tcG9uZW50cy9Ib3Jpem9udGFsVGltZWxpbmUudHN4KDY3LDIzKTogZXJyb3IgVFM2MTMzOiAnZXZlbnQnIGlzIGRlY2xhcmVkIGJ1dCBpdHMgdmFsdWUgaXMgbmV2ZXIgcmVhZC5cbiAgICAgICAgICAgIGVycm9yIENvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDIuPC9wPlxuICAgICAgICAgICAgPHA+aW5mbyBWaXNpdCBodHRwczovL3lhcm5wa2cuY29tL2VuL2RvY3MvY2xpL3J1biBmb3IgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGlzIGNvbW1hbmQuPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHA+aW48L3A+XG4gICAgICAgICAgPENvZGU+XG4gICAgICAgICAgY29uc3Qgb3BlblBvcCA9ICAoZXZlbnQgOiBSZWFjdC5Nb3VzZUV2ZW50Jmx0O0hUTUxCdXR0b25FbGVtZW50LCBNb3VzZUV2ZW50Jmd0OykgPSZndDsge31cbiAgICAgICAgICA8L0NvZGU+XG4gICAgICAgICAgPGg2PlNvbHV0aW9uczwvaDY+XG4gICAgICAgICAgPHA+Q2hhbmdlIHRvOiA8L3A+XG4gICAgICAgICAgPENvZGU+XG4gICAgICAgICAgY29uc3Qgb3BlblBvcCA9ICAoX2V2ZW50IDogUmVhY3QuTW91c2VFdmVudCZsdDtIVE1MQnV0dG9uRWxlbWVudCwgTW91c2VFdmVudCZndDspID0mZ3Q7IHt9XG4gICAgICAgICAgPC9Db2RlPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIClcbn0gXG5cblxuIiwgImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICBvcGVuPzogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTsgXG4gIH1cblxuXG4gIFxuICBleHBvcnQgY29uc3QgQ29sbGFwc2libGU6IFJlYWN0LkZDPElQcm9wcz4gPSAoeyBvcGVuLCBjaGlsZHJlbiwgdGl0bGUgfSkgPT4ge1xuICAgIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShvcGVuKTtcbiAgXG4gICAgY29uc3QgaGFuZGxlRmlsdGVyT3BlbmluZyA9ICgpID0+IHtcbiAgICAgIHNldElzT3BlbigocHJldikgPT4gIXByZXYpO1xuICAgIH07XG4gIFxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbGxhcHNlLWNhcmRcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTMgYm9yZGVyLWJvdHRvbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgPGg2IGNsYXNzTmFtZT1cImZvbnQtd2VpZ2h0LWJvbGRcIj57dGl0bGV9PC9oNj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuXCIgb25DbGljaz17aGFuZGxlRmlsdGVyT3BlbmluZ30+XG4gICAgICAgICAgICAgICAgeyFpc09wZW4gPyAoXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9J3VwZG93bicgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvZGVzaWduL2ljb25zL2FuZ2xlLXNtYWxsLWRvd24ucG5nXCIgLz5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPSd1cGRvd24nIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2Rlc2lnbi9pY29ucy9hbmdsZS1zbWFsbC11cDMycHgucG5nXCIgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICBcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlci1ib3R0b21cIj5cbiAgICAgICAgICAgIDxkaXY+e2lzT3BlbiAmJiA8ZGl2IGNsYXNzTmFtZT1cInAtM1wiPntjaGlsZHJlbn08L2Rpdj59PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfTtcbiAgXG4gIFxuICBleHBvcnQgZGVmYXVsdCBDb2xsYXBzaWJsZTsiLCAiXG5pbXBvcnQgU2VsZWN0IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5cblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgdmFsdWU6IHN0cmluZyxcbiAgbGFiZWw6IHN0cmluZ1xufVxuY29uc3Qgd2lraW9wdGlvbnMgPVtcbiAge3ZhbHVlOiBcImFsbFwiLCBsYWJlbDogXCJTaG93IGFsbFwifSxcbiAge3ZhbHVlOiBcInJlYWN0XCIsIGxhYmVsOiBcIlJlYWN0XCJ9LFxuICB7dmFsdWU6IFwidHlwZVwiLCBsYWJlbDogXCJUeXBlc1wifSxcbiAge3ZhbHVlOiBcInByb3BlcnR5XCIsIGxhYmVsOiBcIlByb3BlcnRpZXNcIn0sXG4gIHt2YWx1ZTogXCJwaXBlbGluZVwiLCBsYWJlbDogXCJHaXRMYWIgUGlwZWxpbmVcIn0sXG4gIHt2YWx1ZTogXCJodG1sXCIsIGxhYmVsOiBcIkhUTUxcIn0sXG4gIHt2YWx1ZTogXCJjc3NcIiwgbGFiZWw6IFwiQ1NTXCJ9LFxuICBcbl1cblxuXG4gICAgICBmdW5jdGlvbiBmaWx0ZXJNdWx0aVNlbGVjdGlvbihhcnI6IEFycmF5PFByb3BzPil7XG4gICAgICAgIGxldCBub25vID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJub25vXCIpO1xuICAgICAgICBub25vIS5jbGFzc05hbWUgPSBcIm5vc2hvd1wiOyBcbiAgICAgICAgdmFyIHg6IHN0cmluZyB8IGFueVtdIHwgSFRNTENvbGxlY3Rpb25PZjxFbGVtZW50PiwgaTogbnVtYmVyO1xuICAgICAgICB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImZpbHRlcmFibGVcIik7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbGV0IGVsID0geFtpXTsgXG4gICAgICAgICAgdzNSZW1vdmVDbGFzcyhlbCwgXCJzaG93XCIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzaG93bnVtID0gMDsgXG4gICAgICAgIGxldCBib28gPSB0cnVlO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIFxuICAgICAgICAgIGFyci5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgIGlmICh4W2ldLmNsYXNzTmFtZS5pbmRleE9mKGVudHJ5LnZhbHVlKSA8PSAtMSl7XG4gICAgICAgICAgICAgIGJvbyA9IGZhbHNlOyBcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgICBpZiAoIXhbaV0uY2xhc3NMaXN0LmNvbnRhaW5zKGVudHJ5LnZhbHVlKSl7XG4gICAgICAgICAgICAgICAgICBib28gPSBmYWxzZTsgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSBcbiAgICAgICAgICBpZiAoYm9vKXtcbiAgICAgICAgICAgIHczQWRkQ2xhc3MoeFtpXSwgXCJzaG93XCIpO1xuICAgICAgICAgICAgc2hvd251bSsrOyBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwic2hvd1wiKS5sZW5ndGg7XG4gICAgICAgIGlmICh5IDwgMSl7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyh5KVxuICAgICAgICAgICAgbm9ubyEuY2xhc3NOYW1lID0gXCJzaG93XCI7IFxuICAgICAgICB9XG4gICAgICB9XG5cbi8qIGZ1bmN0aW9uIGZpbHRlclNlbGVjdGlvbihsYWJlbDogc3RyaW5nKSB7XG4gIHZhciB4LCBpO1xuICB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImZpbHRlcmFibGVcIik7XG4gIGlmIChsYWJlbCA9PSBcImFsbFwiKSBsYWJlbCA9IFwiXCI7XG4gIGZvciAoaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGVsID0geFtpXTsgXG4gICAgdzNSZW1vdmVDbGFzcyhlbCwgXCJzaG93XCIpO1xuICAgIGlmICh4W2ldLmNsYXNzTmFtZS5pbmRleE9mKGxhYmVsKSA+IC0xKSB3M0FkZENsYXNzKHhbaV0sIFwic2hvd1wiKTtcbiAgfVxufSAqL1xuICBcbmZ1bmN0aW9uIHczQWRkQ2xhc3MoZWxlbWVudDogRWxlbWVudCwgbmFtZTogc3RyaW5nKSB7XG4gIHZhciBpLCBhcnIxLCBhcnIyO1xuICBhcnIxID0gZWxlbWVudC5jbGFzc05hbWUuc3BsaXQoXCIgXCIpO1xuICBhcnIyID0gbmFtZS5zcGxpdChcIiBcIik7XG4gIGZvciAoaSA9IDA7IGkgPCBhcnIyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGFycjEuaW5kZXhPZihhcnIyW2ldKSA9PSAtMSkge2VsZW1lbnQuY2xhc3NOYW1lICs9IFwiIFwiICsgYXJyMltpXTt9XG4gIH1cbn1cblxuZnVuY3Rpb24gdzNSZW1vdmVDbGFzcyhlbGVtZW50OiBFbGVtZW50LCBuYW1lOiBzdHJpbmcpIHtcbiAgdmFyIGksIGFycjEsIGFycjI7XG4gIGFycjEgPSBlbGVtZW50LmNsYXNzTmFtZS5zcGxpdChcIiBcIik7XG4gIGFycjIgPSBuYW1lLnNwbGl0KFwiIFwiKTtcbiAgZm9yIChpID0gMDsgaSA8IGFycjIubGVuZ3RoOyBpKyspIHtcbiAgICB3aGlsZSAoYXJyMS5pbmRleE9mKGFycjJbaV0pID4gLTEpIHtcbiAgICAgIGFycjEuc3BsaWNlKGFycjEuaW5kZXhPZihhcnIyW2ldKSwgMSk7ICAgICBcbiAgICB9XG4gIH1cbiAgZWxlbWVudC5jbGFzc05hbWUgPSBhcnIxLmpvaW4oXCIgXCIpO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBXaWtpU2VsZWN0b3IoKXtcbiAgcmV0dXJuKFxuICAgIDxkaXY+XG4gICAgICA8V2lraUFjdGlvbj48L1dpa2lBY3Rpb24+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuY2xhc3MgV2lraUFjdGlvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRlID0ge1xuICAgIHNlbGVjdGVkT3B0aW9uOiBudWxsLFxuICB9O1xuICBoYW5kbGVDaGFuZ2UgPSAoc2VsZWN0ZWRPcHRpb246IGFueSkgPT4ge1xuICBcdFxuICBcdHRoaXMuc2V0U3RhdGUoeyBzZWxlY3RlZE9wdGlvbiB9LCAoKSA9PlxuICBcdGNvbnNvbGUubG9nKGBPcHRpb24gc2VsZWN0ZWQ6YCwgdGhpcy5zdGF0ZS5zZWxlY3RlZE9wdGlvbilcbiAgIFx0XG4gICAgKTtcbiAgICBcdGZpbHRlck11bHRpU2VsZWN0aW9uKHNlbGVjdGVkT3B0aW9uKVxuICB9O1xuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBzZWxlY3RlZE9wdGlvbiB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U2VsZWN0XG4gICAgICAgIHZhbHVlPXtzZWxlY3RlZE9wdGlvbn1cbiAgICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBpc011bHRpXG4gICAgICAgIG9wdGlvbnM9e3dpa2lvcHRpb25zfVxuICAgICAgICBkZWZhdWx0VmFsdWU9e1t3aWtpb3B0aW9uc1swXV19XG4gICAgICAgIGNsYXNzTmFtZT1cImJhc2ljLW11bHRpLXNlbGVjdFwiXG4gICAgICAgIGNsYXNzTmFtZVByZWZpeD1cInNlbGVjdFwiXG4gICAgICAvPlxuICAgICk7XG4gIH1cbn1cblxuLyogVHlwZSAnKHNlbGVjdGVkT3B0aW9uOiBQcm9wcyB8IG51bGwpID0+IHZvaWQnIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHR5cGUgJyhuZXdWYWx1ZTogTXVsdGlWYWx1ZTx7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IH0gfCBudWxsPiwgYWN0aW9uTWV0YTogQWN0aW9uTWV0YTx7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IH0gfCBudWxsPikgPT4gdm9pZCcuXG4gIFR5cGVzIG9mIHBhcmFtZXRlcnMgJ3NlbGVjdGVkT3B0aW9uJyBhbmQgJ25ld1ZhbHVlJyBhcmUgaW5jb21wYXRpYmxlLlxuICAgIFR5cGUgJ3JlYWRvbmx5ICh7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IH0gfCBudWxsKVtdJyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ1Byb3BzJzogdmFsdWUsIGxhYmVsICovXG4gICAgLyogY29uc3QgaHBvcHRpb25zID1bXG4gICAgICB7dmFsdWU6IFwiYWxsXCIsIGxhYmVsOiBcIkFsbFwifSxcbiAgICAgIHt2YWx1ZTogXCJBY2FkZW1pYVwiLCBsYWJlbDogXCJBY2FkZW1pYVwifSxcbiAgICAgIHt2YWx1ZTogXCJQYXRpZW50UGF0aWVudFwiLCBsYWJlbDogXCJQYXRpZW50XCJ9LFxuICAgICAge3ZhbHVlOiBcIk1lZGljYWxcIiwgbGFiZWw6IFwiTWVkaWNhbCBQcm9mZXNzaW9uYWxcIn0sXG4gICAgICB7dmFsdWU6IFwicHJvcGVydHlcIiwgbGFiZWw6IFwiUHJvcGVydGllc1wifSxcbiAgICAgIHt2YWx1ZTogXCJwaXBlbGluZVwiLCBsYWJlbDogXCJHaXRMYWIgUGlwZWxpbmVcIn0sXG4gICAgICB7dmFsdWU6IFwiaHRtbFwiLCBsYWJlbDogXCJIVE1MXCJ9LFxuICAgICAge3ZhbHVlOiBcImNzc1wiLCBsYWJlbDogXCJDU1NcIn0sXG4gICAgICBcbiAgICBdXG5cbiAgICBleHBvcnQgZnVuY3Rpb24gSFBTZWxlY3Rvcigpe1xuICAgICAgcmV0dXJuKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxIUEFjdGlvbj48L0hQQWN0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9XG5cblxuXG4gICAgY2xhc3MgSFBBY3Rpb24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgICAgc3RhdGUgPSB7XG4gICAgICAgIHNlbGVjdGVkT3B0aW9uOiBudWxsLFxuICAgICAgfTtcbiAgICAgIGhhbmRsZUNoYW5nZSA9IChzZWxlY3RlZE9wdGlvbjogYW55KSA9PiB7XG4gICAgICAgIFxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc2VsZWN0ZWRPcHRpb24gfSwgKCkgPT5cbiAgICAgICAgY29uc29sZS5sb2coYE9wdGlvbiBzZWxlY3RlZDpgLCB0aGlzLnN0YXRlLnNlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgXG4gICAgICAgICk7XG4gICAgICAgICAgZmlsdGVyTXVsdGlTZWxlY3Rpb24oc2VsZWN0ZWRPcHRpb24pXG4gICAgICB9O1xuICAgICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IHNlbGVjdGVkT3B0aW9uIH0gPSB0aGlzLnN0YXRlO1xuICAgIFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgIHZhbHVlPXtzZWxlY3RlZE9wdGlvbn1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIGlzTXVsdGlcbiAgICAgICAgICAgIG9wdGlvbnM9e2hwb3B0aW9uc31cbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17W2hwb3B0aW9uc1swXV19XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJiYXNpYy1tdWx0aS1zZWxlY3RcIlxuICAgICAgICAgICAgY2xhc3NOYW1lUHJlZml4PVwic2VsZWN0XCJcbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gKi8iLCAiZXhwb3J0IGZ1bmN0aW9uIENvZGUoe2NoaWxkcmVufTp7Y2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZX0gKXtcblxuICAgIHJldHVybihcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2Rlc25pcHBldFwiPlxuICAgICAgICAgICAgPGNvZGU+XG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPC9jb2RlPlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59IiwgIlxuZXhwb3J0IGZ1bmN0aW9uIERyeWxhYigpIHtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8aDI+V2lraSB1bmRlciBjb25zdHJ1Y3Rpb24hPC9oMj5cbiAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuICAiLCAiLy9pbXBvcnQgeyBJbnNwaXJhdGlvbnMsIEluc3BpcmF0aW9uTGluayB9IGZyb20gXCIuLi9jb21wb25lbnRzXCI7XG4vKiBpbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSBcInJlYWN0LXByby1zaWRlYmFyXCI7ICovXG5cbmV4cG9ydCBmdW5jdGlvbiBJbXByZXNzdW0oKSB7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgPGgyPkltcHJlc3N1bTwvaDI+XG4gICAgICAgICAgPGhyIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgIDxwPlxuICAgICAgICAgICAgPGgzPjxiPmlHRU0gVGVhbSBCaWVsZWZlbGQgQ2VCaVRlYyAyMDI0PC9iPjwvaDM+XG4gICAgICAgICAgICA8Yj5SZXNwb25zaWJsZSBmb3IgdGhlIGNvbnRlbnQgYWNjb3JkaW5nIHRvIFx1MDBBNyA1IFRNRyBhbmQgYWNjb3JkaW5nIHRvIFx1MDBBNyA1NSBBYnMuIDIgUlN0ViBHZXJtYW55OjwvYj48YnIgLz5cbiAgICAgICAgICAgIEpcdTAwRjZybiBLYWxpbm93c2tpPGJyIC8+XG4gICAgICAgICAgICBVbml2ZXJzaXRcdTAwRTR0c3N0cmFcdTAwREZlIDI1PGJyIC8+XG4gICAgICAgICAgICAzMzYxNSBCaWVsZWZlbGQ8YnIgLz5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPGI+Q29udGFjdDwvYj48YnIgLz5cbiAgICAgICAgICAgIEUtbWFpbDogdGVhbTIwMjRAaWdlbS1iaWVsZWZlbGQuZGU8YnIgLz5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPGI+U3VwZXJ2aXNvcnkgQXV0aG9yaXR5PC9iPjxiciAvPlxuICAgICAgICAgICAgQmllbGVmZWxkIFVuaXZlcnNpdHkgLSBDZW50ZXIgZm9yIEJpb3RlY2hub2xvZ3kgKENlQmlUZWMpXG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj4gIFxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG4gICIsICJcbmV4cG9ydCBmdW5jdGlvbiBNZWFzdXJlbWVudCgpIHtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8aDI+V2lraSB1bmRlciBjb25zdHJ1Y3Rpb24hPC9oMj5cbiAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuICAiLCAiXG5leHBvcnQgZnVuY3Rpb24gUGFydG5lcnMoKSB7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgIDxkaXYgaWQ9XCJzaWRlYmFyYm94XCIgY2xhc3NOYW1lPVwiY29sLTEgZC1ub25lIGQtbGctYmxvY2tcIj4gPC9kaXY+XG4gICAgICAgIDxici8+IFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGlkPVwiemVpc3MtcG9ydHJhaXRcIiBjbGFzc05hbWU9XCJjb2wtNSBzcG9uc29yLXBvcnRyYWl0XCI+XG4gICAgICAgICAgPGEgaHJlZj1cImh0dHA6Ly93d3cuemVpc3MuZGUvbmF0dXJ3aXNzZW5zY2hhZnRlblwiPlxuICAgICAgICAgICAgPGltZyBpZD1cInplaXNzLXBvcnRyYWl0LWxvZ29cIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy96ZWlzcy5wbmdcIj48L2ltZz5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBpZD1cInplaXNzLXRleHRcIiBjbGFzc05hbWU9XCJjb2wgc3BvbnNvci10ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICA8aDQ+WkVJU1MgaXN0IFRlY2hub2xvZ2llLiBaRUlTUyBpc3QgT3B0aWsgdW5kIElubm92YXRpb24uPC9oND5cbiAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICA8cD4gV2lyIGVudHdpY2tlbG4sIGZlcnRpZ2VuIHVuZCB2ZXJ0cmVpYmVuIGZcdTAwRkNyIHVuc2VyZSBLdW5kZW4gaW4gZWluZXIgVmllbHphaGwgdm9uIEdlc2NoXHUwMEU0ZnRzZmVsZGVybiBob2NoaW5ub3ZhdGl2ZSBQcm9kdWt0ZSB1bmQgTFx1MDBGNnN1bmdlbiBcdTIwMTMgdW5kIGxvdGVuIGRhYmVpIGRpZSBHcmVuemVuIGRlcyBNYWNoYmFyZW4gYXVzLiBBbHMgd2VsdHdlaXQgZlx1MDBGQ2hyZW5kZXMgVGVjaG5vbG9naWV1bnRlcm5laG1lbiwgbWl0IGVpbmVyIHN0YXJrZW4gTWFya2UgdW5kIG1pdCBlaW5lbSBQb3J0Zm9saW8sIGRhcyBhdWYgV2FjaHN0dW1zZmVsZGVyIGRlciBadWt1bmZ0IHdpZSBEaWdpdGFsaXNpZXJ1bmcsIEdlc3VuZGhlaXQgdW5kIEluZHVzdHJpZSA0LjAgYXVzZ2VyaWNodGV0IGlzdCwgZ2VzdGFsdGVuIHdpciBkaWUgWnVrdW5mdCB3ZWl0IFx1MDBGQ2JlciBkaWUgb3B0aXNjaGUgdW5kIG9wdG9lbGVrdHJvbmlzY2hlIEJyYW5jaGUgaGluYXVzLiBHcnVuZGxhZ2UgZlx1MDBGQ3IgZGVuIEVyZm9sZyB1bmQgZGVuIHdlaXRlcmVuIGtvbnRpbnVpZXJsaWNoZW4gQXVzYmF1IGRlciBUZWNobm9sb2dpZSB1bmQgTWFya3RmXHUwMEZDaHJlcnNjaGFmdCB2b24gWkVJU1Mgc2luZCBkaWUgbmFjaGhhbHRpZyBob2hlbiBBdWZ3ZW5kdW5nZW4gZlx1MDBGQ3IgRm9yc2NodW5nIHVuZCBFbnR3aWNrbHVuZy4gSGF1cHRzdGFuZG9ydCBkZXMgMTg0NiBpbiBKZW5hIGdlZ3JcdTAwRkNuZGV0ZW4gVW50ZXJuZWhtZW5zIGlzdCBPYmVya29jaGVuLCBEZXV0c2NobGFuZC4gQWxsZWluaWdlIEVpZ2VudFx1MDBGQ21lcmluIGRlciBEYWNoZ2VzZWxsc2NoYWZ0LCBkZXIgQ2FybCBaZWlzcyBBRywgaXN0IGRpZSBDYXJsLVplaXNzLVN0aWZ0dW5nLCBlaW5lIGRlciBnclx1MDBGNlx1MDBERnRlbiBkZXV0c2NoZW4gU3RpZnR1bmdlbiB6dXIgRlx1MDBGNnJkZXJ1bmcgZGVyIFdpc3NlbnNjaGFmdC48L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnIvPiA8YnIvPiBcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBpZD1cImlkdC10ZXh0XCIgY2xhc3NOYW1lPVwiY29sIHNwb25zb3ItdGV4dC1sZWZ0XCI+XG4gICAgICAgICAgICAgIDxoND5BY2NlbGVyYXRlIHRoZSBwYWNlIG9mIGdlbm9taWNzLiBXZSdsbCBoZWxwLjwvaDQ+XG4gICAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICAgIDxwPiBGb3IgbW9yZSB0aGFuIDM1IHllYXJzLCBJbnRlZ3JhdGVkIEROQSBUZWNobm9sb2dpZXMgKElEVCkgIGhhcyBlbXBvd2VyZWQgZ2Vub21pY3MgbGFib3JhdG9yaWVzIHdpdGggYW4gb2xpZ29udWNsZW90aWRlIG1hbnVmYWN0dXJpbmcgcHJvY2VzcyB1bmxpa2UgYW55b25lIGVsc2UgaW4gdGhlIGluZHVzdHJ5LCBmZWF0dXJpbmcgdGhlIG1vc3QgYWR2YW5jZWQgc3ludGhlc2lzLCBtb2RpZmljYXRpb24sIHB1cmlmaWNhdGlvbiwgYW5kIHF1YWxpdHkgY29udHJvbCBjYXBhYmlsaXRpZXMgYXZhaWxhYmxlLiBJRFQgaGFzIHN1cHBvcnRlZCBpR0VNIHRlYW0gZm9yIG92ZXIgYSBkZWNhZGUgd2l0aCAyMGtiIG9mIGZyZWUgRE5BIHRvIGhlbHAgYWNjZWxlcmF0ZSB0aGVpciBpbnNwaXJpbmcgcHJvamVjdHMgZm9yIHRoZSBHcmFuZCBKYW1ib3JlZS4gU2luY2UgaXRzIGZvdW5kaW5nIGluIDE5ODcsIElEVCBoYXMgcHJvZ3Jlc3NlZCBmcm9tIGEgbGVhZGluZyBvbGlnbyBtYW51ZmFjdHVyZXIgdG8gYSBnZW5vbWljcyBzb2x1dGlvbnMgcHJvdmlkZXIgc3VwcG9ydGluZyBrZXkgYXBwbGljYXRpb24gYXJlYXMgc3VjaCBhcyBuZXh0IGdlbmVyYXRpb24gc2VxdWVuY2luZywgQ1JJU1BSIGdlbm9tZSBlZGl0aW5nLCBzeW50aGV0aWMgYmlvbG9neSwgZGlnaXRhbCBQQ1IsIGFuZCBSTkEgaW50ZXJmZXJlbmNlLiBJRFQgbWFudWZhY3R1cmVzIHByb2R1Y3RzIHVzZWQgYnkgc2NpZW50aXN0cyByZXNlYXJjaGluZyB0aGUgdG91Z2hlc3QgY2hhbGxlbmdlcyBmYWNpbmcgb3VyIHBsYW5ldCB0b2RheSBhcyB3ZWxsIGFzIG1hbnkgZm9ybXMgb2YgY2FuY2VyIGFuZCBtb3N0IGluaGVyaXRlZCBhbmQgaW5mZWN0aW91cyBkaXNlYXNlcy4gPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgaWQ9XCJpZHQtcG9ydHJhaXRcIiBjbGFzc05hbWU9XCJjb2wtNSBzcG9uc29yLXBvcnRyYWl0XCI+XG4gICAgICAgICAgICA8YSBocmVmPVwid3d3LmlkdGRuYS5jb21cIj5cbiAgICAgICAgICAgICAgPGltZyBpZD1cImlkdC1wb3J0cmFpdC1sb2dvXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvaWR0LWxvZ28ucG5nXCI+PC9pbWc+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnIvPiA8YnIvPiBcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBpZD1cImludGVncmEtcG9ydHJhaXRcIiBjbGFzc05hbWU9XCJjb2wtNSBzcG9uc29yLXBvcnRyYWl0XCI+XG4gICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3LmludGVncmEtYmlvc2NpZW5jZXMuY29tXCI+XG4gICAgICAgICAgICA8aW1nIGlkPVwiaW50ZWdyYS1wb3J0cmFpdC1sb2dvXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvaW50ZWdyYS1oaW50ZXJsZWd0LmpwZWdcIj48L2ltZz5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBpZD1cImludGVncmEtdGV4dFwiIGNsYXNzTmFtZT1cImNvbCBzcG9uc29yLXRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgIDxoND4gWW91ciBSZWxpYWJsZSBQYXJ0bmVyIEZvciBQcm9kdWN0aXZlIFBpcGV0dGVzIDwvaDQ+XG4gICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICBJTlRFR1JBIEJpb3NjaWVuY2VzIGlzIGFcbiAgICAgICAgICAgIGxlYWRpbmcgcHJvdmlkZXIgb2YgaGlnaC1xdWFsaXR5IGxhYm9yYXRvcnkgdG9vbHMgYW5kIGNvbnN1bWFibGVzIGZvclxuICAgICAgICAgICAgbGlxdWlkIGhhbmRsaW5nLiBUaGUgY29tcGFueSBpcyBjb21taXR0ZWQgdG8gY3JlYXRpbmcgaW5ub3ZhdGl2ZVxuICAgICAgICAgICAgc29sdXRpb25zIHdoaWNoIGZ1bGZpbCB0aGUgbmVlZHMgb2YgaXRzIGN1c3RvbWVycyBpbiByZXNlYXJjaCwgZGlhZ25vc3RpY3NcbiAgICAgICAgICAgIGFuZCBxdWFsaXR5IGNvbnRyb2wgd2l0aGluIHRoZSBsaWZlIHNjaWVuY2VzIG1hcmtldHMgYW5kIG1lZGljYWwgc2VjdG9yLlxuICAgICAgICAgICAgSU5URUdSQVx1MjAxOXMgZW5naW5lZXJpbmcgYW5kIHByb2R1Y3Rpb24gdGVhbXMgaW4gWml6ZXJzLCBTd2l0emVybGFuZCBhbmRcbiAgICAgICAgICAgIEh1ZHNvbiwgTkgsIFVTQSwgc3RyaXZlIHRvIGRldmVsb3AgYW5kIG1hbnVmYWN0dXJlIGluc3RydW1lbnRzIGFuZFxuICAgICAgICAgICAgY29uc3VtYWJsZXMgb2Ygb3V0c3RhbmRpbmcgcXVhbGl0eS4gVG9kYXksIElOVEVHUkFcdTIwMTlzIGlubm92YXRpdmVcbiAgICAgICAgICAgIGxhYm9yYXRvcnkgcHJvZHVjdHMgYXJlIHdpZGVseSB1c2VkIGFsbCBhcm91bmQgdGhlIHdvcmxkIHdoZXJlIHRoZXkgaGVscFxuICAgICAgICAgICAgc2NpZW50aXN0cyBhY2NlbGVyYXRlIHNjaWVudGlmaWMgZGlzY292ZXJ5LiBPdXIgcmV2b2x1dGlvbmFyeSBjb25jZXB0XG4gICAgICAgICAgICBjb21iaW5lcyBpbm5vdmF0aXZlIHBpcGV0dGluZyB3aXRoIHRoZSBtb3N0IG1vZGVybiByb2JvdGljcy5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxici8+IDxici8+IFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiIHN0eWxlPXt7dGV4dEFsaWduOiBcImNlbnRlclwifX0+XG4gICAgICAgICAgPGg0PkFuZCBhIGJpZyB0aGFuayB5b3UgdG8gLi4uPC9oND5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxici8+IDxici8+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgaWQ9XCJwcm9qZWN0LXRleHRcIiBjbGFzc05hbWU9XCJjb2wgc3BvbnNvci10ZXh0LWxlZnRcIj5cbiAgICAgICAgICAgICAgPGg0Pi4uLiBvdXIgb3RoZXIgcHJvamVjdCBzcG9uc29ycyE8L2g0PlxuICAgICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgICA8cD48L3A+IFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgaWQ9XCJwcm9qZWN0LXBvcnRyYWl0XCIgY2xhc3NOYW1lPVwiY29sLTYgc3BvbnNvci1wb3J0cmFpdFwiIHN0eWxlPXt7cGFkZGluZzogXCIyMHB4XCJ9fT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICB7LyogPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJodHRwczovL3d3dy5jYXJscm90aC5kZS9cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctc3BvbnNvci1wYXJ0bmVyLXBhZ2VcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9yb3RoLmpwZ1wiLz5cbiAgICAgICAgICAgICAgICA8L2E+IFxuICAgICAgICAgICAgICA8L2Rpdj4gKi99XG4gICAgICAgICAgICAgIHsvKiA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cImh0dHBzOi8vd3d3LnVuaS1iaWVsZWZlbGQuZGUvZmFrdWx0YWV0ZW4vdGVjaG5pc2NoZS1mYWt1bHRhZXQvXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yLXBhcnRuZXItcGFnZVwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL3RlY2hmYWsuanBnXCIvPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+ICAgKi99XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJ3d3cuc25hcGdlbmUuY29tXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yLXBhcnRuZXItcGFnZVwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL3NuYXBnZW5lLnBuZ1wiLz5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cImh0dHBzOi8vd3d3LmplbmFiaW9zY2llbmNlLmNvbS9cIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3ItcGFydG5lci1wYWdlXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvamJzLWR1bmtlbGdydWVuLXRleHQucG5nXCIvPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cImh0dHBzOi8vd3d3LnVuaS1iaWVsZWZlbGQuZGUvXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yLXBhcnRuZXItcGFnZVwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2xvZ29zLXRlYW0vdW5pLWJpZWxlZmVsZC1kdW5rZWwucG5nXCIvPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiaHR0cHM6Ly93d3cuY2ViaXRlYy51bmktYmllbGVmZWxkLmRlL1wiPlxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctc3BvbnNvci1wYXJ0bmVyLXBhZ2VcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9jZWJpdGVjLWZhcmJlLnBuZ1wiLz5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnIvPiA8YnIvPiBcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBpZD1cIm1lZXR1cC1wb3J0cmFpdFwiIGNsYXNzTmFtZT1cImNvbC01IHNwb25zb3ItcG9ydHJhaXRcIiBzdHlsZT17e3BhZGRpbmc6IFwiMjBweFwifX0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yLXBhcnRuZXItcGFnZVwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL2FzaW1vdi1jb2xvcmZ1bC5wbmdcIi8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiaHR0cHM6Ly93d3cudW5pLWJpZWxlZmVsZC5kZS9mYWt1bHRhZXRlbi90ZWNobmlzY2hlLWZha3VsdGFldC9hcmJlaXRzZ3J1cHBlbi9tdWx0aXNjYWxlLWJpb2VuZ2luZWVyaW5nL2NhbXB1c2JyYXVlcmVpL1wiPlxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3ItcGFydG5lci1wYWdlXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvY2FtcHVzLWJyYXVlcmVpLWhpbnRlcmxlZ3QuanBlZ1wiLz5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3ItcGFydG5lci1wYWdlXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvYWxnZW5pdW0ucG5nXCIvPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cInd3dy5wcm9tZWdhLmNvbVwiPlxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctc3BvbnNvci1wYXJ0bmVyLXBhZ2VcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9wcm9tZWdhLWdlbGIucG5nXCIvPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiaHR0cHM6Ly93d3cucGxhc21pZGZhY3RvcnkuY29tL1wiPlxuICAgICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctc3BvbnNvci1wYXJ0bmVyLXBhZ2VcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9wbGFzbWlkZmFjdG9yeS5wbmdcIi8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJodHRwczovL3d3dy5naXAuY29tL2hvbWUvXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yLXBhcnRuZXItcGFnZVwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL2dpcC5wbmdcIiAvPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBcbiAgICAgICAgICA8ZGl2IGlkPVwibWVldHVwLXRleHRcIiBjbGFzc05hbWU9XCJjb2wgc3BvbnNvci10ZXh0LXJpZ2h0XCIgc3R5bGU9e3t0ZXh0QWxpZ246IFwicmlnaHRcIn19PlxuICAgICAgICAgICAgPGg0PiAuLi4gb3VyIE1lZXRVcCBzcG9uc29ycyEgPC9oND5cbiAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnIvPiA8YnIvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGlkPVwicGFydG5lci10ZXh0XCIgY2xhc3NOYW1lPVwiY29sIHNwb25zb3ItdGV4dC1sZWZ0XCI+XG4gICAgICAgICAgICAgIDxoND4uLi4gb3VyIHBhcnRuZXJzITwvaDQ+XG4gICAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICAgIDxwPjwvcD4gXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBpZD1cInBhcnRuZXItcG9ydHJhaXRcIiBjbGFzc05hbWU9XCJjb2wtNiBzcG9uc29yLXBvcnRyYWl0XCIgc3R5bGU9e3twYWRkaW5nOiBcIjIwcHhcIn19PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yLXBhcnRuZXItcGFnZVwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L2xvZ29zLXRlYW0vb3RoZXItdGVhbXMvZ3UtZnJhbmtmdXJ0LWxvZ28ucG5nXCIvPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiaHR0cHM6Ly9idHMtZXYuZGUvXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvYnRzLnBuZ1wiLz5cbiAgICAgICAgICAgICAgICA8L2E+IFxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3ItcGFydG5lci1wYWdlXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvbG9nb3MtdGVhbS9vdGhlci10ZWFtcy9pZ2VtLWhhbWJ1cmctbG9nby5wbmdcIi8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yLXBhcnRuZXItcGFnZVwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL3N0dWRzY2ljb20tbG9nby5wbmdcIi8+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICBcbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbiAgIiwgIlxuZXhwb3J0IGZ1bmN0aW9uIFN1cHBsZW1lbnRhcnkoKSB7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgPGgyPldpa2kgdW5kZXIgY29uc3RydWN0aW9uITwvaDI+XG4gICAgICAgICAgICA8aHIvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbiAgIiwgIlxuZXhwb3J0IGZ1bmN0aW9uIEludHMoKSB7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgXG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4gICAgIiwgIlxuZXhwb3J0IGZ1bmN0aW9uIEJGSEgoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXZpZGVvLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGlmcmFtZSB0aXRsZT1cIkJpZWxlZmVsZC1DZUJpVGVjOiBNZWV0VXAgKDIwMjQpIFtFbmdsaXNoXVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjcwMFwiIHNyYz1cImh0dHBzOi8vdmlkZW8uaWdlbS5vcmcvdmlkZW9zL2VtYmVkLzMwYjhhNmUwLTJiNGEtNDYxOC04ODY3LTRlYjhlNmE1MjkzNj9zdGFydD0yN3MmYW1wO2xvb3A9MSZhbXA7YXV0b3BsYXk9MSZhbXA7bXV0ZWQ9MSZhbXA7dGl0bGU9MCZhbXA7d2FybmluZ1RpdGxlPTAmYW1wO2NvbnRyb2xCYXI9MCZhbXA7cGVlcnR1YmVMaW5rPTAmYW1wO3AycD0wXCIgZnJhbWVCb3JkZXI9XCIwXCIgc2FuZGJveD1cImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMgYWxsb3ctcG9wdXBzIGFsbG93LWZvcm1zXCI+PC9pZnJhbWU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlXCI+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4gICIsICJpbnRlcmZhY2UgUHJvcHN7XG4gICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUsXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhlYWRlckJveCh7Y2hpbGRyZW4sIHRpdGxlfTogUHJvcHMgKXtcbiAgICByZXR1cm4oXG4gICAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wgaGVhZGVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICAgICAge3RpdGxlfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiYXNlXCI+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICA8Lz5cbiAgICApXG59IiwgImltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gQVRUSCgpIHtcblxuICAgIHJldHVybiAoXG4gICAgICA8SGVhZGVyQm94IHRpdGxlPVwiQXR0cmlidXRpb25zXCI+XG4gICAgICA8L0hlYWRlckJveD5cbiAgICApO1xuICB9IiwgImltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gQ09OVEgoKSB7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEhlYWRlckJveCB0aXRsZT1cIkNvbnRyaWJ1dGlvblwiPlxuICAgICAgICBcbiAgICAgIDwvSGVhZGVyQm94PlxuICAgICk7XG4gIH0iLCAiZXhwb3J0IGZ1bmN0aW9uIERFU0NIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIkRlc2NyaXB0aW9uXCI+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBIT01FSCgpIHtcbiAgcmV0dXJuIChcbiAgICA8SGVhZGVyQm94PlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gRVhQSCgpIHtcblxuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJFeHBlcmltZW50c1wiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gSFBIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIkh1bWFuIFByYWN0aWNlc1wiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gSU1QSCgpIHtcblxuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3g+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBOT1RFSCgpIHtcblxuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJOb3RlYm9va1wiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gUkVTSCgpIHtcblxuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJSZXN1bHRzXCI+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBTQUZFSCgpIHtcblxuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJTYWZldHlcIj5cbiAgICAgIFxuICAgIDwvSGVhZGVyQm94PlxuICApO1xufVxuXG5pbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiZXhwb3J0IGZ1bmN0aW9uIFRFQU1IKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIk91ciBUZWFtXCI+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgImV4cG9ydCBmdW5jdGlvbiBXSUtJSCgpIHtcblxuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJXaWtpIERvY3VtZW50YXRpb25cIj5cbiAgICAgIFxuICAgIDwvSGVhZGVyQm94PlxuICApO1xufVxuXG5pbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiZXhwb3J0IGZ1bmN0aW9uIElOVFNIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIkludGVydmlld3NcIj5cbiAgICAgIFxuICAgIDwvSGVhZGVyQm94PlxuICApO1xufVxuXG5pbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiZXhwb3J0IGZ1bmN0aW9uIFNQT05IKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIlNwb25zb3JzIGFuZCBQYXJ0bmVyc1wiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gRFJZSCgpIHtcbiAgcmV0dXJuIChcbiAgICA8SGVhZGVyQm94PlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gRU5HSCgpIHtcblxuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJFbmdpbmVlcmluZ1wiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gU1VQSCgpIHtcblxuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJTdXBwbGVtZW50YXJ5IERhdGFcIj5cbiAgICAgIFxuICAgIDwvSGVhZGVyQm94PlxuICApO1xufVxuXG5pbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiZXhwb3J0IGZ1bmN0aW9uIE1FU0goKSB7XG5cbiAgcmV0dXJuIChcbiAgICA8SGVhZGVyQm94IHRpdGxlPVwiTWVhc3VyZW1lbnRcIj5cbiAgICAgIFxuICAgIDwvSGVhZGVyQm94PlxuICApO1xufVxuXG5pbXBvcnQgSGVhZGVyQm94IGZyb20gXCIuLi9jb21wb25lbnRzL2hlYWRlci1ib3hcIjsiLCAiXG5leHBvcnQgZnVuY3Rpb24gUGFydHMoKSB7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgPGgyPldpa2kgdW5kZXIgY29uc3RydWN0aW9uITwvaDI+XG4gICAgICAgICAgICA8aHIvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbiAgIiwgImV4cG9ydCBmdW5jdGlvbiBQQVJUSCgpIHtcblxuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJQYXJ0c1wiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJleHBvcnQgZnVuY3Rpb24gUHJvb2YoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IG10LTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC8+XG4gICAgKTtcbiAgfVxuICAiLCAiZXhwb3J0IGZ1bmN0aW9uIFBST09GSCgpIHtcblxuICByZXR1cm4gKFxuICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJQcm9vZiBvZiBDb25jZXB0XCI+XG4gICAgICBcbiAgICA8L0hlYWRlckJveD5cbiAgKTtcbn1cblxuaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgIlxuXG5leHBvcnQgZnVuY3Rpb24gRGVzaWduKCkge1xuIFxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbGctOFwiPlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gIFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbiAgIiwgImV4cG9ydCBmdW5jdGlvbiBERVNIKCkge1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxIZWFkZXJCb3ggdGl0bGU9XCJEZXNpZ25cIj5cbiAgICAgICAgXG4gICAgICA8L0hlYWRlckJveD5cbiAgICApO1xuICB9XG5cbiAgaW1wb3J0IEhlYWRlckJveCBmcm9tIFwiLi4vY29tcG9uZW50cy9oZWFkZXItYm94XCI7IiwgIlxuZXhwb3J0IGZ1bmN0aW9uIEp1ZGdpbmcoKSB7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICAgICAgPGgyPldpa2kgdW5kZXIgY29uc3RydWN0aW9uITwvaDI+XG4gICAgICAgICAgICA8aHIvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbiAgIiwgImltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gSlVER0VIKCkge1xuXG4gICAgcmV0dXJuIChcbiAgICAgIFxuICAgICAgPEhlYWRlckJveCB0aXRsZT1cIkp1ZGdpbmdcIj5cbiAgICAgICAgXG4gICAgICA8L0hlYWRlckJveD5cbiAgICApO1xuICB9IiwgIlxuXG5leHBvcnQgZnVuY3Rpb24gRXRoaWNzKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBtdC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbGctOFwiPlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gIFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cbiAgIiwgImV4cG9ydCBmdW5jdGlvbiBFVEhIKCkge1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRlckJveCB0aXRsZT1cIkV0aGljc1wiPlxuICAgICAgXG4gICAgPC9IZWFkZXJCb3g+XG4gICk7XG59XG5cbmltcG9ydCBIZWFkZXJCb3ggZnJvbSBcIi4uL2NvbXBvbmVudHMvaGVhZGVyLWJveFwiOyIsICJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU2xpZGVyIGZyb20gXCJyZWFjdC1zbGlja1wiO1xuXG5pbnRlcmZhY2UgU2xpZGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOyBcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNpbXBsZVNsaWRlcih7Y2hpbGRyZW59OiBTbGlkZXJQcm9wcykge1xuICB2YXIgc2V0dGluZ3MgPSB7XG4gICAgZG90czogdHJ1ZSxcbiAgICBpbmZpbml0ZTogdHJ1ZSxcbiAgICBzbGlkZXNUb1Nob3c6IDEsXG4gICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgYXV0b3BsYXk6IHRydWUsXG4gICAgc3BlZWQ6IDIwMDAsXG4gICAgYXV0b3BsYXlTcGVlZDogMjAwMCxcbiAgICBjc3NFYXNlOiBcImxpbmVhclwiLFxuICAgIHBhdXNlT25Ib3ZlcjogdHJ1ZSxcbiAgICBuZXh0QXJyb3c6IDw+PC8+LFxuICAgIHByZXZBcnJvdzogPD48Lz5cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInNsaWRlci1jb250YWluZXJcIj5cbiAgICAgICA8U2xpZGVyIHsuLi5zZXR0aW5nc30+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU2xpZGVyPlxuICAgIDwvZGl2PlxuICAgXG4gICk7XG59IiwgImltcG9ydCB7IFRpbWVsaW5lSXRlbSB9IGZyb20gXCIuLi9jb21wb25lbnRzL015LVRpbWVsaW5lXCI7XG5pbXBvcnQgU2ltcGxlU2xpZGVyIGZyb20gXCIuLi9jb21wb25lbnRzL3NsaWRlclwiO1xuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIEV4YW1wbGUoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwiZXhhbXBsZVwiPkV4ZXJjaXNlczwvaDM+XG4gICAgICAgICAgICA8aT48aDY+QnkgWW91ciBuYW1lPC9oNj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZXhlcmNpc2VcIj5cbiAgICAgICAgICAgICAgICA8cD4gQWxsIGNvbXBvbmVudHMgc2hvdWxkIGJlIGluIHRoaXMgZmlsZS4gVGhlIGV4dHJhIGNzcyBoYXMgdG8gYmUgcHV0IGludG8gZXhhcG1sZS5jc3MuIFR1cm4gdG8gTGlsaWFuYSBpZiB5b3UgbmVlZCBvciB3YW50IGEgc2NzcyBmaWxlLCB0b28uPC9wPlxuICAgICAgICAgICAgICAgIDxwPlRoZSBjb2RlIHlvdSBjcmVhdGUgc2hvdWxkIGJlIGluIHRoZSByZXNwZWN0aXZlIGNvbHVtbnMgd2hlcmUgdGhlIGFzc2lnbm1lbnRzIGFyZSwgaWYgbm90IHN0YXRlZCBvdGhlcndpc2UuIDwvcD5cbiAgICAgICAgICAgICAgICA8cD5Xcml0ZSBkb3duIGhvdyB5b3UgZGlkIGl0IGluIHRoZSBkb2N1bWVudGF0aW9uLWJveCBhcyBhIGRvY3VtZW50YXRpb24gZm9yIHRoZSBvdGhlcnMuIFVzZSB0aGUgRG9jdS1Cb2MgY29tcG9uZW50IGZvciB0aGF0LllvdSBoYXZlIHRvIGFkZCBpdCB0byB5b3VyIGF4ZXJjaXNlIGJsb2NrIG1hbnVhbGx5LiA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxEb2N1Qm94PlxuICAgICAgICAgICAgICAgIDxwPkkgd3JvdGUgYSB0ZXh0LjwvcD5cbiAgICAgICAgICAgIDwvRG9jdUJveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxoci8+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+PGg0Pkxpc3RzPC9oND48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0xXCI+IDxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1lYXN5LXRhZ1wiPkVhc3k8L2Rpdj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGk+PGg2PkJ5IDwvaDY+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWV4ZXJjaXNlXCI+XG4gICAgICAgICAgICAgICAgPHA+YS4gQ3JlYXRlIGEgbnVtYmVyZWQgbGlzdCBvZiBmcnVpdHMuIEZpdmUgaXRlbXMgYXJlIGVub3VnaC4gVXNlIHRoZSBIVE1MIGxpc3QgZWxlbWVudC48L3A+IFxuICAgICAgICAgICAgICAgIDxwPmIuIENyZWF0ZSBhIHNlY29uZCBjb2x1bW4gbmV4dCB0byB0aGUgb25lIHdpdGggdGhlIGZydWl0IGxpc3QgdGhhdCBjb250YWlucyBhIGJ1dHRvbi4gPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPjxoND5QaWN0dXJlPC9oND48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0xXCI+PGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWVhc3ktdGFnXCI+RWFzeTwvZGl2PjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aT48aDY+QnkgPC9oNj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZXhlcmNpc2VcIj5cbiAgICAgICAgICAgICAgICA8cD5hLiBJbnNlcnQgYSBjZW50ZXJlZCBwaWN0dXJlIG9mIFNpbmFuIGhlcmUuIEl0IHNob3VsZCBiZSBoYWxmIGFzIHdpZGUgYXMgdGhlIGNvbHVtbiBhbmQgaGF2ZSBhIGRvdHRldCBmcmFtZSBpbiBvdXIgcHVycGxlLjwvcD5cbiAgICAgICAgICAgICAgICA8cD5iLiBXaGVuIGhvdmVyaW5nIG92ZXIgdGhlIHBpY3R1cmUsIGl0IHNob3VsZCB0dXJuIGJsYWNrIGFuZCB3aGl0ZS4gPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbCBleGVyY2lzZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj48aDQ+VGltZWxpbmUgQkZIPC9oND48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0xIFwiPjxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1lYXN5LXRhZ1wiPkVhc3k8L2Rpdj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGk+PGg2PkJ5IDwvaDY+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWV4ZXJjaXNlXCI+XG4gICAgICAgICAgICA8cD4gQWRkIGEgZHVtbXkgdGltZWxpbmUgaXRlbTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lbGluZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8VGltZWxpbmVJdGVtXG4gICAgICAgICAgICAgICAgZGF0ZT0nSG93IHRvIFN5bkJpbydcbiAgICAgICAgICAgICAgICB0YWc9J1dvcmtzaG9wIFNlc3Npb24gSS4nXG4gICAgICAgICAgICAgICAgY29sb3I9J3ZhcigtLXRleHQtcHJpbWFyeSknXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIERlc2lnbiBnZW5ldGljIGNvbnN0cnVjdHMgYW5kIHJlLXdyaXRlIHRoZSBnZW5vbWljIGNvZGUsIGFuZCBwbGFuIGV4cGVyaW1lbnRzIHVzaW5nIEFJLiBMZWFybiBob3cgdG8gZWZmZWN0aXZlbHkgYnVpbGQgZ2VuZXRpYyBjaXJjdWl0IHN5c3RlbXMgZm9yIGltcGxlbWVudGF0aW9uIGluIHlvdXIgaUdFTSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgIDwvVGltZWxpbmVJdGVtPlxuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxoci8+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+PGg0PlBpY3R1cmUgU2xpZGVyPC9oND48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0xXCI+PGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWVhc3ktdGFnXCI+RWFzeTwvZGl2PjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aT48aDY+QnkgPC9oNj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZXhlcmNpc2VcIj48L2Rpdj5cbiAgICAgICAgICAgIDxwPiBBZGQgYSBkdW1teSBzcG9uc29yIHRvIHRoaXMgc2xpZGVyLjwvcD5cbiAgICAgICAgICAgIDxTaW1wbGVTbGlkZXI+XG4gICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJzcG9uc29yLWNvbnRhaW5lclwiIGhyZWY9XCJodHRwczovL2J0cy1ldi5kZS9cIj5cbiAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWctc3BvbnNvclwiIHNyYz1cImh0dHBzOi8vc3RhdGljLmlnZW0ud2lraS90ZWFtcy81MjQ3L3Nwb25zb3JzL2J0cy5wbmdcIi8+XG4gICAgICAgICAgICA8L2E+IFxuICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwic3BvbnNvci1jb250YWluZXJcIiBocmVmPVwiaHR0cHM6Ly93d3cudW5pLWJpZWxlZmVsZC5kZS9mYWt1bHRhZXRlbi90ZWNobmlzY2hlLWZha3VsdGFldC9hcmJlaXRzZ3J1cHBlbi9tdWx0aXNjYWxlLWJpb2VuZ2luZWVyaW5nL2NhbXB1c2JyYXVlcmVpL1wiPlxuICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImltZy1zcG9uc29yXCIgc3JjPVwiaHR0cHM6Ly9zdGF0aWMuaWdlbS53aWtpL3RlYW1zLzUyNDcvc3BvbnNvcnMvY2FtcHVzLWJyYXVlcmVpLWhpbnRlcmxlZ3QuanBlZ1wiLz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cInd3dy5pZHRkbmEuY29tXCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3JcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9pZHQtbG9nby5wbmdcIj48L2ltZz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cInNwb25zb3ItY29udGFpbmVyXCIgaHJlZj1cImh0dHBzOi8vd3d3LmNlYml0ZWMudW5pLWJpZWxlZmVsZC5kZS9cIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1nLXNwb25zb3JcIiBzcmM9XCJodHRwczovL3N0YXRpYy5pZ2VtLndpa2kvdGVhbXMvNTI0Ny9zcG9uc29ycy9jZWJpdGVjLWZhcmJlLnBuZ1wiLz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L1NpbXBsZVNsaWRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxoci8+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+PGg0PkV4ZXJjaXNlIGJveDwvaDQ+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMVwiPjxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1tZWRpdW0tdGFnXCI+TWVkaXVtPC9kaXY+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpPjxoNj5CeSA8L2g2PjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1leGVyY2lzZVwiPlxuICAgICAgICAgICAgICAgIDxwPkNyZWF0ZSBhIGJveCB0aGF0IGRpZmZlcnMgaW4gbG9va3MgZnJvbSB0aGUgcmVzdCBvZiB0aGUgc2l0ZSBhbmQgZW1waGF6aXNlcyBpdCBjb250YWlucyBhbiBhc3NpZ25tZW50LiA8L3A+XG4gICAgICAgICAgICAgICAgPHA+QXJjaGlldmUgdGhpcyBlZmZlY3QgYnkgdXNpbmcgYmFja2dyb3VuZCwgc2hhZG93LCBib3JkZXIgYW5kL29yIG90aGVyIGNzcyBlZmZlY3RzIG9uIHRoZSBjbGFzcyBcImV4YW1wbGUtZXhlcmNpc2VcIi4gVGhlIGJveCBzaG91bGQgYmUgYWVzdGV0aWNhbGx5IHBsZWFzaW5nIHVubGlrZSB0aGUgZG9jdW1lbnRhdGlvbiBib3guIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xcIj48aDQ+UERGPC9oND48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0xXCI+PGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLW1lZGl1bS10YWdcIj5NZWRpdW08L2Rpdj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGk+PGg2PkJ5IDwvaDY+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWV4ZXJjaXNlXCI+PC9kaXY+XG4gICAgICAgICAgICA8cD5hLiBJbnNlcnQgYSBwZGYgdXNpbmcgb3VyIFBERiBjb21wb25lbnQuPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wgZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+PGg0PiBTbWFydHBob25lIGNvbXBhdGliaWxpdHk8L2g0PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTEgXCI+PGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLW1lZGl1bS10YWdcIj5NZWRpdW08L2Rpdj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGk+PGg2PkJ5IDwvaDY+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWV4ZXJjaXNlXCI+XG4gICAgICAgICAgICA8cD4gQ3JlYXRlIGEgc2ltcGxlIGJveCB0aGF0IGhhcyBhIGRpZmZlcmVudCBiYWNrZ3JvdW5kIGNvbG9yIHdoZW4gdGhlIHdlYnNpdGUgaXMgdXNlZCBvbiBhIHNtYXJ0cGhvbmUgKHNjcmVlbiB3aWR0aCA3NjhweCBvciBzbWFsbGVyKS4gIDwvcD5cbiAgICAgICAgICAgIDxwPiBVc2UgQG1lZGlhIHJ1bGVzIGZvciB0aGF0LjwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz4gXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sIGV4ZXJjaXNlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPjxoND5Db2xsYXBzaWJsZTwvaDQ+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMSBcIj48ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtbWVkaXVtLXRhZ1wiPk1lZGl1bTwvZGl2PjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aT48aDY+QnkgPC9oNj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxwPiBhLiBVc2Ugb3VyIENvbGxhcHNpYmxlIGNvbXBvbmVudCB0byBjcmVhdGUgYSBjb2xsYXBzaWJsZS48L3A+XG4gICAgICAgICAgICA8cD4gYi4gVGhlIGNvbGxhcHNpYmxlIHNob3VsZCBjb250YWluIHRocmVlIGNpcmNsZXMgd2l0aCBhIGZldyB3b3JkcyBpbiBhIHJvdyAob3VyIENpcmNsZSBjb21wb25lbnQpIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz4gXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPjxoND5IZWFkZXI8L2g0PjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTFcIj48ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtYWR2YW5jZWQtdGFnXCI+QWR2YW5jZWQ8L2Rpdj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGk+PGg2PkJ5IDwvaDY+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWV4ZXJjaXNlXCI+XG4gICAgICAgICAgICA8cD5hLiBDcmVhdGUgYSBoZWFkZXIgZmlsZSBmb3IgdGhpcyBwYWdlLiBJdCBoYXMgdG8gYmUgdmlzaWJsZSBhbmQgdGhlcmVmb3JlIGJlIGFkZGVkIHRvIHBhZ2VzLnRzPC9wPlxuICAgICAgICAgICAgPHA+Yi4gQWRkIHRoaXMgcGFnZSB0byB0aGUgbmF2YmFyIHVuZGVyIFwiQ29udHJ1YnV0aW9uXCIuIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wgZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+PGg0PkNoYXJ0IHdpdGggVmljdG9yeTwvaDQ+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtMSBcIj48ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtYWR2YW5jZWQtdGFnXCI+QWR2YW5jZWQ8L2Rpdj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGk+PGg2PkJ5IDwvaDY+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWV4ZXJjaXNlXCI+XG4gICAgICAgICAgICA8cD5DcmVhdGUgYSBzaW1wbGUgYmFyIENoYXJ0IHdpdGggUmVhY3QtQ2hhcnRzLCB1c2luZyB0aGVpciA8YSBocmVmPVwiaHR0cHM6Ly9tdWkuY29tL3gvcmVhY3QtY2hhcnRzL1wiPiBkb2N1bWVudGF0aW9uPC9hPiAgYW5kIGR1bW15IGRhdGEgb2YgeW91ciBjaG9pY2UuIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGhyLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wgZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sXCI+PGg0PiBTaW1wbGUgUmVhY3QgQ29tcG9uZW50PC9oND48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0xIFwiPjxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1hZHZhbmNlZC10YWdcIj5BZHZhbmNlZDwvZGl2PjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aT48aDY+QnkgPC9oNj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxwPiBDcmVhdGUgYSByZWFjdCBjb21wb25lbnQgdGhhdCB0YWtlcyBIVE1MLCBhIGxpbmsgdG8gYSBwaWN0dXJlLCBhIG51bWJlciBhbmQgYSB3b3JkIGFzIGlucHV0IGFuZCByZXR1cm4gdGhlIGNvZGUgaW4gYSBib3ggd2l0aCB0aGUgd29yZCBhcyBhIGhlYWRlci4gVGhlIHBpY3R1cmUgYW5kIG90aGVyIGNvZGUgc2hvdWxkIGJlIGluIHR3byBjb2x1bW5zIG5leHQgdG8gZWFjaCBvdGhlciwgdW5kZXIgdGhlIGhlYWRlci4gVGhlIG51bWJlciBzaG91bGQgYmUgbXVsdGlwbGllZCBieSAyIGFuZCB0aGVuIHNob3duIHNvbWV3aGVyZSB3aXRoIHRoZSBvdGhlciBwYXJ0cy48L3A+XG4gICAgICAgICAgICA8cD4gU2VlIERvY3VCb3ggY29tcG9uZW50LiAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aHIvPiBcbnsvKiAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sIGV4ZXJjaXNlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbFwiPjxoND4gPC9oND48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC0xIFwiPjxkaXYgY2xhc3NOYW1lPVwiZXhhbXBsZS1lYXN5LXRhZ1wiPjwvZGl2PjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aT48aDY+QnkgPC9oNj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImV4YW1wbGUtZXhlcmNpc2VcIj5cbiAgICAgICAgICAgIDxwPiA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxoci8+ICovfVxuXG4gICAgICAgIFxuXG4gICAgICA8Lz5cbiAgICApO1xuICB9XG5cblxuICBmdW5jdGlvbiBEb2N1Qm94KHtjaGlsZHJlbn06IHtjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlfSl7XG4gICAgcmV0dXJuKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJleGFtcGxlLWRvY3VcIj5cbiAgICAgICAgICAgIDxoNT5Eb2N1bWVudGF0aW9uOiA8L2g1PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8Lz5cbiAgICApXG4gIH1cbiAgIiwgImV4cG9ydCBmdW5jdGlvbiBOb1NpZGViYXIoKXtcbiAgICByZXR1cm4oXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLTEgZC1ub25lIGQtbGctYmxvY2tcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgKVxufSIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3NhaGFtaWFzYWQvd2lraS5jc3MvYmllbGVmZWxkLWNlYml0ZWMvc3JjL3V0aWxzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvc2FoYW1pYXNhZC93aWtpLmNzcy9iaWVsZWZlbGQtY2ViaXRlYy9zcmMvdXRpbHMvc3RyaW5nVG9TbHVnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9zYWhhbWlhc2FkL3dpa2kuY3NzL2JpZWxlZmVsZC1jZWJpdGVjL3NyYy91dGlscy9zdHJpbmdUb1NsdWcudHNcIjtleHBvcnQgZnVuY3Rpb24gc3RyaW5nVG9TbHVnKHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHNsdWcgPSBTdHJpbmcoc3RyaW5nKS50b0xvd2VyQ2FzZSgpO1xuICBzbHVnID0gc2x1Zy5yZXBsYWNlKC9bXmEtejAtOS1dL2csIFwiLVwiKTtcbiAgc2x1ZyA9IHNsdWcucmVwbGFjZSgvLSsvZywgXCItXCIpO1xuICAvLyByZW1vdmUgZGFzaGVzIGF0IHN0YXJ0IGFuZCBlbmRcbiAgY29uc3Qgc3RhcnQgPSBzbHVnLnNlYXJjaCgvW14tXS8pOyAvLyBmaW5kIGluZGV4IG9mIGZpcnN0IG5vbi1kYXNoXG4gIGNvbnN0IGVuZCA9IHNsdWcuc2VhcmNoKC8tKyQvKTsgLy8gZmluZCBpbmRleCBvZiBmaXJzdCBlbmQgZGFzaFxuICByZXR1cm4gc2x1Zy5zdWJzdHJpbmcoc3RhcnQsIGVuZCA9PT0gLTEgPyB1bmRlZmluZWQgOiBlbmQpO1xufVxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvc2FoYW1pYXNhZC93aWtpLmNzcy9iaWVsZWZlbGQtY2ViaXRlYy9zcmMvdXRpbHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9zYWhhbWlhc2FkL3dpa2kuY3NzL2JpZWxlZmVsZC1jZWJpdGVjL3NyYy91dGlscy91c2VTY3JpcHQudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL3NhaGFtaWFzYWQvd2lraS5jc3MvYmllbGVmZWxkLWNlYml0ZWMvc3JjL3V0aWxzL3VzZVNjcmlwdC50c1wiO2ltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdCh7dXJsfTp7dXJsOiBzdHJpbmd9KSB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG5cbiAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgIH1cbiAgfSwgW3VybF0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlU2NyaXB0O1xuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFzVCxTQUFTLGNBQWMsZUFBZTtBQUM1VixPQUFPLFdBQVc7OztBQ0dkLG1CQUdNLEtBREYsWUFGSjs7O0FDRUEscUJBQUFBLFdBR00sT0FBQUMsTUFGSixRQUFBQyxhQURGOzs7QUNOSixTQUFTLGlCQUFpQjtBQXdCdEIscUJBQUFDLFdBRUksT0FBQUMsTUFGSixRQUFBQyxhQUFBOzs7QUN0QkEscUJBQUFDLFdBRUksT0FBQUMsWUFGSjs7O0FDR2EsZ0JBQUFDLE1BNENULFFBQUFDLGFBNUNTOzs7QUNBTCxnQkFBQUMsWUFBQTs7O0FDVUksZ0JBQUFDLE1BQ0EsUUFBQUMsYUFEQTs7O0FDYmhCLFNBQVMsYUFBQUMsa0JBQWlCO0FBUVYsZ0JBQUFDLFlBQUE7OztBQ0pBLGdCQUFBQyxZQUFBOzs7QUNEVixxQkFBQUMsV0FFSSxPQUFBQyxhQUZKOzs7QUNBRixxQkFBQUMsV0FFSSxPQUFBQyxhQUZKOzs7QUNBQSxxQkFBQUMsV0FFSSxPQUFBQyxhQUZKOzs7QUNDQSxxQkFBQUMsV0FFSSxPQUFBQyxPQUZKLFFBQUFDLGFBQUE7OztBQ0pBLHFCQUFBQyxXQUVJLE9BQUFDLE9BWUYsUUFBQUMsYUFkRjs7O0FDRkosU0FBUyxZQUFZO0FBVWpCLFNBaUdBLFlBQUFDLFlBaEdFLE9BQUFDLE9BREYsUUFBQUMsYUFBQTs7O0FDRlEsZ0JBQUFDLE9BTUUsUUFBQUMsYUFORjs7O0FDSEosZ0JBQUFDLGFBQUE7OztBQ0FJLFNBQ0ksT0FBQUMsT0FESixRQUFBQyxjQUFBOzs7QUNVWixTQUFTLEtBQUssV0FBVztBQUN6QixTQUFRLFlBQVksU0FBUyxnQkFBZTtBQUM1QyxPQUFPLFdBQVc7QUFNUixTQTJCQSxZQUFBQyxZQTNCQSxPQUFBQyxPQTJCQSxRQUFBQyxjQTNCQTtBQThPVjtBQU9JOzs7QUN0UVksZ0JBQUFDLGFBQUE7OztBQ1lSLFNBZ0JBLFlBQUFDLFlBZkksT0FBQUMsT0FESixRQUFBQyxjQUFBOzs7QUNxQlcsZ0JBQUFDLGFBQUE7OztBQ2xDWCxTQUNRLE9BQUFDLE9BRFIsUUFBQUMsY0FBQTs7O0FDRUUsU0F1Qk4sWUFBQUMsWUF2Qk0sT0FBQUMsT0FnQ0UsUUFBQUMsY0FoQ0Y7OztBQ1BWLFNBQVMsT0FBQUMsTUFBSyxPQUFBQyxZQUFXO0FBQ3pCLFNBQVEsY0FBQUMsYUFBWSxXQUFBQyxVQUFTLFlBQUFDLGlCQUFlO0FBQzVDLE9BQU9DLFlBQVc7OztBQ0ZsQixTQUFTLGdCQUFnQjtBQWtCbkIscUJBQUFDLFlBSVEsT0FBQUMsT0FERixRQUFBQyxjQUhOOzs7QUNqQk4sT0FBTyxZQUFZO0FBQ25CLE9BQU9DLFlBQVc7QUEyRlosZ0JBQUFDLGFBQUE7QUFuRk4sSUFBTSxjQUFhO0FBQUEsRUFDakIsRUFBQyxPQUFPLE9BQU8sT0FBTyxXQUFVO0FBQUEsRUFDaEMsRUFBQyxPQUFPLFNBQVMsT0FBTyxRQUFPO0FBQUEsRUFDL0IsRUFBQyxPQUFPLFFBQVEsT0FBTyxRQUFPO0FBQUEsRUFDOUIsRUFBQyxPQUFPLFlBQVksT0FBTyxhQUFZO0FBQUEsRUFDdkMsRUFBQyxPQUFPLFlBQVksT0FBTyxrQkFBaUI7QUFBQSxFQUM1QyxFQUFDLE9BQU8sUUFBUSxPQUFPLE9BQU07QUFBQSxFQUM3QixFQUFDLE9BQU8sT0FBTyxPQUFPLE1BQUs7QUFFN0I7QUFHTSxTQUFTLHFCQUFxQixLQUFrQjtBQUM5QyxNQUFJLE9BQU8sU0FBUyxlQUFlLE1BQU07QUFDekMsT0FBTSxZQUFZO0FBQ2xCLE1BQUksR0FBK0M7QUFDbkQsTUFBSSxTQUFTLHVCQUF1QixZQUFZO0FBQ2hELE9BQUssSUFBSSxHQUFHLElBQUksRUFBRSxRQUFRLEtBQUs7QUFDN0IsUUFBSSxLQUFLLEVBQUUsQ0FBQztBQUNaLGtCQUFjLElBQUksTUFBTTtBQUFBLEVBQzFCO0FBQ0EsTUFBSSxVQUFVO0FBQ2QsTUFBSSxNQUFNO0FBQ1YsT0FBSyxJQUFJLEdBQUcsSUFBSSxFQUFFLFFBQVEsS0FBSztBQUU3QixRQUFJLFFBQVEsQ0FBQyxVQUFVO0FBQ3BCLFVBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxRQUFRLE1BQU0sS0FBSyxLQUFLLElBQUc7QUFDN0MsY0FBTTtBQUFBLE1BQ1AsT0FDSTtBQUNELFlBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLFNBQVMsTUFBTSxLQUFLLEdBQUU7QUFDeEMsZ0JBQU07QUFBQSxRQUNSO0FBQUEsTUFDSDtBQUFBLElBQ0gsQ0FBQztBQUNELFFBQUksS0FBSTtBQUNOLGlCQUFXLEVBQUUsQ0FBQyxHQUFHLE1BQU07QUFDdkI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLE1BQUksSUFBSSxTQUFTLHVCQUF1QixNQUFNLEVBQUU7QUFDaEQsTUFBSSxJQUFJLEdBQUU7QUFDTixZQUFRLElBQUksQ0FBQztBQUNiLFNBQU0sWUFBWTtBQUFBLEVBQ3RCO0FBQ0Y7QUFhTixTQUFTLFdBQVcsU0FBa0IsTUFBYztBQUNsRCxNQUFJLEdBQUcsTUFBTTtBQUNiLFNBQU8sUUFBUSxVQUFVLE1BQU0sR0FBRztBQUNsQyxTQUFPLEtBQUssTUFBTSxHQUFHO0FBQ3JCLE9BQUssSUFBSSxHQUFHLElBQUksS0FBSyxRQUFRLEtBQUs7QUFDaEMsUUFBSSxLQUFLLFFBQVEsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJO0FBQUMsY0FBUSxhQUFhLE1BQU0sS0FBSyxDQUFDO0FBQUEsSUFBRTtBQUFBLEVBQ3ZFO0FBQ0Y7QUFFQSxTQUFTLGNBQWMsU0FBa0IsTUFBYztBQUNyRCxNQUFJLEdBQUcsTUFBTTtBQUNiLFNBQU8sUUFBUSxVQUFVLE1BQU0sR0FBRztBQUNsQyxTQUFPLEtBQUssTUFBTSxHQUFHO0FBQ3JCLE9BQUssSUFBSSxHQUFHLElBQUksS0FBSyxRQUFRLEtBQUs7QUFDaEMsV0FBTyxLQUFLLFFBQVEsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJO0FBQ2pDLFdBQUssT0FBTyxLQUFLLFFBQVEsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQUEsSUFDdEM7QUFBQSxFQUNGO0FBQ0EsVUFBUSxZQUFZLEtBQUssS0FBSyxHQUFHO0FBQ25DO0FBV0EsSUFBTSxhQUFOLGNBQXlCQyxPQUFNLFVBQVU7QUFBQSxFQUN2QyxRQUFRO0FBQUEsSUFDTixnQkFBZ0I7QUFBQSxFQUNsQjtBQUFBLEVBQ0EsZUFBZSxDQUFDLG1CQUF3QjtBQUV2QyxTQUFLO0FBQUEsTUFBUyxFQUFFLGVBQWU7QUFBQSxNQUFHLE1BQ2xDLFFBQVEsSUFBSSxvQkFBb0IsS0FBSyxNQUFNLGNBQWM7QUFBQSxJQUV4RDtBQUNDLHlCQUFxQixjQUFjO0FBQUEsRUFDdEM7QUFBQSxFQUNBLFNBQVM7QUFDUCxVQUFNLEVBQUUsZUFBZSxJQUFJLEtBQUs7QUFFaEMsV0FDRSxnQkFBQUM7QUFBQSxNQUFDO0FBQUE7QUFBQSxRQUNDLE9BQU87QUFBQSxRQUNQLFVBQVUsS0FBSztBQUFBLFFBQ2YsU0FBTztBQUFBLFFBQ1AsU0FBUztBQUFBLFFBQ1QsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQUEsUUFDN0IsV0FBVTtBQUFBLFFBQ1YsaUJBQWdCO0FBQUE7QUFBQSxJQUNsQjtBQUFBLEVBRUo7QUFDRjs7O0FDekhZLGdCQUFBQyxhQUFBOzs7QUhJTCxxQkFBQUMsWUFHSSxPQUFBQyxPQUhKLFFBQUFDLGNBQUE7OztBSUpELHFCQUFBQyxZQUdNLE9BQUFDLE9BREYsUUFBQUMsY0FGSjs7O0FDQ0YscUJBQUFDLFlBR00sT0FBQUMsT0FERixRQUFBQyxjQUZKOzs7QUNERSxxQkFBQUMsWUFHTSxPQUFBQyxPQURGLFFBQUFDLGNBRko7OztBQ0FBLHFCQUFBQyxZQUNBLE9BQUFDLE9BUUksUUFBQUMsY0FUSjs7O0FDQUEscUJBQUFDLFlBR00sT0FBQUMsT0FERixRQUFBQyxjQUZKOzs7QUNBQSxxQkFBQUMsWUFBQSxPQUFBQyxhQUFBOzs7QUNEQSxxQkFBQUMsWUFJTSxPQUFBQyxPQUZGLFFBQUFDLGNBRko7OztBQ0lFLHFCQUFBQyxZQUdJLE9BQUFDLE9BREYsUUFBQUMsY0FGRjs7O0FDRkYsZ0JBQUFDLGFBQUE7OztBQ0FBLGdCQUFBQyxhQUFBOzs7QUNGRixnQkFBQUMsYUFBQTs7O0FDREEsZ0JBQUFDLGFBQUE7OztBQ0NBLGdCQUFBQyxhQUFBOzs7QUNBQSxnQkFBQUMsYUFBQTs7O0FDQUEsZ0JBQUFDLGFBQUE7OztBQ0FBLGdCQUFBQyxhQUFBOzs7QUNBQSxnQkFBQUMsYUFBQTs7O0FDQUEsZ0JBQUFDLGFBQUE7OztBQ0FBLGdCQUFBQyxhQUFBOzs7QUNBQSxnQkFBQUMsYUFBQTs7O0FDQUEsZ0JBQUFDLGFBQUE7OztBQ0FBLGdCQUFBQyxhQUFBOzs7QUNEQSxnQkFBQUMsYUFBQTs7O0FDQ0EsZ0JBQUFDLGFBQUE7OztBQ0FBLGdCQUFBQyxhQUFBOzs7QUNBQSxnQkFBQUMsYUFBQTs7O0FDQ0UscUJBQUFDLFlBR00sT0FBQUMsT0FERixRQUFBQyxjQUZKOzs7QUNERixnQkFBQUMsYUFBQTs7O0FDREUscUJBQUFDLFlBRUksT0FBQUMsYUFGSjs7O0FDQ0YsZ0JBQUFDLGFBQUE7OztBQ0VFLHFCQUFBQyxZQUVJLE9BQUFDLGFBRko7OztBQ0ZBLGdCQUFBQyxhQUFBOzs7QUNDQSxxQkFBQUMsWUFHTSxPQUFBQyxPQURGLFFBQUFDLGNBRko7OztBQ0VBLGdCQUFBQyxhQUFBOzs7QUNGQSxxQkFBQUMsWUFFSSxPQUFBQyxhQUZKOzs7QUNERixnQkFBQUMsYUFBQTs7O0FDRkosT0FBTyxZQUFZO0FBZ0JKLHFCQUFBQyxZQUFBLE9BQUFDLGFBQUE7OztBQ1ZULHFCQUFBQyxZQUVNLE9BQUFDLE9BRUEsUUFBQUMsY0FKTjs7O0FDTEUsZ0JBQUFDLGFBQUE7OztBQ0ZxVixTQUFTLGFBQWEsUUFBd0I7QUFDelksTUFBSSxPQUFPLE9BQU8sTUFBTSxFQUFFLFlBQVk7QUFDdEMsU0FBTyxLQUFLLFFBQVEsZUFBZSxHQUFHO0FBQ3RDLFNBQU8sS0FBSyxRQUFRLE9BQU8sR0FBRztBQUU5QixRQUFNLFFBQVEsS0FBSyxPQUFPLE1BQU07QUFDaEMsUUFBTSxNQUFNLEtBQUssT0FBTyxLQUFLO0FBQzdCLFNBQU8sS0FBSyxVQUFVLE9BQU8sUUFBUSxLQUFLLFNBQVksR0FBRztBQUMzRDs7O0FDUmdWLFNBQVMsYUFBQUMsa0JBQWlCOzs7QXJFSzFXLElBQU8sc0JBQVEsTUFBTTtBQUNuQixRQUFNLE1BQU0sUUFBUSxPQUFPLFFBQVEsSUFBSSxDQUFDO0FBRXhDLE1BQUksQ0FBQyxJQUFJLGdCQUFnQjtBQUN2QixVQUFNLElBQUksTUFBTSxvREFBb0Q7QUFBQSxFQUN0RTtBQUVBLFVBQVEsSUFBSSxtQkFBbUIsSUFBSSxjQUFjLEVBQUU7QUFHbkQsUUFBTSxXQUFXLGFBQWEsSUFBSSxjQUFjO0FBRWhELFVBQVEsSUFBSSxtQkFBbUIsSUFBSSxjQUFjO0FBQ2pELFVBQVEsSUFBSSxjQUFjLFFBQVE7QUFFbEMsU0FBTyxhQUFhO0FBQUEsSUFDbEIsTUFBTSxJQUFJLGFBQWEsSUFBSSxjQUFjLENBQUM7QUFBQSxJQUMxQyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQUEsSUFDakIsT0FBTztBQUFBLE1BQ0wsUUFBUTtBQUFBLElBQ1Y7QUFBQSxJQUNBLFdBQVc7QUFBQSxFQUNiLENBQUM7QUFFSDsiLAogICJuYW1lcyI6IFsiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeCIsICJqc3hzIiwgImpzeCIsICJqc3giLCAianN4cyIsICJ1c2VFZmZlY3QiLCAianN4IiwgImpzeCIsICJGcmFnbWVudCIsICJqc3giLCAiRnJhZ21lbnQiLCAianN4IiwgIkZyYWdtZW50IiwgImpzeCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJqc3giLCAianN4cyIsICJqc3giLCAianN4IiwgImpzeHMiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAianN4IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgImpzeCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJCb3giLCAiVGFiIiwgIlRhYkNvbnRleHQiLCAiVGFiTGlzdCIsICJUYWJQYW5lbCIsICJSZWFjdCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJSZWFjdCIsICJqc3giLCAiUmVhY3QiLCAianN4IiwgImpzeCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJGcmFnbWVudCIsICJqc3giLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAianN4IiwgImpzeCIsICJqc3giLCAianN4IiwgImpzeCIsICJqc3giLCAianN4IiwgImpzeCIsICJqc3giLCAianN4IiwgImpzeCIsICJqc3giLCAianN4IiwgImpzeCIsICJqc3giLCAianN4IiwgImpzeCIsICJqc3giLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAianN4IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3giLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJqc3giLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeCIsICJGcmFnbWVudCIsICJqc3giLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAianN4IiwgInVzZUVmZmVjdCJdCn0K diff --git a/yarn.lock b/yarn.lock index 01d70d67..428bc279 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,7 +10,7 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": +"@babel/code-frame@^7.0.0": version "7.24.2" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz" integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== @@ -18,133 +18,121 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" -"@babel/compat-data@^7.23.5": - version "7.24.4" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== +"@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.23.5": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz" - integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== +"@babel/compat-data@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" + integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== + +"@babel/core@^7.24.5": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" + integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.24.5" - "@babel/helpers" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.24.5": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz" - integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== +"@babel/generator@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" + integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== dependencies: - "@babel/types" "^7.24.5" + "@babel/types" "^7.25.0" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== +"@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" + integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.24.3": +"@babel/helper-module-imports@^7.16.7": version "7.24.3" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== dependencies: "@babel/types" "^7.24.0" -"@babel/helper-module-transforms@^7.24.5": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz" - integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-simple-access" "^7.24.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/helper-validator-identifier" "^7.24.5" - -"@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz" - integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== - -"@babel/helper-simple-access@^7.24.5": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz" - integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-split-export-declaration@^7.24.5": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz" - integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-string-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - -"@babel/helper-validator-identifier@^7.24.5": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz" - integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.24.5": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz" - integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + +"@babel/helper-plugin-utils@^7.24.7": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" + integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== + +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + +"@babel/helper-validator-identifier@^7.24.5", "@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + +"@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + +"@babel/helpers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" + integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.0" "@babel/highlight@^7.24.2": version "7.24.5" @@ -156,64 +144,78 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7": version "7.24.5" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz" integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== -"@babel/plugin-transform-react-jsx-self@^7.23.3": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.5.tgz" - integrity sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w== +"@babel/parser@^7.25.0", "@babel/parser@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065" + integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== + dependencies: + "@babel/types" "^7.25.2" + +"@babel/plugin-transform-react-jsx-self@^7.24.5": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz#66bff0248ea0b549972e733516ffad577477bdab" + integrity sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-jsx-source@^7.23.3": - version "7.24.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz" - integrity sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA== +"@babel/plugin-transform-react-jsx-source@^7.24.1": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz#1198aab2548ad19582013815c938d3ebd8291ee3" + integrity sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.21.5", "@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.21.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.7", "@babel/runtime@^7.24.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.7": version "7.25.0" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz" integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15", "@babel/template@^7.24.0": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/traverse@^7.24.5": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz" - integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== - dependencies: - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/types" "^7.24.5" +"@babel/template@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490" + integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/parser" "^7.25.3" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.2" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5": - version "7.24.5" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz" - integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.0", "@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2": + version "7.25.2" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz" + integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== dependencies: - "@babel/helper-string-parser" "^7.24.1" - "@babel/helper-validator-identifier" "^7.24.5" + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" "@emotion/babel-plugin@^11.12.0": @@ -249,7 +251,7 @@ resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz" integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== -"@emotion/is-prop-valid@*", "@emotion/is-prop-valid@^1.3.0": +"@emotion/is-prop-valid@^1.3.0": version "1.3.0" resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz" integrity sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ== @@ -261,7 +263,7 @@ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz" integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== -"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.13.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.8.1", "@emotion/react@^11.9.0": +"@emotion/react@^11.13.0", "@emotion/react@^11.8.1": version "11.13.0" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.13.0.tgz" integrity sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ== @@ -291,7 +293,7 @@ resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz" integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== -"@emotion/styled@^11.13.0", "@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1": +"@emotion/styled@^11.13.0": version "11.13.0" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz" integrity sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA== @@ -323,10 +325,120 @@ resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz" integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== -"@esbuild/linux-x64@0.20.2": - version "0.20.2" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz" - integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -452,9 +564,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@kurkle/color@^0.3.0": + version "0.3.2" + resolved "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz" + integrity sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw== + "@mapbox/node-pre-gyp@^1.0.0": version "1.0.11" - resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== dependencies: detect-libc "^2.0.0" @@ -467,7 +584,7 @@ semver "^7.3.5" tar "^6.1.11" -"@mui/base@^5.0.0-beta.40", "@mui/base@5.0.0-beta.40": +"@mui/base@5.0.0-beta.40", "@mui/base@^5.0.0-beta.40": version "5.0.0-beta.40" resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz" integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== @@ -480,41 +597,41 @@ clsx "^2.1.0" prop-types "^15.8.1" -"@mui/core-downloads-tracker@^5.16.5": - version "5.16.5" - resolved "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.5.tgz" - integrity sha512-ziFn1oPm6VjvHQcdGcAO+fXvOQEgieIj0BuSqcltFU+JXIxjPdVYNTdn2HU7/Ak5Gabk6k2u7+9PV7oZ6JT5sA== +"@mui/core-downloads-tracker@^5.16.6": + version "5.16.6" + resolved "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.6.tgz" + integrity sha512-kytg6LheUG42V8H/o/Ptz3olSO5kUXW9zF0ox18VnblX6bO2yif1FPItgc3ey1t5ansb1+gbe7SatntqusQupg== "@mui/icons-material@^5.16.5": - version "5.16.5" - resolved "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.5.tgz" - integrity sha512-bn88xxU/J9UV0s6+eutq7o3TTOrOlbCX+KshFb8kxgIxJZZfYz3JbAXVMivvoMF4Md6jCVUzM9HEkf4Ajab4tw== + version "5.16.6" + resolved "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.16.6.tgz" + integrity sha512-ceNGjoXheH9wbIFa1JHmSc9QVjJUvh18KvHrR4/FkJCSi9HXJ+9ee1kUhCOEFfuxNF8UB6WWVrIUOUgRd70t0A== dependencies: "@babel/runtime" "^7.23.9" "@mui/lab@^5.0.0-alpha.171": - version "5.0.0-alpha.171" - resolved "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.171.tgz" - integrity sha512-/ZRnx0wB7hWHMsy76AAUJREVHZ7v5kOKwgJKCQrqOcaPNyo3WiwtTqKaM4Pgj+2r7O10IrC6zOniq8kTRqVAlA== + version "5.0.0-alpha.173" + resolved "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.173.tgz" + integrity sha512-Gt5zopIWwxDgGy/MXcp6GueD84xFFugFai4hYiXY0zowJpTVnIrTQCQXV004Q7rejJ7aaCntX9hpPJqCrioshA== dependencies: "@babel/runtime" "^7.23.9" "@mui/base" "5.0.0-beta.40" - "@mui/system" "^5.16.0" - "@mui/types" "^7.2.14" - "@mui/utils" "^5.16.0" + "@mui/system" "^5.16.5" + "@mui/types" "^7.2.15" + "@mui/utils" "^5.16.5" clsx "^2.1.0" prop-types "^15.8.1" -"@mui/material@^5.0.0", "@mui/material@^5.15.14", "@mui/material@^5.16.5", "@mui/material@>=5.15.0": - version "5.16.5" - resolved "https://registry.npmjs.org/@mui/material/-/material-5.16.5.tgz" - integrity sha512-eQrjjg4JeczXvh/+8yvJkxWIiKNHVptB/AqpsKfZBWp5mUD5U3VsjODMuUl1K2BSq0omV3CiO/mQmWSSMKSmaA== +"@mui/material@^5.16.5": + version "5.16.6" + resolved "https://registry.npmjs.org/@mui/material/-/material-5.16.6.tgz" + integrity sha512-0LUIKBOIjiFfzzFNxXZBRAyr9UQfmTAFzbt6ziOU2FDXhorNN2o3N9/32mNJbCA8zJo2FqFU6d3dtoqUDyIEfA== dependencies: "@babel/runtime" "^7.23.9" - "@mui/core-downloads-tracker" "^5.16.5" - "@mui/system" "^5.16.5" + "@mui/core-downloads-tracker" "^5.16.6" + "@mui/system" "^5.16.6" "@mui/types" "^7.2.15" - "@mui/utils" "^5.16.5" + "@mui/utils" "^5.16.6" "@popperjs/core" "^2.11.8" "@types/react-transition-group" "^4.4.10" clsx "^2.1.0" @@ -523,35 +640,35 @@ react-is "^18.3.1" react-transition-group "^4.4.5" -"@mui/private-theming@^5.16.5": - version "5.16.5" - resolved "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.5.tgz" - integrity sha512-CSLg0YkpDqg0aXOxtjo3oTMd3XWMxvNb5d0v4AYVqwOltU8q6GvnZjhWyCLjGSCrcgfwm6/VDjaKLPlR14wxIA== +"@mui/private-theming@^5.16.6": + version "5.16.6" + resolved "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz" + integrity sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw== dependencies: "@babel/runtime" "^7.23.9" - "@mui/utils" "^5.16.5" + "@mui/utils" "^5.16.6" prop-types "^15.8.1" -"@mui/styled-engine@^5.16.4": - version "5.16.4" - resolved "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.4.tgz" - integrity sha512-0+mnkf+UiAmTVB8PZFqOhqf729Yh0Cxq29/5cA3VAyDVTRIUUQ8FXQhiAhUIbijFmM72rY80ahFPXIm4WDbzcA== +"@mui/styled-engine@^5.16.6": + version "5.16.6" + resolved "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz" + integrity sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g== dependencies: "@babel/runtime" "^7.23.9" "@emotion/cache" "^11.11.0" csstype "^3.1.3" prop-types "^15.8.1" -"@mui/system@^5.16.0", "@mui/system@^5.16.5": - version "5.16.5" - resolved "https://registry.npmjs.org/@mui/system/-/system-5.16.5.tgz" - integrity sha512-uzIUGdrWddUx1HPxW4+B2o4vpgKyRxGe/8BxbfXVDPNPHX75c782TseoCnR/VyfnZJfqX87GcxDmnZEE1c031g== +"@mui/system@^5.16.5", "@mui/system@^5.16.6": + version "5.16.6" + resolved "https://registry.npmjs.org/@mui/system/-/system-5.16.6.tgz" + integrity sha512-5xgyJjBIMPw8HIaZpfbGAaFYPwImQn7Nyh+wwKWhvkoIeDosQ1ZMVrbTclefi7G8hNmqhip04duYwYpbBFnBgw== dependencies: "@babel/runtime" "^7.23.9" - "@mui/private-theming" "^5.16.5" - "@mui/styled-engine" "^5.16.4" + "@mui/private-theming" "^5.16.6" + "@mui/styled-engine" "^5.16.6" "@mui/types" "^7.2.15" - "@mui/utils" "^5.16.5" + "@mui/utils" "^5.16.6" clsx "^2.1.0" csstype "^3.1.3" prop-types "^15.8.1" @@ -561,10 +678,10 @@ resolved "https://registry.npmjs.org/@mui/types/-/types-7.2.15.tgz" integrity sha512-nbo7yPhtKJkdf9kcVOF8JZHPZTmqXjJ/tI0bdWgHg5tp9AnIN4Y7f7wm9T+0SyGYJk76+GYZ8Q5XaTYAsUHN0Q== -"@mui/utils@^5.15.14", "@mui/utils@^5.16.0", "@mui/utils@^5.16.5": - version "5.16.5" - resolved "https://registry.npmjs.org/@mui/utils/-/utils-5.16.5.tgz" - integrity sha512-CwhcA9y44XwK7k2joL3Y29mRUnoBt+gOZZdGyw7YihbEwEErJYBtDwbZwVgH68zAljGe/b+Kd5bzfl63Gi3R2A== +"@mui/utils@^5.15.14", "@mui/utils@^5.16.5", "@mui/utils@^5.16.6": + version "5.16.6" + resolved "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz" + integrity sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA== dependencies: "@babel/runtime" "^7.23.9" "@mui/types" "^7.2.15" @@ -600,7 +717,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -702,10 +819,10 @@ "@tanstack/react-query" "^4.10.1" error-stack-parser "^2.1.4" -"@remix-run/router@1.16.0": - version "1.16.0" - resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.16.0.tgz" - integrity sha512-Quz1KOffeEf/zwkCBM3kBtH4ZoZ+pT3xIXBG4PPW/XFtDP7EGhtTiC2+gpL9GnR7+Qdet5Oa6cYSvwKYg6kN9Q== +"@remix-run/router@1.19.0": + version "1.19.0" + resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.19.0.tgz" + integrity sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA== "@restart/hooks@^0.4.9": version "0.4.16" @@ -714,10 +831,10 @@ dependencies: dequal "^2.0.3" -"@restart/ui@^1.6.8": - version "1.6.9" - resolved "https://registry.npmjs.org/@restart/ui/-/ui-1.6.9.tgz" - integrity sha512-mUbygUsJcRurjZCt1f77gg4DpheD1D+Sc7J3JjAkysUj7t8m4EBJVOqWC9788Qtbc69cJ+HlJc6jBguKwS8Mcw== +"@restart/ui@^1.6.9": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@restart/ui/-/ui-1.8.0.tgz#3e8d80822b5fbef0576f94acda51d7da9e79e005" + integrity sha512-xJEOXUOTmT4FngTmhdjKFRrVVF0hwCLNPdatLCHkyS4dkiSK12cEu1Y0fjxktjJrdst9jJIc5J6ihMJCoWEN/g== dependencies: "@babel/runtime" "^7.21.0" "@popperjs/core" "^2.11.6" @@ -729,16 +846,86 @@ uncontrollable "^8.0.1" warning "^4.0.3" +"@rollup/rollup-android-arm-eabi@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz#1a32112822660ee104c5dd3a7c595e26100d4c2d" + integrity sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ== + +"@rollup/rollup-android-arm64@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz#5aeef206d65ff4db423f3a93f71af91b28662c5b" + integrity sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw== + +"@rollup/rollup-darwin-arm64@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz#6b66aaf003c70454c292cd5f0236ebdc6ffbdf1a" + integrity sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw== + +"@rollup/rollup-darwin-x64@4.17.2": + version "4.17.2" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz" + integrity sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz#1a7641111be67c10111f7122d1e375d1226cbf14" + integrity sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A== + +"@rollup/rollup-linux-arm-musleabihf@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz#c93fd632923e0fee25aacd2ae414288d0b7455bb" + integrity sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg== + +"@rollup/rollup-linux-arm64-gnu@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz#fa531425dd21d058a630947527b4612d9d0b4a4a" + integrity sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A== + +"@rollup/rollup-linux-arm64-musl@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz#8acc16f095ceea5854caf7b07e73f7d1802ac5af" + integrity sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz#94e69a8499b5cf368911b83a44bb230782aeb571" + integrity sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ== + +"@rollup/rollup-linux-riscv64-gnu@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz#7ef1c781c7e59e85a6ce261cc95d7f1e0b56db0f" + integrity sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg== + +"@rollup/rollup-linux-s390x-gnu@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz#f15775841c3232fca9b78cd25a7a0512c694b354" + integrity sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g== + "@rollup/rollup-linux-x64-gnu@4.17.2": version "4.17.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz#b521d271798d037ad70c9f85dd97d25f8a52e811" integrity sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ== "@rollup/rollup-linux-x64-musl@4.17.2": version "4.17.2" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz#9254019cc4baac35800991315d133cc9fd1bf385" integrity sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q== +"@rollup/rollup-win32-arm64-msvc@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz#27f65a89f6f52ee9426ec11e3571038e4671790f" + integrity sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA== + +"@rollup/rollup-win32-ia32-msvc@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz#a2fbf8246ed0bb014f078ca34ae6b377a90cb411" + integrity sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ== + +"@rollup/rollup-win32-x64-msvc@4.17.2": + version "4.17.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz#5a2d08b81e8064b34242d5cc9973ef8dd1e60503" + integrity sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w== + "@swc/helpers@^0.5.0": version "0.5.11" resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz" @@ -1026,12 +1213,7 @@ dependencies: "@types/sizzle" "*" -"@types/json-schema@^7.0.15": - version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/node@^18.0.0 || >=20.0.0", "@types/node@^20.12.10": +"@types/node@^20.12.10": version "20.12.10" resolved "https://registry.npmjs.org/@types/node/-/node-20.12.10.tgz" integrity sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw== @@ -1048,7 +1230,7 @@ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz" integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== -"@types/react-dom@^17.0.0 || ^18.0.0", "@types/react-dom@^18.2.22": +"@types/react-dom@^18.2.22": version "18.3.0" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz" integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== @@ -1076,7 +1258,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react@^17.0.0 || ^18.0.0", "@types/react@^18.2.66", "@types/react@>=16.14.8", "@types/react@>=16.9.11": +"@types/react@*", "@types/react@>=16.9.11", "@types/react@^18.2.66": version "18.3.1" resolved "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz" integrity sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw== @@ -1084,11 +1266,6 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/semver@^7.5.8": - version "7.5.8" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - "@types/sizzle@*": version "2.3.8" resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz" @@ -1105,23 +1282,21 @@ integrity sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q== "@typescript-eslint/eslint-plugin@^7.2.0": - version "7.8.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz" - integrity sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg== + version "7.18.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz" + integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.8.0" - "@typescript-eslint/type-utils" "7.8.0" - "@typescript-eslint/utils" "7.8.0" - "@typescript-eslint/visitor-keys" "7.8.0" - debug "^4.3.4" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/type-utils" "7.18.0" + "@typescript-eslint/utils" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" - semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^7.0.0", "@typescript-eslint/parser@^7.2.0": +"@typescript-eslint/parser@^7.2.0": version "7.8.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz" integrity sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ== @@ -1132,6 +1307,14 @@ "@typescript-eslint/visitor-keys" "7.8.0" debug "^4.3.4" +"@typescript-eslint/scope-manager@7.18.0": + version "7.18.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz" + integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== + dependencies: + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/scope-manager@7.8.0": version "7.8.0" resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz" @@ -1140,21 +1323,40 @@ "@typescript-eslint/types" "7.8.0" "@typescript-eslint/visitor-keys" "7.8.0" -"@typescript-eslint/type-utils@7.8.0": - version "7.8.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz" - integrity sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A== +"@typescript-eslint/type-utils@7.18.0": + version "7.18.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz" + integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== dependencies: - "@typescript-eslint/typescript-estree" "7.8.0" - "@typescript-eslint/utils" "7.8.0" + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/utils" "7.18.0" debug "^4.3.4" ts-api-utils "^1.3.0" +"@typescript-eslint/types@7.18.0": + version "7.18.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz" + integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== + "@typescript-eslint/types@7.8.0": version "7.8.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz" integrity sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw== +"@typescript-eslint/typescript-estree@7.18.0": + version "7.18.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz" + integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== + dependencies: + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + "@typescript-eslint/typescript-estree@7.8.0": version "7.8.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz" @@ -1169,18 +1371,23 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@7.8.0": - version "7.8.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz" - integrity sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ== +"@typescript-eslint/utils@7.18.0": + version "7.18.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz" + integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.15" - "@types/semver" "^7.5.8" - "@typescript-eslint/scope-manager" "7.8.0" - "@typescript-eslint/types" "7.8.0" - "@typescript-eslint/typescript-estree" "7.8.0" - semver "^7.6.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" + +"@typescript-eslint/visitor-keys@7.18.0": + version "7.18.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz" + integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== + dependencies: + "@typescript-eslint/types" "7.18.0" + eslint-visitor-keys "^3.4.3" "@typescript-eslint/visitor-keys@7.8.0": version "7.8.0" @@ -1195,20 +1402,20 @@ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@vitejs/plugin-react@^4.2.1": - version "4.2.1" - resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz" - integrity sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== +"@vitejs/plugin-react@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz#d0be6594051ded8957df555ff07a991fb618b48e" + integrity sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg== dependencies: - "@babel/core" "^7.23.5" - "@babel/plugin-transform-react-jsx-self" "^7.23.3" - "@babel/plugin-transform-react-jsx-source" "^7.23.3" + "@babel/core" "^7.24.5" + "@babel/plugin-transform-react-jsx-self" "^7.24.5" + "@babel/plugin-transform-react-jsx-source" "^7.24.1" "@types/babel__core" "^7.20.5" - react-refresh "^0.14.0" + react-refresh "^0.14.2" abbrev@1: version "1.1.1" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== acorn-jsx@^5.3.2: @@ -1216,14 +1423,14 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.9.0: +acorn@^8.9.0: version "8.11.3" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== agent-base@6: version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" @@ -1267,12 +1474,12 @@ anymatch@~3.1.2: "aproba@^1.0.3 || ^2.0.0": version "2.0.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== are-we-there-yet@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== dependencies: delegates "^1.0.0" @@ -1373,15 +1580,15 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.22.2, "browserslist@>= 4.21.0": - version "4.23.0" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== +browserslist@^4.23.1: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" call-bind@^1.0.7: version "1.0.7" @@ -1399,14 +1606,14 @@ callsites@^3.0.0: resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -caniuse-lite@^1.0.30001587: - version "1.0.30001616" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz" - integrity sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw== +caniuse-lite@^1.0.30001646: + version "1.0.30001650" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001650.tgz#dd1eba0938e39536d184c3c99b2569a13788bc16" + integrity sha512-fgEc7hP/LB7iicdXHUI9VsBsMZmUmlVJeQP2qqQW+3lkqVhbmjEU8zp+h5stWeilX+G7uXuIUIIlWlDw9jdt8g== canvas@^2.11.2: version "2.11.2" - resolved "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz" + resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.11.2.tgz#553d87b1e0228c7ac0fc72887c3adbac4abbd860" integrity sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw== dependencies: "@mapbox/node-pre-gyp" "^1.0.0" @@ -1430,6 +1637,13 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chart.js@^4.4.3: + version "4.4.3" + resolved "https://registry.npmjs.org/chart.js/-/chart.js-4.4.3.tgz" + integrity sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw== + dependencies: + "@kurkle/color" "^0.3.0" + cheerio-select@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" @@ -1472,7 +1686,7 @@ cheerio@1.0.0-rc.12: chownr@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.2: @@ -1499,21 +1713,26 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-support@^1.1.2: version "1.1.3" - resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +commander@7: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commander@^2.19.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" @@ -1524,11 +1743,6 @@ commander@^8.3.0: resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@7: - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" @@ -1543,7 +1757,7 @@ concat-with-sourcemaps@*: console-control-strings@^1.0.0, console-control-strings@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== convert-source-map@^1.5.0: @@ -1602,7 +1816,7 @@ csstype@^3.0.2, csstype@^3.1.3: resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -d3-array@^3.1.6, d3-array@^3.2.0, "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: +"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.1.6, d3-array@^3.2.0: version "3.2.4" resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== @@ -1632,7 +1846,7 @@ d3-chord@3: dependencies: d3-path "1 - 3" -d3-color@^3.1.0, "d3-color@1 - 3", d3-color@3: +"d3-color@1 - 3", d3-color@3, d3-color@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz" integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== @@ -1644,7 +1858,7 @@ d3-contour@4: dependencies: d3-array "^3.2.0" -d3-delaunay@^6.0.4, d3-delaunay@6: +d3-delaunay@6, d3-delaunay@^6.0.4: version "6.0.4" resolved "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz" integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== @@ -1673,7 +1887,7 @@ d3-delaunay@^6.0.4, d3-delaunay@6: iconv-lite "0.6" rw "1" -d3-ease@^3.0.1, "d3-ease@1 - 3", d3-ease@3: +"d3-ease@1 - 3", d3-ease@3, d3-ease@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== @@ -1713,24 +1927,24 @@ d3-geo@3: dependencies: d3-array "2.5.0 - 3" -d3-hierarchy@^1.1.5: - version "1.1.9" - resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz" - integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== - d3-hierarchy@3: version "3.1.2" resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz" integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== -d3-interpolate@^3.0.1, "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: +d3-hierarchy@^1.1.5: + version "1.1.9" + resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz" + integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== + +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3, d3-interpolate@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== dependencies: d3-color "1 - 3" -d3-path@^3.1.0, "d3-path@1 - 3", d3-path@3: +"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz" integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== @@ -1758,7 +1972,7 @@ d3-scale-chromatic@3: d3-color "1 - 3" d3-interpolate "1 - 3" -d3-scale@^4.0.2, d3-scale@4: +d3-scale@4, d3-scale@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz" integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== @@ -1774,7 +1988,7 @@ d3-scale@^4.0.2, d3-scale@4: resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== -d3-shape@^3.1.0, d3-shape@^3.2.0, d3-shape@3: +d3-shape@3, d3-shape@^3.1.0, d3-shape@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz" integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== @@ -1788,14 +2002,14 @@ d3-shape@^3.1.0, d3-shape@^3.2.0, d3-shape@3: dependencies: d3-time "1 - 3" -d3-time@^3.0.0, "d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3, d3-time@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz" integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== dependencies: d3-array "2 - 3" -d3-timer@^3.0.1, "d3-timer@1 - 3", d3-timer@3: +"d3-timer@1 - 3", d3-timer@3, d3-timer@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== @@ -1827,6 +2041,11 @@ d3-zoom@3: d3-selection "2 - 3" d3-transition "2 - 3" +d3@3.5.6: + version "3.5.6" + resolved "https://registry.npmjs.org/d3/-/d3-3.5.6.tgz" + integrity sha512-i1x8Q3lGerBazuvWsImnUKrjfCdBnRnk8aq7hqOK/5+CAWJTt/zr9CaR1mlJf17oH8l/v4mOaDLU+F/l2dq1Vg== + d3@^7.8.5: version "7.9.0" resolved "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz" @@ -1863,17 +2082,19 @@ d3@^7.8.5: d3-transition "3" d3-zoom "3" -d3@3.5.6: - version "3.5.6" - resolved "https://registry.npmjs.org/d3/-/d3-3.5.6.tgz" - integrity sha512-i1x8Q3lGerBazuvWsImnUKrjfCdBnRnk8aq7hqOK/5+CAWJTt/zr9CaR1mlJf17oH8l/v4mOaDLU+F/l2dq1Vg== - dangerously-set-html-content@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/dangerously-set-html-content/-/dangerously-set-html-content-1.1.0.tgz" integrity sha512-kUHpnYZ9EgT6BKUEgrgccg17Pa0YdI9MlWdDYeu49HIXYONCxZpKr6Tj24q+LwFmbmtL3IJ1Rvj+aaTTzFOepg== -debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4: +debug@4: + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + dependencies: + ms "2.1.2" + +debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -1882,7 +2103,7 @@ debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4: decompress-response@^4.2.0: version "4.2.1" - resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== dependencies: mimic-response "^2.0.0" @@ -1901,11 +2122,6 @@ define-data-property@^1.1.4: es-errors "^1.3.0" gopd "^1.0.1" -delaunator@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz" - integrity sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag== - delaunator@5: version "5.0.1" resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz" @@ -1913,6 +2129,11 @@ delaunator@5: dependencies: robust-predicates "^3.0.2" +delaunator@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz" + integrity sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag== + delaunay-find@0.0.6: version "0.0.6" resolved "https://registry.npmjs.org/delaunay-find/-/delaunay-find-0.0.6.tgz" @@ -1922,7 +2143,7 @@ delaunay-find@0.0.6: delegates@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== dequal@^2.0.3: @@ -1932,7 +2153,7 @@ dequal@^2.0.3: detect-libc@^2.0.0: version "2.0.3" - resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== dir-glob@^3.0.1: @@ -1992,14 +2213,14 @@ domutils@^3.0.1: domelementtype "^2.3.0" domhandler "^5.0.3" -electron-to-chromium@^1.4.668: - version "1.4.757" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.757.tgz" - integrity sha512-jftDaCknYSSt/+KKeXzH3LX5E2CvRLm75P3Hj+J/dv3CL0qUYcOt13d5FN1NiL5IJbbhzHrb3BomeG2tkSlZmw== +electron-to-chromium@^1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz#03bfdf422bdd2c05ee2657efedde21264a1a566b" + integrity sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== enquire.js@^2.1.6: @@ -2038,34 +2259,34 @@ es-errors@^1.3.0: resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -esbuild@^0.20.1: - version "0.20.2" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz" - integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== optionalDependencies: - "@esbuild/aix-ppc64" "0.20.2" - "@esbuild/android-arm" "0.20.2" - "@esbuild/android-arm64" "0.20.2" - "@esbuild/android-x64" "0.20.2" - "@esbuild/darwin-arm64" "0.20.2" - "@esbuild/darwin-x64" "0.20.2" - "@esbuild/freebsd-arm64" "0.20.2" - "@esbuild/freebsd-x64" "0.20.2" - "@esbuild/linux-arm" "0.20.2" - "@esbuild/linux-arm64" "0.20.2" - "@esbuild/linux-ia32" "0.20.2" - "@esbuild/linux-loong64" "0.20.2" - "@esbuild/linux-mips64el" "0.20.2" - "@esbuild/linux-ppc64" "0.20.2" - "@esbuild/linux-riscv64" "0.20.2" - "@esbuild/linux-s390x" "0.20.2" - "@esbuild/linux-x64" "0.20.2" - "@esbuild/netbsd-x64" "0.20.2" - "@esbuild/openbsd-x64" "0.20.2" - "@esbuild/sunos-x64" "0.20.2" - "@esbuild/win32-arm64" "0.20.2" - "@esbuild/win32-ia32" "0.20.2" - "@esbuild/win32-x64" "0.20.2" + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" escalade@^3.1.2: version "3.1.2" @@ -2105,7 +2326,7 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -"eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^8.56.0, eslint@^8.57.0, eslint@>=7: +eslint@^8.57.0: version "8.57.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== @@ -2265,7 +2486,7 @@ framer-motion@^11.2.13: fs-minipass@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" @@ -2275,6 +2496,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -2282,7 +2508,7 @@ function-bind@^1.1.2: gauge@^3.0.0: version "3.0.2" - resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== dependencies: aproba "^1.0.3 || ^2.0.0" @@ -2411,7 +2637,7 @@ has-symbols@^1.0.3: has-unicode@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== hasown@^2.0.0, hasown@^2.0.2: @@ -2445,7 +2671,7 @@ htmlparser2@^8.0.1: https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -2489,7 +2715,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.3, inherits@~2.0.3, inherits@2: +inherits@2, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2532,7 +2758,7 @@ is-extglob@^2.1.1: is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: @@ -2714,16 +2940,16 @@ lodash.throttle@^4.1.1: resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== -lodash@^4.17.19, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - lodash@4.17.4: version "4.17.4" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" integrity sha512-6X37Sq9KCpLSXEh8uM12AKYlviHPNNk4RxiGBn4cmKGJinbXBneWIV7iE/nXkM928O7ytHcHb6+X6Svl0f4hXg== +lodash@^4.17.19, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" @@ -2752,7 +2978,7 @@ make-cancellable-promise@^1.3.1: make-dir@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" @@ -2794,7 +3020,7 @@ markdown-it@^14.1.0: punycode.js "^2.3.1" uc.micro "^2.1.0" -markmap-common@*, markmap-common@^0.17.0: +markmap-common@^0.17.0: version "0.17.0" resolved "https://registry.npmjs.org/markmap-common/-/markmap-common-0.17.0.tgz" integrity sha512-3tuU6PxjrQxivZD18czJKcGKTTRJKMNne1bBflcHqu7yASznJRBM80CC4DzIVGiAb74hTuX8tTfkEQUMu0yKMg== @@ -2887,7 +3113,7 @@ micromatch@^4.0.4: mimic-response@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: @@ -2906,19 +3132,19 @@ minimatch@^9.0.4: minipass@^3.0.0: version "3.3.6" - resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" minipass@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== minizlib@^2.1.1: version "2.1.2" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" @@ -2926,7 +3152,7 @@ minizlib@^2.1.1: mkdirp@^1.0.3: version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== ms@2.1.2: @@ -2936,7 +3162,7 @@ ms@2.1.2: nan@^2.17.0: version "2.20.0" - resolved "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3" integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== nanoid@^3.3.7: @@ -2951,19 +3177,19 @@ natural-compare@^1.4.0: node-fetch@^2.6.7: version "2.7.0" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== nopt@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: abbrev "1" @@ -2980,7 +3206,7 @@ npm2url@^0.2.4: npmlog@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== dependencies: are-we-there-yet "^2.0.0" @@ -3007,7 +3233,7 @@ object-inspect@^1.13.1: once@^1.3.0, once@^1.3.1: version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -3113,10 +3339,10 @@ pdfjs-dist@4.3.136: canvas "^2.11.2" path2d "^0.2.0" -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" @@ -3128,13 +3354,13 @@ pluralize@^8.0.0: resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -postcss@^8.4.38: - version "8.4.38" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== +postcss@^8.4.39: + version "8.4.40" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz" + integrity sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q== dependencies: nanoid "^3.3.7" - picocolors "^1.0.0" + picocolors "^1.0.1" source-map-js "^1.2.0" prelude-ls@^1.2.1: @@ -3143,9 +3369,9 @@ prelude-ls@^1.2.1: integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier@^3.2.5: - version "3.2.5" - resolved "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== + version "3.3.3" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz" + integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== prismjs@^1.29.0: version "1.29.0" @@ -3197,13 +3423,13 @@ queue-microtask@^1.2.2: integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== react-bootstrap@^2.10.2: - version "2.10.2" - resolved "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.2.tgz" - integrity sha512-UvB7mRqQjivdZNxJNEA2yOQRB7L9N43nBnKc33K47+cH90/ujmnMwatTCwQLu83gLhrzAl8fsa6Lqig/KLghaA== + version "2.10.4" + resolved "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.4.tgz" + integrity sha512-W3398nBM2CBfmGP2evneEO3ZZwEMPtHs72q++eNw60uDGDAdiGn0f9yNys91eo7/y8CTF5Ke1C0QO8JFVPU40Q== dependencies: - "@babel/runtime" "^7.22.5" + "@babel/runtime" "^7.24.7" "@restart/hooks" "^0.4.9" - "@restart/ui" "^1.6.8" + "@restart/ui" "^1.6.9" "@types/react-transition-group" "^4.4.6" classnames "^2.3.2" dom-helpers "^5.2.1" @@ -3214,6 +3440,11 @@ react-bootstrap@^2.10.2: uncontrollable "^7.2.1" warning "^4.0.3" +react-chartjs-2@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz" + integrity sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA== + react-collapsed@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/react-collapsed/-/react-collapsed-4.1.2.tgz" @@ -3221,7 +3452,7 @@ react-collapsed@^4.1.2: dependencies: tiny-warning "^1.0.3" -"react-dom@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.9.0 || ^17 || ^18", "react-dom@^17.0.0 || ^18.0.0", react-dom@^18.0.0, react-dom@^18.2.0, react-dom@>=16.12.0, react-dom@>=16.14.0, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0, react-dom@>=17.0.1: +react-dom@^18.2.0: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -3275,25 +3506,25 @@ react-photo-album@^2.4.1: resolved "https://registry.npmjs.org/react-photo-album/-/react-photo-album-2.4.1.tgz" integrity sha512-dzqP5QbYAugA0uZTl3qsVldckzDXYDkDOvA8CpACl51hSEfhJmCfwhbnI4WBHnETQHv48nnNQ1jhrulst8njLA== -react-refresh@^0.14.0: +react-refresh@^0.14.2: version "0.14.2" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== -react-router-dom@^6.23.0: - version "6.23.0" - resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.0.tgz" - integrity sha512-Q9YaSYvubwgbal2c9DJKfx6hTNoBp3iJDsl+Duva/DwxoJH+OTXkxGpql4iUK2sla/8z4RpjAm6EWx1qUDuopQ== +react-router-dom@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.0.tgz" + integrity sha512-RRGUIiDtLrkX3uYcFiCIxKFWMcWQGMojpYZfcstc63A1+sSnVgILGIm9gNUA6na3Fm1QuPGSBQH2EMbAZOnMsQ== dependencies: - "@remix-run/router" "1.16.0" - react-router "6.23.0" + "@remix-run/router" "1.19.0" + react-router "6.26.0" -react-router@6.23.0: - version "6.23.0" - resolved "https://registry.npmjs.org/react-router/-/react-router-6.23.0.tgz" - integrity sha512-wPMZ8S2TuPadH0sF5irFGjkNLIcRvOSaEe7v+JER8508dyJumm6XZB1u5kztlX0RVq6AzRVndzqcUh6sFIauzA== +react-router@6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/react-router/-/react-router-6.26.0.tgz" + integrity sha512-wVQq0/iFYd3iZ9H2l3N3k4PL8EEHcb0XlU2Na8nEwmiXgIUElEH6gaJDtUQxJ+JFzmIXaQjfdpcGWaM6IoQGxg== dependencies: - "@remix-run/router" "1.16.0" + "@remix-run/router" "1.19.0" react-select@^5.8.0: version "5.8.0" @@ -3331,7 +3562,7 @@ react-transition-group@^4.3.0, react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -"react@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", "react@^16.9.0 || ^17 || ^18", "react@^17.0.0 || ^18.0.0", react@^18.0.0, react@^18.2.0, react@^18.3.1, react@>=0.14.0, react@>=15.0.0, react@>=16.14.0, react@>=16.6.0, react@>=16.8, react@>=16.8.0, react@>=17.0.1: +react@^18.2.0: version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -3340,7 +3571,7 @@ react-transition-group@^4.3.0, react-transition-group@^4.4.5: readable-stream@^3.6.0: version "3.6.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -3460,7 +3691,7 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== "safer-buffer@>= 2.1.2 < 3.0.0": @@ -3468,10 +3699,10 @@ safe-buffer@~5.2.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass@*, sass@^1.77.6: - version "1.77.6" - resolved "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz" - integrity sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q== +sass@^1.77.6: + version "1.77.8" + resolved "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz" + integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -3484,17 +3715,17 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -semver@^6.0.0: +semver@^6.0.0, semver@^6.3.1: version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +semver@^7.3.5: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -semver@^7.3.5, semver@^7.6.0: +semver@^7.6.0: version "7.6.0" resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== @@ -3503,7 +3734,7 @@ semver@^7.3.5, semver@^7.6.0: set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-function-length@^1.2.1: @@ -3542,17 +3773,17 @@ side-channel@^1.0.6: signal-exit@^3.0.0: version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== simple-concat@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== simple-get@^3.0.3: version "3.1.1" - resolved "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== dependencies: decompress-response "^4.2.0" @@ -3564,7 +3795,7 @@ slash@^3.0.0: resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -source-map-js@^1.2.0, "source-map-js@>=0.6.2 <2.0.0": +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== @@ -3589,20 +3820,6 @@ stackframe@^1.3.4: resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - string-convert@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" @@ -3610,13 +3827,27 @@ string-convert@^0.2.0: "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -3655,7 +3886,7 @@ supports-preserve-symlinks-flag@^1.0.0: tar@^6.1.11: version "6.2.1" - resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" @@ -3702,7 +3933,7 @@ to-regex-range@^5.0.1: tr46@~0.0.3: version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== ts-api-utils@^1.3.0: @@ -3727,10 +3958,10 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -typescript@^5.2.2, typescript@>=4.2.0: - version "5.4.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== +typescript@^5.2.2: + version "5.5.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== uc.micro@^2.0.0, uc.micro@^2.1.0: version "2.1.0" @@ -3757,13 +3988,13 @@ undici-types@~5.26.4: resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -update-browserslist-db@^1.0.13: - version "1.0.15" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz" - integrity sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA== +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== dependencies: escalade "^3.1.2" - picocolors "^1.0.0" + picocolors "^1.0.1" uri-js@^4.2.2: version "4.4.1" @@ -4087,13 +4318,13 @@ victory@^37.0.2: victory-voronoi-container "^37.0.2" victory-zoom-container "^37.0.2" -"vite@^4.2.0 || ^5.0.0", vite@^5.2.0: - version "5.2.11" - resolved "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz" - integrity sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ== +vite@^5.2.0: + version "5.3.5" + resolved "https://registry.npmjs.org/vite/-/vite-5.3.5.tgz" + integrity sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA== dependencies: - esbuild "^0.20.1" - postcss "^8.4.38" + esbuild "^0.21.3" + postcss "^8.4.39" rollup "^4.13.0" optionalDependencies: fsevents "~2.3.3" @@ -4112,12 +4343,12 @@ warning@^4.0.0, warning@^4.0.3: webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -4132,7 +4363,7 @@ which@^2.0.1: wide-align@^1.1.2: version "1.1.5" - resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: string-width "^1.0.2 || 2 || 3 || 4" -- GitLab