import { createFloatingEditor } from "/node_modules/@runablehq/vite-editor-plugin/dist/editor-XIR_Jz5V.js?v=e14c7aeb"; //#region src/client.ts const ID_ATTRIBUTE = "data-c7"; const MAP_ENDPOINT = "/__vite-editor/map"; const OVERLAY_ID = "vite-editor-plugin__highlight"; const EDITOR_EVENT_TYPE = "vite-editor-plugin:editor-submit"; const HIGHLIGHT_BORDER_COLOR = "var(--ve-color-accent, rgba(37, 99, 235, 1))"; const HIGHLIGHT_BACKGROUND = "rgba(37, 99, 235, 0.14)"; const HIGHLIGHT_SHADOW = "0 0 0 1px rgba(37, 99, 235, 0.25)"; const metadataCache = /* @__PURE__ */ new Map(); const metadataRequests = /* @__PURE__ */ new Map(); let inspectorCleanup = null; let pendingEnableCallback = null; if (typeof window !== "undefined") { window.__viteEditorPluginClientInitialized ??= false; const existingCleanup = typeof window.__viteEditorPluginCleanup === "function" ? window.__viteEditorPluginCleanup : null; if (existingCleanup) inspectorCleanup = existingCleanup; const startInspector = () => { inspectorCleanup = initializeInspector(); window.__viteEditorPluginClientInitialized = true; window.__viteEditorPluginCleanup = inspectorCleanup ?? void 0; }; const enableInspector = () => { if (inspectorCleanup || pendingEnableCallback) { window.__viteEditorPluginClientInitialized = true; return; } if (document.readyState === "loading") { pendingEnableCallback = () => { pendingEnableCallback = null; startInspector(); }; document.addEventListener("DOMContentLoaded", pendingEnableCallback, { once: true }); return; } startInspector(); }; const disableInspector = () => { if (pendingEnableCallback) { document.removeEventListener("DOMContentLoaded", pendingEnableCallback); pendingEnableCallback = null; } if (inspectorCleanup) { inspectorCleanup(); inspectorCleanup = null; } window.__viteEditorPluginClientInitialized = false; window.__viteEditorPluginCleanup = void 0; }; if (new URLSearchParams(window.location.search).get("runable-edit") === "1" && !window.__viteEditorPluginClientInitialized) enableInspector(); const handleInspectorToggleMessage = (event) => { const { data } = event; if (typeof data !== "object" || data === null) return; const payload = data; if (typeof payload.mode === "string") { const normalizedMode = payload.mode.toLowerCase(); if (normalizedMode === "edit") enableInspector(); else if (normalizedMode === "view") disableInspector(); } }; if (window.__viteEditorPluginMessageListener) window.removeEventListener("message", window.__viteEditorPluginMessageListener); window.__viteEditorPluginMessageListener = handleInspectorToggleMessage; window.addEventListener("message", handleInspectorToggleMessage); } function initializeInspector() { const overlay = ensureOverlayElement(); const editor = createFloatingEditor({ onSubmit: ({ message, metadata }) => { postEditorMessage({ message, metadata }); } }); let hoverElement = null; let hoverId = null; let selectedElement = null; let selectedId = null; const updateOverlay = () => { const rect = getValidRect(selectedElement ?? hoverElement); if (!rect) { overlay.style.display = "none"; return; } renderOverlay({ overlay, rect }); }; const openEditorForSelection = () => { if (!selectedElement || !selectedId) { editor.hide(); updateOverlay(); return; } const rect = getValidRect(selectedElement); if (!rect) { clearSelection(); return; } const metadata = metadataCache.get(selectedId) ?? null; editor.show({ rect, componentId: selectedId, metadata }); }; const clearHover = () => { hoverElement = null; hoverId = null; if (!selectedElement) overlay.style.display = "none"; }; const clearSelection = () => { if (!selectedElement) return; selectedElement = null; selectedId = null; editor.hide(); updateOverlay(); }; const handlePointerMove = (event) => { const targetNode = event.target instanceof Node ? event.target : null; if (targetNode && editor.containsNode(targetNode)) return; const targetElement = event.target instanceof Element ? event.target.closest(`[${ID_ATTRIBUTE}]`) : null; if (!targetElement) { hoverElement = null; hoverId = null; if (!selectedElement) overlay.style.display = "none"; return; } const id = targetElement.getAttribute(ID_ATTRIBUTE); if (!id) { if (!selectedElement) clearHover(); return; } hoverElement = targetElement; hoverId = id; if (!selectedElement) updateOverlay(); if (!metadataCache.has(id)) loadMetadata(id).then((metadata) => { if (hoverId === id) { metadataCache.set(id, metadata); if (selectedElement && selectedId === id) openEditorForSelection(); } }); }; const handlePointerLeave = (event) => { const relatedNode = event.relatedTarget; if (relatedNode && editor.containsNode(relatedNode)) return; if (relatedNode instanceof Element && relatedNode.closest(`[${ID_ATTRIBUTE}]`)) return; if (selectedElement) { hoverElement = null; hoverId = null; return; } clearHover(); }; const handlePointerDown = (event) => { if (event.button !== 0) return; const targetNode = event.target instanceof Node ? event.target : null; if (!targetNode) return; if (editor.containsNode(targetNode)) return; const componentElement = targetNode instanceof Element ? targetNode.closest(`[${ID_ATTRIBUTE}]`) : null; if (!componentElement) { if (selectedElement) clearSelection(); clearHover(); return; } const id = componentElement.getAttribute(ID_ATTRIBUTE); if (!id) return; if (selectedElement === componentElement && selectedId === id) { editor.focusInput(); return; } selectedElement = componentElement; selectedId = id; hoverElement = componentElement; hoverId = id; updateOverlay(); openEditorForSelection(); loadMetadata(id).then((metadata) => { if (selectedId === id && selectedElement === componentElement) { metadataCache.set(id, metadata); openEditorForSelection(); } }); }; const handleClick = (event) => { if (event.button !== 0) return; const targetNode = event.target instanceof Node ? event.target : null; if (!targetNode) return; if (editor.containsNode(targetNode)) return; if (!(targetNode instanceof Element ? targetNode.closest(`[${ID_ATTRIBUTE}]`) : null)) return; if (!(targetNode instanceof Element ? targetNode.closest("a[href]") : targetNode.parentElement?.closest("a[href]") ?? null)) return; event.preventDefault(); event.stopPropagation(); }; const handleViewportChange = () => { updateOverlay(); if (selectedElement) openEditorForSelection(); }; const handleKeyDown = (event) => { if (event.key === "Escape") if (selectedElement) { clearSelection(); event.stopPropagation(); } else clearHover(); }; document.addEventListener("pointermove", handlePointerMove, true); document.addEventListener("pointerleave", handlePointerLeave, true); document.addEventListener("pointerdown", handlePointerDown, true); document.addEventListener("click", handleClick, true); document.addEventListener("keydown", handleKeyDown, true); window.addEventListener("scroll", handleViewportChange, true); window.addEventListener("resize", handleViewportChange); return () => { document.removeEventListener("pointermove", handlePointerMove, true); document.removeEventListener("pointerleave", handlePointerLeave, true); document.removeEventListener("pointerdown", handlePointerDown, true); document.removeEventListener("click", handleClick, true); document.removeEventListener("keydown", handleKeyDown, true); window.removeEventListener("scroll", handleViewportChange, true); window.removeEventListener("resize", handleViewportChange); hoverElement = null; hoverId = null; selectedElement = null; selectedId = null; editor.hide(); editor.destroy(); overlay.remove(); }; } function getValidRect(element) { if (!element || !element.isConnected) return null; const rect = element.getBoundingClientRect(); if (rect.width === 0 && rect.height === 0) return null; return rect; } function renderOverlay({ overlay, rect }) { overlay.style.display = "block"; overlay.style.left = `${Math.round(rect.left)}px`; overlay.style.top = `${Math.round(rect.top)}px`; overlay.style.width = `${Math.round(rect.width)}px`; overlay.style.height = `${Math.round(rect.height)}px`; } function postEditorMessage({ message, metadata }) { const payload = { message, componentId: metadata?.id ?? null, componentTag: metadata?.tagName ?? null, file: metadata?.file ?? null, line: metadata?.location?.line ?? null, column: metadata?.location?.column ?? null }; const targetWindow = window.parent ?? window; try { targetWindow.postMessage({ source: "vite-editor-plugin", type: EDITOR_EVENT_TYPE, payload }, "*"); } catch {} } function ensureOverlayElement() { const existing = document.getElementById(OVERLAY_ID); if (existing) return existing; const overlay = document.createElement("div"); overlay.id = OVERLAY_ID; overlay.style.position = "fixed"; overlay.style.zIndex = "2147483643"; overlay.style.pointerEvents = "none"; overlay.style.borderWidth = "2px"; overlay.style.borderStyle = "dashed"; overlay.style.borderColor = HIGHLIGHT_BORDER_COLOR; overlay.style.borderRadius = "6px"; overlay.style.backgroundColor = HIGHLIGHT_BACKGROUND; overlay.style.boxSizing = "border-box"; overlay.style.boxShadow = HIGHLIGHT_SHADOW; overlay.style.transition = "left 0.05s ease-out, top 0.05s ease-out, width 0.05s ease-out, height 0.05s ease-out"; overlay.style.display = "none"; document.body.appendChild(overlay); return overlay; } async function loadMetadata(id) { const cached = metadataCache.get(id); if (cached !== void 0) return cached; let request = metadataRequests.get(id); if (!request) { request = fetch(`${MAP_ENDPOINT}?id=${encodeURIComponent(id)}`, { credentials: "same-origin" }).then((response) => { if (!response.ok) return null; return response.json(); }).then((json) => { if (!json || !json.ok) return null; const line = toFiniteInteger(json.location?.line); const column = toFiniteInteger(json.location?.column); return { id, tagName: json.tagName ?? "element", file: json.file ?? "", location: { line, column } }; }).catch(() => null).finally(() => { metadataRequests.delete(id); }); metadataRequests.set(id, request); } const metadata = await request; metadataCache.set(id, metadata); return metadata; } function toFiniteInteger(value) { if (typeof value === "number") return Number.isFinite(value) ? value : null; if (typeof value === "string") { const parsed = Number.parseInt(value, 10); return Number.isFinite(parsed) ? parsed : null; } return null; } //#endregion export { }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNsaWVudC5qcz9pbXBvcnQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRmxvYXRpbmdFZGl0b3IgfSBmcm9tIFwiL25vZGVfbW9kdWxlcy9AcnVuYWJsZWhxL3ZpdGUtZWRpdG9yLXBsdWdpbi9kaXN0L2VkaXRvci1YSVJfSno1Vi5qcz92PWUxNGM3YWViXCI7XG5cbi8vI3JlZ2lvbiBzcmMvY2xpZW50LnRzXG5jb25zdCBJRF9BVFRSSUJVVEUgPSBcImRhdGEtYzdcIjtcbmNvbnN0IE1BUF9FTkRQT0lOVCA9IFwiL19fdml0ZS1lZGl0b3IvbWFwXCI7XG5jb25zdCBPVkVSTEFZX0lEID0gXCJ2aXRlLWVkaXRvci1wbHVnaW5fX2hpZ2hsaWdodFwiO1xuY29uc3QgRURJVE9SX0VWRU5UX1RZUEUgPSBcInZpdGUtZWRpdG9yLXBsdWdpbjplZGl0b3Itc3VibWl0XCI7XG5jb25zdCBISUdITElHSFRfQk9SREVSX0NPTE9SID0gXCJ2YXIoLS12ZS1jb2xvci1hY2NlbnQsIHJnYmEoMzcsIDk5LCAyMzUsIDEpKVwiO1xuY29uc3QgSElHSExJR0hUX0JBQ0tHUk9VTkQgPSBcInJnYmEoMzcsIDk5LCAyMzUsIDAuMTQpXCI7XG5jb25zdCBISUdITElHSFRfU0hBRE9XID0gXCIwIDAgMCAxcHggcmdiYSgzNywgOTksIDIzNSwgMC4yNSlcIjtcbmNvbnN0IG1ldGFkYXRhQ2FjaGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuY29uc3QgbWV0YWRhdGFSZXF1ZXN0cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG5sZXQgaW5zcGVjdG9yQ2xlYW51cCA9IG51bGw7XG5sZXQgcGVuZGluZ0VuYWJsZUNhbGxiYWNrID0gbnVsbDtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdHdpbmRvdy5fX3ZpdGVFZGl0b3JQbHVnaW5DbGllbnRJbml0aWFsaXplZCA/Pz0gZmFsc2U7XG5cdGNvbnN0IGV4aXN0aW5nQ2xlYW51cCA9IHR5cGVvZiB3aW5kb3cuX192aXRlRWRpdG9yUGx1Z2luQ2xlYW51cCA9PT0gXCJmdW5jdGlvblwiID8gd2luZG93Ll9fdml0ZUVkaXRvclBsdWdpbkNsZWFudXAgOiBudWxsO1xuXHRpZiAoZXhpc3RpbmdDbGVhbnVwKSBpbnNwZWN0b3JDbGVhbnVwID0gZXhpc3RpbmdDbGVhbnVwO1xuXHRjb25zdCBzdGFydEluc3BlY3RvciA9ICgpID0+IHtcblx0XHRpbnNwZWN0b3JDbGVhbnVwID0gaW5pdGlhbGl6ZUluc3BlY3RvcigpO1xuXHRcdHdpbmRvdy5fX3ZpdGVFZGl0b3JQbHVnaW5DbGllbnRJbml0aWFsaXplZCA9IHRydWU7XG5cdFx0d2luZG93Ll9fdml0ZUVkaXRvclBsdWdpbkNsZWFudXAgPSBpbnNwZWN0b3JDbGVhbnVwID8/IHZvaWQgMDtcblx0fTtcblx0Y29uc3QgZW5hYmxlSW5zcGVjdG9yID0gKCkgPT4ge1xuXHRcdGlmIChpbnNwZWN0b3JDbGVhbnVwIHx8IHBlbmRpbmdFbmFibGVDYWxsYmFjaykge1xuXHRcdFx0d2luZG93Ll9fdml0ZUVkaXRvclBsdWdpbkNsaWVudEluaXRpYWxpemVkID0gdHJ1ZTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwibG9hZGluZ1wiKSB7XG5cdFx0XHRwZW5kaW5nRW5hYmxlQ2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0XHRcdHBlbmRpbmdFbmFibGVDYWxsYmFjayA9IG51bGw7XG5cdFx0XHRcdHN0YXJ0SW5zcGVjdG9yKCk7XG5cdFx0XHR9O1xuXHRcdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIiwgcGVuZGluZ0VuYWJsZUNhbGxiYWNrLCB7IG9uY2U6IHRydWUgfSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHN0YXJ0SW5zcGVjdG9yKCk7XG5cdH07XG5cdGNvbnN0IGRpc2FibGVJbnNwZWN0b3IgPSAoKSA9PiB7XG5cdFx0aWYgKHBlbmRpbmdFbmFibGVDYWxsYmFjaykge1xuXHRcdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIiwgcGVuZGluZ0VuYWJsZUNhbGxiYWNrKTtcblx0XHRcdHBlbmRpbmdFbmFibGVDYWxsYmFjayA9IG51bGw7XG5cdFx0fVxuXHRcdGlmIChpbnNwZWN0b3JDbGVhbnVwKSB7XG5cdFx0XHRpbnNwZWN0b3JDbGVhbnVwKCk7XG5cdFx0XHRpbnNwZWN0b3JDbGVhbnVwID0gbnVsbDtcblx0XHR9XG5cdFx0d2luZG93Ll9fdml0ZUVkaXRvclBsdWdpbkNsaWVudEluaXRpYWxpemVkID0gZmFsc2U7XG5cdFx0d2luZG93Ll9fdml0ZUVkaXRvclBsdWdpbkNsZWFudXAgPSB2b2lkIDA7XG5cdH07XG5cdGlmIChuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLmdldChcInJ1bmFibGUtZWRpdFwiKSA9PT0gXCIxXCIgJiYgIXdpbmRvdy5fX3ZpdGVFZGl0b3JQbHVnaW5DbGllbnRJbml0aWFsaXplZCkgZW5hYmxlSW5zcGVjdG9yKCk7XG5cdGNvbnN0IGhhbmRsZUluc3BlY3RvclRvZ2dsZU1lc3NhZ2UgPSAoZXZlbnQpID0+IHtcblx0XHRjb25zdCB7IGRhdGEgfSA9IGV2ZW50O1xuXHRcdGlmICh0eXBlb2YgZGF0YSAhPT0gXCJvYmplY3RcIiB8fCBkYXRhID09PSBudWxsKSByZXR1cm47XG5cdFx0Y29uc3QgcGF5bG9hZCA9IGRhdGE7XG5cdFx0aWYgKHR5cGVvZiBwYXlsb2FkLm1vZGUgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGNvbnN0IG5vcm1hbGl6ZWRNb2RlID0gcGF5bG9hZC5tb2RlLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRpZiAobm9ybWFsaXplZE1vZGUgPT09IFwiZWRpdFwiKSBlbmFibGVJbnNwZWN0b3IoKTtcblx0XHRcdGVsc2UgaWYgKG5vcm1hbGl6ZWRNb2RlID09PSBcInZpZXdcIikgZGlzYWJsZUluc3BlY3RvcigpO1xuXHRcdH1cblx0fTtcblx0aWYgKHdpbmRvdy5fX3ZpdGVFZGl0b3JQbHVnaW5NZXNzYWdlTGlzdGVuZXIpIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB3aW5kb3cuX192aXRlRWRpdG9yUGx1Z2luTWVzc2FnZUxpc3RlbmVyKTtcblx0d2luZG93Ll9fdml0ZUVkaXRvclBsdWdpbk1lc3NhZ2VMaXN0ZW5lciA9IGhhbmRsZUluc3BlY3RvclRvZ2dsZU1lc3NhZ2U7XG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVJbnNwZWN0b3JUb2dnbGVNZXNzYWdlKTtcbn1cbmZ1bmN0aW9uIGluaXRpYWxpemVJbnNwZWN0b3IoKSB7XG5cdGNvbnN0IG92ZXJsYXkgPSBlbnN1cmVPdmVybGF5RWxlbWVudCgpO1xuXHRjb25zdCBlZGl0b3IgPSBjcmVhdGVGbG9hdGluZ0VkaXRvcih7IG9uU3VibWl0OiAoeyBtZXNzYWdlLCBtZXRhZGF0YSB9KSA9PiB7XG5cdFx0cG9zdEVkaXRvck1lc3NhZ2Uoe1xuXHRcdFx0bWVzc2FnZSxcblx0XHRcdG1ldGFkYXRhXG5cdFx0fSk7XG5cdH0gfSk7XG5cdGxldCBob3ZlckVsZW1lbnQgPSBudWxsO1xuXHRsZXQgaG92ZXJJZCA9IG51bGw7XG5cdGxldCBzZWxlY3RlZEVsZW1lbnQgPSBudWxsO1xuXHRsZXQgc2VsZWN0ZWRJZCA9IG51bGw7XG5cdGNvbnN0IHVwZGF0ZU92ZXJsYXkgPSAoKSA9PiB7XG5cdFx0Y29uc3QgcmVjdCA9IGdldFZhbGlkUmVjdChzZWxlY3RlZEVsZW1lbnQgPz8gaG92ZXJFbGVtZW50KTtcblx0XHRpZiAoIXJlY3QpIHtcblx0XHRcdG92ZXJsYXkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRyZW5kZXJPdmVybGF5KHtcblx0XHRcdG92ZXJsYXksXG5cdFx0XHRyZWN0XG5cdFx0fSk7XG5cdH07XG5cdGNvbnN0IG9wZW5FZGl0b3JGb3JTZWxlY3Rpb24gPSAoKSA9PiB7XG5cdFx0aWYgKCFzZWxlY3RlZEVsZW1lbnQgfHwgIXNlbGVjdGVkSWQpIHtcblx0XHRcdGVkaXRvci5oaWRlKCk7XG5cdFx0XHR1cGRhdGVPdmVybGF5KCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHJlY3QgPSBnZXRWYWxpZFJlY3Qoc2VsZWN0ZWRFbGVtZW50KTtcblx0XHRpZiAoIXJlY3QpIHtcblx0XHRcdGNsZWFyU2VsZWN0aW9uKCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IG1ldGFkYXRhID0gbWV0YWRhdGFDYWNoZS5nZXQoc2VsZWN0ZWRJZCkgPz8gbnVsbDtcblx0XHRlZGl0b3Iuc2hvdyh7XG5cdFx0XHRyZWN0LFxuXHRcdFx0Y29tcG9uZW50SWQ6IHNlbGVjdGVkSWQsXG5cdFx0XHRtZXRhZGF0YVxuXHRcdH0pO1xuXHR9O1xuXHRjb25zdCBjbGVhckhvdmVyID0gKCkgPT4ge1xuXHRcdGhvdmVyRWxlbWVudCA9IG51bGw7XG5cdFx0aG92ZXJJZCA9IG51bGw7XG5cdFx0aWYgKCFzZWxlY3RlZEVsZW1lbnQpIG92ZXJsYXkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuXHR9O1xuXHRjb25zdCBjbGVhclNlbGVjdGlvbiA9ICgpID0+IHtcblx0XHRpZiAoIXNlbGVjdGVkRWxlbWVudCkgcmV0dXJuO1xuXHRcdHNlbGVjdGVkRWxlbWVudCA9IG51bGw7XG5cdFx0c2VsZWN0ZWRJZCA9IG51bGw7XG5cdFx0ZWRpdG9yLmhpZGUoKTtcblx0XHR1cGRhdGVPdmVybGF5KCk7XG5cdH07XG5cdGNvbnN0IGhhbmRsZVBvaW50ZXJNb3ZlID0gKGV2ZW50KSA9PiB7XG5cdFx0Y29uc3QgdGFyZ2V0Tm9kZSA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUgPyBldmVudC50YXJnZXQgOiBudWxsO1xuXHRcdGlmICh0YXJnZXROb2RlICYmIGVkaXRvci5jb250YWluc05vZGUodGFyZ2V0Tm9kZSkpIHJldHVybjtcblx0XHRjb25zdCB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCA/IGV2ZW50LnRhcmdldC5jbG9zZXN0KGBbJHtJRF9BVFRSSUJVVEV9XWApIDogbnVsbDtcblx0XHRpZiAoIXRhcmdldEVsZW1lbnQpIHtcblx0XHRcdGhvdmVyRWxlbWVudCA9IG51bGw7XG5cdFx0XHRob3ZlcklkID0gbnVsbDtcblx0XHRcdGlmICghc2VsZWN0ZWRFbGVtZW50KSBvdmVybGF5LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgaWQgPSB0YXJnZXRFbGVtZW50LmdldEF0dHJpYnV0ZShJRF9BVFRSSUJVVEUpO1xuXHRcdGlmICghaWQpIHtcblx0XHRcdGlmICghc2VsZWN0ZWRFbGVtZW50KSBjbGVhckhvdmVyKCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGhvdmVyRWxlbWVudCA9IHRhcmdldEVsZW1lbnQ7XG5cdFx0aG92ZXJJZCA9IGlkO1xuXHRcdGlmICghc2VsZWN0ZWRFbGVtZW50KSB1cGRhdGVPdmVybGF5KCk7XG5cdFx0aWYgKCFtZXRhZGF0YUNhY2hlLmhhcyhpZCkpIGxvYWRNZXRhZGF0YShpZCkudGhlbigobWV0YWRhdGEpID0+IHtcblx0XHRcdGlmIChob3ZlcklkID09PSBpZCkge1xuXHRcdFx0XHRtZXRhZGF0YUNhY2hlLnNldChpZCwgbWV0YWRhdGEpO1xuXHRcdFx0XHRpZiAoc2VsZWN0ZWRFbGVtZW50ICYmIHNlbGVjdGVkSWQgPT09IGlkKSBvcGVuRWRpdG9yRm9yU2VsZWN0aW9uKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH07XG5cdGNvbnN0IGhhbmRsZVBvaW50ZXJMZWF2ZSA9IChldmVudCkgPT4ge1xuXHRcdGNvbnN0IHJlbGF0ZWROb2RlID0gZXZlbnQucmVsYXRlZFRhcmdldDtcblx0XHRpZiAocmVsYXRlZE5vZGUgJiYgZWRpdG9yLmNvbnRhaW5zTm9kZShyZWxhdGVkTm9kZSkpIHJldHVybjtcblx0XHRpZiAocmVsYXRlZE5vZGUgaW5zdGFuY2VvZiBFbGVtZW50ICYmIHJlbGF0ZWROb2RlLmNsb3Nlc3QoYFske0lEX0FUVFJJQlVURX1dYCkpIHJldHVybjtcblx0XHRpZiAoc2VsZWN0ZWRFbGVtZW50KSB7XG5cdFx0XHRob3ZlckVsZW1lbnQgPSBudWxsO1xuXHRcdFx0aG92ZXJJZCA9IG51bGw7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNsZWFySG92ZXIoKTtcblx0fTtcblx0Y29uc3QgaGFuZGxlUG9pbnRlckRvd24gPSAoZXZlbnQpID0+IHtcblx0XHRpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSByZXR1cm47XG5cdFx0Y29uc3QgdGFyZ2V0Tm9kZSA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUgPyBldmVudC50YXJnZXQgOiBudWxsO1xuXHRcdGlmICghdGFyZ2V0Tm9kZSkgcmV0dXJuO1xuXHRcdGlmIChlZGl0b3IuY29udGFpbnNOb2RlKHRhcmdldE5vZGUpKSByZXR1cm47XG5cdFx0Y29uc3QgY29tcG9uZW50RWxlbWVudCA9IHRhcmdldE5vZGUgaW5zdGFuY2VvZiBFbGVtZW50ID8gdGFyZ2V0Tm9kZS5jbG9zZXN0KGBbJHtJRF9BVFRSSUJVVEV9XWApIDogbnVsbDtcblx0XHRpZiAoIWNvbXBvbmVudEVsZW1lbnQpIHtcblx0XHRcdGlmIChzZWxlY3RlZEVsZW1lbnQpIGNsZWFyU2VsZWN0aW9uKCk7XG5cdFx0XHRjbGVhckhvdmVyKCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGlkID0gY29tcG9uZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoSURfQVRUUklCVVRFKTtcblx0XHRpZiAoIWlkKSByZXR1cm47XG5cdFx0aWYgKHNlbGVjdGVkRWxlbWVudCA9PT0gY29tcG9uZW50RWxlbWVudCAmJiBzZWxlY3RlZElkID09PSBpZCkge1xuXHRcdFx0ZWRpdG9yLmZvY3VzSW5wdXQoKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0c2VsZWN0ZWRFbGVtZW50ID0gY29tcG9uZW50RWxlbWVudDtcblx0XHRzZWxlY3RlZElkID0gaWQ7XG5cdFx0aG92ZXJFbGVtZW50ID0gY29tcG9uZW50RWxlbWVudDtcblx0XHRob3ZlcklkID0gaWQ7XG5cdFx0dXBkYXRlT3ZlcmxheSgpO1xuXHRcdG9wZW5FZGl0b3JGb3JTZWxlY3Rpb24oKTtcblx0XHRsb2FkTWV0YWRhdGEoaWQpLnRoZW4oKG1ldGFkYXRhKSA9PiB7XG5cdFx0XHRpZiAoc2VsZWN0ZWRJZCA9PT0gaWQgJiYgc2VsZWN0ZWRFbGVtZW50ID09PSBjb21wb25lbnRFbGVtZW50KSB7XG5cdFx0XHRcdG1ldGFkYXRhQ2FjaGUuc2V0KGlkLCBtZXRhZGF0YSk7XG5cdFx0XHRcdG9wZW5FZGl0b3JGb3JTZWxlY3Rpb24oKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fTtcblx0Y29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQpID0+IHtcblx0XHRpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSByZXR1cm47XG5cdFx0Y29uc3QgdGFyZ2V0Tm9kZSA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUgPyBldmVudC50YXJnZXQgOiBudWxsO1xuXHRcdGlmICghdGFyZ2V0Tm9kZSkgcmV0dXJuO1xuXHRcdGlmIChlZGl0b3IuY29udGFpbnNOb2RlKHRhcmdldE5vZGUpKSByZXR1cm47XG5cdFx0aWYgKCEodGFyZ2V0Tm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgPyB0YXJnZXROb2RlLmNsb3Nlc3QoYFske0lEX0FUVFJJQlVURX1dYCkgOiBudWxsKSkgcmV0dXJuO1xuXHRcdGlmICghKHRhcmdldE5vZGUgaW5zdGFuY2VvZiBFbGVtZW50ID8gdGFyZ2V0Tm9kZS5jbG9zZXN0KFwiYVtocmVmXVwiKSA6IHRhcmdldE5vZGUucGFyZW50RWxlbWVudD8uY2xvc2VzdChcImFbaHJlZl1cIikgPz8gbnVsbCkpIHJldHVybjtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHR9O1xuXHRjb25zdCBoYW5kbGVWaWV3cG9ydENoYW5nZSA9ICgpID0+IHtcblx0XHR1cGRhdGVPdmVybGF5KCk7XG5cdFx0aWYgKHNlbGVjdGVkRWxlbWVudCkgb3BlbkVkaXRvckZvclNlbGVjdGlvbigpO1xuXHR9O1xuXHRjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50KSA9PiB7XG5cdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikgaWYgKHNlbGVjdGVkRWxlbWVudCkge1xuXHRcdFx0Y2xlYXJTZWxlY3Rpb24oKTtcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdH0gZWxzZSBjbGVhckhvdmVyKCk7XG5cdH07XG5cdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVybW92ZVwiLCBoYW5kbGVQb2ludGVyTW92ZSwgdHJ1ZSk7XG5cdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVybGVhdmVcIiwgaGFuZGxlUG9pbnRlckxlYXZlLCB0cnVlKTtcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrLCB0cnVlKTtcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93biwgdHJ1ZSk7XG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIGhhbmRsZVZpZXdwb3J0Q2hhbmdlLCB0cnVlKTtcblx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgaGFuZGxlVmlld3BvcnRDaGFuZ2UpO1xuXHRyZXR1cm4gKCkgPT4ge1xuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVybW92ZVwiLCBoYW5kbGVQb2ludGVyTW92ZSwgdHJ1ZSk7XG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBoYW5kbGVQb2ludGVyTGVhdmUsIHRydWUpO1xuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBoYW5kbGVQb2ludGVyRG93biwgdHJ1ZSk7XG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUNsaWNrLCB0cnVlKTtcblx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duLCB0cnVlKTtcblx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBoYW5kbGVWaWV3cG9ydENoYW5nZSwgdHJ1ZSk7XG5cdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgaGFuZGxlVmlld3BvcnRDaGFuZ2UpO1xuXHRcdGhvdmVyRWxlbWVudCA9IG51bGw7XG5cdFx0aG92ZXJJZCA9IG51bGw7XG5cdFx0c2VsZWN0ZWRFbGVtZW50ID0gbnVsbDtcblx0XHRzZWxlY3RlZElkID0gbnVsbDtcblx0XHRlZGl0b3IuaGlkZSgpO1xuXHRcdGVkaXRvci5kZXN0cm95KCk7XG5cdFx0b3ZlcmxheS5yZW1vdmUoKTtcblx0fTtcbn1cbmZ1bmN0aW9uIGdldFZhbGlkUmVjdChlbGVtZW50KSB7XG5cdGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5pc0Nvbm5lY3RlZCkgcmV0dXJuIG51bGw7XG5cdGNvbnN0IHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRpZiAocmVjdC53aWR0aCA9PT0gMCAmJiByZWN0LmhlaWdodCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cdHJldHVybiByZWN0O1xufVxuZnVuY3Rpb24gcmVuZGVyT3ZlcmxheSh7IG92ZXJsYXksIHJlY3QgfSkge1xuXHRvdmVybGF5LnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG5cdG92ZXJsYXkuc3R5bGUubGVmdCA9IGAke01hdGgucm91bmQocmVjdC5sZWZ0KX1weGA7XG5cdG92ZXJsYXkuc3R5bGUudG9wID0gYCR7TWF0aC5yb3VuZChyZWN0LnRvcCl9cHhgO1xuXHRvdmVybGF5LnN0eWxlLndpZHRoID0gYCR7TWF0aC5yb3VuZChyZWN0LndpZHRoKX1weGA7XG5cdG92ZXJsYXkuc3R5bGUuaGVpZ2h0ID0gYCR7TWF0aC5yb3VuZChyZWN0LmhlaWdodCl9cHhgO1xufVxuZnVuY3Rpb24gcG9zdEVkaXRvck1lc3NhZ2UoeyBtZXNzYWdlLCBtZXRhZGF0YSB9KSB7XG5cdGNvbnN0IHBheWxvYWQgPSB7XG5cdFx0bWVzc2FnZSxcblx0XHRjb21wb25lbnRJZDogbWV0YWRhdGE/LmlkID8/IG51bGwsXG5cdFx0Y29tcG9uZW50VGFnOiBtZXRhZGF0YT8udGFnTmFtZSA/PyBudWxsLFxuXHRcdGZpbGU6IG1ldGFkYXRhPy5maWxlID8/IG51bGwsXG5cdFx0bGluZTogbWV0YWRhdGE/LmxvY2F0aW9uPy5saW5lID8/IG51bGwsXG5cdFx0Y29sdW1uOiBtZXRhZGF0YT8ubG9jYXRpb24/LmNvbHVtbiA/PyBudWxsXG5cdH07XG5cdGNvbnN0IHRhcmdldFdpbmRvdyA9IHdpbmRvdy5wYXJlbnQgPz8gd2luZG93O1xuXHR0cnkge1xuXHRcdHRhcmdldFdpbmRvdy5wb3N0TWVzc2FnZSh7XG5cdFx0XHRzb3VyY2U6IFwidml0ZS1lZGl0b3ItcGx1Z2luXCIsXG5cdFx0XHR0eXBlOiBFRElUT1JfRVZFTlRfVFlQRSxcblx0XHRcdHBheWxvYWRcblx0XHR9LCBcIipcIik7XG5cdH0gY2F0Y2gge31cbn1cbmZ1bmN0aW9uIGVuc3VyZU92ZXJsYXlFbGVtZW50KCkge1xuXHRjb25zdCBleGlzdGluZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKE9WRVJMQVlfSUQpO1xuXHRpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcblx0Y29uc3Qgb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdG92ZXJsYXkuaWQgPSBPVkVSTEFZX0lEO1xuXHRvdmVybGF5LnN0eWxlLnBvc2l0aW9uID0gXCJmaXhlZFwiO1xuXHRvdmVybGF5LnN0eWxlLnpJbmRleCA9IFwiMjE0NzQ4MzY0M1wiO1xuXHRvdmVybGF5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSBcIm5vbmVcIjtcblx0b3ZlcmxheS5zdHlsZS5ib3JkZXJXaWR0aCA9IFwiMnB4XCI7XG5cdG92ZXJsYXkuc3R5bGUuYm9yZGVyU3R5bGUgPSBcImRhc2hlZFwiO1xuXHRvdmVybGF5LnN0eWxlLmJvcmRlckNvbG9yID0gSElHSExJR0hUX0JPUkRFUl9DT0xPUjtcblx0b3ZlcmxheS5zdHlsZS5ib3JkZXJSYWRpdXMgPSBcIjZweFwiO1xuXHRvdmVybGF5LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IEhJR0hMSUdIVF9CQUNLR1JPVU5EO1xuXHRvdmVybGF5LnN0eWxlLmJveFNpemluZyA9IFwiYm9yZGVyLWJveFwiO1xuXHRvdmVybGF5LnN0eWxlLmJveFNoYWRvdyA9IEhJR0hMSUdIVF9TSEFET1c7XG5cdG92ZXJsYXkuc3R5bGUudHJhbnNpdGlvbiA9IFwibGVmdCAwLjA1cyBlYXNlLW91dCwgdG9wIDAuMDVzIGVhc2Utb3V0LCB3aWR0aCAwLjA1cyBlYXNlLW91dCwgaGVpZ2h0IDAuMDVzIGVhc2Utb3V0XCI7XG5cdG92ZXJsYXkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuXHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG92ZXJsYXkpO1xuXHRyZXR1cm4gb3ZlcmxheTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGxvYWRNZXRhZGF0YShpZCkge1xuXHRjb25zdCBjYWNoZWQgPSBtZXRhZGF0YUNhY2hlLmdldChpZCk7XG5cdGlmIChjYWNoZWQgIT09IHZvaWQgMCkgcmV0dXJuIGNhY2hlZDtcblx0bGV0IHJlcXVlc3QgPSBtZXRhZGF0YVJlcXVlc3RzLmdldChpZCk7XG5cdGlmICghcmVxdWVzdCkge1xuXHRcdHJlcXVlc3QgPSBmZXRjaChgJHtNQVBfRU5EUE9JTlR9P2lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGlkKX1gLCB7IGNyZWRlbnRpYWxzOiBcInNhbWUtb3JpZ2luXCIgfSkudGhlbigocmVzcG9uc2UpID0+IHtcblx0XHRcdGlmICghcmVzcG9uc2Uub2spIHJldHVybiBudWxsO1xuXHRcdFx0cmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcblx0XHR9KS50aGVuKChqc29uKSA9PiB7XG5cdFx0XHRpZiAoIWpzb24gfHwgIWpzb24ub2spIHJldHVybiBudWxsO1xuXHRcdFx0Y29uc3QgbGluZSA9IHRvRmluaXRlSW50ZWdlcihqc29uLmxvY2F0aW9uPy5saW5lKTtcblx0XHRcdGNvbnN0IGNvbHVtbiA9IHRvRmluaXRlSW50ZWdlcihqc29uLmxvY2F0aW9uPy5jb2x1bW4pO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aWQsXG5cdFx0XHRcdHRhZ05hbWU6IGpzb24udGFnTmFtZSA/PyBcImVsZW1lbnRcIixcblx0XHRcdFx0ZmlsZToganNvbi5maWxlID8/IFwiXCIsXG5cdFx0XHRcdGxvY2F0aW9uOiB7XG5cdFx0XHRcdFx0bGluZSxcblx0XHRcdFx0XHRjb2x1bW5cblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9KS5jYXRjaCgoKSA9PiBudWxsKS5maW5hbGx5KCgpID0+IHtcblx0XHRcdG1ldGFkYXRhUmVxdWVzdHMuZGVsZXRlKGlkKTtcblx0XHR9KTtcblx0XHRtZXRhZGF0YVJlcXVlc3RzLnNldChpZCwgcmVxdWVzdCk7XG5cdH1cblx0Y29uc3QgbWV0YWRhdGEgPSBhd2FpdCByZXF1ZXN0O1xuXHRtZXRhZGF0YUNhY2hlLnNldChpZCwgbWV0YWRhdGEpO1xuXHRyZXR1cm4gbWV0YWRhdGE7XG59XG5mdW5jdGlvbiB0b0Zpbml0ZUludGVnZXIodmFsdWUpIHtcblx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSA6IG51bGw7XG5cdGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcblx0XHRjb25zdCBwYXJzZWQgPSBOdW1iZXIucGFyc2VJbnQodmFsdWUsIDEwKTtcblx0XHRyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsO1xuXHR9XG5cdHJldHVybiBudWxsO1xufVxuXG4vLyNlbmRyZWdpb25cbmV4cG9ydCB7ICB9OyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQzs7QUFFckgsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDckIsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzlCLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUN6QyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7QUFDbEQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDNUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENB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QUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckgsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDaEMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDckMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDeEQsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQ1QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUNuQyxDQUFDO0FBQ0QsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTztBQUMvQixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ2hDLENBQUMsTUFBTSxDQUFDLFFBQVE7QUFDaEI7QUFDQSxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO0FBQzVFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDM0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDaEQsQ0FBQztBQUNELENBQUMsTUFBTSxDQUFDLElBQUk7QUFDWjs7QUFFQSxDQUFDLENBQUMsQ0FBQztBQUNILE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDIn0=