{"version":3,"file":"index-B_PCx8at.js","sources":["../../node_modules/solid-js/dist/solid.js","../../node_modules/solid-js/web/dist/web.js","../../node_modules/solid-bootstrap/dist/esm/classnames.js","../../node_modules/solid-bootstrap-core/dist/esm/utils.js","../../node_modules/solid-bootstrap-core/dist/esm/Button.jsx","../../node_modules/solid-bootstrap-core/dist/esm/Anchor.jsx","../../node_modules/dom-helpers/esm/querySelectorAll.js","../../node_modules/dom-helpers/esm/canUseDOM.js","../../node_modules/dom-helpers/esm/addEventListener.js","../../node_modules/solid-bootstrap-core/dist/esm/DropdownContext.js","../../node_modules/solid-js/store/dist/store.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../node_modules/solid-bootstrap-core/dist/esm/popper.js","../../node_modules/solid-bootstrap-core/dist/esm/usePopper.js","../../node_modules/dom-helpers/esm/contains.js","../../node_modules/dom-helpers/esm/removeEventListener.js","../../node_modules/dom-helpers/esm/listen.js","../../node_modules/dom-helpers/esm/ownerDocument.js","../../node_modules/solid-bootstrap-core/dist/esm/useClickOutside.js","../../node_modules/solid-bootstrap-core/dist/esm/mergeOptionsWithPopperConfig.js","../../node_modules/solid-bootstrap-core/dist/esm/DropdownMenu.jsx","../../node_modules/solid-bootstrap-core/dist/esm/ssr.jsx","../../node_modules/solid-bootstrap-core/dist/esm/DropdownToggle.jsx","../../node_modules/solid-bootstrap-core/dist/esm/SelectableContext.jsx","../../node_modules/solid-bootstrap-core/dist/esm/NavContext.jsx","../../node_modules/solid-bootstrap-core/dist/esm/DataKey.js","../../node_modules/solid-bootstrap-core/dist/esm/DropdownItem.jsx","../../node_modules/solid-bootstrap-core/dist/esm/useWindow.js","../../node_modules/solid-bootstrap-core/dist/esm/createControlledProp.js","../../node_modules/solid-bootstrap-core/dist/esm/Dropdown.jsx","../../node_modules/dom-helpers/esm/activeElement.js","../../node_modules/dom-helpers/esm/ownerWindow.js","../../node_modules/dom-helpers/esm/getComputedStyle.js","../../node_modules/dom-helpers/esm/hyphenate.js","../../node_modules/dom-helpers/esm/hyphenateStyle.js","../../node_modules/dom-helpers/esm/isTransform.js","../../node_modules/dom-helpers/esm/css.js","../../node_modules/solid-bootstrap-core/dist/esm/getScrollbarWidth.js","../../node_modules/solid-bootstrap-core/dist/esm/ModalManager.js","../../node_modules/solid-bootstrap-core/dist/esm/useWaitForDOMRef.js","../../node_modules/solid-bootstrap-core/dist/esm/Modal.jsx","../../node_modules/solid-bootstrap-core/dist/esm/TabContext.jsx","../../node_modules/solid-bootstrap-core/dist/esm/NavItem.jsx","../../node_modules/solid-bootstrap-core/dist/esm/Nav.jsx","../../node_modules/solid-react-transition/dist/esm/TransitionGroupContext.js","../../node_modules/solid-react-transition/dist/esm/utils.js","../../node_modules/solid-react-transition/dist/esm/Transition.jsx","../../node_modules/solid-bootstrap-core/dist/esm/NoopTransition.jsx","../../node_modules/solid-bootstrap-core/dist/esm/TabPanel.jsx","../../node_modules/solid-bootstrap-core/dist/esm/Tabs.jsx","../../node_modules/solid-bootstrap/dist/esm/ThemeProvider.jsx","../../node_modules/solid-bootstrap/dist/esm/triggerBrowserReflow.jsx","../../node_modules/dom-helpers/esm/triggerEvent.js","../../node_modules/dom-helpers/esm/transitionEnd.js","../../node_modules/solid-bootstrap/dist/esm/transitionEndListener.js","../../node_modules/solid-bootstrap/dist/esm/TransitionWrapper.jsx","../../node_modules/solid-bootstrap/dist/esm/Collapse.jsx","../../node_modules/solid-bootstrap/dist/esm/Fade.jsx","../../node_modules/solid-bootstrap/dist/esm/CloseButton.jsx","../../node_modules/solid-bootstrap/dist/esm/divWithClass.jsx","../../node_modules/solid-bootstrap/dist/esm/createWithBsPrefix.jsx","../../node_modules/solid-bootstrap/dist/esm/Alert.jsx","../../node_modules/solid-bootstrap/dist/esm/Badge.jsx","../../node_modules/dom-helpers/esm/hasClass.js","../../node_modules/dom-helpers/esm/addClass.js","../../node_modules/dom-helpers/esm/removeClass.js","../../node_modules/solid-bootstrap/dist/esm/BootstrapModalManager.jsx","../../node_modules/solid-bootstrap/dist/esm/Button.jsx","../../node_modules/solid-bootstrap/dist/esm/CardImg.jsx","../../node_modules/solid-bootstrap/dist/esm/CardHeaderContext.jsx","../../node_modules/solid-bootstrap/dist/esm/CardHeader.jsx","../../node_modules/solid-bootstrap/dist/esm/Card.jsx","../../node_modules/solid-bootstrap/dist/esm/Col.jsx","../../node_modules/solid-bootstrap/dist/esm/Container.jsx","../../node_modules/solid-bootstrap/dist/esm/DropdownContext.js","../../node_modules/solid-bootstrap/dist/esm/DropdownItem.jsx","../../node_modules/solid-bootstrap/dist/esm/InputGroupContext.jsx","../../node_modules/solid-bootstrap/dist/esm/NavbarContext.jsx","../../node_modules/solid-bootstrap/dist/esm/DropdownMenu.jsx","../../node_modules/solid-bootstrap/dist/esm/DropdownToggle.jsx","../../node_modules/solid-bootstrap/dist/esm/Dropdown.jsx","../../node_modules/solid-bootstrap/dist/esm/Feedback.jsx","../../node_modules/solid-bootstrap/dist/esm/FormContext.jsx","../../node_modules/solid-bootstrap/dist/esm/FormGroup.jsx","../../node_modules/solid-bootstrap/dist/esm/FloatingLabel.jsx","../../node_modules/solid-bootstrap/dist/esm/FormCheckInput.jsx","../../node_modules/solid-bootstrap/dist/esm/FormCheckContext.jsx","../../node_modules/solid-bootstrap/dist/esm/FormCheckLabel.jsx","../../node_modules/solid-bootstrap/dist/esm/FormCheck.jsx","../../node_modules/solid-bootstrap/dist/esm/FormControl.jsx","../../node_modules/solid-bootstrap/dist/esm/FormFloating.jsx","../../node_modules/solid-bootstrap/dist/esm/FormLabel.jsx","../../node_modules/solid-bootstrap/dist/esm/FormRange.jsx","../../node_modules/solid-bootstrap/dist/esm/FormSelect.jsx","../../node_modules/solid-bootstrap/dist/esm/FormText.jsx","../../node_modules/solid-bootstrap/dist/esm/Switch.jsx","../../node_modules/solid-bootstrap/dist/esm/Form.jsx","../../node_modules/dom-helpers/esm/scrollbarSize.js","../../node_modules/solid-bootstrap/dist/esm/ModalBody.jsx","../../node_modules/solid-bootstrap/dist/esm/ModalContext.jsx","../../node_modules/solid-bootstrap/dist/esm/ModalDialog.jsx","../../node_modules/solid-bootstrap/dist/esm/ModalFooter.jsx","../../node_modules/solid-bootstrap/dist/esm/AbstractModalHeader.jsx","../../node_modules/solid-bootstrap/dist/esm/ModalHeader.jsx","../../node_modules/solid-bootstrap/dist/esm/ModalTitle.jsx","../../node_modules/solid-bootstrap/dist/esm/Modal.jsx","../../node_modules/solid-bootstrap/dist/esm/NavItem.jsx","../../node_modules/solid-bootstrap/dist/esm/NavLink.jsx","../../node_modules/solid-bootstrap/dist/esm/Nav.jsx","../../node_modules/solid-bootstrap/dist/esm/NavbarBrand.jsx","../../node_modules/solid-bootstrap/dist/esm/NavbarCollapse.jsx","../../node_modules/solid-bootstrap/dist/esm/NavbarToggle.jsx","../../node_modules/solid-bootstrap/dist/esm/OffcanvasBody.jsx","../../node_modules/solid-bootstrap/dist/esm/OffcanvasToggling.jsx","../../node_modules/solid-bootstrap/dist/esm/OffcanvasHeader.jsx","../../node_modules/solid-bootstrap/dist/esm/OffcanvasTitle.jsx","../../node_modules/solid-bootstrap/dist/esm/Offcanvas.jsx","../../node_modules/solid-bootstrap/dist/esm/NavbarOffcanvas.jsx","../../node_modules/solid-bootstrap/dist/esm/Navbar.jsx","../../node_modules/solid-bootstrap/dist/esm/NavDropdown.jsx","../../node_modules/solid-bootstrap/dist/esm/Row.jsx","../../node_modules/solid-bootstrap/dist/esm/Spinner.jsx","../../node_modules/solid-bootstrap/dist/esm/getTabTransitionComponent.js","../../node_modules/solid-bootstrap/dist/esm/TabContainer.jsx","../../node_modules/solid-bootstrap/dist/esm/TabContent.jsx","../../node_modules/solid-bootstrap/dist/esm/TabPane.jsx","../../node_modules/solid-bootstrap/dist/esm/Tab.jsx","../../node_modules/solid-bootstrap/dist/esm/Table.jsx","../../node_modules/solid-bootstrap/dist/esm/Tabs.jsx","../../node_modules/solid-bootstrap/dist/esm/ToastFade.jsx","../../node_modules/solid-bootstrap/dist/esm/ToastContext.jsx","../../node_modules/solid-bootstrap/dist/esm/ToastHeader.jsx","../../node_modules/solid-bootstrap/dist/esm/ToastBody.jsx","../../node_modules/solid-bootstrap/dist/esm/Toast.jsx","../../node_modules/@solidjs/router/dist/lifecycle.js","../../node_modules/@solidjs/router/dist/utils.js","../../node_modules/@solidjs/router/dist/routing.js","../../node_modules/@solidjs/router/dist/routers/components.jsx","../../node_modules/@solidjs/router/dist/routers/createRouter.js","../../node_modules/@solidjs/router/dist/data/action.js","../../node_modules/@solidjs/router/dist/data/events.js","../../node_modules/@solidjs/router/dist/routers/HashRouter.js","../../node_modules/@solidjs/router/dist/components.jsx","../../node_modules/tinykeys/dist/tinykeys.module.js","../../src/icons.tsx","../../node_modules/axios/lib/helpers/bind.js","../../node_modules/axios/lib/utils.js","../../node_modules/axios/lib/core/AxiosError.js","../../node_modules/axios/lib/helpers/null.js","../../node_modules/axios/lib/helpers/toFormData.js","../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../node_modules/axios/lib/helpers/buildURL.js","../../node_modules/axios/lib/core/InterceptorManager.js","../../node_modules/axios/lib/defaults/transitional.js","../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../node_modules/axios/lib/platform/browser/classes/FormData.js","../../node_modules/axios/lib/platform/browser/classes/Blob.js","../../node_modules/axios/lib/platform/browser/index.js","../../node_modules/axios/lib/platform/common/utils.js","../../node_modules/axios/lib/platform/index.js","../../node_modules/axios/lib/helpers/toURLEncodedForm.js","../../node_modules/axios/lib/helpers/formDataToJSON.js","../../node_modules/axios/lib/defaults/index.js","../../node_modules/axios/lib/helpers/parseHeaders.js","../../node_modules/axios/lib/core/AxiosHeaders.js","../../node_modules/axios/lib/core/transformData.js","../../node_modules/axios/lib/cancel/isCancel.js","../../node_modules/axios/lib/cancel/CanceledError.js","../../node_modules/axios/lib/core/settle.js","../../node_modules/axios/lib/helpers/parseProtocol.js","../../node_modules/axios/lib/helpers/speedometer.js","../../node_modules/axios/lib/helpers/throttle.js","../../node_modules/axios/lib/helpers/progressEventReducer.js","../../node_modules/axios/lib/helpers/isURLSameOrigin.js","../../node_modules/axios/lib/helpers/cookies.js","../../node_modules/axios/lib/helpers/isAbsoluteURL.js","../../node_modules/axios/lib/helpers/combineURLs.js","../../node_modules/axios/lib/core/buildFullPath.js","../../node_modules/axios/lib/core/mergeConfig.js","../../node_modules/axios/lib/helpers/resolveConfig.js","../../node_modules/axios/lib/adapters/xhr.js","../../node_modules/axios/lib/helpers/composeSignals.js","../../node_modules/axios/lib/helpers/trackStream.js","../../node_modules/axios/lib/adapters/fetch.js","../../node_modules/axios/lib/adapters/adapters.js","../../node_modules/axios/lib/core/dispatchRequest.js","../../node_modules/axios/lib/env/data.js","../../node_modules/axios/lib/helpers/validator.js","../../node_modules/axios/lib/core/Axios.js","../../node_modules/axios/lib/cancel/CancelToken.js","../../node_modules/axios/lib/helpers/spread.js","../../node_modules/axios/lib/helpers/isAxiosError.js","../../node_modules/axios/lib/helpers/HttpStatusCode.js","../../node_modules/axios/lib/axios.js","../../node_modules/inherits/inherits_browser.js","../../node_modules/events/events.js","../../node_modules/queue/index.js","../../node_modules/dayjs/plugin/relativeTime.js","../../node_modules/dayjs/plugin/duration.js","../../node_modules/dayjs/plugin/utc.js","../../node_modules/dayjs/dayjs.min.js","../../src/datetime.ts","../../src/global.ts","../../src/api.ts","../../src/gitrev.ts","../../src/Help.tsx","../../src/config.ts","../../src/Top.tsx","../../node_modules/@kurkle/color/dist/color.esm.js","../../node_modules/chart.js/dist/chunks/helpers.segment.js","../../node_modules/chart.js/dist/chart.js","../../src/settings.ts","../../node_modules/@solid-primitives/transition-group/dist/index.js","../../node_modules/@solid-primitives/refs/dist/index.js","../../node_modules/solid-transition-group/dist/index.js","../../src/scroll.ts","../../src/event.ts","../../src/idletimer.ts","../../src/eventstore.ts","../../src/util.ts","../../src/common/SensorSelect.tsx","../../node_modules/bootstrap/dist/js/bootstrap.esm.js","../../src/common/SearchLink.tsx","../../src/formatters.ts","../../src/preferences.ts","../../src/components.tsx","../../src/Notifications.tsx","../../src/Alerts.tsx","../../src/Loader.tsx","../../src/Login.tsx","../../src/Settings.tsx","../../node_modules/pretty-print-json/dist/pretty-print-json.js","../../src/Events.tsx","../../src/EventView.tsx","../../src/common/RefreshButton.tsx","../../src/Stats.tsx","../../src/dashboards/Address.tsx","../../src/common/colors.ts","../../src/dashboards/Alerts.tsx","../../src/dashboards/Overview.tsx","../../src/dashboards/DHCP.tsx","../../src/pages/ja4.tsx","../../src/pages/admin/Admin.tsx","../../src/pages/admin/AdminFilters.tsx","../../src/pages/admin/AdminElastic.tsx","../../src/App.tsx","../../node_modules/dayjs/plugin/customParseFormat.js","../../node_modules/dayjs/plugin/advancedFormat.js","../../node_modules/dayjs/plugin/quarterOfYear.js","../../node_modules/dayjs/plugin/localizedFormat.js","../../node_modules/dayjs/plugin/isoWeek.js","../../node_modules/chartjs-adapter-dayjs-4/dist/chartjs-adapter-dayjs-4.esm.js","../../src/index.tsx"],"sourcesContent":["let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = (n + m) >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;\n else if (cmp < 0) n = k - 1;\n else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined,\n effects: undefined,\n done: false,\n getContextId() {\n return getContextId(this.context.count);\n },\n getNextContextId() {\n return getContextId(this.context.count++);\n }\n};\nfunction getContextId(count) {\n const num = String(count),\n len = num.length - 1;\n return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : \"\") + num;\n}\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: sharedConfig.getNextContextId(),\n count: 0\n };\n}\n\nconst IS_DEV = false;\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst SUPPORTS_PROXY = typeof Proxy === \"function\";\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned\n ? UNOWNED\n : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);\n else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);\n else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(\n () => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n },\n undefined,\n false,\n 0\n ),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (typeof pFetcher === \"function\") {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n } else {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = sharedConfig.getNextContextId();\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;\n else if (sharedConfig.load && sharedConfig.has(id)) initP = sharedConfig.load(id);\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated)\n queueMicrotask(() =>\n options.onHydrated(key, {\n value: v\n })\n );\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);\n else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p =\n initP !== NO_INIT\n ? initP\n : untrack(() =>\n fetcher(lookup, {\n value: value(),\n refetching\n })\n );\n if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"value\" in p) {\n if (p.status === \"success\") loadEnd(pr, p.value, undefined, lookup);\n else loadEnd(pr, undefined, castError(p.value), lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => (scheduled = false));\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(\n v => loadEnd(p, v, undefined, lookup),\n e => loadEnd(p, undefined, castError(e), lookup)\n );\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));\n else load(false);\n return [\n read,\n {\n refetch: load,\n mutate: setValue\n }\n ];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(\n () => {\n if (!t || !t.fn)\n t = requestCallback(\n () => setDeferred(() => node.value),\n timeout !== undefined\n ? {\n timeout\n }\n : undefined\n );\n return source();\n },\n undefined,\n true\n );\n const [deferred, setDeferred] = createSignal(\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n options\n );\n updateComputation(node);\n setDeferred(() =>\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(\n p => {\n const v = source();\n for (const [key, val] of subs.entries())\n if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);\n else Effects.push(c);\n }\n }\n return v;\n },\n undefined,\n true,\n STALE\n );\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if ((l = subs.get(key))) l.add(listener);\n else subs.set(key, (l = new Set([listener])));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(\n key,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value\n );\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null);\n else if (Owner.cleanups === null) Owner.cleanups = [fn];\n else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t =\n Transition ||\n (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => (t.resolve = res)));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/ createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let value;\n return Owner && Owner.context && (value = Owner.context[context.id]) !== undefined\n ? value\n : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const { factory: oldFactory, untrack: oldUntrack } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);\n else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current =\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || (!isComp && Transition.sources.has(node))) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;\n else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (IS_DEV);\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(\n node,\n Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value,\n time\n );\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null);\n else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];\n else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];\n else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;\n else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);\n else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);\n else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n }\n setHydrateContext();\n }\n if (sharedConfig.effects && (sharedConfig.done || !sharedConfig.count)) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;\n else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount))\n runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;\n else o.state = PENDING;\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n if (Transition && Transition.running && node.pure) {\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;\n else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, (owner && owner.owner) || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects)\n Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });\n else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(\n () =>\n (res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n })),\n undefined\n );\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null);\n else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler =\n typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer, initalValue = undefined) {\n const [s, set] = createSignal(initalValue, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => (\"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub()));\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n newLen = newItems.length,\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n } else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (\n start = 0, end = Math.min(len, newLen);\n start < end && items[start] === newItems[start];\n start++\n );\n for (\n end = len - 1, newEnd = newLen - 1;\n end >= start && newEnd >= start && items[end] === newItems[newEnd];\n end--, newEnd--\n ) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, (len = newLen));\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [],\n newLen = newItems.length;\n newItems[$TRACK];\n return untrack(() => {\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newLen; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newLen;\n items = newItems.slice(0);\n return (mapped = mapped.slice(0, len));\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || (!!s && $PROXY in s);\n sources[i] = typeof s === \"function\" ? ((proxy = true), createMemo(s)) : s;\n }\n if (SUPPORTS_PROXY && proxy) {\n return new Proxy(\n {\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++)\n keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n },\n propTraps\n );\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get\n ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind((sourcesMap[key] = [desc.get.bind(source)]))\n }\n : desc.value !== undefined\n ? desc\n : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));\n else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);\n else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n if (SUPPORTS_PROXY && $PROXY in props) {\n const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n const res = keys.map(k => {\n return new Proxy(\n {\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n },\n propTraps\n );\n });\n res.push(\n new Proxy(\n {\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n },\n propTraps\n )\n );\n return res;\n }\n const otherObject = {};\n const objects = keys.map(() => ({}));\n for (const propName of Object.getOwnPropertyNames(props)) {\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc =\n !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n let blocked = false;\n let objectIndex = 0;\n for (const k of keys) {\n if (k.includes(propName)) {\n blocked = true;\n isDefaultDesc\n ? (objects[objectIndex][propName] = desc.value)\n : Object.defineProperty(objects[objectIndex], propName, desc);\n }\n ++objectIndex;\n }\n if (!blocked) {\n isDefaultDesc\n ? (otherObject[propName] = desc.value)\n : Object.defineProperty(otherObject, propName, desc);\n }\n }\n return [...objects, otherObject];\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n !sharedConfig.done && setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() =>\n (Comp = comp())\n ? untrack(() => {\n if (IS_DEV);\n if (!ctx || sharedConfig.done) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n })\n : \"\"\n );\n };\n wrap.preload = () => p || ((p = fn()).then(mod => (comp = () => mod.default)), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? sharedConfig.getNextContextId() : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const conditionValue = createMemo(() => props.when, undefined, undefined);\n const condition = keyed\n ? conditionValue\n : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n return createMemo(\n () => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n keyed\n ? c\n : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return conditionValue();\n }\n )\n )\n : child;\n }\n return props.fallback;\n },\n undefined,\n undefined\n );\n}\nfunction Switch(props) {\n const chs = children(() => props.children);\n const switchFunc = createMemo(() => {\n const ch = chs();\n const mps = Array.isArray(ch) ? ch : [ch];\n let func = () => undefined;\n for (let i = 0; i < mps.length; i++) {\n const index = i;\n const mp = mps[i];\n const prevFunc = func;\n const conditionValue = createMemo(\n () => (prevFunc() ? undefined : mp.when),\n undefined,\n undefined\n );\n const condition = mp.keyed\n ? conditionValue\n : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : undefined);\n }\n return func;\n });\n return createMemo(\n () => {\n const sel = switchFunc()();\n if (!sel) return props.fallback;\n const [index, conditionValue, mp] = sel;\n const child = mp.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n mp.keyed\n ? conditionValue()\n : () => {\n if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n return conditionValue();\n }\n )\n )\n : child;\n },\n undefined,\n undefined\n );\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load)\n err = sharedConfig.load(sharedConfig.getContextId());\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(\n () => {\n let e;\n if ((e = errored())) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n },\n undefined,\n undefined\n );\n}\n\nconst suspenseListEquals = (a, b) =>\n a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = /* #__PURE__ */ createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(\n prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n { showContent = true, showFallback = true } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || (next && tail === \"collapsed\") ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n },\n {\n inFallback: false\n }\n );\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.getContextId();\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.status !== \"success\") p = ref;\n else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(\n () => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n },\n err => {\n error = err;\n set();\n }\n );\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return (flicker = undefined);\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n { showContent = true, showFallback = true } = show ? show() : {};\n if ((!inFallback || (p && p !== \"$$f\")) && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"F\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport {\n $DEVCOMP,\n $PROXY,\n $TRACK,\n DEV,\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n batch,\n cancelCallback,\n catchError,\n children,\n createComponent,\n createComputed,\n createContext,\n createDeferred,\n createEffect,\n createMemo,\n createReaction,\n createRenderEffect,\n createResource,\n createRoot,\n createSelector,\n createSignal,\n createUniqueId,\n enableExternalSource,\n enableHydration,\n enableScheduling,\n equalFn,\n from,\n getListener,\n getOwner,\n indexArray,\n lazy,\n mapArray,\n mergeProps,\n observable,\n on,\n onCleanup,\n onError,\n onMount,\n requestCallback,\n resetErrorBoundaries,\n runWithOwner,\n sharedConfig,\n splitProps,\n startTransition,\n untrack,\n useContext,\n useTransition\n};\n","import {\n createRoot,\n createRenderEffect,\n untrack,\n sharedConfig,\n enableHydration,\n getOwner,\n createEffect,\n runWithOwner,\n createMemo,\n createSignal,\n onCleanup,\n splitProps\n} from \"solid-js\";\nexport {\n ErrorBoundary,\n For,\n Index,\n Match,\n Show,\n Suspense,\n SuspenseList,\n Switch,\n createComponent,\n createRenderEffect as effect,\n getOwner,\n createMemo as memo,\n mergeProps,\n untrack\n} from \"solid-js\";\n\nconst booleans = [\n \"allowfullscreen\",\n \"async\",\n \"autofocus\",\n \"autoplay\",\n \"checked\",\n \"controls\",\n \"default\",\n \"disabled\",\n \"formnovalidate\",\n \"hidden\",\n \"indeterminate\",\n \"inert\",\n \"ismap\",\n \"loop\",\n \"multiple\",\n \"muted\",\n \"nomodule\",\n \"novalidate\",\n \"open\",\n \"playsinline\",\n \"readonly\",\n \"required\",\n \"reversed\",\n \"seamless\",\n \"selected\"\n];\nconst Properties = /*#__PURE__*/ new Set([\n \"className\",\n \"value\",\n \"readOnly\",\n \"formNoValidate\",\n \"isMap\",\n \"noModule\",\n \"playsInline\",\n ...booleans\n]);\nconst ChildProperties = /*#__PURE__*/ new Set([\n \"innerHTML\",\n \"textContent\",\n \"innerText\",\n \"children\"\n]);\nconst Aliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/ Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: {\n $: \"formNoValidate\",\n BUTTON: 1,\n INPUT: 1\n },\n ismap: {\n $: \"isMap\",\n IMG: 1\n },\n nomodule: {\n $: \"noModule\",\n SCRIPT: 1\n },\n playsinline: {\n $: \"playsInline\",\n VIDEO: 1\n },\n readonly: {\n $: \"readOnly\",\n INPUT: 1,\n TEXTAREA: 1\n }\n});\nfunction getPropAlias(prop, tagName) {\n const a = PropAliases[prop];\n return typeof a === \"object\" ? (a[tagName] ? a[\"$\"] : undefined) : a;\n}\nconst DelegatedEvents = /*#__PURE__*/ new Set([\n \"beforeinput\",\n \"click\",\n \"dblclick\",\n \"contextmenu\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"keydown\",\n \"keyup\",\n \"mousedown\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"mouseup\",\n \"pointerdown\",\n \"pointermove\",\n \"pointerout\",\n \"pointerover\",\n \"pointerup\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\"\n]);\nconst SVGElements = /*#__PURE__*/ new Set([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animate\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"circle\",\n \"clipPath\",\n \"color-profile\",\n \"cursor\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"font\",\n \"font-face\",\n \"font-face-format\",\n \"font-face-name\",\n \"font-face-src\",\n \"font-face-uri\",\n \"foreignObject\",\n \"g\",\n \"glyph\",\n \"glyphRef\",\n \"hkern\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"missing-glyph\",\n \"mpath\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n \"set\",\n \"stop\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n \"tref\",\n \"tspan\",\n \"use\",\n \"view\",\n \"vkern\"\n]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/ new Set([\n \"html\",\n \"base\",\n \"head\",\n \"link\",\n \"meta\",\n \"style\",\n \"title\",\n \"body\",\n \"address\",\n \"article\",\n \"aside\",\n \"footer\",\n \"header\",\n \"main\",\n \"nav\",\n \"section\",\n \"body\",\n \"blockquote\",\n \"dd\",\n \"div\",\n \"dl\",\n \"dt\",\n \"figcaption\",\n \"figure\",\n \"hr\",\n \"li\",\n \"ol\",\n \"p\",\n \"pre\",\n \"ul\",\n \"a\",\n \"abbr\",\n \"b\",\n \"bdi\",\n \"bdo\",\n \"br\",\n \"cite\",\n \"code\",\n \"data\",\n \"dfn\",\n \"em\",\n \"i\",\n \"kbd\",\n \"mark\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"small\",\n \"span\",\n \"strong\",\n \"sub\",\n \"sup\",\n \"time\",\n \"u\",\n \"var\",\n \"wbr\",\n \"area\",\n \"audio\",\n \"img\",\n \"map\",\n \"track\",\n \"video\",\n \"embed\",\n \"iframe\",\n \"object\",\n \"param\",\n \"picture\",\n \"portal\",\n \"source\",\n \"svg\",\n \"math\",\n \"canvas\",\n \"noscript\",\n \"script\",\n \"del\",\n \"ins\",\n \"caption\",\n \"col\",\n \"colgroup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"tr\",\n \"button\",\n \"datalist\",\n \"fieldset\",\n \"form\",\n \"input\",\n \"label\",\n \"legend\",\n \"meter\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"progress\",\n \"select\",\n \"textarea\",\n \"details\",\n \"dialog\",\n \"menu\",\n \"summary\",\n \"details\",\n \"slot\",\n \"template\",\n \"acronym\",\n \"applet\",\n \"basefont\",\n \"bgsound\",\n \"big\",\n \"blink\",\n \"center\",\n \"content\",\n \"dir\",\n \"font\",\n \"frame\",\n \"frameset\",\n \"hgroup\",\n \"image\",\n \"keygen\",\n \"marquee\",\n \"menuitem\",\n \"nobr\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"rb\",\n \"rtc\",\n \"shadow\",\n \"spacer\",\n \"strike\",\n \"tt\",\n \"xmp\",\n \"a\",\n \"abbr\",\n \"acronym\",\n \"address\",\n \"applet\",\n \"area\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"base\",\n \"basefont\",\n \"bdi\",\n \"bdo\",\n \"bgsound\",\n \"big\",\n \"blink\",\n \"blockquote\",\n \"body\",\n \"br\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"center\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"content\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"dir\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"embed\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"font\",\n \"footer\",\n \"form\",\n \"frame\",\n \"frameset\",\n \"head\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"html\",\n \"i\",\n \"iframe\",\n \"image\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"keygen\",\n \"label\",\n \"legend\",\n \"li\",\n \"link\",\n \"main\",\n \"map\",\n \"mark\",\n \"marquee\",\n \"menu\",\n \"menuitem\",\n \"meta\",\n \"meter\",\n \"nav\",\n \"nobr\",\n \"noembed\",\n \"noframes\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"param\",\n \"picture\",\n \"plaintext\",\n \"portal\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rb\",\n \"rp\",\n \"rt\",\n \"rtc\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"shadow\",\n \"slot\",\n \"small\",\n \"source\",\n \"spacer\",\n \"span\",\n \"strike\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"template\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"track\",\n \"tt\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n \"wbr\",\n \"xmp\",\n \"input\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\"\n]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? (bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart]) : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document\n ? code()\n : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, isImportNode, isSVG, isMathML) {\n let node;\n const create = () => {\n const t = isMathML\n ? document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", \"template\")\n : document.createElement(\"template\");\n t.innerHTML = html;\n return isSVG ? t.content.firstChild.firstChild : isMathML ? t.firstChild : t.content.firstChild;\n };\n const fn = isImportNode\n ? () => untrack(() => document.importNode(node || (node = create()), true))\n : () => (node || (node = create())).cloneNode(true);\n fn.cloneNode = fn;\n return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setProperty(node, name, value) {\n if (isHydrating(node)) return;\n node[name] = value;\n}\nfunction setAttribute(node, name, value) {\n if (isHydrating(node)) return;\n if (value == null) node.removeAttribute(name);\n else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (isHydrating(node)) return;\n if (value == null) node.removeAttributeNS(namespace, name);\n else node.setAttributeNS(namespace, name, value);\n}\nfunction setBoolAttribute(node, name, value) {\n if (isHydrating(node)) return;\n value ? node.setAttribute(name, \"\") : node.removeAttribute(name);\n}\nfunction className(node, value) {\n if (isHydrating(node)) return;\n if (value == null) node.removeAttribute(\"class\");\n else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, (handler[0] = e => handlerFn.call(node, handler[1], e)));\n } else node.addEventListener(name, handler, typeof handler !== \"function\" && handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return (nodeStyle.cssText = value);\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(\n () => (prevProps.children = insertExpression(node, props.children, prevProps.children))\n );\n }\n createRenderEffect(() => typeof props.ref === \"function\" && use(props.ref, node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef, props);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef, props);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n if (globalThis._$HY.done) return render(code, element, [...element.childNodes], options);\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = id => globalThis._$HY.r[id];\n sharedConfig.has = id => id in globalThis._$HY.r;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n try {\n gatherHydratable(element, options.renderId);\n return render(code, element, [...element.childNodes], options);\n } finally {\n sharedConfig.context = null;\n }\n}\nfunction getNextElement(template) {\n let node,\n key,\n hydrating = isHydrating();\n if (!hydrating || !(node = sharedConfig.registry.get((key = getHydrationKey())))) {\n return template();\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (isHydrating(start)) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"$\") count++;\n else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const { completed, events } = sharedConfig;\n if (!events) return;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n events.shift();\n eventHandler(e);\n }\n if (sharedConfig.done) {\n sharedConfig.events = _$HY.events = null;\n sharedConfig.completed = _$HY.completed = null;\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction isHydrating(node) {\n return !!sharedConfig.context && !sharedConfig.done && (!node || node.isConnected);\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++)\n node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef, props) {\n let isCE, isProp, isChildProp, propAlias, forceProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev, typeof prev !== \"function\" && prev);\n value && node.addEventListener(e, value, typeof value !== \"function\" && value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if (prop.slice(0, 5) === \"attr:\") {\n setAttribute(node, prop.slice(5), value);\n } else if (prop.slice(0, 5) === \"bool:\") {\n setBoolAttribute(node, prop.slice(5), value);\n } else if (\n (forceProp = prop.slice(0, 5) === \"prop:\") ||\n (isChildProp = ChildProperties.has(prop)) ||\n (!isSVG &&\n ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop)))) ||\n (isCE = node.nodeName.includes(\"-\") || \"is\" in props)\n ) {\n if (forceProp) {\n prop = prop.slice(5);\n isProp = true;\n } else if (isHydrating(node)) return value;\n if (prop === \"class\" || prop === \"className\") className(node, value);\n else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;\n else node[propAlias || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);\n else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n if (sharedConfig.registry && sharedConfig.events) {\n if (sharedConfig.events.find(([el, ev]) => ev === e)) return;\n }\n let node = e.target;\n const key = `$$${e.type}`;\n const oriTarget = e.target;\n const oriCurrentTarget = e.currentTarget;\n const retarget = value =>\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value\n });\n const handleNode = () => {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node.host &&\n typeof node.host !== \"string\" &&\n !node.host._$host &&\n node.contains(e.target) &&\n retarget(node.host);\n return true;\n };\n const walkUpTree = () => {\n while (handleNode() && (node = node._$host || node.parentNode || node.host));\n };\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n if (e.composedPath) {\n const path = e.composedPath();\n retarget(path[0]);\n for (let i = 0; i < path.length - 2; i++) {\n node = path[i];\n if (!handleNode()) break;\n if (node._$host) {\n node = node._$host;\n walkUpTree();\n break;\n }\n if (node.parentNode === oriCurrentTarget) {\n break;\n }\n }\n } else walkUpTree();\n retarget(oriTarget);\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n const hydrating = isHydrating(parent);\n if (hydrating) {\n !current && (current = [...parent.childNodes]);\n let cleaned = [];\n for (let i = 0; i < current.length; i++) {\n const node = current[i];\n if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();\n else cleaned.push(node);\n }\n current = cleaned;\n }\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = (multi && current[0] && current[0].parentNode) || parent;\n if (t === \"string\" || t === \"number\") {\n if (hydrating) return current;\n if (t === \"number\") {\n value = value.toString();\n if (value === current) return current;\n }\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data !== value && (node.data = value);\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (hydrating) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => (current = insertExpression(parent, array, current, marker, true)));\n return () => current;\n }\n if (hydrating) {\n if (!array.length) return current;\n if (marker === undefined) return (current = [...parent.childNodes]);\n let node = array[0];\n if (node.parentNode !== parent) return current;\n const nodes = [node];\n while ((node = node.nextSibling) !== marker) nodes.push(node);\n return (current = nodes);\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value.nodeType) {\n if (hydrating && value.parentNode) return (current = multi ? [value] : value);\n if (Array.isArray(current)) {\n if (multi) return (current = cleanChildren(parent, current, marker, value));\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[normalized.length],\n t;\n if (item == null || item === true || item === false);\n else if ((t = typeof item) === \"object\" && item.nodeType) {\n normalized.push(item);\n } else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic =\n normalizeIncomingArray(\n normalized,\n Array.isArray(item) ? item : [item],\n Array.isArray(prev) ? prev : [prev]\n ) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);\n else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return (parent.textContent = \"\");\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i)\n isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);\n else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key))\n sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n return sharedConfig.getNextContextId();\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nconst voidFn = () => undefined;\nconst RequestContext = Symbol();\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst isDev = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const { useShadow } = props,\n marker = document.createTextNode(\"\"),\n mount = () => props.mount || document.body,\n owner = getOwner();\n let content;\n let hydrating = !!sharedConfig.context;\n createEffect(\n () => {\n if (hydrating) getOwner().user = hydrating = false;\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n const el = mount();\n if (el instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(el, () => (!clean() ? content() : dispose()), null));\n onCleanup(cleanup);\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot =\n useShadow && container.attachShadow\n ? container.attachShadow({\n mode: \"open\"\n })\n : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => el.removeChild(container));\n }\n },\n undefined,\n {\n render: !hydrating\n }\n );\n return marker;\n}\nfunction createDynamic(component, props) {\n const cached = createMemo(component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(props));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, props, isSvg);\n return el;\n }\n });\n}\nfunction Dynamic(props) {\n const [, others] = splitProps(props, [\"component\"]);\n return createDynamic(() => props.component, others);\n}\n\nexport {\n Aliases,\n voidFn as Assets,\n ChildProperties,\n DOMElements,\n DelegatedEvents,\n Dynamic,\n Hydration,\n voidFn as HydrationScript,\n NoHydration,\n Portal,\n Properties,\n RequestContext,\n SVGElements,\n SVGNamespace,\n addEventListener,\n assign,\n classList,\n className,\n clearDelegatedEvents,\n createDynamic,\n delegateEvents,\n dynamicProperty,\n escape,\n voidFn as generateHydrationScript,\n voidFn as getAssets,\n getHydrationKey,\n getNextElement,\n getNextMarker,\n getNextMatch,\n getPropAlias,\n voidFn as getRequestEvent,\n hydrate,\n innerHTML,\n insert,\n isDev,\n isServer,\n render,\n renderToStream,\n renderToString,\n renderToStringAsync,\n resolveSSRNode,\n runHydrationEvents,\n setAttribute,\n setAttributeNS,\n setBoolAttribute,\n setProperty,\n spread,\n ssr,\n ssrAttribute,\n ssrClassList,\n ssrElement,\n ssrHydrationKey,\n ssrSpread,\n ssrStyle,\n style,\n template,\n use,\n voidFn as useAssets\n};\n","// Source: https://github.com/lukeed/clsx/blob/master/src/index.js\r\nfunction toVal(mix) {\r\n var k, y, str = \"\";\r\n if (typeof mix === \"string\" || typeof mix === \"number\") {\r\n str += mix;\r\n }\r\n else if (typeof mix === \"object\") {\r\n if (Array.isArray(mix)) {\r\n for (k = 0; k < mix.length; k++) {\r\n if (mix[k]) {\r\n if ((y = toVal(mix[k]))) {\r\n str && (str += \" \");\r\n str += y;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (k in mix) {\r\n if (mix[k]) {\r\n str && (str += \" \");\r\n str += k;\r\n }\r\n }\r\n }\r\n }\r\n return str;\r\n}\r\nexport default function (...classes) {\r\n var i = 0, tmp, x, str = \"\";\r\n while (i < classes.length) {\r\n if ((tmp = classes[i++])) {\r\n if ((x = toVal(tmp))) {\r\n str && (str += \" \");\r\n str += x;\r\n }\r\n }\r\n }\r\n return str;\r\n}\r\n","/**\r\n * Solid event handlers can be a plain callback OR a tuple [handler, item].\r\n * This function calls the handler appropriately (if defined).\r\n */\r\nexport function callEventHandler(h, e) {\r\n // capture if propagationStopped\r\n let isPropagationStopped = false;\r\n const defaultFn = e.stopPropagation;\r\n e.stopPropagation = () => {\r\n isPropagationStopped = true;\r\n defaultFn();\r\n };\r\n // call Solid handler appropriately\r\n if (typeof h === \"function\") {\r\n h(e);\r\n }\r\n else if (Array.isArray(h)) {\r\n h[0](h[1], e);\r\n }\r\n e.stopPropagation = defaultFn;\r\n return {\r\n isPropagationStopped,\r\n };\r\n}\r\nexport function resolveClasses(el, prev, now) {\r\n const p = prev ? prev.split(\" \") : [];\r\n const n = now ? now.split(\" \") : [];\r\n el.classList?.remove(...p.filter((s) => n.indexOf(s) === -1));\r\n el.classList?.add(...n.filter((s) => p.indexOf(s) === -1));\r\n}\r\n","import { createMemo, mergeProps, splitProps } from \"solid-js\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nimport { callEventHandler } from \"./utils\";\r\nexport function isTrivialHref(href) {\r\n return !href || href.trim() === \"#\";\r\n}\r\nconst defaultOptions = {\r\n tabIndex: 0,\r\n};\r\nexport function useButtonProps(o) {\r\n const options = mergeProps(defaultOptions, o);\r\n const tagName = createMemo(() => {\r\n if (!options.tagName) {\r\n if (options.href != null || options.target != null || options.rel != null) {\r\n return \"a\";\r\n }\r\n else {\r\n return \"button\";\r\n }\r\n }\r\n return options.tagName;\r\n });\r\n const meta = {\r\n get tagName() {\r\n return tagName();\r\n },\r\n };\r\n if (tagName() === \"button\") {\r\n return [\r\n {\r\n get type() {\r\n return options.type || \"button\";\r\n },\r\n get disabled() {\r\n return options.disabled;\r\n },\r\n },\r\n meta,\r\n ];\r\n }\r\n const getClickHandler = createMemo(() => (event) => {\r\n if (options.disabled || (tagName() === \"a\" && isTrivialHref(options.href))) {\r\n event.preventDefault();\r\n }\r\n if (options.disabled) {\r\n event.stopPropagation();\r\n return;\r\n }\r\n callEventHandler(options.onClick, event);\r\n });\r\n const getKeyDownHandler = createMemo(() => (event) => {\r\n if (event.key === \" \") {\r\n event.preventDefault();\r\n getClickHandler()(event /*HACK calling click handler with keyboard event*/);\r\n }\r\n });\r\n const getHref = () => {\r\n if (tagName() === \"a\") {\r\n // Ensure there's a href so Enter can trigger anchor button.\r\n return options.disabled ? undefined : options.href || \"#\";\r\n }\r\n return options.href;\r\n };\r\n return [\r\n {\r\n role: \"button\",\r\n // explicitly undefined so that it overrides the props disabled in a spread\r\n // e.g. \r\n disabled: undefined,\r\n get tabIndex() {\r\n return options.disabled ? undefined : options.tabIndex;\r\n },\r\n get href() {\r\n return getHref();\r\n },\r\n get target() {\r\n return tagName() === \"a\" ? options.target : undefined;\r\n },\r\n get \"aria-disabled\"() {\r\n return !options.disabled ? undefined : options.disabled;\r\n },\r\n get rel() {\r\n return tagName() === \"a\" ? options.rel : undefined;\r\n },\r\n get onClick() {\r\n return getClickHandler();\r\n },\r\n get onKeyDown() {\r\n return getKeyDownHandler();\r\n },\r\n },\r\n meta,\r\n ];\r\n}\r\nexport const Button = (props) => {\r\n const [local, otherProps] = splitProps(props, [\"as\"]);\r\n let a = props.tabIndex;\r\n const [buttonProps, { tagName }] = useButtonProps({\r\n tagName: local.as,\r\n ...otherProps,\r\n });\r\n return ;\r\n};\r\nexport default Button;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport { useButtonProps } from \"./Button\";\r\nimport { callEventHandler } from \"./utils\";\r\nexport function isTrivialHref(href) {\r\n return !href || href.trim() === \"#\";\r\n}\r\n/**\r\n * An generic `` component that covers a few A11y cases, ensuring that\r\n * cases where the `href` is missing or trivial like \"#\" are treated like buttons.\r\n */\r\nexport const Anchor = (props) => {\r\n const [local, otherProps] = splitProps(props, [\"onKeyDown\"]);\r\n const [buttonProps] = useButtonProps(mergeProps({ tagName: \"a\" }, otherProps));\r\n const handleKeyDown = ((e) => {\r\n callEventHandler(buttonProps.onKeyDown, e);\r\n callEventHandler(local.onKeyDown, e);\r\n });\r\n return (isTrivialHref(props.href) && !props.role) || props.role === \"button\" ? () : ();\r\n};\r\nexport default Anchor;\r\n","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","import { createContext } from \"solid-js\";\r\nexport const DropdownContext = createContext(null);\r\nexport default DropdownContext;\r\n","import { $PROXY, $TRACK, getListener, batch, createSignal } from \"solid-js\";\n\nconst $RAW = Symbol(\"store-raw\"),\n $NODE = Symbol(\"store-node\"),\n $HAS = Symbol(\"store-has\"),\n $SELF = Symbol(\"store-self\");\nfunction wrap$1(value) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: (p = new Proxy(value, proxyTraps$1))\n });\n if (!Array.isArray(value)) {\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n Object.defineProperty(value, prop, {\n enumerable: desc[prop].enumerable,\n get: desc[prop].get.bind(p)\n });\n }\n }\n }\n }\n return p;\n}\nfunction isWrappable(obj) {\n let proto;\n return (\n obj != null &&\n typeof obj === \"object\" &&\n (obj[$PROXY] ||\n !(proto = Object.getPrototypeOf(obj)) ||\n proto === Object.prototype ||\n Array.isArray(obj))\n );\n}\nfunction unwrap(item, set = new Set()) {\n let result, unwrapped, v, prop;\n if ((result = item != null && item[$RAW])) return result;\n if (!isWrappable(item) || set.has(item)) return item;\n if (Array.isArray(item)) {\n if (Object.isFrozen(item)) item = item.slice(0);\n else set.add(item);\n for (let i = 0, l = item.length; i < l; i++) {\n v = item[i];\n if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n }\n } else {\n if (Object.isFrozen(item)) item = Object.assign({}, item);\n else set.add(item);\n const keys = Object.keys(item),\n desc = Object.getOwnPropertyDescriptors(item);\n for (let i = 0, l = keys.length; i < l; i++) {\n prop = keys[i];\n if (desc[prop].get) continue;\n v = item[prop];\n if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n }\n }\n return item;\n}\nfunction getNodes(target, symbol) {\n let nodes = target[symbol];\n if (!nodes)\n Object.defineProperty(target, symbol, {\n value: (nodes = Object.create(null))\n });\n return nodes;\n}\nfunction getNode(nodes, property, value) {\n if (nodes[property]) return nodes[property];\n const [s, set] = createSignal(value, {\n equals: false,\n internal: true\n });\n s.$ = set;\n return (nodes[property] = s);\n}\nfunction proxyDescriptor$1(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE)\n return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n return desc;\n}\nfunction trackSelf(target) {\n getListener() && getNode(getNodes(target, $NODE), $SELF)();\n}\nfunction ownKeys(target) {\n trackSelf(target);\n return Reflect.ownKeys(target);\n}\nconst proxyTraps$1 = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getNodes(target, $NODE);\n const tracked = nodes[property];\n let value = tracked ? tracked() : target[property];\n if (property === $NODE || property === $HAS || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n if (\n getListener() &&\n (typeof value !== \"function\" || target.hasOwnProperty(property)) &&\n !(desc && desc.get)\n )\n value = getNode(nodes, property, value)();\n }\n return isWrappable(value) ? wrap$1(value) : value;\n },\n has(target, property) {\n if (\n property === $RAW ||\n property === $PROXY ||\n property === $TRACK ||\n property === $NODE ||\n property === $HAS ||\n property === \"__proto__\"\n )\n return true;\n getListener() && getNode(getNodes(target, $HAS), property)();\n return property in target;\n },\n set() {\n return true;\n },\n deleteProperty() {\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor$1\n};\nfunction setProperty(state, property, value, deleting = false) {\n if (!deleting && state[property] === value) return;\n const prev = state[property],\n len = state.length;\n if (value === undefined) {\n delete state[property];\n if (state[$HAS] && state[$HAS][property] && prev !== undefined) state[$HAS][property].$();\n } else {\n state[property] = value;\n if (state[$HAS] && state[$HAS][property] && prev === undefined) state[$HAS][property].$();\n }\n let nodes = getNodes(state, $NODE),\n node;\n if ((node = getNode(nodes, property, prev))) node.$(() => value);\n if (Array.isArray(state) && state.length !== len) {\n for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();\n (node = getNode(nodes, \"length\", len)) && node.$(state.length);\n }\n (node = nodes[$SELF]) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n setProperty(state, key, value[key]);\n }\n}\nfunction updateArray(current, next) {\n if (typeof next === \"function\") next = next(current);\n next = unwrap(next);\n if (Array.isArray(next)) {\n if (current === next) return;\n let i = 0,\n len = next.length;\n for (; i < len; i++) {\n const value = next[i];\n if (current[i] !== value) setProperty(current, i, value);\n }\n setProperty(current, \"length\", len);\n } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n let part,\n prev = current;\n if (path.length > 1) {\n part = path.shift();\n const partType = typeof part,\n isArray = Array.isArray(current);\n if (Array.isArray(part)) {\n for (let i = 0; i < part.length; i++) {\n updatePath(current, [part[i]].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"function\") {\n for (let i = 0; i < current.length; i++) {\n if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"object\") {\n const { from = 0, to = current.length - 1, by = 1 } = part;\n for (let i = from; i <= to; i += by) {\n updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (path.length > 1) {\n updatePath(current[part], path, [part].concat(traversed));\n return;\n }\n prev = current[part];\n traversed = [part].concat(traversed);\n }\n let value = path[0];\n if (typeof value === \"function\") {\n value = value(prev, traversed);\n if (value === prev) return;\n }\n if (part === undefined && value == undefined) return;\n value = unwrap(value);\n if (part === undefined || (isWrappable(prev) && isWrappable(value) && !Array.isArray(value))) {\n mergeStoreNode(prev, value);\n } else setProperty(current, part, value);\n}\nfunction createStore(...[store, options]) {\n const unwrappedStore = unwrap(store || {});\n const isArray = Array.isArray(unwrappedStore);\n const wrappedStore = wrap$1(unwrappedStore);\n function setStore(...args) {\n batch(() => {\n isArray && args.length === 1\n ? updateArray(unwrappedStore, args[0])\n : updatePath(unwrappedStore, args);\n });\n }\n return [wrappedStore, setStore];\n}\n\nfunction proxyDescriptor(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (\n !desc ||\n desc.get ||\n desc.set ||\n !desc.configurable ||\n property === $PROXY ||\n property === $NODE\n )\n return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n desc.set = v => (target[$PROXY][property] = v);\n return desc;\n}\nconst proxyTraps = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getNodes(target, $NODE);\n const tracked = nodes[property];\n let value = tracked ? tracked() : target[property];\n if (property === $NODE || property === $HAS || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n const isFunction = typeof value === \"function\";\n if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get))\n value = getNode(nodes, property, value)();\n else if (value != null && isFunction && value === Array.prototype[property]) {\n return (...args) => batch(() => Array.prototype[property].apply(receiver, args));\n }\n }\n return isWrappable(value) ? wrap(value) : value;\n },\n has(target, property) {\n if (\n property === $RAW ||\n property === $PROXY ||\n property === $TRACK ||\n property === $NODE ||\n property === $HAS ||\n property === \"__proto__\"\n )\n return true;\n getListener() && getNode(getNodes(target, $HAS), property)();\n return property in target;\n },\n set(target, property, value) {\n batch(() => setProperty(target, property, unwrap(value)));\n return true;\n },\n deleteProperty(target, property) {\n batch(() => setProperty(target, property, undefined, true));\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction wrap(value) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: (p = new Proxy(value, proxyTraps))\n });\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n const proto = Object.getPrototypeOf(value);\n const isClass =\n proto !== null &&\n value !== null &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n proto !== Object.prototype;\n if (isClass) {\n const descriptors = Object.getOwnPropertyDescriptors(proto);\n keys.push(...Object.keys(descriptors));\n Object.assign(desc, descriptors);\n }\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (isClass && prop === \"constructor\") continue;\n if (desc[prop].get) {\n const get = desc[prop].get.bind(p);\n Object.defineProperty(value, prop, {\n get,\n configurable: true\n });\n }\n if (desc[prop].set) {\n const og = desc[prop].set,\n set = v => batch(() => og.call(p, v));\n Object.defineProperty(value, prop, {\n set,\n configurable: true\n });\n }\n }\n }\n return p;\n}\nfunction createMutable(state, options) {\n const unwrappedStore = unwrap(state || {});\n const wrappedStore = wrap(unwrappedStore);\n return wrappedStore;\n}\nfunction modifyMutable(state, modifier) {\n batch(() => modifier(unwrap(state)));\n}\n\nconst $ROOT = Symbol(\"store-root\");\nfunction applyState(target, parent, property, merge, key) {\n const previous = parent[property];\n if (target === previous) return;\n const isArray = Array.isArray(target);\n if (\n property !== $ROOT &&\n (!isWrappable(target) ||\n !isWrappable(previous) ||\n isArray !== Array.isArray(previous) ||\n (key && target[key] !== previous[key]))\n ) {\n setProperty(parent, property, target);\n return;\n }\n if (isArray) {\n if (\n target.length &&\n previous.length &&\n (!merge || (key && target[0] && target[0][key] != null))\n ) {\n let i, j, start, end, newEnd, item, newIndicesNext, keyVal;\n for (\n start = 0, end = Math.min(previous.length, target.length);\n start < end &&\n (previous[start] === target[start] ||\n (key && previous[start] && target[start] && previous[start][key] === target[start][key]));\n start++\n ) {\n applyState(target[start], previous, start, merge, key);\n }\n const temp = new Array(target.length),\n newIndices = new Map();\n for (\n end = previous.length - 1, newEnd = target.length - 1;\n end >= start &&\n newEnd >= start &&\n (previous[end] === target[newEnd] ||\n (key && previous[end] && target[newEnd] && previous[end][key] === target[newEnd][key]));\n end--, newEnd--\n ) {\n temp[newEnd] = previous[end];\n }\n if (start > newEnd || start > end) {\n for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);\n for (; j < target.length; j++) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = target[j];\n keyVal = key && item ? item[key] : item;\n i = newIndices.get(keyVal);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(keyVal, j);\n }\n for (i = start; i <= end; i++) {\n item = previous[i];\n keyVal = key && item ? item[key] : item;\n j = newIndices.get(keyVal);\n if (j !== undefined && j !== -1) {\n temp[j] = previous[i];\n j = newIndicesNext[j];\n newIndices.set(keyVal, j);\n }\n }\n for (j = start; j < target.length; j++) {\n if (j in temp) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n } else setProperty(previous, j, target[j]);\n }\n } else {\n for (let i = 0, len = target.length; i < len; i++) {\n applyState(target[i], previous, i, merge, key);\n }\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n const targetKeys = Object.keys(target);\n for (let i = 0, len = targetKeys.length; i < len; i++) {\n applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);\n }\n const previousKeys = Object.keys(previous);\n for (let i = 0, len = previousKeys.length; i < len; i++) {\n if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);\n }\n}\nfunction reconcile(value, options = {}) {\n const { merge, key = \"id\" } = options,\n v = unwrap(value);\n return state => {\n if (!isWrappable(state) || !isWrappable(v)) return v;\n const res = applyState(\n v,\n {\n [$ROOT]: state\n },\n $ROOT,\n merge,\n key\n );\n return res === undefined ? state : res;\n };\n}\nconst producers = new WeakMap();\nconst setterTraps = {\n get(target, property) {\n if (property === $RAW) return target;\n const value = target[property];\n let proxy;\n return isWrappable(value)\n ? producers.get(value) ||\n (producers.set(value, (proxy = new Proxy(value, setterTraps))), proxy)\n : value;\n },\n set(target, property, value) {\n setProperty(target, property, unwrap(value));\n return true;\n },\n deleteProperty(target, property) {\n setProperty(target, property, undefined, true);\n return true;\n }\n};\nfunction produce(fn) {\n return state => {\n if (isWrappable(state)) {\n let proxy;\n if (!(proxy = producers.get(state))) {\n producers.set(state, (proxy = new Proxy(state, setterTraps)));\n }\n fn(proxy);\n }\n return state;\n };\n}\n\nconst DEV = undefined;\n\nexport { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { arrow, computeStyles, eventListeners, flip, hide, offset, popperOffsets, preventOverflow, popperGenerator, } from \"@popperjs/core\";\r\nexport const createPopper = popperGenerator({\r\n defaultModifiers: [\r\n hide,\r\n popperOffsets,\r\n computeStyles,\r\n eventListeners,\r\n offset,\r\n flip,\r\n preventOverflow,\r\n arrow,\r\n ],\r\n});\r\n","import { createEffect, createMemo, createSignal, on } from \"solid-js\";\r\nimport { createStore, reconcile } from \"solid-js/store\";\r\nimport { createPopper } from \"./popper\";\r\nconst disabledApplyStylesModifier = {\r\n name: \"applyStyles\",\r\n enabled: false,\r\n phase: \"afterWrite\",\r\n fn: () => undefined,\r\n};\r\nconst ariaDescribedByModifier = {\r\n name: \"ariaDescribedBy\",\r\n enabled: true,\r\n phase: \"afterWrite\",\r\n effect: ({ state }) => () => {\r\n const { reference, popper } = state.elements;\r\n if (\"removeAttribute\" in reference) {\r\n const ids = (reference.getAttribute(\"aria-describedby\") || \"\")\r\n .split(\",\")\r\n .filter((id) => id.trim() !== popper.id);\r\n if (!ids.length)\r\n reference.removeAttribute(\"aria-describedby\");\r\n else\r\n reference.setAttribute(\"aria-describedby\", ids.join(\",\"));\r\n }\r\n },\r\n fn: ({ state }) => {\r\n const { popper, reference } = state.elements;\r\n const role = popper.getAttribute(\"role\")?.toLowerCase();\r\n if (popper.id && role === \"tooltip\" && \"setAttribute\" in reference) {\r\n const ids = reference.getAttribute(\"aria-describedby\");\r\n if (ids && ids.split(\",\").indexOf(popper.id) !== -1) {\r\n return;\r\n }\r\n reference.setAttribute(\"aria-describedby\", ids ? `${ids},${popper.id}` : popper.id);\r\n }\r\n },\r\n};\r\nconst EMPTY_MODIFIERS = [];\r\n/**\r\n * Position an element relative some reference element using Popper.js\r\n *\r\n * @param referenceElement\r\n * @param popperElement\r\n * @param {object} options\r\n * @param {object=} options.modifiers Popper.js modifiers\r\n * @param {boolean=} options.enabled toggle the popper functionality on/off\r\n * @param {string=} options.placement The popper element placement relative to the reference element\r\n * @param {string=} options.strategy the positioning strategy\r\n * @param {function=} options.onCreate called when the popper is created\r\n * @param {function=} options.onUpdate called when the popper is updated\r\n *\r\n * @returns {UsePopperState} The popper state accessor\r\n */\r\nexport function usePopper(referenceElement, popperElement, options) {\r\n const [popperInstance, setPopperInstance] = createSignal();\r\n const enabled = createMemo(() => options.enabled ?? true);\r\n const update = createMemo(on(popperInstance, (popper) => () => {\r\n popper?.update();\r\n }));\r\n const forceUpdate = createMemo(on(popperInstance, (popper) => () => {\r\n popper?.forceUpdate();\r\n }));\r\n const [popperState, setPopperState] = createStore({\r\n placement: options.placement ?? \"bottom\",\r\n get update() {\r\n return update();\r\n },\r\n get forceUpdate() {\r\n return forceUpdate();\r\n },\r\n attributes: {},\r\n styles: {\r\n popper: {},\r\n arrow: {},\r\n },\r\n });\r\n const updateModifier = {\r\n name: \"updateStateModifier\",\r\n enabled: true,\r\n phase: \"write\",\r\n requires: [\"computeStyles\"],\r\n fn: ({ state }) => {\r\n const styles = {};\r\n const attributes = {};\r\n Object.keys(state.elements).forEach((element) => {\r\n styles[element] = state.styles[element];\r\n attributes[element] = state.attributes[element];\r\n });\r\n setPopperState(reconcile({\r\n ...popperState,\r\n state,\r\n styles,\r\n attributes,\r\n placement: state.placement,\r\n }, { merge: true }));\r\n },\r\n };\r\n createEffect(() => {\r\n const instance = popperInstance();\r\n if (!instance || !enabled())\r\n return;\r\n instance.setOptions({\r\n onFirstUpdate: options.onFirstUpdate,\r\n placement: options.placement ?? \"bottom\",\r\n modifiers: [\r\n ...(options.modifiers ?? EMPTY_MODIFIERS),\r\n ariaDescribedByModifier,\r\n updateModifier,\r\n disabledApplyStylesModifier,\r\n ],\r\n strategy: options.strategy ?? \"absolute\",\r\n });\r\n /** Hack to force update as popper doesn't seem to position properly after options change **/\r\n queueMicrotask(() => {\r\n update()();\r\n });\r\n });\r\n createEffect(() => {\r\n const target = referenceElement();\r\n const popper = popperElement();\r\n if (target && popper && enabled()) {\r\n let instance;\r\n instance = createPopper(target, popper, {});\r\n setPopperInstance(instance);\r\n }\r\n else {\r\n if (popperInstance()) {\r\n popperInstance().destroy();\r\n setPopperInstance(undefined);\r\n setPopperState(reconcile({\r\n ...popperState,\r\n attributes: {},\r\n styles: { popper: {} },\r\n }, { merge: true }));\r\n }\r\n }\r\n });\r\n return () => popperState;\r\n}\r\nexport default usePopper;\r\n","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n if (context.contains) return context.contains(node);\n if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import contains from \"dom-helpers/contains\";\r\nimport listen from \"dom-helpers/listen\";\r\nimport ownerDocument from \"dom-helpers/ownerDocument\";\r\nimport { createEffect, createSignal, onCleanup } from \"solid-js\";\r\nconst noop = () => { };\r\nfunction isLeftClickEvent(event) {\r\n return event.button === 0;\r\n}\r\nfunction isModifiedEvent(event) {\r\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\r\n}\r\nexport const getRefTarget = (ref) => ref;\r\n/**\r\n * The `useClickOutside` hook registers your callback on the document that fires\r\n * when a pointer event is registered outside of the provided ref or element.\r\n *\r\n * @param {Ref| HTMLElement} ref The element boundary\r\n * @param {function} onClickOutside\r\n * @param {object=} options\r\n * @param {boolean=} options.disabled\r\n * @param {string=} options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\r\n */\r\nexport function useClickOutside(ref, onClickOutside = noop, { disabled, clickTrigger = \"click\" } = {}) {\r\n const [preventMouseClickOutsideRef, setPreventMouseClickOutsideRef] = createSignal(false);\r\n const handleMouseCapture = (e) => {\r\n const currentTarget = getRefTarget(ref());\r\n setPreventMouseClickOutsideRef(!currentTarget ||\r\n isModifiedEvent(e) ||\r\n !isLeftClickEvent(e) ||\r\n !!contains(currentTarget, e.target));\r\n };\r\n const handleMouse = (e) => {\r\n if (!preventMouseClickOutsideRef()) {\r\n onClickOutside(e);\r\n }\r\n };\r\n createEffect(() => {\r\n if (disabled || ref() == null)\r\n return undefined;\r\n const doc = ownerDocument(getRefTarget(ref()));\r\n // Store the current event to avoid triggering handlers immediately\r\n // https://github.com/facebook/react/issues/20074\r\n let currentEvent = (doc.defaultView || window).event;\r\n // Use capture for this listener so it fires before React's listener, to\r\n // avoid false positives in the contains() check below if the target DOM\r\n // element is removed in the React mouse callback.\r\n const removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\r\n const removeMouseListener = listen(doc, clickTrigger, (e) => {\r\n // skip if this event is the same as the one running when we added the handlers\r\n if (e === currentEvent) {\r\n currentEvent = undefined;\r\n return;\r\n }\r\n handleMouse(e);\r\n });\r\n let mobileSafariHackListeners = [];\r\n if (\"ontouchstart\" in doc.documentElement) {\r\n mobileSafariHackListeners = [].slice\r\n .call(doc.body.children)\r\n .map((el) => listen(el, \"mousemove\", noop));\r\n }\r\n onCleanup(() => {\r\n removeMouseCaptureListener();\r\n removeMouseListener();\r\n mobileSafariHackListeners.forEach((remove) => remove());\r\n });\r\n });\r\n}\r\nexport default useClickOutside;\r\n","export function toModifierMap(modifiers) {\r\n const result = {};\r\n if (!Array.isArray(modifiers)) {\r\n return modifiers || result;\r\n }\r\n // eslint-disable-next-line no-unused-expressions\r\n modifiers?.forEach((m) => {\r\n result[m.name] = m;\r\n });\r\n return result;\r\n}\r\nexport function toModifierArray(map = {}) {\r\n if (Array.isArray(map))\r\n return map;\r\n return Object.keys(map).map((k) => {\r\n map[k].name = k;\r\n return map[k];\r\n });\r\n}\r\nexport function mergeOptionsWithPopperConfig({ enabled, enableEvents, placement, flip, offset, fixed, containerPadding, arrowElement, popperConfig = {}, }) {\r\n const modifiers = toModifierMap(popperConfig.modifiers);\r\n return {\r\n ...popperConfig,\r\n placement,\r\n enabled,\r\n strategy: fixed ? \"fixed\" : popperConfig.strategy,\r\n modifiers: toModifierArray({\r\n ...modifiers,\r\n eventListeners: {\r\n enabled: enableEvents,\r\n },\r\n preventOverflow: {\r\n ...modifiers.preventOverflow,\r\n options: containerPadding\r\n ? {\r\n padding: containerPadding,\r\n ...modifiers.preventOverflow?.options,\r\n }\r\n : modifiers.preventOverflow?.options,\r\n },\r\n offset: {\r\n options: {\r\n offset,\r\n ...modifiers.offset?.options,\r\n },\r\n },\r\n arrow: {\r\n ...modifiers.arrow,\r\n enabled: !!arrowElement,\r\n options: {\r\n ...modifiers.arrow?.options,\r\n element: arrowElement,\r\n },\r\n },\r\n flip: {\r\n enabled: !!flip,\r\n ...modifiers.flip,\r\n },\r\n }),\r\n };\r\n}\r\nexport default mergeOptionsWithPopperConfig;\r\n","import DropdownContext from \"./DropdownContext\";\r\nimport usePopper from \"./usePopper\";\r\nimport useClickOutside from \"./useClickOutside\";\r\nimport mergeOptionsWithPopperConfig from \"./mergeOptionsWithPopperConfig\";\r\nimport { createComputed, createEffect, createMemo, createSignal, mergeProps, splitProps, useContext, } from \"solid-js\";\r\nimport { createStore, reconcile } from \"solid-js/store\";\r\nconst noop = () => { };\r\n/**\r\n * @memberOf Dropdown\r\n * @param {object} options\r\n * @param {boolean} options.flip Automatically adjust the menu `drop` position based on viewport edge detection\r\n * @param {[number, number]} options.offset Define an offset distance between the Menu and the Toggle\r\n * @param {boolean} options.show Display the menu manually, ignored in the context of a `Dropdown`\r\n * @param {boolean} options.usePopper opt in/out of using PopperJS to position menus. When disabled you must position it yourself.\r\n * @param {string} options.rootCloseEvent The pointer event to listen for when determining \"clicks outside\" the menu for triggering a close.\r\n * @param {object} options.popperConfig Options passed to the [`usePopper`](/api/usePopper) hook.\r\n */\r\nexport function useDropdownMenu(o = {}) {\r\n const context = useContext(DropdownContext);\r\n const [arrowElement, attachArrowRef] = createSignal();\r\n const [hasShownRef, setHasShownRef] = createSignal(false);\r\n const [popperOptions, setPopperOptions] = createStore({});\r\n // merge in option defaults\r\n const options = mergeProps({\r\n fixed: false,\r\n popperConfig: {},\r\n usePopper: !!context,\r\n }, o);\r\n const show = createMemo(() => {\r\n return context?.show == null ? !!options.show : context.show;\r\n });\r\n createEffect(() => {\r\n if (show() && !hasShownRef()) {\r\n setHasShownRef(true);\r\n }\r\n });\r\n /** sync popper with options */\r\n createComputed(() => {\r\n setPopperOptions(reconcile(mergeOptionsWithPopperConfig({\r\n placement: options.placement || context?.placement || \"bottom-start\",\r\n enabled: options.usePopper ?? !!context,\r\n enableEvents: options.enableEventListeners == null ? show() : options.enableEventListeners,\r\n offset: options.offset,\r\n flip: options.flip,\r\n fixed: options.fixed,\r\n arrowElement: arrowElement(),\r\n popperConfig: options.popperConfig,\r\n })));\r\n });\r\n const handleClose = (e) => {\r\n context?.toggle(false, e);\r\n };\r\n const popper = usePopper(() => context?.toggleElement, () => context?.menuElement, popperOptions);\r\n createEffect(() => {\r\n if (context?.menuElement) {\r\n useClickOutside(() => context.menuElement, handleClose, {\r\n get clickTrigger() {\r\n return options.rootCloseEvent;\r\n },\r\n get disabled() {\r\n return !show();\r\n },\r\n });\r\n }\r\n });\r\n const menuProps = mergeProps({\r\n get ref() {\r\n return context?.setMenu || noop;\r\n },\r\n get style() {\r\n return popper()?.styles.popper;\r\n },\r\n get \"aria-labelledby\"() {\r\n return context?.toggleElement?.id;\r\n },\r\n }, popper()?.attributes.popper ?? {});\r\n const metadata = {\r\n get show() {\r\n return show();\r\n },\r\n get placement() {\r\n return context?.placement;\r\n },\r\n get hasShown() {\r\n return hasShownRef();\r\n },\r\n get toggle() {\r\n return context?.toggle;\r\n },\r\n get popper() {\r\n return options.usePopper ? popper() : null;\r\n },\r\n get arrowProps() {\r\n return options.usePopper\r\n ? {\r\n ref: attachArrowRef,\r\n ...popper()?.attributes.arrow,\r\n style: popper()?.styles.arrow,\r\n }\r\n : {};\r\n },\r\n };\r\n return [menuProps, metadata];\r\n}\r\n/**\r\n * Also exported as `` from `Dropdown`.\r\n *\r\n * @displayName DropdownMenu\r\n * @memberOf Dropdown\r\n */\r\nexport function DropdownMenu(p) {\r\n const [local, options] = splitProps(p, [\"children\"]);\r\n const [props, meta] = useDropdownMenu(options);\r\n return <>{local.children(props, meta)}>;\r\n}\r\n/** @component */\r\nexport default DropdownMenu;\r\n","// import {\r\n// useSSRSafeId,\r\n// useIsSSR,\r\n// SSRProvider,\r\n// SSRProviderProps,\r\n// } from '@react-aria/ssr';\r\n// export type { SSRProviderProps };\r\n// export { useSSRSafeId, useIsSSR, SSRProvider };\r\n/* Hacks to replace above from https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/ssr/src/SSRProvider.tsx */\r\nlet currentId = 0;\r\nexport function useSSRSafeId(defaultId) {\r\n return defaultId || `solid-aria-${++currentId}`;\r\n}\r\n","import { useSSRSafeId } from \"./ssr\";\r\nimport DropdownContext from \"./DropdownContext\";\r\nimport { useContext } from \"solid-js\";\r\nexport const isRoleMenu = (el) => el.getAttribute(\"role\")?.toLowerCase() === \"menu\";\r\nconst noop = () => { };\r\n/**\r\n * Wires up Dropdown toggle functionality, returning a set a props to attach\r\n * to the element that functions as the dropdown toggle (generally a button).\r\n *\r\n * @memberOf Dropdown\r\n */\r\nexport function useDropdownToggle() {\r\n const id = useSSRSafeId();\r\n const context = useContext(DropdownContext);\r\n const handleClick = (e) => {\r\n context.toggle(!context.show, e);\r\n };\r\n return [\r\n {\r\n id,\r\n get ref() {\r\n return context.setToggle || noop;\r\n },\r\n onClick: handleClick,\r\n get \"aria-expanded\"() {\r\n return !!context.show;\r\n },\r\n get \"aria-haspopup\"() {\r\n return (context.menuElement && isRoleMenu(context.menuElement) ? true : undefined);\r\n },\r\n },\r\n {\r\n get show() {\r\n return context.show;\r\n },\r\n get toggle() {\r\n return context.toggle;\r\n },\r\n },\r\n ];\r\n}\r\n/**\r\n * Also exported as `` from `Dropdown`.\r\n *\r\n * @displayName DropdownToggle\r\n * @memberOf Dropdown\r\n */\r\nexport function DropdownToggle({ children }) {\r\n const [props, meta] = useDropdownToggle();\r\n return <>{children(props, meta)}>;\r\n}\r\n/** @component */\r\nexport default DropdownToggle;\r\n","import { createContext } from \"solid-js\";\r\nexport const SelectableContext = createContext(null);\r\nexport const makeEventKey = (eventKey, href = null) => {\r\n if (eventKey != null)\r\n return String(eventKey);\r\n return href || null;\r\n};\r\nexport default SelectableContext;\r\n","import { createContext } from \"solid-js\";\r\nexport const NavContext = createContext(null);\r\nexport default NavContext;\r\n","export const ATTRIBUTE_PREFIX = `data-rr-ui-`;\r\nexport const PROPERTY_PREFIX = `rrUi`;\r\nexport function dataAttr(property) {\r\n return `${ATTRIBUTE_PREFIX}${property}`;\r\n}\r\nexport function dataProp(property) {\r\n return `${PROPERTY_PREFIX}${property}`;\r\n}\r\n","import SelectableContext, { makeEventKey } from \"./SelectableContext\";\r\nimport NavContext from \"./NavContext\";\r\nimport Button from \"./Button\";\r\nimport { dataAttr } from \"./DataKey\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nimport { createMemo, mergeProps, splitProps, useContext, } from \"solid-js\";\r\nimport { callEventHandler } from \"./utils\";\r\n/**\r\n * Create a dropdown item. Returns a set of props for the dropdown item component\r\n * including an `onClick` handler that prevents selection when the item is disabled\r\n */\r\nexport function useDropdownItem(options) {\r\n const onSelectCtx = useContext(SelectableContext);\r\n const navContext = useContext(NavContext);\r\n const { activeKey } = navContext || {};\r\n const eventKey = makeEventKey(options.key, options.href);\r\n const isActive = createMemo(() => options.active == null && options.key != null\r\n ? makeEventKey(activeKey) === eventKey\r\n : options.active);\r\n const handleClick = (event) => {\r\n if (options.disabled)\r\n return;\r\n let result = callEventHandler(options.onClick, event);\r\n if (onSelectCtx && !result.isPropagationStopped) {\r\n onSelectCtx(eventKey, event);\r\n }\r\n };\r\n return [\r\n {\r\n onClick: handleClick,\r\n get \"aria-disabled\"() {\r\n return options.disabled || undefined;\r\n },\r\n get \"aria-selected\"() {\r\n return isActive();\r\n },\r\n [dataAttr(\"dropdown-item\")]: \"\",\r\n },\r\n {\r\n get isActive() {\r\n return isActive();\r\n },\r\n },\r\n ];\r\n}\r\nexport const DropdownItem = (p) => {\r\n const [local, props] = splitProps(\r\n // merge in prop defaults\r\n mergeProps({ as: Button }, p), \r\n // split off local props with rest passed to Dynamic\r\n [\"eventKey\", \"disabled\", \"onClick\", \"active\", \"as\"]);\r\n const [dropdownItemProps] = useDropdownItem({\r\n get key() {\r\n return local.eventKey;\r\n },\r\n get href() {\r\n return props.href;\r\n },\r\n get disabled() {\r\n return local.disabled;\r\n },\r\n get onClick() {\r\n return local.onClick;\r\n },\r\n get active() {\r\n return local.active;\r\n },\r\n });\r\n return ;\r\n};\r\nexport default DropdownItem;\r\n","import { createContext, useContext } from \"solid-js\";\r\nimport canUseDOM from \"dom-helpers/canUseDOM\";\r\nconst Context = createContext(canUseDOM ? window : undefined);\r\nexport const WindowProvider = Context.Provider;\r\n/**\r\n * The document \"window\" placed in context. Helpful for determining\r\n * SSR context, or when rendering into an iframe.\r\n *\r\n * @returns the current window\r\n */\r\nexport function useWindow() {\r\n return useContext(Context);\r\n}\r\nexport default useWindow;\r\n","import { createComputed, createMemo, createSignal, on } from \"solid-js\";\r\n/**\r\n * Either returns passed in [value, handler] or creates a signal to control value.\r\n *\r\n * @param propValue if controlled\r\n * @param defaultValue optional default if value not controlled\r\n * @param handler called in both modes\r\n * @returns\r\n */\r\nexport function createControlledProp(propValue, defaultValue, handler) {\r\n const [stateValue, setState] = createSignal(defaultValue());\r\n const isControlled = createMemo(() => propValue() !== undefined);\r\n /**\r\n * If a prop switches from controlled to Uncontrolled\r\n * reset its value to the defaultValue\r\n */\r\n createComputed(on(isControlled, (is, was) => {\r\n if (!is && was && stateValue() !== defaultValue()) {\r\n setState(() => defaultValue());\r\n }\r\n }));\r\n const getValue = () => (isControlled() ? propValue() : stateValue());\r\n const setValue = ((value, ...args) => {\r\n if (handler)\r\n handler(value, ...args);\r\n setState(() => value);\r\n });\r\n return [getValue, setValue];\r\n}\r\n","import qsa from \"dom-helpers/querySelectorAll\";\r\nimport addEventListener from \"dom-helpers/addEventListener\";\r\nimport DropdownContext from \"./DropdownContext\";\r\nimport DropdownMenu from \"./DropdownMenu\";\r\nimport DropdownToggle, { isRoleMenu, } from \"./DropdownToggle\";\r\nimport DropdownItem from \"./DropdownItem\";\r\nimport SelectableContext from \"./SelectableContext\";\r\nimport { dataAttr } from \"./DataKey\";\r\nimport useWindow from \"./useWindow\";\r\nimport { createEffect, createSignal, mergeProps, onCleanup, useContext } from \"solid-js\";\r\nimport { createControlledProp } from \"./createControlledProp\";\r\nimport { callEventHandler } from \"./utils\";\r\nimport { isServer } from \"solid-js/web\";\r\n/**\r\n * @displayName Dropdown\r\n * @public\r\n */\r\nexport function Dropdown(p) {\r\n // merge in props defaults\r\n const props = mergeProps({\r\n itemSelector: `* [${dataAttr(\"dropdown-item\")}]`,\r\n placement: \"bottom-start\",\r\n }, p);\r\n const window = useWindow();\r\n const [show, onToggle] = createControlledProp(() => props.show, () => props.defaultShow, props.onToggle);\r\n const [menuRef, setMenu] = createSignal();\r\n const [toggleRef, setToggle] = createSignal();\r\n const [lastSourceEvent, setLastSourceEvent] = createSignal(null);\r\n const onSelectCtx = useContext(SelectableContext);\r\n const focusInDropdown = () => menuRef()?.contains(menuRef().ownerDocument.activeElement);\r\n const toggle = (nextShow, event, source = event?.type) => {\r\n onToggle(nextShow, { originalEvent: event, source });\r\n };\r\n const handleSelect = (key, event) => {\r\n let result = callEventHandler((event) => {\r\n props.onSelect?.(key, event);\r\n toggle(false, event, \"select\");\r\n }, event);\r\n if (!result.isPropagationStopped) {\r\n onSelectCtx?.(key, event);\r\n }\r\n };\r\n const context = {\r\n toggle,\r\n setMenu,\r\n setToggle,\r\n get placement() {\r\n return props.placement;\r\n },\r\n get show() {\r\n return show();\r\n },\r\n get menuElement() {\r\n return menuRef();\r\n },\r\n get toggleElement() {\r\n return toggleRef();\r\n },\r\n };\r\n const focusToggle = () => {\r\n const ref = toggleRef();\r\n if (ref && ref.focus) {\r\n ref.focus();\r\n }\r\n };\r\n const maybeFocusFirst = () => {\r\n const type = lastSourceEvent();\r\n setLastSourceEvent(null);\r\n let focusType = props.focusFirstItemOnShow;\r\n if (focusType == null) {\r\n focusType = menuRef() && isRoleMenu(menuRef()) ? \"keyboard\" : false;\r\n }\r\n if (focusType === false || (focusType === \"keyboard\" && !/^key.+$/.test(type))) {\r\n return;\r\n }\r\n const first = qsa(menuRef(), props.itemSelector)[0];\r\n if (first && first.focus)\r\n first.focus();\r\n };\r\n createEffect(() => {\r\n if (show()) {\r\n maybeFocusFirst();\r\n }\r\n else if (focusInDropdown()) {\r\n focusToggle();\r\n }\r\n });\r\n const getNextFocusedChild = (current, offset) => {\r\n if (!menuRef())\r\n return null;\r\n const items = qsa(menuRef(), props.itemSelector);\r\n let index = items.indexOf(current) + offset;\r\n index = Math.max(0, Math.min(index, items.length));\r\n return items[index];\r\n };\r\n const keydownHandler = (event) => {\r\n const { key } = event;\r\n const target = event.target;\r\n const fromMenu = menuRef()?.contains(target);\r\n const fromToggle = toggleRef()?.contains(target);\r\n // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\r\n // in inscrutability\r\n const isInput = /input|textarea/i.test(target.tagName);\r\n if (isInput &&\r\n (key === \" \" ||\r\n (key !== \"Escape\" && fromMenu) ||\r\n (key === \"Escape\" && target.type === \"search\"))) {\r\n return;\r\n }\r\n if (!fromMenu && !fromToggle) {\r\n return;\r\n }\r\n if (key === \"Tab\" && (!menuRef() || !show)) {\r\n return;\r\n }\r\n setLastSourceEvent(event.type);\r\n const meta = { originalEvent: event, source: event.type };\r\n switch (key) {\r\n case \"ArrowUp\": {\r\n const next = getNextFocusedChild(target, -1);\r\n if (next && next.focus)\r\n next.focus();\r\n event.preventDefault();\r\n return;\r\n }\r\n case \"ArrowDown\":\r\n event.preventDefault();\r\n if (!show) {\r\n onToggle(true, meta);\r\n }\r\n else {\r\n const next = getNextFocusedChild(target, 1);\r\n if (next && next.focus)\r\n next.focus();\r\n }\r\n return;\r\n case \"Tab\":\r\n // on keydown the target is the element being tabbed FROM, we need that\r\n // to know if this event is relevant to this dropdown (e.g. in this menu).\r\n // On `keyup` the target is the element being tagged TO which we use to check\r\n // if focus has left the menu\r\n if (!isServer) {\r\n addEventListener(target.ownerDocument, \"keyup\", (e) => {\r\n if ((e.key === \"Tab\" && !e.target) || !menuRef()?.contains(e.target)) {\r\n onToggle(false, meta);\r\n }\r\n }, { once: true });\r\n }\r\n break;\r\n case \"Escape\":\r\n if (key === \"Escape\") {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n onToggle(false, meta);\r\n focusToggle();\r\n break;\r\n default:\r\n }\r\n };\r\n if (!isServer) {\r\n window.document.addEventListener(\"keydown\", keydownHandler);\r\n onCleanup(() => window.document.removeEventListener(\"keydown\", keydownHandler));\r\n }\r\n return (\r\n {props.children}\r\n );\r\n}\r\nDropdown.Menu = DropdownMenu;\r\nDropdown.Toggle = DropdownToggle;\r\nDropdown.Item = DropdownItem;\r\nexport default Dropdown;\r\n","import ownerDocument from './ownerDocument';\n/**\n * Returns the actively focused element safely.\n *\n * @param doc the document to check\n */\n\nexport default function activeElement(doc) {\n if (doc === void 0) {\n doc = ownerDocument();\n }\n\n // Support: IE 9 only\n // IE9 throws an \"Unspecified error\" accessing document.activeElement from an \n try {\n var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n // document.activeElement from an \n\n if (!active || !active.nodeName) return null;\n return active;\n } catch (e) {\n /* ie throws if no active element */\n return doc.body;\n }\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","/**\r\n * Get the width of the vertical window scrollbar if it's visible\r\n */\r\nexport function getBodyScrollbarWidth(ownerDocument = document) {\r\n const window = ownerDocument.defaultView;\r\n return Math.abs(window.innerWidth - ownerDocument.documentElement.clientWidth);\r\n}\r\nexport default getBodyScrollbarWidth;\r\n","import css from \"dom-helpers/css\";\r\nimport { dataAttr } from \"./DataKey\";\r\nimport getBodyScrollbarWidth from \"./getScrollbarWidth\";\r\nexport const OPEN_DATA_ATTRIBUTE = dataAttr(\"modal-open\");\r\n/**\r\n * Manages a stack of Modals as well as ensuring\r\n * body scrolling is is disabled and padding accounted for\r\n */\r\nexport class ModalManager {\r\n handleContainerOverflow;\r\n isRTL;\r\n modals;\r\n state;\r\n ownerDocument;\r\n constructor({ ownerDocument, handleContainerOverflow = true, isRTL = false, } = {}) {\r\n this.handleContainerOverflow = handleContainerOverflow;\r\n this.isRTL = isRTL;\r\n this.modals = [];\r\n this.ownerDocument = ownerDocument;\r\n }\r\n getScrollbarWidth() {\r\n return getBodyScrollbarWidth(this.ownerDocument);\r\n }\r\n getElement() {\r\n return (this.ownerDocument || document).body;\r\n }\r\n setModalAttributes(_modal) {\r\n // For overriding\r\n }\r\n removeModalAttributes(_modal) {\r\n // For overriding\r\n }\r\n setContainerStyle(containerState) {\r\n const style = { overflow: \"hidden\" };\r\n // we are only interested in the actual `style` here\r\n // because we will override it\r\n const paddingProp = this.isRTL ? \"paddingLeft\" : \"paddingRight\";\r\n const container = this.getElement();\r\n containerState.style = {\r\n overflow: container.style.overflow,\r\n [paddingProp]: container.style[paddingProp],\r\n };\r\n if (containerState.scrollBarWidth) {\r\n // use computed style, here to get the real padding\r\n // to add our scrollbar width\r\n style[paddingProp] = `${parseInt(css(container, paddingProp) || \"0\", 10) + containerState.scrollBarWidth}px`;\r\n }\r\n container.setAttribute(OPEN_DATA_ATTRIBUTE, \"\");\r\n css(container, style);\r\n }\r\n reset() {\r\n [...this.modals].forEach((m) => this.remove(m));\r\n }\r\n removeContainerStyle(containerState) {\r\n const container = this.getElement();\r\n container.removeAttribute(OPEN_DATA_ATTRIBUTE);\r\n Object.assign(container.style, containerState.style);\r\n }\r\n add(modal) {\r\n let modalIdx = this.modals.indexOf(modal);\r\n if (modalIdx !== -1) {\r\n return modalIdx;\r\n }\r\n modalIdx = this.modals.length;\r\n this.modals.push(modal);\r\n this.setModalAttributes(modal);\r\n if (modalIdx !== 0) {\r\n return modalIdx;\r\n }\r\n this.state = {\r\n scrollBarWidth: this.getScrollbarWidth(),\r\n style: {},\r\n };\r\n if (this.handleContainerOverflow) {\r\n this.setContainerStyle(this.state);\r\n }\r\n return modalIdx;\r\n }\r\n remove(modal) {\r\n const modalIdx = this.modals.indexOf(modal);\r\n if (modalIdx === -1) {\r\n return;\r\n }\r\n this.modals.splice(modalIdx, 1);\r\n // if that was the last modal in a container,\r\n // clean up the container\r\n if (!this.modals.length && this.handleContainerOverflow) {\r\n this.removeContainerStyle(this.state);\r\n }\r\n this.removeModalAttributes(modal);\r\n }\r\n isTopModal(modal) {\r\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\r\n }\r\n}\r\nexport default ModalManager;\r\n","import ownerDocument from \"dom-helpers/ownerDocument\";\r\nimport canUseDOM from \"dom-helpers/canUseDOM\";\r\nimport { createEffect, createSignal } from \"solid-js\";\r\nimport useWindow from \"./useWindow\";\r\nexport const resolveContainerRef = (ref, document) => {\r\n if (!canUseDOM)\r\n return null;\r\n if (ref == null)\r\n return (document || ownerDocument()).body;\r\n if (typeof ref === \"function\")\r\n ref = ref();\r\n if (ref?.nodeType)\r\n return ref || null;\r\n return null;\r\n};\r\nexport function useWaitForDOMRef(props) {\r\n const window = useWindow();\r\n const [resolvedRef, setRef] = createSignal(resolveContainerRef(props.ref, window?.document));\r\n createEffect(() => {\r\n if (props.onResolved && resolvedRef()) {\r\n props.onResolved(resolvedRef());\r\n }\r\n });\r\n createEffect(() => {\r\n const nextRef = resolveContainerRef(props.ref);\r\n if (nextRef !== resolvedRef()) {\r\n setRef(nextRef);\r\n }\r\n });\r\n return resolvedRef;\r\n}\r\nexport default useWaitForDOMRef;\r\n","/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\r\nimport activeElement from \"dom-helpers/activeElement\";\r\nimport contains from \"dom-helpers/contains\";\r\nimport canUseDOM from \"dom-helpers/canUseDOM\";\r\nimport listen from \"dom-helpers/listen\";\r\nimport ModalManager from \"./ModalManager\";\r\nimport useWindow from \"./useWindow\";\r\nimport { children, createComputed, createEffect, createSignal, mergeProps, on, onCleanup, onMount, splitProps, Show, createMemo, getOwner, runWithOwner, } from \"solid-js\";\r\nimport { Portal } from \"solid-js/web\";\r\nimport useWaitForDOMRef from \"./useWaitForDOMRef\";\r\nlet manager;\r\nfunction getManager(window) {\r\n if (!manager)\r\n manager = new ModalManager({ ownerDocument: window?.document });\r\n return manager;\r\n}\r\nfunction useModalManager(provided) {\r\n const window = useWindow();\r\n const modalManager = provided || getManager(window);\r\n const modal = {\r\n dialog: null,\r\n backdrop: null,\r\n };\r\n return Object.assign(modal, {\r\n add: () => modalManager.add(modal),\r\n remove: () => modalManager.remove(modal),\r\n isTopModal: () => modalManager.isTopModal(modal),\r\n setDialogRef: (ref) => {\r\n modal.dialog = ref;\r\n },\r\n setBackdropRef: (ref) => {\r\n modal.backdrop = ref;\r\n },\r\n });\r\n}\r\nconst defaultProps = {\r\n show: false,\r\n role: \"dialog\",\r\n backdrop: true,\r\n keyboard: true,\r\n autoFocus: true,\r\n enforceFocus: true,\r\n restoreFocus: true,\r\n renderBackdrop: (props) => ,\r\n onHide: () => { },\r\n};\r\nexport const Modal = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), \r\n // split off local props with rest passed as dialogProps\r\n [\r\n \"show\",\r\n \"role\",\r\n \"class\",\r\n \"style\",\r\n \"children\",\r\n \"backdrop\",\r\n \"keyboard\",\r\n \"onBackdropClick\",\r\n \"onEscapeKeyDown\",\r\n \"transition\",\r\n \"backdropTransition\",\r\n \"autoFocus\",\r\n \"enforceFocus\",\r\n \"restoreFocus\",\r\n \"restoreFocusOptions\",\r\n \"renderDialog\",\r\n \"renderBackdrop\",\r\n \"manager\",\r\n \"container\",\r\n \"onShow\",\r\n \"onHide\",\r\n \"onExit\",\r\n \"onExited\",\r\n \"onExiting\",\r\n \"onEnter\",\r\n \"onEntering\",\r\n \"onEntered\",\r\n \"ref\",\r\n ]);\r\n const container = useWaitForDOMRef({\r\n get ref() {\r\n return local.container;\r\n },\r\n });\r\n const modal = useModalManager(local.manager);\r\n const owner = getOwner();\r\n const [isMounted, setIsMounted] = createSignal(false);\r\n onMount(() => setIsMounted(true));\r\n onCleanup(() => setIsMounted(false));\r\n const [exited, setExited] = createSignal(!local.show);\r\n let lastFocusRef = null;\r\n local.ref?.(modal);\r\n createComputed(on(() => local.show, (show, prevShow) => {\r\n if (canUseDOM && !prevShow && show) {\r\n lastFocusRef = activeElement();\r\n }\r\n }));\r\n createComputed(() => {\r\n if (!local.transition && !local.show && !exited()) {\r\n setExited(true);\r\n }\r\n else if (local.show && exited()) {\r\n setExited(false);\r\n }\r\n });\r\n const handleShow = () => {\r\n modal.add();\r\n removeKeydownListenerRef = listen(document, \"keydown\", handleDocumentKeyDown);\r\n removeFocusListenerRef = listen(document, \"focus\", \r\n // the timeout is necessary b/c this will run before the new modal is mounted\r\n // and so steals focus from it\r\n () => setTimeout(handleEnforceFocus), true);\r\n if (local.onShow) {\r\n local.onShow();\r\n }\r\n // autofocus after onShow to not trigger a focus event for previous\r\n // modals before this one is shown.\r\n if (local.autoFocus) {\r\n const currentActiveElement = activeElement(document);\r\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\r\n lastFocusRef = currentActiveElement;\r\n modal.dialog.focus();\r\n }\r\n }\r\n };\r\n const handleHide = () => {\r\n modal.remove();\r\n removeKeydownListenerRef?.();\r\n removeFocusListenerRef?.();\r\n if (local.restoreFocus) {\r\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\r\n lastFocusRef?.focus?.(local.restoreFocusOptions);\r\n lastFocusRef = null;\r\n }\r\n };\r\n // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\r\n // Show logic when:\r\n // - show is `true` _and_ `container` has resolved\r\n createEffect(() => {\r\n if (!local.show || !container?.())\r\n return;\r\n handleShow();\r\n });\r\n // Hide cleanup logic when:\r\n // - `exited` switches to true\r\n // - component unmounts;\r\n createEffect(on(exited, (exited, prev) => {\r\n if (exited && !(prev ?? exited)) {\r\n handleHide();\r\n }\r\n }));\r\n onCleanup(() => {\r\n handleHide();\r\n });\r\n // --------------------------------\r\n const handleEnforceFocus = () => {\r\n if (!local.enforceFocus || !isMounted() || !modal.isTopModal()) {\r\n return;\r\n }\r\n const currentActiveElement = activeElement();\r\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\r\n modal.dialog.focus();\r\n }\r\n };\r\n const handleBackdropClick = (e) => {\r\n if (e.target !== e.currentTarget) {\r\n return;\r\n }\r\n local.onBackdropClick?.(e);\r\n if (local.backdrop === true) {\r\n local.onHide?.();\r\n }\r\n };\r\n const handleDocumentKeyDown = (e) => {\r\n if (local.keyboard && e.keyCode === 27 && modal.isTopModal()) {\r\n local.onEscapeKeyDown?.(e);\r\n if (!e.defaultPrevented) {\r\n local.onHide?.();\r\n }\r\n }\r\n };\r\n let removeFocusListenerRef;\r\n let removeKeydownListenerRef;\r\n const handleHidden = (...args) => {\r\n setExited(true);\r\n local.onExited?.(...args);\r\n };\r\n const dialogVisible = createMemo(() => !!(local.show || (local.transition && !exited())));\r\n const dialogProps = mergeProps({\r\n get role() {\r\n return local.role;\r\n },\r\n get ref() {\r\n return modal.setDialogRef;\r\n },\r\n // apparently only works on the dialog role element\r\n get \"aria-modal\"() {\r\n return local.role === \"dialog\" ? true : undefined;\r\n },\r\n }, props, {\r\n get style() {\r\n return local.style;\r\n },\r\n get class() {\r\n return local.class;\r\n },\r\n tabIndex: -1,\r\n });\r\n const getChildAsDocument = () => {\r\n const c = children(() => local.children);\r\n c()?.setAttribute?.(\"role\", \"document\");\r\n return c;\r\n };\r\n let innerDialog = () => runWithOwner(owner, () => local.renderDialog ? (local.renderDialog(dialogProps)) : ({getChildAsDocument}));\r\n const Dialog = () => {\r\n const Transition = local.transition;\r\n return !Transition ? (innerDialog) : (\r\n {innerDialog}\r\n );\r\n };\r\n const Backdrop = () => {\r\n let backdropElement = null;\r\n if (local.backdrop) {\r\n const BackdropTransition = local.backdropTransition;\r\n backdropElement = local.renderBackdrop({\r\n ref: modal.setBackdropRef,\r\n onClick: handleBackdropClick,\r\n });\r\n if (BackdropTransition) {\r\n backdropElement = (\r\n {backdropElement}\r\n );\r\n }\r\n }\r\n return backdropElement;\r\n };\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default Object.assign(Modal, {\r\n Manager: ModalManager,\r\n});\r\n","import { createContext } from \"solid-js\";\r\nexport const TabContext = createContext(null);\r\nexport default TabContext;\r\n","import NavContext from \"./NavContext\";\r\nimport SelectableContext, { makeEventKey } from \"./SelectableContext\";\r\nimport Button from \"./Button\";\r\nimport { dataAttr } from \"./DataKey\";\r\nimport { createMemo, mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nimport { callEventHandler } from \"./utils\";\r\nimport TabContext from \"./TabContext\";\r\nexport function useNavItem(options) {\r\n const parentOnSelect = useContext(SelectableContext);\r\n const navContext = useContext(NavContext);\r\n const tabContext = useContext(TabContext);\r\n const isActive = createMemo(() => options.active == null && options.key != null\r\n ? navContext?.activeKey === options.key\r\n : options.active);\r\n const role = createMemo(() => navContext && !options.role && navContext.role === \"tablist\" ? \"tab\" : options.role);\r\n const onClick = createMemo(() => (e) => {\r\n if (options.disabled)\r\n return;\r\n let result = callEventHandler(options.onClick, e);\r\n if (options.key == null) {\r\n return;\r\n }\r\n if (parentOnSelect && !result.isPropagationStopped) {\r\n parentOnSelect(options.key, e);\r\n }\r\n });\r\n const props = {\r\n get role() {\r\n return role();\r\n },\r\n get [dataAttr(\"event-key\")]() {\r\n return navContext ? options.key : undefined;\r\n },\r\n get id() {\r\n return navContext ? navContext.getControllerId(options.key) : undefined;\r\n },\r\n get tabIndex() {\r\n return role() === \"tab\" && (options.disabled || !isActive()) ? -1 : undefined;\r\n },\r\n get [\"aria-controls\"]() {\r\n /**\r\n * Simplified scenario for `mountOnEnter`.\r\n *\r\n * While it would make sense to keep 'aria-controls' for tabs that have been mounted at least\r\n * once, it would also complicate the code quite a bit, for very little gain.\r\n * The following implementation is probably good enough.\r\n *\r\n * @see https://github.com/react-restart/ui/pull/40#issuecomment-1009971561\r\n */\r\n return isActive() || (!tabContext?.unmountOnExit && !tabContext?.mountOnEnter)\r\n ? navContext\r\n ? navContext.getControlledId(options.key)\r\n : undefined\r\n : undefined;\r\n },\r\n get [\"aria-disabled\"]() {\r\n return role() === \"tab\" && options.disabled ? true : undefined;\r\n },\r\n get [\"aria-selected\"]() {\r\n return role() === \"tab\" && isActive() ? true : undefined;\r\n },\r\n get onClick() {\r\n return onClick();\r\n },\r\n };\r\n const meta = {\r\n get isActive() {\r\n return isActive();\r\n },\r\n };\r\n return [props, meta];\r\n}\r\nconst defaultProps = {\r\n as: Button,\r\n};\r\nexport const NavItem = (p) => {\r\n const [local, options] = splitProps(mergeProps(defaultProps, p), [\"as\", \"active\", \"eventKey\"]);\r\n const [props, meta] = useNavItem(mergeProps({\r\n get active() {\r\n return p.active;\r\n },\r\n get key() {\r\n return makeEventKey(p.eventKey, p.href);\r\n },\r\n }, options));\r\n // @ts-ignore\r\n props[dataAttr(\"active\")] = meta.isActive;\r\n return ;\r\n};\r\nexport default NavItem;\r\n","import qsa from \"dom-helpers/querySelectorAll\";\r\nimport NavContext from \"./NavContext\";\r\nimport SelectableContext, { makeEventKey } from \"./SelectableContext\";\r\nimport TabContext from \"./TabContext\";\r\nimport { dataAttr, dataProp } from \"./DataKey\";\r\nimport NavItem from \"./NavItem\";\r\nimport { createEffect, createSignal, mergeProps, splitProps, useContext, } from \"solid-js\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nimport { callEventHandler } from \"./utils\";\r\n// eslint-disable-next-line @typescript-eslint/no-empty-function\r\nconst noop = (e) => \"\";\r\nconst EVENT_KEY_ATTR = dataAttr(\"event-key\");\r\nconst defaultProps = {\r\n as: \"div\",\r\n};\r\nexport const Nav = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"onSelect\",\r\n \"activeKey\",\r\n \"role\",\r\n \"onKeyDown\",\r\n ]);\r\n // and don't want to reset the set in the effect\r\n const [needsRefocusRef, setNeedsRefocusRef] = createSignal(false);\r\n const [listNode, setListNode] = createSignal(null);\r\n const parentOnSelect = useContext(SelectableContext);\r\n const tabContext = useContext(TabContext);\r\n const getNextActiveTab = (offset) => {\r\n const currentListNode = listNode();\r\n if (!currentListNode)\r\n return null;\r\n const items = qsa(currentListNode, `[${EVENT_KEY_ATTR}]:not([aria-disabled=true])`);\r\n const activeChild = currentListNode.querySelector(\"[aria-selected=true]\");\r\n if (!activeChild || activeChild !== document.activeElement)\r\n return null;\r\n const index = items.indexOf(activeChild);\r\n if (index === -1)\r\n return null;\r\n let nextIndex = index + offset;\r\n if (nextIndex >= items.length)\r\n nextIndex = 0;\r\n if (nextIndex < 0)\r\n nextIndex = items.length - 1;\r\n return items[nextIndex];\r\n };\r\n const handleSelect = (key, event) => {\r\n if (key == null)\r\n return;\r\n local.onSelect?.(key, event);\r\n parentOnSelect?.(key, event);\r\n };\r\n const handleKeyDown = (event) => {\r\n callEventHandler(local.onKeyDown, event);\r\n if (!tabContext) {\r\n return;\r\n }\r\n let nextActiveChild;\r\n switch (event.key) {\r\n case \"ArrowLeft\":\r\n case \"ArrowUp\":\r\n nextActiveChild = getNextActiveTab(-1);\r\n break;\r\n case \"ArrowRight\":\r\n case \"ArrowDown\":\r\n nextActiveChild = getNextActiveTab(1);\r\n break;\r\n default:\r\n return;\r\n }\r\n if (!nextActiveChild)\r\n return;\r\n event.preventDefault();\r\n handleSelect(nextActiveChild.dataset[dataProp(\"EventKey\")] || null, event);\r\n setNeedsRefocusRef(true);\r\n };\r\n createEffect(() => {\r\n if (listNode() && needsRefocusRef()) {\r\n const activeChild = listNode().querySelector(`[${EVENT_KEY_ATTR}][aria-selected=true]`);\r\n activeChild?.focus();\r\n }\r\n setNeedsRefocusRef(false);\r\n });\r\n const mergedRef = (r) => {\r\n setListNode(r);\r\n if (typeof props.ref === \"function\") {\r\n props.ref(r);\r\n }\r\n };\r\n const activeKey = () => makeEventKey(tabContext?.activeKey ?? local.activeKey);\r\n const getRole = () => {\r\n return local.role || (tabContext ? \"tablist\" : undefined);\r\n };\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nexport default Object.assign(Nav, { Item: NavItem });\r\n","import { createContext } from \"solid-js\";\r\nexport const TransitionGroupContext = createContext(null);\r\nexport default TransitionGroupContext;\r\n","export function nextFrame(fn) {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(fn);\r\n });\r\n}\r\n","// ported from https://github.com/reactjs/react-transition-group/blob/5aa3fd2d7e3354a7e42505d55af605ff44f74e2e/src/Transition.js\r\nimport { createSignal, createComputed, children, useContext, on, onMount, onCleanup, Show, createMemo, splitProps, mergeProps, } from \"solid-js\";\r\nimport TransitionGroupContext from \"./TransitionGroupContext\";\r\nimport { nextFrame } from \"./utils\";\r\n/**\r\n * The Transition component lets you describe a transition from one component\r\n * state to another _over time_ with a simple declarative API. Most commonly\r\n * it's used to animate the mounting and unmounting of a component, but can also\r\n * be used to describe in-place transition states as well.\r\n *\r\n * ---\r\n *\r\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\r\n * transitions in CSS, you'll probably want to use\r\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\r\n * instead. It inherits all the features of `Transition`, but contains\r\n * additional features necessary to play nice with CSS transitions (hence the\r\n * name of the component).\r\n *\r\n * ---\r\n *\r\n * By default the `Transition` component does not alter the behavior of the\r\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\r\n * components. It's up to you to give meaning and effect to those states. For\r\n * example we can add styles to a component when it enters or exits:\r\n *\r\n * ```jsx\r\n * import { Transition } from 'react-transition-group';\r\n *\r\n * const duration = 300;\r\n *\r\n * const defaultStyle = {\r\n * transition: `opacity ${duration}ms ease-in-out`,\r\n * opacity: 0,\r\n * }\r\n *\r\n * const transitionStyles = {\r\n * entering: { opacity: 1 },\r\n * entered: { opacity: 1 },\r\n * exiting: { opacity: 0 },\r\n * exited: { opacity: 0 },\r\n * };\r\n *\r\n * const Fade = ({ in: inProp }) => (\r\n * \r\n * {state => (\r\n * \r\n * I'm a fade Transition!\r\n * \r\n * )}\r\n * \r\n * );\r\n * ```\r\n *\r\n * There are 4 main states a Transition can be in:\r\n * - `'entering'`\r\n * - `'entered'`\r\n * - `'exiting'`\r\n * - `'exited'`\r\n *\r\n * Transition state is toggled via the `in` prop. When `true` the component\r\n * begins the \"Enter\" stage. During this stage, the component will shift from\r\n * its current transition state, to `'entering'` for the duration of the\r\n * transition and then to the `'entered'` stage once it's complete. Let's take\r\n * the following example (we'll use the\r\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\r\n *\r\n * ```jsx\r\n * function App() {\r\n * const [inProp, setInProp] = useState(false);\r\n * return (\r\n * \r\n * \r\n * {state => (\r\n * // ...\r\n * )}\r\n * \r\n * setInProp(true)}>\r\n * Click to Enter\r\n * \r\n * \r\n * );\r\n * }\r\n * ```\r\n *\r\n * When the button is clicked the component will shift to the `'entering'` state\r\n * and stay there for 500ms (the value of `timeout`) before it finally switches\r\n * to `'entered'`.\r\n *\r\n * When `in` is `false` the same thing happens except the state moves from\r\n * `'exiting'` to `'exited'`.\r\n */\r\nexport const UNMOUNTED = \"unmounted\";\r\nexport const EXITED = \"exited\";\r\nexport const ENTERING = \"entering\";\r\nexport const ENTERED = \"entered\";\r\nexport const EXITING = \"exiting\";\r\nfunction noop() { }\r\nconst defaultProps = {\r\n in: false,\r\n mountOnEnter: false,\r\n unmountOnExit: false,\r\n appear: false,\r\n enter: true,\r\n exit: true,\r\n onEnter: noop,\r\n onEntering: noop,\r\n onEntered: noop,\r\n onExit: noop,\r\n onExiting: noop,\r\n onExited: noop,\r\n};\r\nexport const Transition = (p) => {\r\n const [local, childProps] = splitProps(mergeProps(defaultProps, p), [\r\n \"in\",\r\n \"children\",\r\n \"mountOnEnter\",\r\n \"unmountOnExit\",\r\n \"appear\",\r\n \"enter\",\r\n \"exit\",\r\n \"timeout\",\r\n \"addEndListener\",\r\n \"onEnter\",\r\n \"onEntering\",\r\n \"onEntered\",\r\n \"onExit\",\r\n \"onExiting\",\r\n \"onExited\",\r\n \"nodeRef\",\r\n ]);\r\n let context = useContext(TransitionGroupContext);\r\n let childRef;\r\n // In the context of a TransitionGroup all enters are really appears\r\n let appear = context && !context.isMounting ? local.enter : local.appear;\r\n let initialStatus;\r\n let appearStatus = null;\r\n if (local.in) {\r\n if (appear) {\r\n initialStatus = EXITED;\r\n appearStatus = ENTERING;\r\n }\r\n else {\r\n initialStatus = ENTERED;\r\n }\r\n }\r\n else {\r\n if (local.unmountOnExit || local.mountOnEnter) {\r\n initialStatus = UNMOUNTED;\r\n }\r\n else {\r\n initialStatus = EXITED;\r\n }\r\n }\r\n const [status, setStatus] = createSignal(initialStatus);\r\n let nextCallback = null;\r\n const [mounted, setMounted] = createSignal(false);\r\n const notUnmounted = createMemo(() => status() !== UNMOUNTED);\r\n onMount(() => {\r\n // componentDidMount\r\n updateStatus(true, appearStatus);\r\n setMounted(true);\r\n });\r\n // Detect actual changes to `in` prop via memo\r\n const inMemo = createMemo(() => local.in);\r\n createComputed(on(inMemo, () => {\r\n // componentDidUpdate\r\n if (!mounted())\r\n return;\r\n const prevStatus = status();\r\n if (inMemo() && prevStatus === UNMOUNTED) {\r\n // prepare to show again\r\n setStatus(EXITED);\r\n }\r\n let nextStatus = null;\r\n if (inMemo()) {\r\n if (prevStatus !== ENTERING && prevStatus !== ENTERED) {\r\n nextStatus = ENTERING;\r\n }\r\n }\r\n else {\r\n if (prevStatus === ENTERING || prevStatus === ENTERED) {\r\n nextStatus = EXITING;\r\n }\r\n }\r\n updateStatus(false, nextStatus ?? EXITED);\r\n }));\r\n onCleanup(() => {\r\n cancelNextCallback();\r\n });\r\n function getTimeouts() {\r\n const { timeout } = local;\r\n let exit, enter, appear;\r\n if (typeof timeout === \"number\") {\r\n exit = enter = appear = timeout;\r\n }\r\n else if (timeout != null) {\r\n exit = timeout.exit;\r\n enter = timeout.enter;\r\n // TODO: remove fallback for next major\r\n appear = timeout.appear !== undefined ? timeout.appear : enter;\r\n }\r\n return { exit, enter, appear };\r\n }\r\n function updateStatus(mounting = false, nextStatus) {\r\n if (nextStatus !== null) {\r\n // nextStatus will always be ENTERING or EXITING.\r\n cancelNextCallback();\r\n if (nextStatus === ENTERING) {\r\n performEnter(mounting);\r\n }\r\n else {\r\n performExit();\r\n }\r\n }\r\n else if (local.unmountOnExit && status() === EXITED) {\r\n setStatus(UNMOUNTED);\r\n }\r\n }\r\n function performEnter(mounting) {\r\n const { enter } = local;\r\n const appearing = context ? context.isMounting : mounting;\r\n const [maybeNode, maybeAppearing] = local.nodeRef ? [appearing] : [childRef, appearing];\r\n const timeouts = getTimeouts();\r\n const enterTimeout = appearing ? timeouts.appear : timeouts.enter;\r\n // no enter animation skip right to ENTERED\r\n // if we are mounting and running this it means appear _must_ be set\r\n if (!mounting && !enter) {\r\n safeSetState(ENTERED, () => {\r\n local.onEntered(maybeNode);\r\n });\r\n return;\r\n }\r\n local.onEnter(maybeNode, maybeAppearing);\r\n nextFrame(() => safeSetState(ENTERING, () => {\r\n local.onEntering(maybeNode, maybeAppearing);\r\n onTransitionEnd(enterTimeout, () => {\r\n safeSetState(ENTERED, () => {\r\n local.onEntered(maybeNode, maybeAppearing);\r\n });\r\n });\r\n }));\r\n }\r\n function performExit() {\r\n const { exit } = local;\r\n const timeouts = getTimeouts();\r\n const maybeNode = local.nodeRef ? undefined : childRef;\r\n // no exit animation skip right to EXITED\r\n if (!exit) {\r\n safeSetState(EXITED, () => {\r\n local.onExited(maybeNode);\r\n });\r\n return;\r\n }\r\n local.onExit(maybeNode);\r\n nextFrame(() => safeSetState(EXITING, () => {\r\n local.onExiting(maybeNode);\r\n onTransitionEnd(timeouts.exit, () => {\r\n safeSetState(EXITED, () => {\r\n local.onExited(maybeNode);\r\n });\r\n if (local.unmountOnExit) {\r\n nextFrame(() => {\r\n setStatus(UNMOUNTED);\r\n });\r\n }\r\n });\r\n }));\r\n }\r\n function cancelNextCallback() {\r\n if (nextCallback !== null) {\r\n nextCallback?.cancel();\r\n nextCallback = null;\r\n }\r\n }\r\n function safeSetState(nextState, callback) {\r\n // This shouldn't be necessary, but there are weird race conditions with\r\n // setState callbacks and unmounting in testing, so always make sure that\r\n // we can cancel any pending setState callbacks after we unmount.\r\n callback = setNextCallback(callback);\r\n setStatus(nextState);\r\n callback();\r\n }\r\n function setNextCallback(callback) {\r\n let active = true;\r\n nextCallback = ((...args) => {\r\n if (active) {\r\n active = false;\r\n nextCallback = null;\r\n callback(...args);\r\n }\r\n });\r\n nextCallback.cancel = () => {\r\n active = false;\r\n };\r\n return nextCallback;\r\n }\r\n function onTransitionEnd(timeout, handler) {\r\n setNextCallback(handler);\r\n const node = local.nodeRef ? local.nodeRef : childRef;\r\n const doesNotHaveTimeoutOrListener = timeout == null && !local.addEndListener;\r\n if (!node || doesNotHaveTimeoutOrListener) {\r\n nextCallback && setTimeout(nextCallback, 0);\r\n return;\r\n }\r\n if (local.addEndListener) {\r\n const [maybeNode, maybeNextCallback] = local.nodeRef ? [nextCallback] : [node, nextCallback];\r\n local.addEndListener(maybeNode, maybeNextCallback);\r\n }\r\n if (timeout != null && nextCallback) {\r\n setTimeout(nextCallback, timeout);\r\n }\r\n }\r\n let resolvedChildren;\r\n function renderChild() {\r\n // lazily resolve children first time to avoid hydration errors\r\n if (!resolvedChildren)\r\n resolvedChildren = children(() => local.children);\r\n const c = resolvedChildren();\r\n return typeof c === \"function\" ? c(status(), childProps) : c;\r\n }\r\n return (\r\n {renderChild()}\r\n );\r\n};\r\n","import { children } from \"solid-js\";\r\nimport { ENTERED } from \"solid-react-transition\";\r\nexport const NoopTransition = (props) => {\r\n const resolvedChildren = children(() => props.children);\r\n const callChild = () => {\r\n const c = resolvedChildren();\r\n return typeof c === \"function\" ? c(ENTERED, {}) : c;\r\n };\r\n return <>{callChild()}>;\r\n};\r\nexport default NoopTransition;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport TabContext from \"./TabContext\";\r\nimport SelectableContext, { makeEventKey } from \"./SelectableContext\";\r\nimport NoopTransition from \"./NoopTransition\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n role: \"tabpanel\",\r\n};\r\nexport function useTabPanel(p) {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"active\",\r\n \"eventKey\",\r\n \"mountOnEnter\",\r\n \"transition\",\r\n \"unmountOnExit\",\r\n ]);\r\n const context = useContext(TabContext);\r\n if (!context)\r\n return [\r\n props,\r\n {\r\n get eventKey() {\r\n return local.eventKey;\r\n },\r\n get isActive() {\r\n return local.active;\r\n },\r\n get mountOnEnter() {\r\n return local.mountOnEnter;\r\n },\r\n get transition() {\r\n return local.transition;\r\n },\r\n get unmountOnExit() {\r\n return local.unmountOnExit;\r\n },\r\n },\r\n ];\r\n const key = makeEventKey(local.eventKey);\r\n const useTabPanel = mergeProps(props, {\r\n get id() {\r\n return context?.getControlledId(local.eventKey);\r\n },\r\n get \"aria-labelledby\"() {\r\n return context?.getControllerId(local.eventKey);\r\n },\r\n });\r\n return [\r\n useTabPanel,\r\n {\r\n get eventKey() {\r\n return local.eventKey;\r\n },\r\n get isActive() {\r\n return local.active == null && key != null\r\n ? makeEventKey(context?.activeKey) === key\r\n : local.active;\r\n },\r\n get transition() {\r\n return local.transition || context?.transition || NoopTransition;\r\n },\r\n get mountOnEnter() {\r\n return local.mountOnEnter != null ? local.mountOnEnter : context?.mountOnEnter;\r\n },\r\n get unmountOnExit() {\r\n return local.unmountOnExit != null ? local.unmountOnExit : context?.unmountOnExit;\r\n },\r\n },\r\n ];\r\n}\r\nexport const TabPanel = (props) => {\r\n const [tabPanelProps, other] = useTabPanel(props);\r\n const Transition = other.transition;\r\n // We provide an empty the TabContext so ``s in ``s don't\r\n // conflict with the top level one.\r\n return (\r\n \r\n {/* */}\r\n \r\n {/* */}\r\n \r\n );\r\n};\r\nexport default TabPanel;\r\n","import { createControlledProp } from \"./createControlledProp\";\r\nimport { useSSRSafeId } from \"./ssr\";\r\nimport TabContext from \"./TabContext\";\r\nimport SelectableContext from \"./SelectableContext\";\r\nimport TabPanel from \"./TabPanel\";\r\nimport { createMemo } from \"solid-js\";\r\nexport const Tabs = (props) => {\r\n const [activeKey, onSelect] = createControlledProp(() => props.activeKey, () => props.defaultActiveKey, props.onSelect);\r\n const id = useSSRSafeId(props.id);\r\n const generateChildId = createMemo(() => props.generateChildId ||\r\n ((key, type) => (id ? `${id}-${type}-${key}` : null)));\r\n const tabContext = {\r\n get onSelect() {\r\n return onSelect;\r\n },\r\n get activeKey() {\r\n return activeKey();\r\n },\r\n get transition() {\r\n return props.transition;\r\n },\r\n get mountOnEnter() {\r\n return props.mountOnEnter || false;\r\n },\r\n get unmountOnExit() {\r\n return props.unmountOnExit || false;\r\n },\r\n get getControlledId() {\r\n return (key) => generateChildId()(key, \"pane\");\r\n },\r\n get getControllerId() {\r\n return (key) => generateChildId()(key, \"tab\");\r\n },\r\n };\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\nTabs.Panel = TabPanel;\r\nexport default Tabs;\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/ThemeProvider.tsx\r\nimport { createContext, createMemo, useContext } from \"solid-js\";\r\nexport const DEFAULT_BREAKPOINTS = [\"xxl\", \"xl\", \"lg\", \"md\", \"sm\", \"xs\"];\r\nconst ThemeContext = createContext({\r\n prefixes: {},\r\n breakpoints: DEFAULT_BREAKPOINTS,\r\n});\r\nfunction ThemeProvider({ prefixes = {}, breakpoints = DEFAULT_BREAKPOINTS, dir, children, }) {\r\n const contextValue = createMemo(() => ({\r\n prefixes: { ...prefixes },\r\n breakpoints,\r\n dir,\r\n }));\r\n return {children};\r\n}\r\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\r\n const themeContext = useContext(ThemeContext);\r\n return prefix || themeContext.prefixes[defaultPrefix] || defaultPrefix;\r\n}\r\nexport function useBootstrapBreakpoints() {\r\n const ctx = useContext(ThemeContext);\r\n return () => ctx.breakpoints;\r\n}\r\nexport function useIsRTL() {\r\n const ctx = useContext(ThemeContext);\r\n return () => ctx.dir === \"rtl\";\r\n}\r\nexport default ThemeProvider;\r\n","// source https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/triggerBrowserReflow.tsx\r\n// reading a dimension prop will cause the browser to recalculate,\r\n// which will let our animations work\r\nexport default function triggerBrowserReflow(node) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\r\n node.offsetHeight;\r\n}\r\n","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\n}","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","// source https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/transitionEndListener.ts\r\nimport css from \"dom-helpers/css\";\r\nimport transitionEnd from \"dom-helpers/transitionEnd\";\r\nfunction parseDuration(node, property) {\r\n const str = css(node, property) || \"\";\r\n const mult = str.indexOf(\"ms\") === -1 ? 1000 : 1;\r\n return parseFloat(str) * mult;\r\n}\r\nexport default function transitionEndListener(element, handler) {\r\n const duration = parseDuration(element, \"transitionDuration\");\r\n const delay = parseDuration(element, \"transitionDelay\");\r\n const remove = transitionEnd(element, (e) => {\r\n if (e.target === element) {\r\n remove();\r\n handler(e);\r\n }\r\n }, duration + delay);\r\n}\r\n","import { children, createSignal, mergeProps, splitProps } from \"solid-js\";\r\nimport { Transition } from \"solid-react-transition\";\r\nconst defaultProps = {};\r\n// Normalizes Transition callbacks when nodeRef is used.\r\nconst TransitionWrapper = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"onEnter\",\r\n \"onEntering\",\r\n \"onEntered\",\r\n \"onExit\",\r\n \"onExiting\",\r\n \"onExited\",\r\n \"addEndListener\",\r\n \"children\",\r\n \"childRef\",\r\n ]);\r\n let [nodeRef, setNodeRef] = createSignal();\r\n const mergedRef = (ref) => {\r\n setNodeRef(ref);\r\n local.childRef?.(ref);\r\n };\r\n function normalize(callback) {\r\n return (param) => {\r\n if (callback && nodeRef()) {\r\n callback(nodeRef(), param);\r\n }\r\n };\r\n }\r\n const handlers = {\r\n get onEnter() {\r\n return normalize(local.onEnter);\r\n },\r\n get onEntering() {\r\n return normalize(local.onEntering);\r\n },\r\n get onEntered() {\r\n return normalize(local.onEntered);\r\n },\r\n get onExit() {\r\n return normalize(local.onExit);\r\n },\r\n get onExiting() {\r\n return normalize(local.onExiting);\r\n },\r\n get onExited() {\r\n return normalize(local.onExited);\r\n },\r\n get addEndListener() {\r\n return normalize(local.addEndListener);\r\n },\r\n };\r\n const resolvedChildren = children(() => local.children);\r\n function renderChild() {\r\n const child = resolvedChildren();\r\n if (typeof child === \"function\") {\r\n // wrap function to get ref\r\n return (status, innerProps) => child(status, {\r\n ...innerProps,\r\n ref: mergedRef,\r\n });\r\n }\r\n else {\r\n // get resolved ref now\r\n mergedRef(child);\r\n return child;\r\n }\r\n }\r\n return (\r\n {renderChild()}\r\n );\r\n};\r\nexport default TransitionWrapper;\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/Collapse.tsx\r\nimport { children, mergeProps, splitProps } from \"solid-js\";\r\nimport css from \"dom-helpers/css\";\r\nimport { ENTERED, ENTERING, EXITED, EXITING, UNMOUNTED, } from \"solid-react-transition\";\r\nimport triggerBrowserReflow from \"./triggerBrowserReflow\";\r\nimport transitionEndListener from \"./transitionEndListener\";\r\nimport TransitionWrapper from \"./TransitionWrapper\";\r\nimport classNames from \"./classnames\";\r\nimport { resolveClasses } from \"solid-bootstrap-core\";\r\nconst MARGINS = {\r\n height: [\"marginTop\", \"marginBottom\"],\r\n width: [\"marginLeft\", \"marginRight\"],\r\n};\r\nfunction getDefaultDimensionValue(dimension, elem) {\r\n const offset = `offset${dimension[0].toUpperCase()}${dimension.slice(1)}`;\r\n const value = elem[offset];\r\n const margins = MARGINS[dimension];\r\n return (value +\r\n // @ts-ignore\r\n parseInt(css(elem, margins[0]), 10) +\r\n // @ts-ignore\r\n parseInt(css(elem, margins[1]), 10));\r\n}\r\nconst collapseStyles = {\r\n [EXITED]: \"collapse\",\r\n [EXITING]: \"collapsing\",\r\n [ENTERING]: \"collapsing\",\r\n [ENTERED]: \"collapse show\",\r\n [UNMOUNTED]: \"\",\r\n};\r\nconst defaultProps = {\r\n in: false,\r\n dimension: \"height\",\r\n timeout: 300,\r\n mountOnEnter: false,\r\n unmountOnExit: false,\r\n appear: false,\r\n getDimensionValue: getDefaultDimensionValue,\r\n};\r\nconst Collapse = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"onEnter\",\r\n \"onEntering\",\r\n \"onEntered\",\r\n \"onExit\",\r\n \"onExiting\",\r\n \"class\",\r\n \"children\",\r\n \"dimension\",\r\n \"getDimensionValue\",\r\n ]);\r\n /* Compute dimension */\r\n const computedDimension = () => typeof local.dimension === \"function\" ? local.dimension() : local.dimension;\r\n /* -- Expanding -- */\r\n const handleEnter = (elem) => {\r\n elem.style[computedDimension()] = \"0\";\r\n local.onEnter?.(elem);\r\n };\r\n const handleEntering = (elem) => {\r\n const scroll = `scroll${computedDimension()[0].toUpperCase()}${computedDimension().slice(1)}`;\r\n elem.style[computedDimension()] = `${elem[scroll]}px`;\r\n local.onEntering?.(elem);\r\n };\r\n const handleEntered = (elem) => {\r\n // @ts-ignore\r\n elem.style[computedDimension()] = null;\r\n local.onEntered?.(elem);\r\n };\r\n /* -- Collapsing -- */\r\n const handleExit = (elem) => {\r\n elem.style[computedDimension()] = `${local.getDimensionValue(computedDimension(), elem)}px`;\r\n // @ts-ignore\r\n triggerBrowserReflow(elem);\r\n local.onExit?.(elem);\r\n };\r\n const handleExiting = (elem) => {\r\n // @ts-ignore\r\n elem.style[computedDimension()] = null;\r\n local.onExiting?.(elem);\r\n };\r\n const resolvedChildren = children(() => local.children);\r\n let prevClasses;\r\n return (\r\n {((state, innerProps) => {\r\n const el = resolvedChildren();\r\n innerProps.ref(el);\r\n const newClasses = classNames(local.class, collapseStyles[state], computedDimension() === \"width\" && \"collapse-horizontal\");\r\n resolveClasses(el, prevClasses, newClasses);\r\n prevClasses = newClasses;\r\n return el;\r\n })}\r\n );\r\n};\r\nexport default Collapse;\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/Fade.tsx\r\nimport { children, mergeProps, splitProps } from \"solid-js\";\r\nimport { ENTERED, ENTERING } from \"solid-react-transition\";\r\nimport TransitionWrapper from \"./TransitionWrapper\";\r\nimport transitionEndListener from \"./transitionEndListener\";\r\nimport triggerBrowserReflow from \"./triggerBrowserReflow\";\r\nimport classNames from \"./classnames\";\r\nimport { resolveClasses } from \"solid-bootstrap-core\";\r\nconst defaultProps = {\r\n in: false,\r\n timeout: 300,\r\n mountOnEnter: false,\r\n unmountOnExit: false,\r\n appear: false,\r\n};\r\nconst fadeStyles = {\r\n [ENTERING]: \"show\",\r\n [ENTERED]: \"show\",\r\n};\r\nconst Fade = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"class\",\r\n \"children\",\r\n \"transitionClasses\",\r\n ]);\r\n const handleEnter = (node, isAppearing) => {\r\n triggerBrowserReflow(node);\r\n props.onEnter?.(node, isAppearing);\r\n };\r\n let resolvedChildren;\r\n let prevClasses;\r\n return (\r\n {((status, innerProps) => {\r\n // lazily resolve children first time to avoid hydration errors\r\n if (!resolvedChildren)\r\n resolvedChildren = children(() => local.children);\r\n let el = resolvedChildren();\r\n while (typeof el === \"function\")\r\n el = el();\r\n innerProps.ref(el);\r\n const newClasses = classNames(\"fade\", local.class, \r\n // @ts-ignore\r\n fadeStyles?.[status], local.transitionClasses?.[status]);\r\n resolveClasses(el, prevClasses, newClasses);\r\n prevClasses = newClasses;\r\n return el;\r\n })}\r\n );\r\n};\r\nexport default Fade;\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/CloseButton.tsx\r\nimport { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nconst defaultProps = {\r\n \"aria-label\": \"Close\",\r\n};\r\nconst CloseButton = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"class\", \"variant\"]);\r\n return ();\r\n};\r\nexport default CloseButton;\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/divWithClassName.tsx\r\nimport classNames from \"./classnames\";\r\nexport const divWithClass = (c) => (p) => {\r\n return ;\r\n};\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/createWithBsPrefix.tsx\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { mergeProps, splitProps } from \"solid-js\";\r\nimport { Dynamic } from \"solid-js/web\";\r\n// TODO: emstricten & fix the typing here! `createWithBsPrefix...`\r\nexport function createWithBsPrefix(prefix, { Component, defaultProps = {} } = {}) {\r\n const BsComponent = (p) => {\r\n const [local, props] = splitProps(mergeProps({ as: Component }, defaultProps, p), [\r\n \"class\",\r\n \"bsPrefix\",\r\n \"as\",\r\n ]);\r\n const resolvedPrefix = useBootstrapPrefix(local.bsPrefix, prefix);\r\n return ();\r\n };\r\n return BsComponent;\r\n}\r\n","// ported from https://github.com/react-bootstrap/react-bootstrap/blob/f11723114d532cfce840417834a73733a8436414/src/Alert.tsx\r\nimport { mergeProps, Show, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { Anchor, createControlledProp } from \"solid-bootstrap-core\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport Fade from \"./Fade\";\r\nimport CloseButton from \"./CloseButton\";\r\nimport { divWithClass } from \"./divWithClass\";\r\nimport { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nconst DivStyledAsH4 = divWithClass(\"h4\");\r\nconst AlertHeading = createWithBsPrefix(\"alert-heading\", {\r\n Component: DivStyledAsH4,\r\n});\r\nconst AlertLink = createWithBsPrefix(\"alert-link\", {\r\n Component: Anchor,\r\n});\r\nconst defaultProps = {\r\n variant: \"primary\",\r\n defaultShow: true,\r\n transition: Fade,\r\n closeLabel: \"Close alert\",\r\n};\r\nconst Alert = (uncontrolledProps) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, uncontrolledProps), [\r\n \"bsPrefix\",\r\n \"children\",\r\n \"defaultShow\",\r\n \"show\",\r\n \"closeLabel\",\r\n \"closeVariant\",\r\n \"class\",\r\n \"children\",\r\n \"variant\",\r\n \"onClose\",\r\n \"dismissible\",\r\n \"transition\",\r\n ]);\r\n const [show, onClose] = createControlledProp(() => local.show, () => local.defaultShow, local.onClose);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"alert\");\r\n const handleClose = (e) => {\r\n if (onClose) {\r\n onClose(false, e);\r\n }\r\n };\r\n const Transition = (local.transition === true ? Fade : local.transition);\r\n const alert = () => (\r\n {local.dismissible && ()}\r\n {local.children}\r\n );\r\n return (\r\n \r\n {alert}\r\n \r\n );\r\n};\r\nexport default Object.assign(Alert, {\r\n Link: AlertLink,\r\n Heading: AlertHeading,\r\n});\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"span\",\r\n bg: \"primary\",\r\n pill: false,\r\n};\r\nconst Badge = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"bg\",\r\n \"pill\",\r\n \"text\",\r\n \"class\",\r\n ]);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"badge\");\r\n return ();\r\n};\r\nexport default Badge;\r\n","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import addClass from \"dom-helpers/addClass\";\r\nimport css from \"dom-helpers/css\";\r\nimport qsa from \"dom-helpers/querySelectorAll\";\r\nimport removeClass from \"dom-helpers/removeClass\";\r\nimport { ModalManager } from \"solid-bootstrap-core\";\r\nconst Selector = {\r\n FIXED_CONTENT: \".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",\r\n STICKY_CONTENT: \".sticky-top\",\r\n NAVBAR_TOGGLER: \".navbar-toggler\",\r\n};\r\nexport class BootstrapModalManager extends ModalManager {\r\n adjustAndStore(prop, element, adjust) {\r\n const actual = element.style[prop];\r\n // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\r\n // @ts-ignore\r\n element.dataset[prop] = actual;\r\n css(element, {\r\n [prop]: `${parseFloat(css(element, prop)) + adjust}px`,\r\n });\r\n }\r\n restore(prop, element) {\r\n // @ts-ignore\r\n const value = element.dataset[prop];\r\n if (value !== undefined) {\r\n // @ts-ignore\r\n delete element.dataset[prop];\r\n css(element, { [prop]: value });\r\n }\r\n }\r\n setContainerStyle(containerState) {\r\n super.setContainerStyle(containerState);\r\n const container = this.getElement();\r\n addClass(container, \"modal-open\");\r\n if (!containerState.scrollBarWidth)\r\n return;\r\n const paddingProp = this.isRTL ? \"paddingLeft\" : \"paddingRight\";\r\n const marginProp = this.isRTL ? \"marginLeft\" : \"marginRight\";\r\n qsa(container, Selector.FIXED_CONTENT).forEach((el) => this.adjustAndStore(paddingProp, el, containerState.scrollBarWidth));\r\n qsa(container, Selector.STICKY_CONTENT).forEach((el) => this.adjustAndStore(marginProp, el, -containerState.scrollBarWidth));\r\n qsa(container, Selector.NAVBAR_TOGGLER).forEach((el) => this.adjustAndStore(marginProp, el, containerState.scrollBarWidth));\r\n }\r\n removeContainerStyle(containerState) {\r\n super.removeContainerStyle(containerState);\r\n const container = this.getElement();\r\n removeClass(container, \"modal-open\");\r\n const paddingProp = this.isRTL ? \"paddingLeft\" : \"paddingRight\";\r\n const marginProp = this.isRTL ? \"marginLeft\" : \"marginRight\";\r\n qsa(container, Selector.FIXED_CONTENT).forEach((el) => this.restore(paddingProp, el));\r\n qsa(container, Selector.STICKY_CONTENT).forEach((el) => this.restore(marginProp, el));\r\n qsa(container, Selector.NAVBAR_TOGGLER).forEach((el) => this.restore(marginProp, el));\r\n }\r\n}\r\nlet sharedManager;\r\nexport function getSharedManager(options) {\r\n if (!sharedManager)\r\n sharedManager = new BootstrapModalManager(options);\r\n return sharedManager;\r\n}\r\nexport default BootstrapModalManager;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useButtonProps } from \"solid-bootstrap-core\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n variant: \"primary\",\r\n active: false,\r\n disabled: false,\r\n};\r\nconst Button = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"children\",\r\n \"variant\",\r\n \"size\",\r\n \"active\",\r\n \"class\",\r\n ]);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"btn\");\r\n const [buttonProps, { tagName }] = useButtonProps({\r\n tagName: local.as,\r\n ...props,\r\n });\r\n return (\r\n {local.children}\r\n );\r\n};\r\nexport default Button;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"img\",\r\n};\r\nconst CardImg = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"class\",\r\n \"variant\",\r\n ]);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"card-img\");\r\n return ();\r\n};\r\nexport default CardImg;\r\n","import { createContext } from \"solid-js\";\r\nconst context = createContext(null);\r\nexport default context;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport CardHeaderContext from \"./CardHeaderContext\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"div\",\r\n};\r\nconst CardHeader = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"as\", \"bsPrefix\", \"class\"]);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"card-header\");\r\n const contextValue = {\r\n get cardHeaderBsPrefix() {\r\n return prefix;\r\n },\r\n };\r\n return (\r\n \r\n );\r\n};\r\nexport default CardHeader;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nimport { divWithClass } from \"./divWithClass\";\r\nimport CardImg from \"./CardImg\";\r\nimport CardHeader from \"./CardHeader\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst DivStyledAsH5 = divWithClass(\"h5\");\r\nconst DivStyledAsH6 = divWithClass(\"h6\");\r\nconst CardBody = createWithBsPrefix(\"card-body\");\r\nconst CardTitle = createWithBsPrefix(\"card-title\", {\r\n Component: DivStyledAsH5,\r\n});\r\nconst CardSubtitle = createWithBsPrefix(\"card-subtitle\", {\r\n Component: DivStyledAsH6,\r\n});\r\nconst CardLink = createWithBsPrefix(\"card-link\", { Component: \"a\" });\r\nconst CardText = createWithBsPrefix(\"card-text\", { Component: \"p\" });\r\nconst CardFooter = createWithBsPrefix(\"card-footer\");\r\nconst CardImgOverlay = createWithBsPrefix(\"card-img-overlay\");\r\nconst defaultProps = {\r\n as: \"div\",\r\n body: false,\r\n};\r\nconst Card = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"class\",\r\n \"bg\",\r\n \"text\",\r\n \"border\",\r\n \"body\",\r\n \"children\",\r\n ]);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"card\");\r\n return (\r\n {local.body ? {local.children} : local.children}\r\n );\r\n};\r\nexport default Object.assign(Card, {\r\n Img: CardImg,\r\n Title: CardTitle,\r\n Subtitle: CardSubtitle,\r\n Body: CardBody,\r\n Link: CardLink,\r\n Text: CardText,\r\n Header: CardHeader,\r\n Footer: CardFooter,\r\n ImgOverlay: CardImgOverlay,\r\n});\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix, useBootstrapBreakpoints } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst DEVICE_SIZES = [\"xxl\", \"xl\", \"lg\", \"md\", \"sm\", \"xs\"];\r\nexport function useCol(o) {\r\n const [local, props] = splitProps(o, [\"as\", \"bsPrefix\", \"class\"]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"col\");\r\n const breakpoints = useBootstrapBreakpoints();\r\n const spans = [];\r\n const classes = [];\r\n breakpoints().forEach((brkPoint) => {\r\n const propValue = props[brkPoint];\r\n let span;\r\n let offset;\r\n let order;\r\n if (typeof propValue === \"object\" && propValue != null) {\r\n ({ span, offset, order } = propValue);\r\n }\r\n else {\r\n span = propValue;\r\n }\r\n const infix = brkPoint !== \"xs\" ? `-${brkPoint}` : \"\";\r\n if (span)\r\n spans.push(span === true ? `${bsPrefix}${infix}` : `${bsPrefix}${infix}-${span}`);\r\n if (order != null)\r\n classes.push(`order${infix}-${order}`);\r\n if (offset != null)\r\n classes.push(`offset${infix}-${offset}`);\r\n });\r\n const [_, cleanedProps] = splitProps(props, DEVICE_SIZES);\r\n return [\r\n mergeProps(cleanedProps, {\r\n get class() {\r\n return classNames(local.class, ...spans, ...classes);\r\n },\r\n }),\r\n {\r\n get as() {\r\n return local.as;\r\n },\r\n get bsPrefix() {\r\n return bsPrefix;\r\n },\r\n get spans() {\r\n return spans;\r\n },\r\n },\r\n ];\r\n}\r\nconst Col = (p) => {\r\n const [useProps, meta] = useCol(p);\r\n const [local, colProps] = splitProps(useProps, [\"class\"]);\r\n return ();\r\n};\r\nexport default Col;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"div\",\r\n fluid: false,\r\n};\r\nconst Container = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"fluid\",\r\n \"class\",\r\n ]);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"container\");\r\n const suffix = typeof local.fluid === \"string\" ? `-${local.fluid}` : \"-fluid\";\r\n return ();\r\n};\r\nexport default Container;\r\n","import { createContext } from \"solid-js\";\r\nconst DropdownContext = createContext({});\r\nexport default DropdownContext;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { Anchor, useDropdownItem, } from \"solid-bootstrap-core\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: Anchor,\r\n disabled: false,\r\n};\r\nconst DropdownItem = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"class\",\r\n \"eventKey\",\r\n \"disabled\",\r\n \"onClick\",\r\n \"active\",\r\n ]);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"dropdown-item\");\r\n const [dropdownItemProps, meta] = useDropdownItem({\r\n get key() {\r\n return local.eventKey;\r\n },\r\n get href() {\r\n return props.href;\r\n },\r\n get disabled() {\r\n return local.disabled;\r\n },\r\n get onClick() {\r\n return local.onClick;\r\n },\r\n get active() {\r\n return local.active;\r\n },\r\n });\r\n return ();\r\n};\r\nexport default DropdownItem;\r\n","import { createContext } from \"solid-js\";\r\nconst context = createContext(null);\r\nexport default context;\r\n","import { createContext } from \"solid-js\";\r\nconst context = createContext(null);\r\nexport default context;\r\n","import { mergeProps, Show, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useDropdownMenu } from \"solid-bootstrap-core\";\r\nimport DropdownContext from \"./DropdownContext\";\r\nimport InputGroupContext from \"./InputGroupContext\";\r\nimport NavbarContext from \"./NavbarContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"div\",\r\n flip: true,\r\n};\r\nexport function getDropdownMenuPlacement(alignEnd, dropDirection, isRTL) {\r\n const topStart = isRTL ? \"top-end\" : \"top-start\";\r\n const topEnd = isRTL ? \"top-start\" : \"top-end\";\r\n const bottomStart = isRTL ? \"bottom-end\" : \"bottom-start\";\r\n const bottomEnd = isRTL ? \"bottom-start\" : \"bottom-end\";\r\n const leftStart = isRTL ? \"right-start\" : \"left-start\";\r\n const leftEnd = isRTL ? \"right-end\" : \"left-end\";\r\n const rightStart = isRTL ? \"left-start\" : \"right-start\";\r\n const rightEnd = isRTL ? \"left-end\" : \"right-end\";\r\n let placement = alignEnd ? bottomEnd : bottomStart;\r\n if (dropDirection === \"up\")\r\n placement = alignEnd ? topEnd : topStart;\r\n else if (dropDirection === \"end\")\r\n placement = alignEnd ? rightEnd : rightStart;\r\n else if (dropDirection === \"start\")\r\n placement = alignEnd ? leftEnd : leftStart;\r\n return placement;\r\n}\r\nconst DropdownMenu = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"class\",\r\n \"align\",\r\n \"rootCloseEvent\",\r\n \"flip\",\r\n \"show\",\r\n \"renderOnMount\",\r\n \"popperConfig\",\r\n \"ref\",\r\n \"variant\",\r\n ]);\r\n let alignEnd = false;\r\n const isNavbar = useContext(NavbarContext);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"dropdown-menu\");\r\n const dropdownContext = useContext(DropdownContext);\r\n const align = local.align || dropdownContext.align;\r\n const isInputGroup = useContext(InputGroupContext);\r\n const alignClasses = [];\r\n if (align) {\r\n if (typeof align === \"object\") {\r\n const keys = Object.keys(align);\r\n if (keys.length) {\r\n const brkPoint = keys[0];\r\n // @ts-ignore\r\n const direction = align[brkPoint];\r\n // .dropdown-menu-end is required for responsively aligning\r\n // left in addition to align left classes.\r\n alignEnd = direction === \"start\";\r\n alignClasses.push(`${prefix}-${brkPoint}-${direction}`);\r\n }\r\n }\r\n else if (align === \"end\") {\r\n alignEnd = true;\r\n }\r\n }\r\n const [menuProps, menuMeta] = useDropdownMenu({\r\n get flip() {\r\n return local.flip;\r\n },\r\n get rootCloseEvent() {\r\n return local.rootCloseEvent;\r\n },\r\n get show() {\r\n return local.show;\r\n },\r\n get usePopper() {\r\n return !isNavbar && alignClasses.length === 0;\r\n },\r\n get offset() {\r\n return [0, 2];\r\n },\r\n get popperConfig() {\r\n return local.popperConfig;\r\n },\r\n get placement() {\r\n return getDropdownMenuPlacement(alignEnd, dropdownContext.drop, dropdownContext.isRTL);\r\n },\r\n });\r\n const mergedRef = (ref) => {\r\n menuProps.ref?.(ref);\r\n local.ref?.(ref);\r\n };\r\n // createEffect(() => {\r\n // // Popper's initial position for the menu is incorrect when\r\n // // renderOnMount=true. Need to call update() to correct it.\r\n // if (menuMeta.show) menuMeta.popper?.update();\r\n // });\r\n const extendedMenuProps = mergeProps(menuProps, \r\n // For custom components provide additional, non-DOM, props;\r\n typeof local.as !== \"string\"\r\n ? {\r\n get show() {\r\n return menuMeta.show;\r\n },\r\n get close() {\r\n return () => menuMeta.toggle?.(false);\r\n },\r\n get align() {\r\n return align;\r\n },\r\n }\r\n : {});\r\n // we don't need the default popper style,\r\n // menus are display: none when not shown.\r\n const style = () => menuMeta.popper?.placement\r\n ? { ...props.style, ...menuProps.style }\r\n : props.style;\r\n return (\r\n \r\n );\r\n};\r\nexport default DropdownMenu;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { DropdownContext, useDropdownToggle } from \"solid-bootstrap-core\";\r\nimport Button from \"./Button\";\r\nimport InputGroupContext from \"./InputGroupContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: Button,\r\n};\r\nconst DropdownToggle = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"split\",\r\n \"class\",\r\n \"childBsPrefix\",\r\n \"ref\",\r\n ]);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"dropdown-toggle\");\r\n const dropdownContext = useContext(DropdownContext);\r\n const isInputGroup = useContext(InputGroupContext);\r\n if (local.childBsPrefix !== undefined) {\r\n props.bsPrefix = local.childBsPrefix;\r\n }\r\n const [toggleProps] = useDropdownToggle();\r\n const [toggleLocal, toggleOther] = splitProps(toggleProps, [\"ref\"]);\r\n const mergedRef = (ref) => {\r\n toggleLocal.ref?.(ref);\r\n local.ref?.(ref);\r\n };\r\n // This intentionally forwards size and variant (if set) to the\r\n // underlying component, to allow it to render size and style variants.\r\n return ();\r\n};\r\nexport default DropdownToggle;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { createControlledProp, Dropdown as BaseDropdown, } from \"solid-bootstrap-core\";\r\nimport DropdownContext from \"./DropdownContext\";\r\nimport DropdownItem from \"./DropdownItem\";\r\nimport DropdownMenu, { getDropdownMenuPlacement } from \"./DropdownMenu\";\r\nimport DropdownToggle from \"./DropdownToggle\";\r\nimport InputGroupContext from \"./InputGroupContext\";\r\nimport { useBootstrapPrefix, useIsRTL } from \"./ThemeProvider\";\r\nimport { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst DropdownHeader = createWithBsPrefix(\"dropdown-header\", {\r\n defaultProps: { role: \"heading\" },\r\n});\r\nconst DropdownDivider = createWithBsPrefix(\"dropdown-divider\", {\r\n Component: \"hr\",\r\n defaultProps: { role: \"separator\" },\r\n});\r\nconst DropdownItemText = createWithBsPrefix(\"dropdown-item-text\", {\r\n Component: \"span\",\r\n});\r\nconst defaultProps = {\r\n as: \"div\",\r\n navbar: false,\r\n align: \"start\",\r\n autoClose: true,\r\n};\r\nconst Dropdown = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"drop\",\r\n \"show\",\r\n \"defaultShow\",\r\n \"class\",\r\n \"align\",\r\n \"onSelect\",\r\n \"onToggle\",\r\n \"focusFirstItemOnShow\",\r\n \"navbar\",\r\n \"autoClose\",\r\n ]);\r\n const [show, onToggle] = createControlledProp(() => local.show, () => local.defaultShow, local.onToggle);\r\n const isInputGroup = useContext(InputGroupContext);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"dropdown\");\r\n const isRTL = useIsRTL();\r\n const isClosingPermitted = (source) => {\r\n // autoClose=false only permits close on button click\r\n if (local.autoClose === false)\r\n return source === \"click\";\r\n // autoClose=inside doesn't permit close on rootClose\r\n if (local.autoClose === \"inside\")\r\n return source !== \"rootClose\";\r\n // autoClose=outside doesn't permit close on select\r\n if (local.autoClose === \"outside\")\r\n return source !== \"select\";\r\n return true;\r\n };\r\n const handleToggle = (nextShow, meta) => {\r\n if (\r\n // null option below is for \"bug?\" in Solid returning null instead of document\r\n (meta.originalEvent.currentTarget === document ||\r\n meta.originalEvent.currentTarget === null) &&\r\n (meta.source !== \"keydown\" || meta.originalEvent.key === \"Escape\")) {\r\n meta.source = \"rootClose\";\r\n }\r\n if (isClosingPermitted(meta.source))\r\n onToggle?.(nextShow, meta);\r\n };\r\n const alignEnd = local.align === \"end\";\r\n const placement = getDropdownMenuPlacement(alignEnd, local.drop, isRTL());\r\n const contextValue = {\r\n get align() {\r\n return local.align;\r\n },\r\n get drop() {\r\n return local.drop;\r\n },\r\n get isRTL() {\r\n return isRTL();\r\n },\r\n };\r\n return (\r\n \r\n {isInputGroup ? (props.children) : ()}\r\n \r\n );\r\n};\r\nexport default Object.assign(Dropdown, {\r\n Toggle: DropdownToggle,\r\n Menu: DropdownMenu,\r\n Item: DropdownItem,\r\n ItemText: DropdownItemText,\r\n Divider: DropdownDivider,\r\n Header: DropdownHeader,\r\n});\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"div\",\r\n type: \"valid\",\r\n tooltip: false,\r\n};\r\nconst Feedback = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"class\",\r\n \"type\",\r\n \"tooltip\",\r\n ]);\r\n return ();\r\n};\r\nexport default Feedback;\r\n","import { createContext } from \"solid-js\";\r\nconst FormContext = createContext({});\r\nexport default FormContext;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nimport FormContext from \"./FormContext\";\r\nconst defaultProps = {\r\n as: \"div\",\r\n};\r\nconst FormGroup = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"as\", \"controlId\"]);\r\n const context = {\r\n get controlId() {\r\n return local.controlId;\r\n },\r\n };\r\n return (\r\n \r\n );\r\n};\r\nexport default FormGroup;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport FormGroup from \"./FormGroup\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nconst defaultProps = {};\r\nconst FloatingLabel = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"bsPrefix\",\r\n \"class\",\r\n \"children\",\r\n \"controlId\",\r\n \"label\",\r\n ]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-floating\");\r\n return (\r\n {local.children}\r\n {local.label}\r\n );\r\n};\r\nexport default FloatingLabel;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport FormContext from \"./FormContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"input\",\r\n type: \"checkbox\",\r\n isValid: false,\r\n isInvalid: false,\r\n};\r\nconst FormCheckInput = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"id\",\r\n \"bsPrefix\",\r\n \"class\",\r\n \"type\",\r\n \"isValid\",\r\n \"isInvalid\",\r\n ]);\r\n const formContext = useContext(FormContext);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-check-input\");\r\n return ();\r\n};\r\nexport default FormCheckInput;\r\n","import { createContext } from \"solid-js\";\r\nconst FormCheckContext = createContext();\r\nexport default FormCheckContext;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport FormContext from \"./FormContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport FormCheckContext from \"./FormCheckContext\";\r\nconst defaultProps = {};\r\nconst FormCheckLabel = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"bsPrefix\", \"class\", \"for\"]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-check-label\");\r\n const formContext = useContext(FormContext);\r\n const formCheckContext = useContext(FormCheckContext);\r\n formCheckContext?.setHasFormCheckLabel?.(true);\r\n return ();\r\n};\r\nexport default FormCheckLabel;\r\n","import { children, createMemo, createSignal, mergeProps, splitProps, useContext, } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport Feedback from \"./Feedback\";\r\nimport FormCheckInput from \"./FormCheckInput\";\r\nimport FormCheckLabel from \"./FormCheckLabel\";\r\nimport FormContext from \"./FormContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport FormCheckContext from \"./FormCheckContext\";\r\nconst defaultProps = {\r\n as: \"input\",\r\n title: \"\",\r\n type: \"checkbox\",\r\n inline: false,\r\n disabled: false,\r\n isValid: false,\r\n isInvalid: false,\r\n feedbackTooltip: false,\r\n};\r\nconst FormCheck = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"id\",\r\n \"bsPrefix\",\r\n \"bsSwitchPrefix\",\r\n \"inline\",\r\n \"disabled\",\r\n \"isValid\",\r\n \"isInvalid\",\r\n \"feedbackTooltip\",\r\n \"feedback\",\r\n \"feedbackType\",\r\n \"class\",\r\n \"style\",\r\n \"title\",\r\n \"type\",\r\n \"label\",\r\n \"children\",\r\n ]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-check\");\r\n const bsSwitchPrefix = useBootstrapPrefix(local.bsSwitchPrefix, \"form-switch\");\r\n const [hasFormCheckLabel, setHasFormCheckLabel] = createSignal(false);\r\n const formContext = useContext(FormContext);\r\n const innerFormContext = {\r\n get controlId() {\r\n return local.id || formContext.controlId;\r\n },\r\n };\r\n const resolvedChildren = children(() => local.children);\r\n const hasLabel = createMemo(() => (local.label != null && local.label !== false && !resolvedChildren()) || hasFormCheckLabel());\r\n return (\r\n \r\n \r\n {resolvedChildren() || (<>\r\n \r\n {hasLabel() && {local.label}}\r\n {local.feedback && (\r\n {local.feedback}\r\n )}\r\n >)}\r\n \r\n \r\n );\r\n};\r\nexport default Object.assign(FormCheck, {\r\n Input: FormCheckInput,\r\n Label: FormCheckLabel,\r\n});\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport Feedback from \"./Feedback\";\r\nimport FormContext from \"./FormContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"input\",\r\n isValid: false,\r\n isInvalid: false,\r\n};\r\nconst FormControl = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"type\",\r\n \"size\",\r\n \"htmlSize\",\r\n \"id\",\r\n \"class\",\r\n \"isValid\",\r\n \"isInvalid\",\r\n \"plaintext\",\r\n \"readOnly\",\r\n ]);\r\n const formContext = useContext(FormContext);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-control\");\r\n const classes = () => {\r\n let classes;\r\n if (local.plaintext) {\r\n classes = { [`${bsPrefix}-plaintext`]: true };\r\n }\r\n else {\r\n classes = {\r\n [bsPrefix]: true,\r\n [`${bsPrefix}-${local.size}`]: local.size,\r\n };\r\n }\r\n return classes;\r\n };\r\n return ();\r\n};\r\nexport default Object.assign(FormControl, { Feedback });\r\n","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nexport default createWithBsPrefix(\"form-floating\");\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport Col from \"./Col\";\r\nimport FormContext from \"./FormContext\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"label\",\r\n column: false,\r\n visuallyHidden: false,\r\n};\r\nconst FormLabel = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"column\",\r\n \"visuallyHidden\",\r\n \"class\",\r\n \"htmlFor\",\r\n ]);\r\n const formContext = useContext(FormContext);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-label\");\r\n let columnClass = \"col-form-label\";\r\n if (typeof local.column === \"string\")\r\n columnClass = `${columnClass} ${columnClass}-${local.column}`;\r\n const classes = () => classNames(local.class, bsPrefix, local.visuallyHidden && \"visually-hidden\", local.column && columnClass);\r\n return !!local.column ? () : ();\r\n};\r\nexport default FormLabel;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport FormContext from \"./FormContext\";\r\nconst defaultProps = {\r\n as: \"img\",\r\n};\r\nconst FormRange = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"bsPrefix\", \"class\", \"id\"]);\r\n const formContext = useContext(FormContext);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-range\");\r\n return ();\r\n};\r\nexport default FormRange;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport FormContext from \"./FormContext\";\r\nconst defaultProps = {\r\n isValid: false,\r\n isInvalid: false,\r\n};\r\nconst FormSelect = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"bsPrefix\",\r\n \"size\",\r\n \"htmlSize\",\r\n \"class\",\r\n \"isValid\",\r\n \"isInvalid\",\r\n \"id\",\r\n ]);\r\n const formContext = useContext(FormContext);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-select\");\r\n return ();\r\n};\r\nexport default FormSelect;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"small\",\r\n};\r\nconst FormText = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"class\",\r\n \"muted\",\r\n ]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"form-text\");\r\n return ();\r\n};\r\nexport default FormText;\r\n","import FormCheck from \"./FormCheck\";\r\nconst Switch = (props) => ();\r\nexport default Object.assign(Switch, {\r\n Input: FormCheck.Input,\r\n Label: FormCheck.Label,\r\n});\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport FormCheck from \"./FormCheck\";\r\nimport FormControl from \"./FormControl\";\r\nimport FormFloating from \"./FormFloating\";\r\nimport FormGroup from \"./FormGroup\";\r\nimport FormLabel from \"./FormLabel\";\r\nimport FormRange from \"./FormRange\";\r\nimport FormSelect from \"./FormSelect\";\r\nimport FormText from \"./FormText\";\r\nimport Switch from \"./Switch\";\r\nimport FloatingLabel from \"./FloatingLabel\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"form\",\r\n};\r\nconst Form = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"as\", \"class\", \"validated\"]);\r\n return ();\r\n};\r\nexport default Object.assign(Form, {\r\n Group: FormGroup,\r\n Control: FormControl,\r\n Floating: FormFloating,\r\n Check: FormCheck,\r\n Switch,\r\n Label: FormLabel,\r\n Text: FormText,\r\n Range: FormRange,\r\n Select: FormSelect,\r\n FloatingLabel,\r\n});\r\n","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nexport default createWithBsPrefix(\"modal-body\");\r\n","import { createContext } from \"solid-js\";\r\nconst ModalContext = createContext({\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n onHide() { },\r\n});\r\nexport default ModalContext;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nconst defaultProps = {};\r\nconst ModalDialog = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"bsPrefix\",\r\n \"class\",\r\n \"contentClass\",\r\n \"centered\",\r\n \"size\",\r\n \"fullscreen\",\r\n \"children\",\r\n \"scrollable\",\r\n ]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"modal\");\r\n const dialogClass = `${bsPrefix}-dialog`;\r\n const fullScreenClass = typeof local.fullscreen === \"string\"\r\n ? `${bsPrefix}-fullscreen-${local.fullscreen}`\r\n : `${bsPrefix}-fullscreen`;\r\n return (\r\n \r\n {local.children}\r\n \r\n );\r\n};\r\nexport default ModalDialog;\r\n","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nexport default createWithBsPrefix(\"modal-footer\");\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport CloseButton from \"./CloseButton\";\r\nimport ModalContext from \"./ModalContext\";\r\nconst defaultProps = {\r\n closeLabel: \"Close\",\r\n closeButton: false,\r\n};\r\nconst AbstractModalHeader = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"closeLabel\",\r\n \"closeVariant\",\r\n \"closeButton\",\r\n \"onHide\",\r\n \"children\",\r\n ]);\r\n const context = useContext(ModalContext);\r\n const handleClick = () => {\r\n context?.onHide();\r\n local.onHide?.();\r\n };\r\n return (\r\n {local.children}\r\n\r\n {local.closeButton && ()}\r\n );\r\n};\r\nexport default AbstractModalHeader;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport AbstractModalHeader from \"./AbstractModalHeader\";\r\nconst defaultProps = {\r\n closeLabel: \"Close\",\r\n closeButton: false,\r\n};\r\nconst ModalHeader = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"bsPrefix\", \"class\"]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"modal-header\");\r\n return ;\r\n};\r\nexport default ModalHeader;\r\n","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nimport { divWithClass } from \"./divWithClass\";\r\nconst DivStyledAsH4 = divWithClass(\"h4\");\r\nexport default createWithBsPrefix(\"modal-title\", { Component: DivStyledAsH4 });\r\n","import { createSignal, mergeProps, onCleanup, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport addEventListener from \"dom-helpers/addEventListener\";\r\nimport canUseDOM from \"dom-helpers/canUseDOM\";\r\nimport ownerDocument from \"dom-helpers/ownerDocument\";\r\nimport removeEventListener from \"dom-helpers/removeEventListener\";\r\nimport getScrollbarSize from \"dom-helpers/scrollbarSize\";\r\nimport transitionEnd from \"dom-helpers/transitionEnd\";\r\nimport { Modal as BaseModal, } from \"solid-bootstrap-core\";\r\nimport { getSharedManager } from \"./BootstrapModalManager\";\r\nimport Fade from \"./Fade\";\r\nimport ModalBody from \"./ModalBody\";\r\nimport ModalContext from \"./ModalContext\";\r\nimport ModalDialog from \"./ModalDialog\";\r\nimport ModalFooter from \"./ModalFooter\";\r\nimport ModalHeader from \"./ModalHeader\";\r\nimport ModalTitle from \"./ModalTitle\";\r\nimport { useBootstrapPrefix, useIsRTL } from \"./ThemeProvider\";\r\nimport { Dynamic, isServer } from \"solid-js/web\";\r\nconst defaultProps = {\r\n show: false,\r\n backdrop: true,\r\n keyboard: true,\r\n autoFocus: true,\r\n enforceFocus: true,\r\n restoreFocus: true,\r\n animation: true,\r\n dialogAs: ModalDialog,\r\n};\r\n/* eslint-disable no-use-before-define, react/no-multi-comp */\r\nfunction DialogTransition(props) {\r\n return ;\r\n}\r\nfunction BackdropTransition(props) {\r\n return ;\r\n}\r\n/* eslint-enable no-use-before-define */\r\nconst Modal = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"bsPrefix\",\r\n \"class\",\r\n \"style\",\r\n \"dialogClass\",\r\n \"contentClass\",\r\n \"children\",\r\n \"dialogAs\",\r\n \"aria-labelledby\",\r\n /* BaseModal props */\r\n \"show\",\r\n \"animation\",\r\n \"backdrop\",\r\n \"keyboard\",\r\n \"onEscapeKeyDown\",\r\n \"onShow\",\r\n \"onHide\",\r\n \"container\",\r\n \"autoFocus\",\r\n \"enforceFocus\",\r\n \"restoreFocus\",\r\n \"restoreFocusOptions\",\r\n \"onEntered\",\r\n \"onExit\",\r\n \"onExiting\",\r\n \"onEnter\",\r\n \"onEntering\",\r\n \"onExited\",\r\n \"backdropClass\",\r\n \"manager\",\r\n ]);\r\n const [modalStyle, setStyle] = createSignal({});\r\n const [animateStaticModal, setAnimateStaticModal] = createSignal(false);\r\n let waitingForMouseUpRef = false;\r\n let ignoreBackdropClickRef = false;\r\n let removeStaticModalAnimationRef = null;\r\n let modal;\r\n const isRTL = useIsRTL();\r\n const mergedRef = (ref) => {\r\n modal = ref;\r\n props.ref?.(ref);\r\n };\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"modal\");\r\n const modalContext = {\r\n get onHide() {\r\n return local.onHide;\r\n },\r\n };\r\n function getModalManager() {\r\n if (local.manager)\r\n return local.manager;\r\n return getSharedManager({ isRTL: isRTL() });\r\n }\r\n function updateDialogStyle(node) {\r\n if (!canUseDOM)\r\n return;\r\n const containerIsOverflowing = getModalManager().getScrollbarWidth() > 0;\r\n const modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\r\n setStyle({\r\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\r\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined,\r\n });\r\n }\r\n const handleWindowResize = () => {\r\n if (modal) {\r\n updateDialogStyle(modal.dialog);\r\n }\r\n };\r\n onCleanup(() => {\r\n if (!isServer) {\r\n removeEventListener(window, \"resize\", handleWindowResize);\r\n }\r\n removeStaticModalAnimationRef?.();\r\n });\r\n // We prevent the modal from closing during a drag by detecting where the\r\n // the click originates from. If it starts in the modal and then ends outside\r\n // don't close.\r\n const handleDialogMouseDown = () => {\r\n waitingForMouseUpRef = true;\r\n };\r\n const handleMouseUp = (e) => {\r\n if (waitingForMouseUpRef && modal && e.target === modal.dialog) {\r\n ignoreBackdropClickRef = true;\r\n }\r\n waitingForMouseUpRef = false;\r\n };\r\n const handleStaticModalAnimation = () => {\r\n setAnimateStaticModal(true);\r\n removeStaticModalAnimationRef = transitionEnd(modal.dialog, () => {\r\n setAnimateStaticModal(false);\r\n });\r\n };\r\n const handleStaticBackdropClick = (e) => {\r\n if (e.target !== e.currentTarget) {\r\n return;\r\n }\r\n handleStaticModalAnimation();\r\n };\r\n const handleClick = (e) => {\r\n if (local.backdrop === \"static\") {\r\n handleStaticBackdropClick(e);\r\n return;\r\n }\r\n if (ignoreBackdropClickRef || e.target !== e.currentTarget) {\r\n ignoreBackdropClickRef = false;\r\n return;\r\n }\r\n local.onHide?.();\r\n };\r\n const handleEscapeKeyDown = (e) => {\r\n if (!local.keyboard && local.backdrop === \"static\") {\r\n // Call preventDefault to stop modal from closing in restart ui,\r\n // then play our animation.\r\n e.preventDefault();\r\n handleStaticModalAnimation();\r\n }\r\n else if (local.keyboard && local.onEscapeKeyDown) {\r\n local.onEscapeKeyDown(e);\r\n }\r\n };\r\n const handleEnter = (node, ...args) => {\r\n if (node) {\r\n // @ts-ignore\r\n node.style.display = \"block\";\r\n updateDialogStyle(node);\r\n }\r\n local.onEnter?.(node, ...args);\r\n };\r\n const handleExit = (...args) => {\r\n removeStaticModalAnimationRef?.();\r\n local.onExit?.(...args);\r\n };\r\n const handleEntering = (...args) => {\r\n local.onEntering?.(...args);\r\n if (!isServer) {\r\n // FIXME: This should work even when animation is disabled.\r\n addEventListener(window, \"resize\", handleWindowResize);\r\n }\r\n };\r\n const handleExited = (node) => {\r\n if (node)\r\n node.style.display = \"\"; // RHL removes it sometimes\r\n local.onExited?.(node);\r\n if (!isServer) {\r\n // FIXME: This should work even when animation is disabled.\r\n removeEventListener(window, \"resize\", handleWindowResize);\r\n }\r\n };\r\n const renderBackdrop = (backdropProps) => ();\r\n const baseModalStyle = () => {\r\n let s = { ...local.style, ...modalStyle() };\r\n // Sets `display` always block when `animation` is false\r\n if (!local.animation) {\r\n s.display = \"block\";\r\n }\r\n return s;\r\n };\r\n const renderDialog = (dialogProps) => (\r\n \r\n {local.children}\r\n \r\n );\r\n return (\r\n \r\n );\r\n};\r\nexport default Object.assign(Modal, {\r\n Body: ModalBody,\r\n Header: ModalHeader,\r\n Title: ModalTitle,\r\n Footer: ModalFooter,\r\n Dialog: ModalDialog,\r\n TRANSITION_DURATION: 300,\r\n BACKDROP_TRANSITION_DURATION: 150,\r\n});\r\n","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nexport default createWithBsPrefix(\"nav-item\");\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { Anchor, useNavItem, makeEventKey, } from \"solid-bootstrap-core\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: Anchor,\r\n disabled: false,\r\n};\r\nconst NavLink = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"class\",\r\n \"active\",\r\n \"eventKey\",\r\n ]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"nav-link\");\r\n const [navItemProps, meta] = useNavItem(mergeProps({\r\n get key() {\r\n return makeEventKey(local.eventKey, props.href);\r\n },\r\n get active() {\r\n return local.active;\r\n },\r\n }, props));\r\n return ();\r\n};\r\nexport default NavLink;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { createControlledProp, Nav as BaseNav, } from \"solid-bootstrap-core\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport NavbarContext from \"./NavbarContext\";\r\nimport CardHeaderContext from \"./CardHeaderContext\";\r\nimport NavItem from \"./NavItem\";\r\nimport NavLink from \"./NavLink\";\r\nconst defaultProps = {\r\n as: \"div\",\r\n justify: false,\r\n fill: false,\r\n};\r\nconst Nav = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"activeKey\",\r\n \"defaultActiveKey\",\r\n \"bsPrefix\",\r\n \"variant\",\r\n \"fill\",\r\n \"justify\",\r\n \"navbar\",\r\n \"navbarScroll\",\r\n \"class\",\r\n \"onSelect\",\r\n ]);\r\n const [activeKey, onSelect] = createControlledProp(() => local.activeKey, () => local.defaultActiveKey, local.onSelect);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"nav\");\r\n let navbarBsPrefix;\r\n let cardHeaderBsPrefix;\r\n let isNavbar = false;\r\n const navbarContext = useContext(NavbarContext);\r\n const cardHeaderContext = useContext(CardHeaderContext);\r\n if (navbarContext) {\r\n navbarBsPrefix = navbarContext.bsPrefix;\r\n isNavbar = local.navbar == null ? true : local.navbar;\r\n }\r\n else if (cardHeaderContext) {\r\n ({ cardHeaderBsPrefix } = cardHeaderContext);\r\n }\r\n return ();\r\n};\r\nexport default Object.assign(Nav, {\r\n Item: NavItem,\r\n Link: NavLink,\r\n});\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {};\r\nconst NavbarBrand = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"as\", \"bsPrefix\", \"class\"]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"navbar-brand\");\r\n return ();\r\n};\r\nexport default NavbarBrand;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport Collapse from \"./Collapse\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport NavbarContext from \"./NavbarContext\";\r\nimport classnames from \"./classnames\";\r\nconst defaultProps = {};\r\nconst NavbarCollapse = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"bsPrefix\",\r\n \"class\",\r\n \"children\",\r\n \"ref\",\r\n ]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"navbar-collapse\");\r\n const context = useContext(NavbarContext);\r\n return (\r\n \r\n {local.children}\r\n \r\n );\r\n};\r\nexport default NavbarCollapse;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport NavbarContext from \"./NavbarContext\";\r\nimport { callEventHandler } from \"solid-bootstrap-core\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"button\",\r\n label: \"Toggle navigation\",\r\n};\r\nconst NavbarToggle = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"class\",\r\n \"children\",\r\n \"label\",\r\n \"onClick\",\r\n ]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"navbar-toggler\");\r\n const context = useContext(NavbarContext);\r\n const handleClick = (e) => {\r\n callEventHandler(local.onClick, e);\r\n context?.onToggle?.();\r\n };\r\n if (local.as === \"button\") {\r\n props.type = \"button\";\r\n }\r\n return (\r\n {local.children || }\r\n );\r\n};\r\nexport default NavbarToggle;\r\n","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nexport default createWithBsPrefix(\"offcanvas-body\");\r\n","import { children, mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { ENTERED, ENTERING, EXITING, } from \"solid-react-transition\";\r\nimport transitionEndListener from \"./transitionEndListener\";\r\nimport TransitionWrapper from \"./TransitionWrapper\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { resolveClasses } from \"solid-bootstrap-core\";\r\nconst defaultProps = {\r\n in: false,\r\n mountOnEnter: false,\r\n unmountOnExit: false,\r\n appear: false,\r\n};\r\nconst transitionStyles = {\r\n [ENTERING]: \"show\",\r\n [ENTERED]: \"show\",\r\n};\r\nconst OffcanvasToggling = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"bsPrefix\", \"class\", \"children\"]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"offcanvas\");\r\n const resolvedChildren = children(() => local.children);\r\n let prevClasses;\r\n return (\r\n {((status, innerProps) => {\r\n const el = resolvedChildren();\r\n innerProps.ref(el);\r\n const newClasses = classNames(local.class, (status === ENTERING || status === EXITING) && `${bsPrefix}-toggling`, \r\n // @ts-ignore\r\n transitionStyles[status]);\r\n resolveClasses(el, prevClasses, newClasses);\r\n prevClasses = newClasses;\r\n return el;\r\n })}\r\n );\r\n};\r\nexport default OffcanvasToggling;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport AbstractModalHeader from \"./AbstractModalHeader\";\r\nconst defaultProps = {\r\n closeLabel: \"Close\",\r\n closeButton: false,\r\n};\r\nconst OffcanvasHeader = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"bsPrefix\", \"class\"]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"offcanvas-header\");\r\n return ;\r\n};\r\nexport default OffcanvasHeader;\r\n","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nimport { divWithClass } from \"./divWithClass\";\r\nconst DivStyledAsH5 = divWithClass(\"h5\");\r\nexport default createWithBsPrefix(\"offcanvas-title\", {\r\n Component: DivStyledAsH5,\r\n});\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { Modal as BaseModal, } from \"solid-bootstrap-core\";\r\nimport Fade from \"./Fade\";\r\nimport OffcanvasBody from \"./OffcanvasBody\";\r\nimport OffcanvasToggling from \"./OffcanvasToggling\";\r\nimport ModalContext from \"./ModalContext\";\r\nimport NavbarContext from \"./NavbarContext\";\r\nimport OffcanvasHeader from \"./OffcanvasHeader\";\r\nimport OffcanvasTitle from \"./OffcanvasTitle\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { BootstrapModalManager, getSharedManager } from \"./BootstrapModalManager\";\r\nconst defaultProps = {\r\n show: false,\r\n backdrop: true,\r\n keyboard: true,\r\n scroll: false,\r\n autoFocus: true,\r\n enforceFocus: true,\r\n restoreFocus: true,\r\n placement: \"start\",\r\n};\r\nfunction DialogTransition(props) {\r\n return ;\r\n}\r\nfunction BackdropTransition(props) {\r\n return ;\r\n}\r\nconst Offcanvas = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"bsPrefix\",\r\n \"class\",\r\n \"children\",\r\n \"aria-labelledby\",\r\n \"placement\",\r\n /*BaseModal props */\r\n \"show\",\r\n \"backdrop\",\r\n \"keyboard\",\r\n \"scroll\",\r\n \"onEscapeKeyDown\",\r\n \"onShow\",\r\n \"onHide\",\r\n \"container\",\r\n \"autoFocus\",\r\n \"enforceFocus\",\r\n \"restoreFocus\",\r\n \"restoreFocusOptions\",\r\n \"onEntered\",\r\n \"onExit\",\r\n \"onExiting\",\r\n \"onEnter\",\r\n \"onEntering\",\r\n \"onExited\",\r\n \"backdropClass\",\r\n \"manager\",\r\n \"ref\",\r\n ]);\r\n let modalManager;\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"offcanvas\");\r\n const navbarContext = useContext(NavbarContext);\r\n const handleHide = () => {\r\n navbarContext?.onToggle?.();\r\n local.onHide?.();\r\n };\r\n const modalContext = {\r\n get onHide() {\r\n return handleHide;\r\n },\r\n };\r\n function getModalManager() {\r\n if (local.manager)\r\n return local.manager;\r\n if (local.scroll) {\r\n // Have to use a different modal manager since the shared\r\n // one handles overflow.\r\n if (!modalManager)\r\n modalManager = new BootstrapModalManager({\r\n handleContainerOverflow: false,\r\n });\r\n return modalManager;\r\n }\r\n return getSharedManager();\r\n }\r\n const handleEnter = (node, ...args) => {\r\n if (node)\r\n node.style.visibility = \"visible\";\r\n local.onEnter?.(node, ...args);\r\n };\r\n const handleExited = (node, ...args) => {\r\n if (node)\r\n node.style.visibility = \"\";\r\n local.onExited?.(...args);\r\n };\r\n const renderBackdrop = (backdropProps) => (\r\n {props.children}\r\n );\r\n const renderDialog = (dialogProps) => (\r\n {local.children}\r\n );\r\n return (\r\n \r\n );\r\n};\r\nexport default Object.assign(Offcanvas, {\r\n Body: OffcanvasBody,\r\n Header: OffcanvasHeader,\r\n Title: OffcanvasTitle,\r\n});\r\n","import { useContext } from \"solid-js\";\r\nimport Offcanvas from \"./Offcanvas\";\r\nimport NavbarContext from \"./NavbarContext\";\r\nconst NavbarOffcanvas = (props) => {\r\n const context = useContext(NavbarContext);\r\n return ();\r\n};\r\nexport default NavbarOffcanvas;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { createControlledProp, SelectableContext } from \"solid-bootstrap-core\";\r\nimport { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nimport NavbarBrand from \"./NavbarBrand\";\r\nimport NavbarCollapse from \"./NavbarCollapse\";\r\nimport NavbarToggle from \"./NavbarToggle\";\r\nimport NavbarOffcanvas from \"./NavbarOffcanvas\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport NavbarContext from \"./NavbarContext\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst NavbarText = createWithBsPrefix(\"navbar-text\", {\r\n Component: \"span\",\r\n});\r\nconst defaultProps = {\r\n as: \"nav\",\r\n expand: true,\r\n variant: \"light\",\r\n collapseOnSelect: false,\r\n};\r\nconst Navbar = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"expand\",\r\n \"variant\",\r\n \"bg\",\r\n \"fixed\",\r\n \"sticky\",\r\n \"class\",\r\n \"expanded\",\r\n \"defaultExpanded\",\r\n \"onToggle\",\r\n \"onSelect\",\r\n \"collapseOnSelect\",\r\n ]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"navbar\");\r\n const [expanded, onToggle] = createControlledProp(() => local.expanded, () => local.defaultExpanded, local.onToggle);\r\n const handleCollapse = (...args) => {\r\n local.onSelect?.(...args);\r\n if (local.collapseOnSelect && expanded()) {\r\n onToggle?.(false);\r\n }\r\n };\r\n const expandClass = () => {\r\n let expandClass = `${bsPrefix}-expand`;\r\n if (typeof local.expand === \"string\")\r\n expandClass = `${expandClass}-${local.expand}`;\r\n return expandClass;\r\n };\r\n const navbarContext = {\r\n get onToggle() {\r\n return () => onToggle?.(!expanded());\r\n },\r\n bsPrefix,\r\n get expanded() {\r\n return !!expanded();\r\n },\r\n };\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nexport default Object.assign(Navbar, {\r\n Brand: NavbarBrand,\r\n Collapse: NavbarCollapse,\r\n Offcanvas: NavbarOffcanvas,\r\n Text: NavbarText,\r\n Toggle: NavbarToggle,\r\n});\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport Dropdown from \"./Dropdown\";\r\nimport NavLink from \"./NavLink\";\r\nconst defaultProps = {};\r\nconst NavDropdown = (p) => {\r\n /* NavItem has no additional logic, it's purely presentational. Can set nav item class here to support \"as\" */\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"id\",\r\n \"title\",\r\n \"children\",\r\n \"bsPrefix\",\r\n \"class\",\r\n \"rootCloseEvent\",\r\n \"menuRole\",\r\n \"disabled\",\r\n \"active\",\r\n \"renderMenuOnMount\",\r\n \"menuVariant\",\r\n ]);\r\n const navItemPrefix = useBootstrapPrefix(undefined, \"nav-item\");\r\n return (\r\n \r\n {local.title}\r\n \r\n\r\n \r\n {local.children}\r\n \r\n );\r\n};\r\nexport default Object.assign(NavDropdown, {\r\n Item: Dropdown.Item,\r\n ItemText: Dropdown.ItemText,\r\n Divider: Dropdown.Divider,\r\n Header: Dropdown.Header,\r\n});\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix, useBootstrapBreakpoints } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"div\",\r\n};\r\nconst Row = (p) => {\r\n const breakpoints = useBootstrapBreakpoints();\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"class\",\r\n ...breakpoints(),\r\n ]);\r\n const decoratedBsPrefix = useBootstrapPrefix(local.bsPrefix, \"row\");\r\n const sizePrefix = `${decoratedBsPrefix}-cols`;\r\n const classes = [];\r\n breakpoints().forEach((brkPoint) => {\r\n const propValue = local[brkPoint];\r\n let cols;\r\n if (propValue != null && typeof propValue === \"object\") {\r\n ({ cols } = propValue);\r\n }\r\n else {\r\n cols = propValue;\r\n }\r\n const infix = brkPoint !== \"xs\" ? `-${brkPoint}` : \"\";\r\n if (cols != null)\r\n classes.push(`${sizePrefix}${infix}-${cols}`);\r\n });\r\n return ();\r\n};\r\nexport default Row;\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {\r\n as: \"div\",\r\n};\r\nconst Spinner = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"as\",\r\n \"bsPrefix\",\r\n \"variant\",\r\n \"animation\",\r\n \"size\",\r\n \"class\",\r\n ]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"spinner\");\r\n const bsSpinnerPrefix = `${bsPrefix}-${local.animation}`;\r\n return ();\r\n};\r\nexport default Spinner;\r\n","import Fade from \"./Fade\";\r\nexport function getTabTransitionComponent(transition) {\r\n if (typeof transition === \"boolean\") {\r\n return transition ? Fade : undefined;\r\n }\r\n return transition;\r\n}\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport { Tabs } from \"solid-bootstrap-core\";\r\nimport { getTabTransitionComponent } from \"./getTabTransitionComponent\";\r\nconst defaultProps = {};\r\nconst TabContainer = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"transition\"]);\r\n return ();\r\n};\r\nexport default TabContainer;\r\n","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nexport default createWithBsPrefix(\"tab-content\");\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { SelectableContext, TabContext, useTabPanel } from \"solid-bootstrap-core\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport Fade from \"./Fade\";\r\nimport { getTabTransitionComponent } from \"./getTabTransitionComponent\";\r\nimport { Dynamic } from \"solid-js/web\";\r\nconst defaultProps = {};\r\nconst TabPane = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\"bsPrefix\", \"transition\"]);\r\n const [panelProps, meta] = useTabPanel(mergeProps(props, {\r\n get transition() {\r\n return getTabTransitionComponent(local.transition);\r\n },\r\n }));\r\n const [panelLocal, rest] = splitProps(panelProps, [\r\n \"as\",\r\n \"class\",\r\n \"mountOnEnter\",\r\n \"unmountOnExit\",\r\n ]);\r\n const prefix = useBootstrapPrefix(local.bsPrefix, \"tab-pane\");\r\n const Transition = meta.transition || Fade;\r\n // We provide an empty the TabContext so ``s in ``s don't\r\n // conflict with the top level one.\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default TabPane;\r\n","import TabContainer from \"./TabContainer\";\r\nimport TabContent from \"./TabContent\";\r\nimport TabPane from \"./TabPane\";\r\nconst Tab = (props) => {\r\n // special return value expected by Tabs\r\n return props;\r\n};\r\nexport default Object.assign(Tab, {\r\n Container: TabContainer,\r\n Content: TabContent,\r\n Pane: TabPane,\r\n});\r\n","import { mergeProps, splitProps } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nconst defaultProps = {};\r\nconst Table = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"bsPrefix\",\r\n \"class\",\r\n \"striped\",\r\n \"bordered\",\r\n \"borderless\",\r\n \"hover\",\r\n \"size\",\r\n \"variant\",\r\n \"responsive\",\r\n ]);\r\n const decoratedBsPrefix = useBootstrapPrefix(local.bsPrefix, \"table\");\r\n const classes = () => classNames(local.class, decoratedBsPrefix, local.variant && `${decoratedBsPrefix}-${local.variant}`, local.size && `${decoratedBsPrefix}-${local.size}`, local.striped && `${decoratedBsPrefix}-striped`, local.bordered && `${decoratedBsPrefix}-bordered`, local.borderless && `${decoratedBsPrefix}-borderless`, local.hover && `${decoratedBsPrefix}-hover`);\r\n const table = () => ;\r\n if (local.responsive) {\r\n let responsiveClass = `${decoratedBsPrefix}-responsive`;\r\n if (typeof local.responsive === \"string\") {\r\n responsiveClass = `${responsiveClass}-${local.responsive}`;\r\n }\r\n return {table};\r\n }\r\n return table;\r\n};\r\nexport default Table;\r\n","import { mergeProps, splitProps, children, createMemo, For } from \"solid-js\";\r\nimport { createControlledProp, Tabs as BaseTabs, } from \"solid-bootstrap-core\";\r\nimport Nav from \"./Nav\";\r\nimport NavLink from \"./NavLink\";\r\nimport NavItem from \"./NavItem\";\r\nimport TabContent from \"./TabContent\";\r\nimport TabPane from \"./TabPane\";\r\nimport { getTabTransitionComponent } from \"./getTabTransitionComponent\";\r\nconst defaultProps = {\r\n variant: \"tabs\",\r\n mountOnEnter: false,\r\n unmountOnExit: false,\r\n};\r\nfunction getDefaultActiveKey(tabs) {\r\n let defaultActiveKey = undefined;\r\n tabs.forEach((tab) => {\r\n if (defaultActiveKey == null) {\r\n defaultActiveKey = tab.eventKey;\r\n }\r\n });\r\n return defaultActiveKey;\r\n}\r\nfunction RenderTab(props) {\r\n if (props.title == null) {\r\n return null;\r\n }\r\n return (\r\n \r\n {props.title}\r\n \r\n );\r\n}\r\nconst Tabs = (p) => {\r\n const tabsAccessor = children(() => p.children);\r\n const tabs = createMemo(() => {\r\n const t = tabsAccessor();\r\n return (Array.isArray(t) ? t : [t]);\r\n });\r\n const [local, props] = splitProps(mergeProps({\r\n get activeKey() {\r\n return getDefaultActiveKey(tabs());\r\n },\r\n }, defaultProps, p), [\r\n \"id\",\r\n \"onSelect\",\r\n \"transition\",\r\n \"mountOnEnter\",\r\n \"unmountOnExit\",\r\n \"children\",\r\n \"activeKey\",\r\n \"defaultActiveKey\",\r\n \"mountOnEnter\",\r\n ]);\r\n const [activeKey, onSelect] = createControlledProp(() => p.activeKey, () => p.defaultActiveKey ?? local.defaultActiveKey, local.onSelect);\r\n return (\r\n \r\n {(tabProps) => }\r\n \r\n\r\n \r\n \r\n {(tabProps) => {\r\n const [_, childProps] = splitProps(tabProps, [\r\n \"title\",\r\n \"disabled\",\r\n \"tabClass\",\r\n \"tabAttrs\",\r\n ]);\r\n return ;\r\n }}\r\n \r\n \r\n );\r\n};\r\nexport default Tabs;\r\n","import Fade from \"./Fade\";\r\nimport { ENTERING, EXITING } from \"solid-react-transition\";\r\nconst fadeStyles = {\r\n [ENTERING]: \"showing\",\r\n [EXITING]: \"showing show\",\r\n};\r\nconst ToastFade = (props) => ;\r\nexport default ToastFade;\r\n","import { createContext } from \"solid-js\";\r\nconst ToastContext = createContext({\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n onClose() { },\r\n});\r\nexport default ToastContext;\r\n","import { mergeProps, splitProps, useContext } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport CloseButton from \"./CloseButton\";\r\nimport ToastContext from \"./ToastContext\";\r\nconst defaultProps = {\r\n closeLabel: \"Close\",\r\n closeButton: true,\r\n};\r\nconst ToastHeader = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"bsPrefix\",\r\n \"closeLabel\",\r\n \"closeVariant\",\r\n \"closeButton\",\r\n \"class\",\r\n \"children\",\r\n ]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"toast-header\");\r\n const context = useContext(ToastContext);\r\n const handleClick = (e) => {\r\n context?.onClose?.(e);\r\n };\r\n return (\r\n {local.children}\r\n\r\n {local.closeButton && ()}\r\n );\r\n};\r\nexport default ToastHeader;\r\n","import { createWithBsPrefix } from \"./createWithBsPrefix\";\r\nexport default createWithBsPrefix(\"toast-body\");\r\n","import { createEffect, createMemo, getOwner, mergeProps, onCleanup, runWithOwner, splitProps, } from \"solid-js\";\r\nimport classNames from \"./classnames\";\r\nimport ToastFade from \"./ToastFade\";\r\nimport ToastHeader from \"./ToastHeader\";\r\nimport ToastBody from \"./ToastBody\";\r\nimport { useBootstrapPrefix } from \"./ThemeProvider\";\r\nimport ToastContext from \"./ToastContext\";\r\nconst defaultProps = {\r\n transition: ToastFade,\r\n show: true,\r\n animation: true,\r\n delay: 5000,\r\n autohide: false,\r\n};\r\nconst Toast = (p) => {\r\n const [local, props] = splitProps(mergeProps(defaultProps, p), [\r\n \"bsPrefix\",\r\n \"class\",\r\n \"transition\",\r\n \"show\",\r\n \"animation\",\r\n \"delay\",\r\n \"autohide\",\r\n \"onClose\",\r\n \"bg\",\r\n ]);\r\n const bsPrefix = useBootstrapPrefix(local.bsPrefix, \"toast\");\r\n const owner = getOwner();\r\n // We use refs for these, because we don't want to restart the autohide\r\n // timer in case these values change.\r\n let delayRef = local.delay;\r\n let onCloseRef = local.onClose;\r\n createEffect(() => {\r\n delayRef = local.delay;\r\n onCloseRef = local.onClose;\r\n });\r\n let autohideTimeout;\r\n const autohideToast = createMemo(() => !!(local.autohide && local.show));\r\n const autohideFunc = createMemo(() => () => {\r\n if (autohideToast()) {\r\n onCloseRef?.();\r\n }\r\n });\r\n createEffect(() => {\r\n // Only reset timer if show or autohide changes.\r\n if (autohideToast()) {\r\n window.clearTimeout(autohideTimeout);\r\n autohideTimeout = window.setTimeout(autohideFunc(), delayRef);\r\n }\r\n });\r\n onCleanup(() => {\r\n window.clearTimeout(autohideTimeout);\r\n });\r\n const toastContext = {\r\n get onClose() {\r\n return local.onClose;\r\n },\r\n };\r\n const hasAnimation = !!(local.transition && local.animation);\r\n const Transition = local.transition;\r\n const ToastInner = () => runWithOwner(owner, () => ());\r\n return (\r\n {hasAnimation && local.transition ? (\r\n \r\n ) : ()}\r\n );\r\n};\r\nexport default Object.assign(Toast, {\r\n Body: ToastBody,\r\n Header: ToastHeader,\r\n});\r\n","import { isServer } from \"solid-js/web\";\nexport function createBeforeLeave() {\n let listeners = new Set();\n function subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }\n let ignore = false;\n function confirm(to, options) {\n if (ignore)\n return !(ignore = false);\n const e = {\n to,\n options,\n defaultPrevented: false,\n preventDefault: () => (e.defaultPrevented = true)\n };\n for (const l of listeners)\n l.listener({\n ...e,\n from: l.location,\n retry: (force) => {\n force && (ignore = true);\n l.navigate(to, { ...options, resolve: false });\n }\n });\n return !e.defaultPrevented;\n }\n return {\n subscribe,\n confirm\n };\n}\n// The following supports browser initiated blocking (eg back/forward)\nlet depth;\nexport function saveCurrentDepth() {\n if (!window.history.state || window.history.state._depth == null) {\n window.history.replaceState({ ...window.history.state, _depth: window.history.length - 1 }, \"\");\n }\n depth = window.history.state._depth;\n}\nif (!isServer) {\n saveCurrentDepth();\n}\nexport function keepDepth(state) {\n return {\n ...state,\n _depth: window.history.state && window.history.state._depth\n };\n}\nexport function notifyIfNotBlocked(notify, block) {\n let ignore = false;\n return () => {\n const prevDepth = depth;\n saveCurrentDepth();\n const delta = prevDepth == null ? null : depth - prevDepth;\n if (ignore) {\n ignore = false;\n return;\n }\n if (delta && block(delta)) {\n ignore = true;\n window.history.go(-delta);\n }\n else {\n notify();\n }\n };\n}\n","import { createMemo, getOwner, runWithOwner } from \"solid-js\";\nconst hasSchemeRegex = /^(?:[a-z0-9]+:)?\\/\\//i;\nconst trimPathRegex = /^\\/+|(\\/)\\/+$/g;\nexport const mockBase = \"http://sr\";\nexport function normalizePath(path, omitSlash = false) {\n const s = path.replace(trimPathRegex, \"$1\");\n return s ? (omitSlash || /^[?#]/.test(s) ? s : \"/\" + s) : \"\";\n}\nexport function resolvePath(base, path, from) {\n if (hasSchemeRegex.test(path)) {\n return undefined;\n }\n const basePath = normalizePath(base);\n const fromPath = from && normalizePath(from);\n let result = \"\";\n if (!fromPath || path.startsWith(\"/\")) {\n result = basePath;\n }\n else if (fromPath.toLowerCase().indexOf(basePath.toLowerCase()) !== 0) {\n result = basePath + fromPath;\n }\n else {\n result = fromPath;\n }\n return (result || \"/\") + normalizePath(path, !result);\n}\nexport function invariant(value, message) {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nexport function joinPaths(from, to) {\n return normalizePath(from).replace(/\\/*(\\*.*)?$/g, \"\") + normalizePath(to);\n}\nexport function extractSearchParams(url) {\n const params = {};\n url.searchParams.forEach((value, key) => {\n if (key in params) {\n if (Array.isArray(params[key]))\n params[key].push(value);\n else\n params[key] = [params[key], value];\n }\n else\n params[key] = value;\n });\n return params;\n}\nexport function createMatcher(path, partial, matchFilters) {\n const [pattern, splat] = path.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n const len = segments.length;\n return (location) => {\n const locSegments = location.split(\"/\").filter(Boolean);\n const lenDiff = locSegments.length - len;\n if (lenDiff < 0 || (lenDiff > 0 && splat === undefined && !partial)) {\n return null;\n }\n const match = {\n path: len ? \"\" : \"/\",\n params: {}\n };\n const matchFilter = (s) => matchFilters === undefined ? undefined : matchFilters[s];\n for (let i = 0; i < len; i++) {\n const segment = segments[i];\n const dynamic = segment[0] === \":\";\n const locSegment = dynamic ? locSegments[i] : locSegments[i].toLowerCase();\n const key = dynamic ? segment.slice(1) : segment.toLowerCase();\n if (dynamic && matchSegment(locSegment, matchFilter(key))) {\n match.params[key] = locSegment;\n }\n else if (dynamic || !matchSegment(locSegment, key)) {\n return null;\n }\n match.path += `/${locSegment}`;\n }\n if (splat) {\n const remainder = lenDiff ? locSegments.slice(-lenDiff).join(\"/\") : \"\";\n if (matchSegment(remainder, matchFilter(splat))) {\n match.params[splat] = remainder;\n }\n else {\n return null;\n }\n }\n return match;\n };\n}\nfunction matchSegment(input, filter) {\n const isEqual = (s) => s === input;\n if (filter === undefined) {\n return true;\n }\n else if (typeof filter === \"string\") {\n return isEqual(filter);\n }\n else if (typeof filter === \"function\") {\n return filter(input);\n }\n else if (Array.isArray(filter)) {\n return filter.some(isEqual);\n }\n else if (filter instanceof RegExp) {\n return filter.test(input);\n }\n return false;\n}\nexport function scoreRoute(route) {\n const [pattern, splat] = route.pattern.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n return segments.reduce((score, segment) => score + (segment.startsWith(\":\") ? 2 : 3), segments.length - (splat === undefined ? 0 : 1));\n}\nexport function createMemoObject(fn) {\n const map = new Map();\n const owner = getOwner();\n return new Proxy({}, {\n get(_, property) {\n if (!map.has(property)) {\n runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property])));\n }\n return map.get(property)();\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n },\n ownKeys() {\n return Reflect.ownKeys(fn());\n }\n });\n}\nexport function mergeSearchString(search, params) {\n const merged = new URLSearchParams(search);\n Object.entries(params).forEach(([key, value]) => {\n if (value == null || value === \"\" || (value instanceof Array && !value.length)) {\n merged.delete(key);\n }\n else {\n if (value instanceof Array) {\n // Delete all instances of the key before appending\n merged.delete(key);\n value.forEach(v => {\n merged.append(key, String(v));\n });\n }\n else {\n merged.set(key, String(value));\n }\n }\n });\n const s = merged.toString();\n return s ? `?${s}` : \"\";\n}\nexport function expandOptionals(pattern) {\n let match = /(\\/?\\:[^\\/]+)\\?/.exec(pattern);\n if (!match)\n return [pattern];\n let prefix = pattern.slice(0, match.index);\n let suffix = pattern.slice(match.index + match[0].length);\n const prefixes = [prefix, (prefix += match[1])];\n // This section handles adjacent optional params. We don't actually want all permuations since\n // that will lead to equivalent routes which have the same number of params. For example\n // `/:a?/:b?/:c`? only has the unique expansion: `/`, `/:a`, `/:a/:b`, `/:a/:b/:c` and we can\n // discard `/:b`, `/:c`, `/:b/:c` by building them up in order and not recursing. This also helps\n // ensure predictability where earlier params have precidence.\n while ((match = /^(\\/\\:[^\\/]+)\\?/.exec(suffix))) {\n prefixes.push((prefix += match[1]));\n suffix = suffix.slice(match[0].length);\n }\n return expandOptionals(suffix).reduce((results, expansion) => [...results, ...prefixes.map(p => p + expansion)], []);\n}\n","import { runWithOwner, batch } from \"solid-js\";\nimport { createComponent, createContext, createMemo, createRenderEffect, createSignal, on, onCleanup, untrack, useContext, startTransition, resetErrorBoundaries } from \"solid-js\";\nimport { isServer, getRequestEvent } from \"solid-js/web\";\nimport { createBeforeLeave } from \"./lifecycle.js\";\nimport { mockBase, createMemoObject, extractSearchParams, invariant, resolvePath, createMatcher, joinPaths, scoreRoute, mergeSearchString, expandOptionals } from \"./utils.js\";\nconst MAX_REDIRECTS = 100;\nexport const RouterContextObj = createContext();\nexport const RouteContextObj = createContext();\nexport const useRouter = () => invariant(useContext(RouterContextObj), \" and 'use' router primitives can be only used inside a Route.\");\nlet TempRoute;\nexport const useRoute = () => TempRoute || useContext(RouteContextObj) || useRouter().base;\nexport const useResolvedPath = (path) => {\n const route = useRoute();\n return createMemo(() => route.resolvePath(path()));\n};\nexport const useHref = (to) => {\n const router = useRouter();\n return createMemo(() => {\n const to_ = to();\n return to_ !== undefined ? router.renderPath(to_) : to_;\n });\n};\nexport const useNavigate = () => useRouter().navigatorFactory();\nexport const useLocation = () => useRouter().location;\nexport const useIsRouting = () => useRouter().isRouting;\nexport const usePreloadRoute = () => {\n const pre = useRouter().preloadRoute;\n return (url, options = {}) => pre(url instanceof URL ? url : new URL(url, mockBase), options.preloadData);\n};\nexport const useMatch = (path, matchFilters) => {\n const location = useLocation();\n const matchers = createMemo(() => expandOptionals(path()).map(path => createMatcher(path, undefined, matchFilters)));\n return createMemo(() => {\n for (const matcher of matchers()) {\n const match = matcher(location.pathname);\n if (match)\n return match;\n }\n });\n};\nexport const useCurrentMatches = () => useRouter().matches;\nexport const useParams = () => useRouter().params;\nexport const useSearchParams = () => {\n const location = useLocation();\n const navigate = useNavigate();\n const setSearchParams = (params, options) => {\n const searchString = untrack(() => mergeSearchString(location.search, params) + location.hash);\n navigate(searchString, {\n scroll: false,\n resolve: false,\n ...options\n });\n };\n return [location.query, setSearchParams];\n};\nexport const useBeforeLeave = (listener) => {\n const s = useRouter().beforeLeave.subscribe({\n listener,\n location: useLocation(),\n navigate: useNavigate()\n });\n onCleanup(s);\n};\nexport function createRoutes(routeDef, base = \"\") {\n const { component, preload, load, children, info } = routeDef;\n const isLeaf = !children || (Array.isArray(children) && !children.length);\n const shared = {\n key: routeDef,\n component,\n preload: preload || load,\n info\n };\n return asArray(routeDef.path).reduce((acc, originalPath) => {\n for (const expandedPath of expandOptionals(originalPath)) {\n const path = joinPaths(base, expandedPath);\n let pattern = isLeaf ? path : path.split(\"/*\", 1)[0];\n pattern = pattern\n .split(\"/\")\n .map((s) => {\n return s.startsWith(\":\") || s.startsWith(\"*\") ? s : encodeURIComponent(s);\n })\n .join(\"/\");\n acc.push({\n ...shared,\n originalPath,\n pattern,\n matcher: createMatcher(pattern, !isLeaf, routeDef.matchFilters)\n });\n }\n return acc;\n }, []);\n}\nexport function createBranch(routes, index = 0) {\n return {\n routes,\n score: scoreRoute(routes[routes.length - 1]) * 10000 - index,\n matcher(location) {\n const matches = [];\n for (let i = routes.length - 1; i >= 0; i--) {\n const route = routes[i];\n const match = route.matcher(location);\n if (!match) {\n return null;\n }\n matches.unshift({\n ...match,\n route\n });\n }\n return matches;\n }\n };\n}\nfunction asArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function createBranches(routeDef, base = \"\", stack = [], branches = []) {\n const routeDefs = asArray(routeDef);\n for (let i = 0, len = routeDefs.length; i < len; i++) {\n const def = routeDefs[i];\n if (def && typeof def === \"object\") {\n if (!def.hasOwnProperty(\"path\"))\n def.path = \"\";\n const routes = createRoutes(def, base);\n for (const route of routes) {\n stack.push(route);\n const isEmptyArray = Array.isArray(def.children) && def.children.length === 0;\n if (def.children && !isEmptyArray) {\n createBranches(def.children, route.pattern, stack, branches);\n }\n else {\n const branch = createBranch([...stack], branches.length);\n branches.push(branch);\n }\n stack.pop();\n }\n }\n }\n // Stack will be empty on final return\n return stack.length ? branches : branches.sort((a, b) => b.score - a.score);\n}\nexport function getRouteMatches(branches, location) {\n for (let i = 0, len = branches.length; i < len; i++) {\n const match = branches[i].matcher(location);\n if (match) {\n return match;\n }\n }\n return [];\n}\nfunction createLocation(path, state, queryWrapper) {\n const origin = new URL(mockBase);\n const url = createMemo(prev => {\n const path_ = path();\n try {\n return new URL(path_, origin);\n }\n catch (err) {\n console.error(`Invalid path ${path_}`);\n return prev;\n }\n }, origin, {\n equals: (a, b) => a.href === b.href\n });\n const pathname = createMemo(() => url().pathname);\n const search = createMemo(() => url().search, true);\n const hash = createMemo(() => url().hash);\n const key = () => \"\";\n const queryFn = on(search, () => extractSearchParams(url()));\n return {\n get pathname() {\n return pathname();\n },\n get search() {\n return search();\n },\n get hash() {\n return hash();\n },\n get state() {\n return state();\n },\n get key() {\n return key();\n },\n query: queryWrapper ? queryWrapper(queryFn) : createMemoObject(queryFn)\n };\n}\nlet intent;\nexport function getIntent() {\n return intent;\n}\nlet inPreloadFn = false;\nexport function getInPreloadFn() {\n return inPreloadFn;\n}\nexport function setInPreloadFn(value) {\n inPreloadFn = value;\n}\nexport function createRouterContext(integration, branches, getContext, options = {}) {\n const { signal: [source, setSource], utils = {} } = integration;\n const parsePath = utils.parsePath || (p => p);\n const renderPath = utils.renderPath || (p => p);\n const beforeLeave = utils.beforeLeave || createBeforeLeave();\n const basePath = resolvePath(\"\", options.base || \"\");\n if (basePath === undefined) {\n throw new Error(`${basePath} is not a valid base path`);\n }\n else if (basePath && !source().value) {\n setSource({ value: basePath, replace: true, scroll: false });\n }\n const [isRouting, setIsRouting] = createSignal(false);\n // Keep track of last target, so that last call to transition wins\n let lastTransitionTarget;\n // Transition the location to a new value\n const transition = (newIntent, newTarget) => {\n if (newTarget.value === reference() && newTarget.state === state())\n return;\n if (lastTransitionTarget === undefined)\n setIsRouting(true);\n intent = newIntent;\n lastTransitionTarget = newTarget;\n startTransition(() => {\n if (lastTransitionTarget !== newTarget)\n return;\n setReference(lastTransitionTarget.value);\n setState(lastTransitionTarget.state);\n resetErrorBoundaries();\n if (!isServer)\n submissions[1]([]);\n }).finally(() => {\n if (lastTransitionTarget !== newTarget)\n return;\n // Batch, in order for isRouting and final source update to happen together\n batch(() => {\n intent = undefined;\n if (newIntent === \"navigate\")\n navigateEnd(lastTransitionTarget);\n setIsRouting(false);\n lastTransitionTarget = undefined;\n });\n });\n };\n const [reference, setReference] = createSignal(source().value);\n const [state, setState] = createSignal(source().state);\n const location = createLocation(reference, state, utils.queryWrapper);\n const referrers = [];\n const submissions = createSignal(isServer ? initFromFlash() : []);\n const matches = createMemo(() => {\n if (typeof options.transformUrl === \"function\") {\n return getRouteMatches(branches(), options.transformUrl(location.pathname));\n }\n return getRouteMatches(branches(), location.pathname);\n });\n const buildParams = () => {\n const m = matches();\n const params = {};\n for (let i = 0; i < m.length; i++) {\n Object.assign(params, m[i].params);\n }\n return params;\n };\n const params = utils.paramsWrapper\n ? utils.paramsWrapper(buildParams, branches)\n : createMemoObject(buildParams);\n const baseRoute = {\n pattern: basePath,\n path: () => basePath,\n outlet: () => null,\n resolvePath(to) {\n return resolvePath(basePath, to);\n }\n };\n // Create a native transition, when source updates\n createRenderEffect(on(source, source => transition(\"native\", source), { defer: true }));\n return {\n base: baseRoute,\n location,\n params,\n isRouting,\n renderPath,\n parsePath,\n navigatorFactory,\n matches,\n beforeLeave,\n preloadRoute,\n singleFlight: options.singleFlight === undefined ? true : options.singleFlight,\n submissions\n };\n function navigateFromRoute(route, to, options) {\n // Untrack in case someone navigates in an effect - don't want to track `reference` or route paths\n untrack(() => {\n if (typeof to === \"number\") {\n if (!to) {\n // A delta of 0 means stay at the current location, so it is ignored\n }\n else if (utils.go) {\n utils.go(to);\n }\n else {\n console.warn(\"Router integration does not support relative routing\");\n }\n return;\n }\n const queryOnly = !to || to[0] === \"?\";\n const { replace, resolve, scroll, state: nextState } = {\n replace: false,\n resolve: !queryOnly,\n scroll: true,\n ...options\n };\n const resolvedTo = resolve\n ? route.resolvePath(to)\n : resolvePath((queryOnly && location.pathname) || \"\", to);\n if (resolvedTo === undefined) {\n throw new Error(`Path '${to}' is not a routable path`);\n }\n else if (referrers.length >= MAX_REDIRECTS) {\n throw new Error(\"Too many redirects\");\n }\n const current = reference();\n if (resolvedTo !== current || nextState !== state()) {\n if (isServer) {\n const e = getRequestEvent();\n e && (e.response = { status: 302, headers: new Headers({ Location: resolvedTo }) });\n setSource({ value: resolvedTo, replace, scroll, state: nextState });\n }\n else if (beforeLeave.confirm(resolvedTo, options)) {\n referrers.push({ value: current, replace, scroll, state: state() });\n transition(\"navigate\", {\n value: resolvedTo,\n state: nextState\n });\n }\n }\n });\n }\n function navigatorFactory(route) {\n // Workaround for vite issue (https://github.com/vitejs/vite/issues/3803)\n route = route || useContext(RouteContextObj) || baseRoute;\n return (to, options) => navigateFromRoute(route, to, options);\n }\n function navigateEnd(next) {\n const first = referrers[0];\n if (first) {\n setSource({\n ...next,\n replace: first.replace,\n scroll: first.scroll\n });\n referrers.length = 0;\n }\n }\n function preloadRoute(url, preloadData) {\n const matches = getRouteMatches(branches(), url.pathname);\n const prevIntent = intent;\n intent = \"preload\";\n for (let match in matches) {\n const { route, params } = matches[match];\n route.component &&\n route.component.preload &&\n route.component.preload();\n const { preload } = route;\n inPreloadFn = true;\n preloadData &&\n preload &&\n runWithOwner(getContext(), () => preload({\n params,\n location: {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n query: extractSearchParams(url),\n state: null,\n key: \"\"\n },\n intent: \"preload\"\n }));\n inPreloadFn = false;\n }\n intent = prevIntent;\n }\n function initFromFlash() {\n const e = getRequestEvent();\n return (e && e.router && e.router.submission ? [e.router.submission] : []);\n }\n}\nexport function createRouteContext(router, parent, outlet, match) {\n const { base, location, params } = router;\n const { pattern, component, preload } = match().route;\n const path = createMemo(() => match().path);\n component &&\n component.preload &&\n component.preload();\n inPreloadFn = true;\n const data = preload ? preload({ params, location, intent: intent || \"initial\" }) : undefined;\n inPreloadFn = false;\n const route = {\n parent,\n pattern,\n path,\n outlet: () => component\n ? createComponent(component, {\n params,\n location,\n data,\n get children() {\n return outlet();\n }\n })\n : outlet(),\n resolvePath(to) {\n return resolvePath(base.path(), to, path());\n }\n };\n return route;\n}\n","/*@refresh skip*/\nimport { getRequestEvent, isServer } from \"solid-js/web\";\nimport { children, createMemo, createRoot, getOwner, mergeProps, on, Show, untrack } from \"solid-js\";\nimport { createBranches, createRouteContext, createRouterContext, getIntent, getRouteMatches, RouteContextObj, RouterContextObj, setInPreloadFn } from \"../routing.js\";\nexport const createRouterComponent = (router) => (props) => {\n const { base } = props;\n const routeDefs = children(() => props.children);\n const branches = createMemo(() => createBranches(routeDefs(), props.base || \"\"));\n let context;\n const routerState = createRouterContext(router, branches, () => context, {\n base,\n singleFlight: props.singleFlight,\n transformUrl: props.transformUrl,\n });\n router.create && router.create(routerState);\n return (\n \n {(context = getOwner()) && null}\n \n \n );\n};\nfunction Root(props) {\n const location = props.routerState.location;\n const params = props.routerState.params;\n const data = createMemo(() => props.preload &&\n untrack(() => {\n setInPreloadFn(true);\n props.preload({ params, location, intent: getIntent() || \"initial\" });\n setInPreloadFn(false);\n }));\n return (\n {Root => (\n {props.children}\n )}\n );\n}\nfunction Routes(props) {\n if (isServer) {\n const e = getRequestEvent();\n if (e && e.router && e.router.dataOnly) {\n dataOnly(e, props.routerState, props.branches);\n return;\n }\n e &&\n ((e.router || (e.router = {})).matches ||\n (e.router.matches = props.routerState.matches().map(({ route, path, params }) => ({\n path: route.originalPath,\n pattern: route.pattern,\n match: path,\n params,\n info: route.info\n }))));\n }\n const disposers = [];\n let root;\n const routeStates = createMemo(on(props.routerState.matches, (nextMatches, prevMatches, prev) => {\n let equal = prevMatches && nextMatches.length === prevMatches.length;\n const next = [];\n for (let i = 0, len = nextMatches.length; i < len; i++) {\n const prevMatch = prevMatches && prevMatches[i];\n const nextMatch = nextMatches[i];\n if (prev && prevMatch && nextMatch.route.key === prevMatch.route.key) {\n next[i] = prev[i];\n }\n else {\n equal = false;\n if (disposers[i]) {\n disposers[i]();\n }\n createRoot(dispose => {\n disposers[i] = dispose;\n next[i] = createRouteContext(props.routerState, next[i - 1] || props.routerState.base, createOutlet(() => routeStates()[i + 1]), () => props.routerState.matches()[i]);\n });\n }\n }\n disposers.splice(nextMatches.length).forEach(dispose => dispose());\n if (prev && equal) {\n return prev;\n }\n root = next[0];\n return next;\n }));\n return createOutlet(() => routeStates() && root)();\n}\nconst createOutlet = (child) => {\n return () => (\n {child => {child.outlet()}}\n );\n};\nexport const Route = (props) => {\n const childRoutes = children(() => props.children);\n return mergeProps(props, {\n get children() {\n return childRoutes();\n }\n });\n};\n// for data only mode with single flight mutations\nfunction dataOnly(event, routerState, branches) {\n const url = new URL(event.request.url);\n const prevMatches = getRouteMatches(branches, new URL(event.router.previousUrl || event.request.url).pathname);\n const matches = getRouteMatches(branches, url.pathname);\n for (let match = 0; match < matches.length; match++) {\n if (!prevMatches[match] || matches[match].route !== prevMatches[match].route)\n event.router.dataOnly = true;\n const { route, params } = matches[match];\n route.preload &&\n route.preload({\n params,\n location: routerState.location,\n intent: \"preload\"\n });\n }\n}\n","import { createSignal, onCleanup, sharedConfig } from \"solid-js\";\nimport { createRouterComponent } from \"./components.jsx\";\nfunction intercept([value, setValue], get, set) {\n return [get ? () => get(value()) : value, set ? (v) => setValue(set(v)) : setValue];\n}\nexport function createRouter(config) {\n let ignore = false;\n const wrap = (value) => (typeof value === \"string\" ? { value } : value);\n const signal = intercept(createSignal(wrap(config.get()), {\n equals: (a, b) => a.value === b.value && a.state === b.state\n }), undefined, next => {\n !ignore && config.set(next);\n if (sharedConfig.registry && !sharedConfig.done)\n sharedConfig.done = true;\n return next;\n });\n config.init &&\n onCleanup(config.init((value = config.get()) => {\n ignore = true;\n signal[1](wrap(value));\n ignore = false;\n }));\n return createRouterComponent({\n signal,\n create: config.create,\n utils: config.utils\n });\n}\nexport function bindEvent(target, type, handler) {\n target.addEventListener(type, handler);\n return () => target.removeEventListener(type, handler);\n}\nexport function scrollToHash(hash, fallbackTop) {\n const el = hash && document.getElementById(hash);\n if (el) {\n el.scrollIntoView();\n }\n else if (fallbackTop) {\n window.scrollTo(0, 0);\n }\n}\n","import { $TRACK, createMemo, createSignal, onCleanup, getOwner } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { useRouter } from \"../routing.js\";\nimport { mockBase } from \"../utils.js\";\nimport { cacheKeyOp, hashKey, revalidate, query } from \"./query.js\";\nexport const actions = /* #__PURE__ */ new Map();\nexport function useSubmissions(fn, filter) {\n const router = useRouter();\n const subs = createMemo(() => router.submissions[0]().filter(s => s.url === fn.base && (!filter || filter(s.input))));\n return new Proxy([], {\n get(_, property) {\n if (property === $TRACK)\n return subs();\n if (property === \"pending\")\n return subs().some(sub => !sub.result);\n return subs()[property];\n },\n has(_, property) {\n return property in subs();\n }\n });\n}\nexport function useSubmission(fn, filter) {\n const submissions = useSubmissions(fn, filter);\n return new Proxy({}, {\n get(_, property) {\n if ((submissions.length === 0 && property === \"clear\") || property === \"retry\")\n return () => { };\n return submissions[submissions.length - 1]?.[property];\n }\n });\n}\nexport function useAction(action) {\n const r = useRouter();\n return (...args) => action.apply({ r }, args);\n}\nexport function action(fn, options = {}) {\n function mutate(...variables) {\n const router = this.r;\n const form = this.f;\n const p = (router.singleFlight && fn.withOptions\n ? fn.withOptions({ headers: { \"X-Single-Flight\": \"true\" } })\n : fn)(...variables);\n const [result, setResult] = createSignal();\n let submission;\n function handler(error) {\n return async (res) => {\n const result = await handleResponse(res, error, router.navigatorFactory());\n let retry = null;\n !o.onComplete?.({\n ...submission,\n result: result?.data,\n error: result?.error,\n pending: false,\n retry() {\n return retry = submission.retry();\n }\n });\n if (retry)\n return retry;\n if (!result)\n return submission.clear();\n setResult(result);\n if (result.error && !form)\n throw result.error;\n return result.data;\n };\n }\n router.submissions[1](s => [\n ...s,\n (submission = {\n input: variables,\n url,\n get result() {\n return result()?.data;\n },\n get error() {\n return result()?.error;\n },\n get pending() {\n return !result();\n },\n clear() {\n router.submissions[1](v => v.filter(i => i !== submission));\n },\n retry() {\n setResult(undefined);\n const p = fn(...variables);\n return p.then(handler(), handler(true));\n }\n })\n ]);\n return p.then(handler(), handler(true));\n }\n const o = typeof options === \"string\" ? { name: options } : options;\n const url = fn.url ||\n (o.name && `https://action/${o.name}`) ||\n (!isServer ? `https://action/${hashString(fn.toString())}` : \"\");\n mutate.base = url;\n return toAction(mutate, url);\n}\nfunction toAction(fn, url) {\n fn.toString = () => {\n if (!url)\n throw new Error(\"Client Actions need explicit names if server rendered\");\n return url;\n };\n fn.with = function (...args) {\n const newFn = function (...passedArgs) {\n return fn.call(this, ...args, ...passedArgs);\n };\n newFn.base = fn.base;\n const uri = new URL(url, mockBase);\n uri.searchParams.set(\"args\", hashKey(args));\n return toAction(newFn, (uri.origin === \"https://action\" ? uri.origin : \"\") + uri.pathname + uri.search);\n };\n fn.url = url;\n if (!isServer) {\n actions.set(url, fn);\n getOwner() && onCleanup(() => actions.delete(url));\n }\n return fn;\n}\nconst hashString = (s) => s.split(\"\").reduce((a, b) => ((a << 5) - a + b.charCodeAt(0)) | 0, 0);\nasync function handleResponse(response, error, navigate) {\n let data;\n let custom;\n let keys;\n let flightKeys;\n if (response instanceof Response) {\n if (response.headers.has(\"X-Revalidate\"))\n keys = response.headers.get(\"X-Revalidate\").split(\",\");\n if (response.customBody) {\n data = custom = await response.customBody();\n if (response.headers.has(\"X-Single-Flight\")) {\n data = data._$value;\n delete custom._$value;\n flightKeys = Object.keys(custom);\n }\n }\n if (response.headers.has(\"Location\")) {\n const locationUrl = response.headers.get(\"Location\") || \"/\";\n if (locationUrl.startsWith(\"http\")) {\n window.location.href = locationUrl;\n }\n else {\n navigate(locationUrl);\n }\n }\n }\n else if (error)\n return { error: response };\n else\n data = response;\n // invalidate\n cacheKeyOp(keys, entry => (entry[0] = 0));\n // set cache\n flightKeys && flightKeys.forEach(k => query.set(k, custom[k]));\n // trigger revalidation\n await revalidate(keys, false);\n return data != null ? { data } : undefined;\n}\n","import { delegateEvents } from \"solid-js/web\";\nimport { onCleanup } from \"solid-js\";\nimport { actions } from \"./action.js\";\nimport { mockBase } from \"../utils.js\";\nexport function setupNativeEvents(preload = true, explicitLinks = false, actionBase = \"/_server\", transformUrl) {\n return (router) => {\n const basePath = router.base.path();\n const navigateFromRoute = router.navigatorFactory(router.base);\n let preloadTimeout;\n let lastElement;\n function isSvg(el) {\n return el.namespaceURI === \"http://www.w3.org/2000/svg\";\n }\n function handleAnchor(evt) {\n if (evt.defaultPrevented ||\n evt.button !== 0 ||\n evt.metaKey ||\n evt.altKey ||\n evt.ctrlKey ||\n evt.shiftKey)\n return;\n const a = evt\n .composedPath()\n .find(el => el instanceof Node && el.nodeName.toUpperCase() === \"A\");\n if (!a || (explicitLinks && !a.hasAttribute(\"link\")))\n return;\n const svg = isSvg(a);\n const href = svg ? a.href.baseVal : a.href;\n const target = svg ? a.target.baseVal : a.target;\n if (target || (!href && !a.hasAttribute(\"state\")))\n return;\n const rel = (a.getAttribute(\"rel\") || \"\").split(/\\s+/);\n if (a.hasAttribute(\"download\") || (rel && rel.includes(\"external\")))\n return;\n const url = svg ? new URL(href, document.baseURI) : new URL(href);\n if (url.origin !== window.location.origin ||\n (basePath && url.pathname && !url.pathname.toLowerCase().startsWith(basePath.toLowerCase())))\n return;\n return [a, url];\n }\n function handleAnchorClick(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n const to = router.parsePath(url.pathname + url.search + url.hash);\n const state = a.getAttribute(\"state\");\n evt.preventDefault();\n navigateFromRoute(to, {\n resolve: false,\n replace: a.hasAttribute(\"replace\"),\n scroll: !a.hasAttribute(\"noscroll\"),\n state: state ? JSON.parse(state) : undefined\n });\n }\n function handleAnchorPreload(evt) {\n const res = handleAnchor(evt);\n if (!res)\n return;\n const [a, url] = res;\n transformUrl && (url.pathname = transformUrl(url.pathname));\n router.preloadRoute(url, a.getAttribute(\"preload\") !== \"false\");\n }\n function handleAnchorMove(evt) {\n clearTimeout(preloadTimeout);\n const res = handleAnchor(evt);\n if (!res)\n return lastElement = null;\n const [a, url] = res;\n if (lastElement === a)\n return;\n transformUrl && (url.pathname = transformUrl(url.pathname));\n preloadTimeout = setTimeout(() => {\n router.preloadRoute(url, a.getAttribute(\"preload\") !== \"false\");\n lastElement = a;\n }, 20);\n }\n function handleFormSubmit(evt) {\n if (evt.defaultPrevented)\n return;\n let actionRef = evt.submitter && evt.submitter.hasAttribute(\"formaction\")\n ? evt.submitter.getAttribute(\"formaction\")\n : evt.target.getAttribute(\"action\");\n if (!actionRef)\n return;\n if (!actionRef.startsWith(\"https://action/\")) {\n // normalize server actions\n const url = new URL(actionRef, mockBase);\n actionRef = router.parsePath(url.pathname + url.search);\n if (!actionRef.startsWith(actionBase))\n return;\n }\n if (evt.target.method.toUpperCase() !== \"POST\")\n throw new Error(\"Only POST forms are supported for Actions\");\n const handler = actions.get(actionRef);\n if (handler) {\n evt.preventDefault();\n const data = new FormData(evt.target, evt.submitter);\n handler.call({ r: router, f: evt.target }, evt.target.enctype === \"multipart/form-data\"\n ? data\n : new URLSearchParams(data));\n }\n }\n // ensure delegated event run first\n delegateEvents([\"click\", \"submit\"]);\n document.addEventListener(\"click\", handleAnchorClick);\n if (preload) {\n document.addEventListener(\"mousemove\", handleAnchorMove, { passive: true });\n document.addEventListener(\"focusin\", handleAnchorPreload, { passive: true });\n document.addEventListener(\"touchstart\", handleAnchorPreload, { passive: true });\n }\n document.addEventListener(\"submit\", handleFormSubmit);\n onCleanup(() => {\n document.removeEventListener(\"click\", handleAnchorClick);\n if (preload) {\n document.removeEventListener(\"mousemove\", handleAnchorMove);\n document.removeEventListener(\"focusin\", handleAnchorPreload);\n document.removeEventListener(\"touchstart\", handleAnchorPreload);\n }\n document.removeEventListener(\"submit\", handleFormSubmit);\n });\n };\n}\n","import { setupNativeEvents } from \"../data/events.js\";\nimport { createRouter, scrollToHash, bindEvent } from \"./createRouter.js\";\nimport { createBeforeLeave, keepDepth, notifyIfNotBlocked, saveCurrentDepth } from \"../lifecycle.js\";\nexport function hashParser(str) {\n const to = str.replace(/^.*?#/, \"\");\n // Hash-only hrefs like `#foo` from plain anchors will come in as `/#foo` whereas a link to\n // `/foo` will be `/#/foo`. Check if the to starts with a `/` and if not append it as a hash\n // to the current path so we can handle these in-page anchors correctly.\n if (!to.startsWith(\"/\")) {\n const [, path = \"/\"] = window.location.hash.split(\"#\", 2);\n return `${path}#${to}`;\n }\n return to;\n}\nexport function HashRouter(props) {\n const getSource = () => window.location.hash.slice(1);\n const beforeLeave = createBeforeLeave();\n return createRouter({\n get: getSource,\n set({ value, replace, scroll, state }) {\n if (replace) {\n window.history.replaceState(keepDepth(state), \"\", \"#\" + value);\n }\n else {\n window.history.pushState(state, \"\", \"#\" + value);\n }\n const hashIndex = value.indexOf(\"#\");\n const hash = hashIndex >= 0 ? value.slice(hashIndex + 1) : \"\";\n scrollToHash(hash, scroll);\n saveCurrentDepth();\n },\n init: notify => bindEvent(window, \"hashchange\", notifyIfNotBlocked(notify, delta => !beforeLeave.confirm(delta && delta < 0 ? delta : getSource()))),\n create: setupNativeEvents(props.preload, props.explicitLinks, props.actionBase),\n utils: {\n go: delta => window.history.go(delta),\n renderPath: path => `#${path}`,\n parsePath: hashParser,\n beforeLeave\n }\n })(props);\n}\n","import { createMemo, mergeProps, splitProps } from \"solid-js\";\nimport { useHref, useLocation, useNavigate, useResolvedPath } from \"./routing.js\";\nimport { normalizePath } from \"./utils.js\";\nexport function A(props) {\n props = mergeProps({ inactiveClass: \"inactive\", activeClass: \"active\" }, props);\n const [, rest] = splitProps(props, [\n \"href\",\n \"state\",\n \"class\",\n \"activeClass\",\n \"inactiveClass\",\n \"end\"\n ]);\n const to = useResolvedPath(() => props.href);\n const href = useHref(to);\n const location = useLocation();\n const isActive = createMemo(() => {\n const to_ = to();\n if (to_ === undefined)\n return [false, false];\n const path = normalizePath(to_.split(/[?#]/, 1)[0]).toLowerCase();\n const loc = decodeURI(normalizePath(location.pathname).toLowerCase());\n return [props.end ? path === loc : loc.startsWith(path + \"/\") || loc === path, path === loc];\n });\n return ();\n}\nexport function Navigate(props) {\n const navigate = useNavigate();\n const location = useLocation();\n const { href, state } = props;\n const path = typeof href === \"function\" ? href({ navigate, location }) : href;\n navigate(path, { replace: true, state });\n return null;\n}\n","var t=[\"Shift\",\"Meta\",\"Alt\",\"Control\"],e=\"object\"==typeof navigator&&/Mac|iPod|iPhone|iPad/.test(navigator.platform)?\"Meta\":\"Control\";function n(t,e){return\"function\"==typeof t.getModifierState&&t.getModifierState(e)}function r(t){return t.trim().split(\" \").map(function(t){var n=t.split(/\\b\\+/),r=n.pop();return[n=n.map(function(t){return\"$mod\"===t?e:t}),r]})}function o(e,o){var i;void 0===o&&(o={});var u=null!=(i=o.timeout)?i:1e3,a=Object.keys(e).map(function(t){return[r(t),e[t]]}),f=new Map,c=null;return function(e){e instanceof KeyboardEvent&&(a.forEach(function(r){var o=r[0],i=r[1],u=f.get(o)||o;!function(e,r){return!(r[1].toUpperCase()!==e.key.toUpperCase()&&r[1]!==e.code||r[0].find(function(t){return!n(e,t)})||t.find(function(t){return!r[0].includes(t)&&r[1]!==t&&n(e,t)}))}(e,u[0])?n(e,e.key)||f.delete(o):u.length>1?f.set(o,u.slice(1)):(f.delete(o),i(e))}),c&&clearTimeout(c),c=setTimeout(f.clear.bind(f),u))}}function i(t,e,n){var r;void 0===n&&(n={});var i=null!=(r=n.event)?r:\"keydown\",u=o(e,n);return t.addEventListener(i,u),function(){t.removeEventListener(i,u)}}export default i;export{o as createKeybindingsHandler,r as parseKeybinding};\n//# sourceMappingURL=tinykeys.module.js.map\n","// Bootstrap Icons\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2011-2023 The Bootstrap Authors\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nexport const BiGear = () => {\n return (\n \n \n \n \n );\n};\n\nexport function BiCaretRightFill() {\n return (\n \n \n \n );\n}\n\nexport function BiCaretUpFill() {\n return (\n \n \n \n );\n}\n\nexport function BiCaretDownFill() {\n return (\n \n \n \n );\n}\n\nexport function BiStar(props: { style?: string }) {\n return (\n \n \n \n );\n}\n\nexport function BiStarFill(props: { style?: string }) {\n return (\n \n \n \n );\n}\n\nexport function BiStarHalf() {\n return (\n \n \n \n );\n}\n\nexport function BiInfoCircle(props: { class: string }) {\n return (\n \n \n \n \n );\n}\n\nexport function BiArchive(props: { style?: string }) {\n return (\n \n \n \n );\n}\n\nexport function BiArchiveFill(props: { style?: string }) {\n return (\n \n \n \n );\n}\n\nexport function BiPlusCircle() {\n return (\n \n \n \n \n );\n}\n\nexport function BiDashCircle() {\n return (\n \n \n \n \n );\n}\n\nexport function BiFilter() {\n return (\n \n \n \n );\n}\n\nexport function BiQuestionFill() {\n return (\n \n \n \n );\n}\n\nexport function BiQuestionCircle() {\n return (\n \n \n \n \n );\n}\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.8.4\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","var inherits = require('inherits')\nvar EventEmitter = require('events').EventEmitter\n\nmodule.exports = Queue\nmodule.exports.default = Queue\n\nfunction Queue (options) {\n if (!(this instanceof Queue)) {\n return new Queue(options)\n }\n\n EventEmitter.call(this)\n options = options || {}\n this.concurrency = options.concurrency || Infinity\n this.timeout = options.timeout || 0\n this.autostart = options.autostart || false\n this.results = options.results || null\n this.pending = 0\n this.session = 0\n this.running = false\n this.jobs = []\n this.timers = {}\n}\ninherits(Queue, EventEmitter)\n\nvar arrayMethods = [\n 'pop',\n 'shift',\n 'indexOf',\n 'lastIndexOf'\n]\n\narrayMethods.forEach(function (method) {\n Queue.prototype[method] = function () {\n return Array.prototype[method].apply(this.jobs, arguments)\n }\n})\n\nQueue.prototype.slice = function (begin, end) {\n this.jobs = this.jobs.slice(begin, end)\n return this\n}\n\nQueue.prototype.reverse = function () {\n this.jobs.reverse()\n return this\n}\n\nvar arrayAddMethods = [\n 'push',\n 'unshift',\n 'splice'\n]\n\narrayAddMethods.forEach(function (method) {\n Queue.prototype[method] = function () {\n var methodResult = Array.prototype[method].apply(this.jobs, arguments)\n if (this.autostart) {\n this.start()\n }\n return methodResult\n }\n})\n\nObject.defineProperty(Queue.prototype, 'length', {\n get: function () {\n return this.pending + this.jobs.length\n }\n})\n\nQueue.prototype.start = function (cb) {\n if (cb) {\n callOnErrorOrEnd.call(this, cb)\n }\n\n this.running = true\n\n if (this.pending >= this.concurrency) {\n return\n }\n\n if (this.jobs.length === 0) {\n if (this.pending === 0) {\n done.call(this)\n }\n return\n }\n\n var self = this\n var job = this.jobs.shift()\n var once = true\n var session = this.session\n var timeoutId = null\n var didTimeout = false\n var resultIndex = null\n var timeout = job.hasOwnProperty('timeout') ? job.timeout : this.timeout\n\n function next (err, result) {\n if (once && self.session === session) {\n once = false\n self.pending--\n if (timeoutId !== null) {\n delete self.timers[timeoutId]\n clearTimeout(timeoutId)\n }\n\n if (err) {\n self.emit('error', err, job)\n } else if (didTimeout === false) {\n if (resultIndex !== null) {\n self.results[resultIndex] = Array.prototype.slice.call(arguments, 1)\n }\n self.emit('success', result, job)\n }\n\n if (self.session === session) {\n if (self.pending === 0 && self.jobs.length === 0) {\n done.call(self)\n } else if (self.running) {\n self.start()\n }\n }\n }\n }\n\n if (timeout) {\n timeoutId = setTimeout(function () {\n didTimeout = true\n if (self.listeners('timeout').length > 0) {\n self.emit('timeout', next, job)\n } else {\n next()\n }\n }, timeout)\n this.timers[timeoutId] = timeoutId\n }\n\n if (this.results) {\n resultIndex = this.results.length\n this.results[resultIndex] = null\n }\n\n this.pending++\n self.emit('start', job)\n var promise = job(next)\n if (promise && promise.then && typeof promise.then === 'function') {\n promise.then(function (result) {\n return next(null, result)\n }).catch(function (err) {\n return next(err || true)\n })\n }\n\n if (this.running && this.jobs.length > 0) {\n this.start()\n }\n}\n\nQueue.prototype.stop = function () {\n this.running = false\n}\n\nQueue.prototype.end = function (err) {\n clearTimers.call(this)\n this.jobs.length = 0\n this.pending = 0\n done.call(this, err)\n}\n\nfunction clearTimers () {\n for (var key in this.timers) {\n var timeoutId = this.timers[key]\n delete this.timers[key]\n clearTimeout(timeoutId)\n }\n}\n\nfunction callOnErrorOrEnd (cb) {\n var self = this\n this.on('error', onerror)\n this.on('end', onend)\n\n function onerror (err) { self.end(err) }\n function onend (err) {\n self.removeListener('error', onerror)\n self.removeListener('end', onend)\n cb(err, this.results)\n }\n}\n\nfunction done (err) {\n this.session++\n this.running = false\n this.emit('end', err)\n}\n","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,h=2592e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:u,months:h,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof p},f=function(t,s,n){return new p(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},g=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},p=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*d[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*d[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/h),t%=h,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=g(this.$d.years,\"Y\"),s=g(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=g(n,\"D\"),e=g(this.$d.hours,\"H\"),r=g(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=g(o,\"S\"),h=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",d=(h?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===d||\"-P\"===d?\"P0D\":d},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/d[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/d[n]):this.$d[n],0===s?0:s},y.add=function(t,s,n){var i;return i=s?t*d[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}();return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)&&(t=t.asMilliseconds()),r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)&&(t=t.asMilliseconds()),o.bind(this)(t,s)}}}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else r.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)\n// SPDX-License-Identifier: MIT\n\nimport relativeTime from \"dayjs/plugin/relativeTime\";\nimport duration, { DurationUnitType } from \"dayjs/plugin/duration\";\nimport utc from \"dayjs/plugin/utc\";\nimport dayjs from \"dayjs\";\n\ndayjs.extend(relativeTime);\ndayjs.extend(duration);\ndayjs.extend(utc);\n\nexport function parse_timestamp(timestamp: string): dayjs.Dayjs {\n return dayjs(timestamp);\n}\n\nexport function parse_timerange(timerange: string): undefined | number {\n const match = timerange.match(/(\\d+)(.*)/);\n if (match && match[1] && match[2]) {\n const value = match[1];\n const units = match[2] as DurationUnitType;\n const duration = dayjs.duration(+value, units);\n return duration.as(\"s\");\n }\n}\n\nexport function get_duration(value: number, unit: DurationUnitType = \"s\") {\n return dayjs.duration(value, unit);\n}\n\nexport function get_timezone_offset_str(): string {\n return dayjs().format(\"ZZ\");\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { createSignal } from \"solid-js\";\n\nexport const [IS_AUTHENTICATED, SET_IS_AUTHENTICATED] = createSignal(false);\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport axios, { AxiosResponse } from \"axios\";\nimport { EventWrapper } from \"./types\";\nimport Queue from \"queue\";\nimport { createSignal } from \"solid-js\";\nimport { get_timezone_offset_str } from \"./datetime\";\nimport { SET_IS_AUTHENTICATED } from \"./global\";\n\nexport const [SERVER_REVISION, SET_SERVER_REVISION] = createSignal<\n null | string\n>(null);\n\nexport const [QUEUE_SIZE, SET_QUEUE_SIZE] = createSignal(0);\n\nconst QUEUE = new Queue({ concurrency: 9 });\n\nfunction queueAdd(func: any): Promise {\n const p = new Promise((resolve, reject) => {\n QUEUE.push((cb: any) => {\n func()\n .then(() => {\n cb();\n resolve(null);\n })\n .catch(() => {\n cb();\n reject();\n })\n .finally(() => {\n SET_QUEUE_SIZE(QUEUE.length);\n });\n });\n });\n SET_QUEUE_SIZE(QUEUE.length);\n QUEUE.start();\n return p;\n}\n\nasync function update_revision(response: AxiosResponse) {\n if (response && response.headers) {\n const server_rev = response!.headers[\"x-evebox-git-revision\"];\n if (server_rev) {\n SET_SERVER_REVISION(server_rev);\n }\n }\n return response;\n}\n\nexport async function get(url: string, params: any = {}): Promise {\n return axios\n .get(url, {\n params: params,\n })\n .then(update_revision)\n .catch((error) => {\n if (error && error.rsponse && error.response.status === 401) {\n SET_IS_AUTHENTICATED(false);\n }\n throw error;\n });\n}\n\nexport async function post(url: string, params: any = {}): Promise {\n return axios.post(url, params, {});\n}\n\nasync function postJson(url: string, body: any = {}): Promise {\n return axios.post(url, body, {});\n}\n\nexport async function postComment(\n eventId: string | number,\n comment: string,\n): Promise {\n let body = {\n comment: comment,\n };\n return postJson(`api/event/${eventId}/comment`, body);\n}\n\nexport async function getUser(): Promise {\n let response = await get(\"api/1/user\");\n return response.data;\n}\n\nexport interface ConfigResponse {\n defaults: {\n time_range?: string;\n };\n \"event-services\": any[];\n datastore: string;\n}\n\nexport async function getConfig(): Promise {\n return get(\"api/1/config\").then((response) => response.data);\n}\n\nexport async function login(\n username: string,\n password: string,\n): Promise<[boolean, LoginResponse]> {\n let params = new URLSearchParams({\n username: username,\n password: password,\n });\n\n let response = await axios.post(\"api/1/login\", params);\n return [true, response.data];\n}\n\nexport async function logout() {\n let _response = await post(\"api/1/logout\");\n SET_IS_AUTHENTICATED(false);\n}\n\nexport interface AlertsResponse {\n events: EventWrapper[];\n ecs: boolean;\n took: number;\n timed_out: boolean;\n}\n\nexport async function alerts(options?: {\n // A query string to apply to the alert search.\n query_string?: string;\n // Time range, a value in seconds.\n time_range?: number;\n // Tags that must be present.\n tags?: string[];\n // Tags that must not be present.\n not_tags?: string[];\n sensor: string | undefined;\n timeout: undefined | number;\n}): Promise {\n let params: any = {\n query_string: options?.query_string,\n };\n if (options?.time_range) {\n params.time_range = `${options.time_range}s`;\n }\n if (options?.tags) {\n params.tags = options.tags.join(\",\");\n }\n if (options?.sensor) {\n params.sensor = options.sensor;\n }\n if (options?.timeout) {\n params.timeout = options.timeout;\n }\n return get(\"api/1/alerts\", params).then((response) => response.data);\n}\n\nexport interface EventsQueryParams {\n event_type?: string;\n to?: string;\n from?: string;\n order?: \"asc\" | \"desc\";\n query_string?: string;\n tz_offset?: string;\n}\n\nexport async function getEvents(\n params?: EventsQueryParams,\n): Promise<{ events: EventWrapper[]; esc: boolean }> {\n if (!params) {\n params = {};\n }\n if (!params?.tz_offset) {\n params.tz_offset = get_timezone_offset_str();\n }\n return get(\"api/1/events\", params).then((response) => response.data);\n}\n\nexport async function archiveAggregateAlert(alert: EventWrapper) {\n const params = {\n signature_id: alert._source.alert!.signature_id,\n src_ip: alert._source.src_ip,\n dest_ip: alert._source.dest_ip,\n min_timestamp: alert._metadata?.min_timestamp,\n max_timestamp: alert._metadata?.max_timestamp,\n };\n return queueAdd(() => {\n return post(\"api/1/alert-group/archive\", params);\n });\n}\n\nexport async function archiveEvent(event: EventWrapper): Promise {\n return queueAdd(() => {\n return post(`api/1/event/${event._id}/archive`);\n });\n}\n\nexport async function escalateAggregateAlert(alert: EventWrapper) {\n const params = {\n signature_id: alert._source.alert!.signature_id,\n src_ip: alert._source.src_ip,\n dest_ip: alert._source.dest_ip,\n min_timestamp: alert._metadata?.min_timestamp,\n max_timestamp: alert._metadata?.max_timestamp,\n };\n return queueAdd(() => {\n return post(\"api/1/alert-group/star\", params);\n });\n}\n\nexport async function unescalateAggregateAlert(alert: EventWrapper) {\n const params = {\n signature_id: alert._source.alert!.signature_id,\n src_ip: alert._source.src_ip,\n dest_ip: alert._source.dest_ip,\n min_timestamp: alert._metadata?.min_timestamp,\n max_timestamp: alert._metadata?.max_timestamp,\n };\n return queueAdd(() => {\n return post(\"api/1/alert-group/unstar\", params);\n });\n}\n\nexport async function getEventById(id: string): Promise {\n return get(`api/1/event/${id}`).then((response) => response.data);\n}\n\nexport async function getVersion(): Promise<{\n revision: string;\n version: string;\n}> {\n return get(\"api/1/version\").then((response) => response.data);\n}\n\nexport interface LoginOptions {\n authentication: {\n required: boolean;\n };\n}\n\nexport interface LoginResponse {\n session_id: string;\n}\n\nexport interface UserResponse {\n username: string;\n}\n\nexport interface StatsAggResponse {\n data: { timestamp: string; value: number }[];\n}\n\nexport async function statsAgg(\n field: string,\n differential: boolean = false,\n time_range?: number,\n sensor_name?: string,\n): Promise {\n let url;\n if (differential) {\n url = \"api/1/stats/agg/diff\";\n } else {\n url = \"api/1/stats/agg\";\n }\n return get(url, {\n field: field,\n time_range: time_range,\n sensor_name: sensor_name,\n }).then((response) => response.data);\n}\n\nexport async function getSensors(): Promise<{ data: string[] }> {\n return get(\"api/1/sensors\").then((response) => response.data);\n}\n\nexport interface AggRequest {\n field: string;\n time_range?: string;\n size?: number;\n order?: \"asc\" | \"desc\";\n q?: string;\n}\n\nexport interface AggResponse {\n rows: AggResponseRow[];\n}\n\nexport interface AggResponseRow {\n count: number;\n key: any;\n}\n\nexport async function fetchAgg(request: AggRequest): Promise {\n return get(\"api/agg\", request).then((response) => response.data);\n}\n\nexport async function dhcpAck(query: {\n time_range?: string;\n sensor?: string;\n}): Promise {\n const response = await get(`api/1/dhcp/ack`, query);\n return response.data;\n}\n\nexport async function dhcpRequest(query: {\n time_range?: string;\n sensor?: string;\n}): Promise {\n const response = await get(`api/1/dhcp/request`, query);\n return response.data;\n}\n\nexport namespace API {\n export async function getJson(url: string): Promise {\n let response = await fetch(url);\n let json = response.json();\n return json;\n }\n\n export async function postJson(url: string, body: any): Promise {\n return await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n export async function histogramTime(request: {\n time_range: string;\n interval?: string;\n event_type: string;\n query_string?: string;\n }): Promise<{ data: { count: number; time: number }[] }> {\n return get(\"api/1/report/histogram/time\", request).then(\n (response) => response.data,\n );\n }\n\n export async function getSensors(): Promise<{ data: string[] }> {\n return get(\"api/1/sensors\").then((response) => response.data);\n }\n\n export async function getEventTypes(request: {\n time_range?: string;\n }): Promise {\n return get(\"api/event_types\", request).then((response) => response.data);\n }\n\n export async function escalateAggregateAlert(alert: EventWrapper) {\n const params = {\n signature_id: alert._source.alert!.signature_id,\n src_ip: alert._source.src_ip,\n dest_ip: alert._source.dest_ip,\n min_timestamp: alert._metadata?.min_timestamp,\n max_timestamp: alert._metadata?.max_timestamp,\n };\n return queueAdd(() => {\n return post(\"api/1/alert-group/star\", params);\n });\n }\n\n export async function deEscalateAggregateAlert(alert: EventWrapper) {\n const params = {\n signature_id: alert._source.alert!.signature_id,\n src_ip: alert._source.src_ip,\n dest_ip: alert._source.dest_ip,\n min_timestamp: alert._metadata?.min_timestamp,\n max_timestamp: alert._metadata?.max_timestamp,\n };\n return queueAdd(() => {\n return post(\"api/1/alert-group/unstar\", params);\n });\n }\n\n export async function escalateEvent(event: EventWrapper) {\n return post(`api/1/event/${event._id}/escalate`);\n }\n\n export async function deEscalateEvent(event: EventWrapper) {\n return post(`api/1/event/${event._id}/de-escalate`);\n }\n\n export async function eventToPcap(\n event: EventWrapper,\n what: \"packet\" | \"payload\",\n ) {\n const form = document.createElement(\"form\") as HTMLFormElement;\n form.setAttribute(\"method\", \"post\");\n form.setAttribute(\"action\", \"api/1/eve2pcap\");\n\n const whatField = document.createElement(\"input\") as HTMLElement;\n whatField.setAttribute(\"type\", \"hidden\");\n whatField.setAttribute(\"name\", \"what\");\n whatField.setAttribute(\"value\", what);\n form.appendChild(whatField);\n\n const eventField = document.createElement(\"input\") as HTMLElement;\n eventField.setAttribute(\"type\", \"hidden\");\n eventField.setAttribute(\"name\", \"event\");\n eventField.setAttribute(\"value\", JSON.stringify(event._source));\n form.appendChild(eventField);\n\n document.body.appendChild(form);\n form.submit();\n }\n\n let ES_TRACKER: EventSource[] = [];\n\n export async function cancelAllSse() {\n while (ES_TRACKER.length > 0) {\n const es = ES_TRACKER.pop();\n if (es) {\n es.close();\n }\n }\n }\n\n export async function getSseAgg(\n params: any,\n version: () => number,\n onData?: any,\n ): Promise {\n return new Promise((resolve, _reject) => {\n const currentVersion = version();\n let urlSearchParams = new URLSearchParams(Object.entries(params));\n let url = `api/sse/agg?${urlSearchParams.toString()}`;\n const es = new EventSource(url);\n ES_TRACKER.push(es);\n es.onmessage = (e) => {\n if (currentVersion != version()) {\n console.log(\"SSE version invalidated, closing\");\n es.close();\n return;\n }\n const data = JSON.parse(e.data);\n if (onData) {\n onData(data);\n }\n };\n\n es.onerror = () => {\n es.close();\n if (currentVersion == version()) {\n if (onData) {\n onData(null);\n }\n }\n\n const index = ES_TRACKER.indexOf(es);\n if (index > -1) {\n ES_TRACKER.splice(index, 1);\n }\n\n resolve();\n };\n });\n }\n\n export interface AddAutoArchiveRequest {\n sensor?: string;\n src_ip?: string;\n dest_ip?: string;\n signature_id: number;\n comment?: string;\n }\n\n export async function addAutoArchive(\n params: AddAutoArchiveRequest,\n ): Promise {\n let urlSearchParams = new URLSearchParams(Object.entries(params));\n return fetch(\"api/admin/filter/add\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n },\n body: urlSearchParams.toString(),\n });\n }\n\n export async function fetchFilters(): Promise {\n let response = await fetch(\"api/admin/filters\");\n if (response.ok) {\n let json = await response.json();\n return json;\n }\n }\n\n export async function doDelete(path: string): Promise {\n let response = await fetch(path, {\n method: \"DELETE\",\n });\n\n if (!response.ok) {\n throw new Error(\n `HTTP error! status: ${response.status} - ${response.statusText}`,\n );\n }\n\n return response;\n }\n\n export async function deleteFilter(id: number): Promise {\n return doDelete(`api/admin/filter/${id}`);\n }\n}\n","export const GIT_REV = \"bbd7fd5b\";\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { createSignal, For, Show, Suspense } from \"solid-js\";\nimport { Button, Modal, Tab, Tabs } from \"solid-bootstrap\";\nimport { closeHelp, showHelp } from \"./Top\";\n\nimport { createResource } from \"solid-js\";\nimport { getVersion, SERVER_REVISION } from \"./api\";\nimport { GIT_REV } from \"./gitrev\";\n\nexport function HelpModal() {\n const [tab, setTab] = createSignal(\"keyboard\");\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n Close\n \n \n \n );\n}\n\nfunction Keyboard() {\n let key = (k: string) => {\n return {k};\n };\n\n let then = (a: string, b: string) => {\n return (\n <>\n {key(a)} then {key(b)}\n >\n );\n };\n\n let plus = (a: string, b: string) => {\n return (\n <>\n {key(a)} + {key(b)}\n >\n );\n };\n\n const shortcuts = [\n [key(\"?\"), \"Show help\"],\n [then(\"g\", \"i\"), \"Goto inbox\"],\n [then(\"g\", \"s\"), \"Goto escalated\"],\n [then(\"g\", \"a\"), \"Goto alerts\"],\n [key(\"e\"), \"Archive selected events, or event at cursor if none selected\"],\n [key(\"F8\"), \"Archive event at cursor\"],\n [plus(\"Shift\", \"s\"), \"Escalate and archive event at cursor\"],\n [key(\"F9\"), \"Escalate and archive event at cursor\"],\n [key(\"x\"), \"Select event at cursor\"],\n [key(\"s\"), \"Escalate selected events, or event at cursor if none selected\"],\n [key(\"j\"), \"Move cursor to next event\"],\n [key(\"k\"), \"Move cursor to previous event\"],\n [key(\".\"), \"Show action menu for event at cursor\"],\n [plus(\"Control\", \"\\\\\"), \"Clear all filters and search\"],\n [plus(\"Shift\", \"h\"), \"Goto first row\"],\n [plus(\"Shift\", \"g\"), \"Goto last row\"],\n [then(\"*\", \"a\"), \"Select all alerts in view\"],\n [then(\"*\", \"n\"), \"Deselect all alerts\"],\n [then(\"*\", \"1\"), \"Select all alerts with current SID\"],\n ];\n\n return (\n <>\n \n \n \n \n {(e, i) => (\n <>\n \n {e[0]}\n {e[1]}\n \n >\n )}\n \n \n \n >\n );\n}\n\nfunction About() {\n const [version] = createResource(getVersion);\n\n return (\n <>\n \n \n Loading version info...>}>\n This is EveBox version {version()?.version} (Rev:{\" \"}\n {version()?.revision}).\n \n \n\n \n \n Warning: The server and frontend versions differ. Please reload.\n \n Server={SERVER_REVISION()}, Frontend={GIT_REV}.\n \n \n\n \n Homepage and Documentation:{\" \"}\n https://evebox.org\n \n\n \n GitHub:{\" \"}\n \n http://github.com/jasonish/evebox\n \n \n \n >\n );\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { ConfigResponse } from \"./api\";\n\nexport let serverConfig: ConfigResponse | null = null;\n\nexport interface EventServiceConfig {\n type: string;\n enabled: boolean;\n \"event-types\": string[];\n url: string;\n target: string;\n name: string;\n datastore: string;\n}\n\nexport function serverConfigSet(config: ConfigResponse) {\n serverConfig = config;\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { Container, Dropdown, Nav, Navbar, NavDropdown } from \"solid-bootstrap\";\nimport { A, useNavigate, useSearchParams } from \"@solidjs/router\";\nimport { createEffect, createSignal, For, onMount, Show } from \"solid-js\";\n\nimport tinykeys from \"tinykeys\";\nimport { BiGear } from \"./icons\";\nimport { HelpModal } from \"./Help\";\nimport { QUEUE_SIZE, SERVER_REVISION } from \"./api\";\nimport * as api from \"./api\";\nimport { GIT_REV } from \"./gitrev\";\nimport { serverConfig } from \"./config\";\nimport { IS_AUTHENTICATED } from \"./global\";\n\nexport const [showHelp, setShowHelp] = createSignal(false);\nexport const openHelp = () => setShowHelp(true);\nexport const closeHelp = () => setShowHelp(false);\n\nconst DEFAULT_TIME_RANGE = \"24h\";\n\nconst TIME_RANGE_OPTIONS = [\n [\"60s\", \"Last Minute\"],\n [\"1h\", \"Last 1 Hour\"],\n [\"3h\", \"Last 3 Hours\"],\n [\"6h\", \"Last 6 Hours\"],\n [\"12h\", \"Last 12 Hours\"],\n [\"24h\", \"Last 24 Hours\"],\n [\"3d\", \"Last 3 Days\"],\n [\"7d\", \"Last Week\"],\n [\"\", \"All\"],\n];\n\nfunction isValidTimeRange(range: string): boolean {\n for (const tr of TIME_RANGE_OPTIONS) {\n if (tr[0] === range) {\n return true;\n }\n }\n return false;\n}\n\nfunction getInitialTimeRange(): string {\n const localTimeRange = localStorage.getItem(\"TIME_RANGE\");\n console.log(`Time-range from localStorage:`);\n console.log(localTimeRange);\n\n if (localTimeRange === \"\") {\n console.log('localTimeRange is an empty string, returning \"\"');\n return \"\";\n }\n\n if (localTimeRange && isValidTimeRange(localTimeRange)) {\n console.log(`Using local storage time range of ${localTimeRange}`);\n return localTimeRange;\n }\n\n const serverTimeRange = serverConfig?.defaults?.time_range;\n console.log(\"serverTimeRange:\");\n console.log(serverTimeRange);\n if (serverTimeRange && isValidTimeRange(serverTimeRange)) {\n console.log(`Using server side default time range of ${serverTimeRange}`);\n return serverTimeRange;\n } else if (serverTimeRange && serverTimeRange === \"all\") {\n // The server time range might be \"all\" which is invalid in the front-end,\n // but it does imply that the time-range should be all. Needs to be cleaned up.\n return \"\";\n }\n\n console.log(`Using default time range of ${DEFAULT_TIME_RANGE}`);\n return DEFAULT_TIME_RANGE;\n}\n\n/* START: Init TIME_RANGE */\nexport const [TIME_RANGE, _SET_TIME_RANGE] =\n createSignal(DEFAULT_TIME_RANGE);\n\nexport function SET_TIME_RANGE(range: string) {\n console.log(`Setting localStorage TIME_RANGE to ${range}`);\n _SET_TIME_RANGE(range);\n localStorage.setItem(\"TIME_RANGE\", range);\n}\n\nexport function Top(props: { brand?: string; disableRange?: boolean }) {\n console.log(\"Top\");\n console.log(`Top: disableRange=${props.disableRange}`);\n const navigate = useNavigate();\n const [_searchParams, setSearchParams] = useSearchParams();\n const brand = props.brand || \"EveBox\";\n\n // Control the state of the tool dropdown here to get around a SolidJS router issue where click on the active route\n // in the dropdown will not cause the dropdown to close.\n let [toolDropDownOpen, setToolDropDownOpen] = createSignal(false);\n\n _SET_TIME_RANGE(getInitialTimeRange());\n\n onMount(() => {\n tinykeys(window, {\n \"Shift+?\": (e: any) => {\n if ([\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(e.target.tagName)) {\n return;\n }\n openHelp();\n },\n \"g i\": (e: any) => {\n if ([\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(e.target.tagName)) {\n return;\n }\n navigate(\"/inbox\");\n },\n \"g a\": (e: any) => {\n if ([\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(e.target.tagName)) {\n return;\n }\n navigate(\"/alerts\");\n },\n \"g s\": (e: any) => {\n if ([\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(e.target.tagName)) {\n return;\n }\n navigate(\"/escalated\");\n },\n \"g e\": (e: any) => {\n if ([\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(e.target.tagName)) {\n return;\n }\n navigate(\"/events\");\n },\n \"Control+\\\\\": (e: any) => {\n if ([\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(e.target.tagName)) {\n return;\n }\n setSearchParams({ q: undefined });\n },\n \"\\\\\": (event: any) => {\n if ([\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(event.target.tagName)) {\n return;\n }\n const e = document.getElementById(\"time-range-dropdown\");\n if (e) {\n e.focus();\n e.click();\n }\n },\n });\n });\n\n createEffect(() => {\n if (!props.disableRange) {\n for (let opt of TIME_RANGE_OPTIONS) {\n if (opt[0] === TIME_RANGE()) {\n document.getElementById(\"time-range-dropdown\")!.innerHTML = opt[1]!;\n }\n }\n }\n });\n\n async function logout() {\n await api.logout();\n navigate(\"/\");\n }\n\n return (\n <>\n \n \n \n {brand}\n \n \n \n \n \n Inbox\n \n \n \n \n Escalated\n \n \n \n \n Alerts\n \n \n \n \n Stats\n \n \n \n \n Events\n \n \n \n \n Overview\n \n \n Alerts\n \n \n DHCP\n \n \n \n \n \n \n window.location.reload()}\n >\n Reload Required\n \n \n \n \n \n {\n // A dropdown is used here instead of a traditional select as it allows us to drop it down\n // with a keyboard shortcut.\n }\n \n \n \n \n {(o) => {\n return (\n <>\n {\n SET_TIME_RANGE(o[0] as string);\n e.currentTarget.blur();\n }}\n >\n {o[1]}\n \n >\n );\n }}\n \n \n \n \n \n Help\n }\n align={\"end\"}\n show={toolDropDownOpen()}\n onclick={() => {\n setToolDropDownOpen(!toolDropDownOpen());\n }}\n >\n \n Settings\n \n \n Admin\n \n \n \n Logout\n \n \n \n \n \n {QUEUE_SIZE()}\n \n \n \n \n \n \n >\n );\n}\n","/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/*!\n * Chart.js v4.2.0\n * https://www.chartjs.org\n * (c) 2023 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */ function noop() {\n/* noop */ }\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */ const uid = (()=>{\n let id = 0;\n return ()=>id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */ function isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */ function isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */ function finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */ function valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\nconst toDimension = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */ function callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for(i = len - 1; i >= 0; i--){\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */ function _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for(i = 0, ilen = a0.length; i < ilen; ++i){\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */ function clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for(; k < klen; ++k){\n target[keys[k]] = clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return [\n '__proto__',\n 'prototype',\n 'constructor'\n ].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */ function _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [\n source\n ];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n let current;\n for(let i = 0; i < ilen; ++i){\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n const keys = Object.keys(current);\n for(let k = 0, klen = keys.length; k < klen; ++k){\n merger(keys[k], target, current, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */ function _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */ function _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': (v)=>v,\n // default resolvers\n x: (o)=>o.x,\n y: (o)=>o.y\n};\n/**\n * @private\n */ function _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts){\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return (obj)=>{\n for (const k of keys){\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */ function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value)=>typeof value !== 'undefined';\nconst isFunction = (value)=>typeof value === 'function';\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nconst setsEqual = (a, b)=>{\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a){\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */ function _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */ const PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */ function niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */ function _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for(i = 1; i < sqrt; i++){\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b)=>a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */ function _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for(i = 0, ilen = array.length; i < ilen; i++){\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */ function _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while(Math.round(x * e) / e !== x){\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */ function _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */ function _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */ function _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */ function _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */ function _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */ function _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index)=>table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while(hi - lo > 1){\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {\n lo,\n hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */ const _lookupByKey = (table, key, value, last)=>_lookup(table, value, last ? (index)=>{\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n } : (index)=>table[index][key] < value);\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */ const _rlookupByKey = (table, key, value)=>_lookup(table, value, (index)=>table[index][key] >= value);\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */ function _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while(start < end && values[start] < min){\n start++;\n }\n while(end > start && values[end - 1] > max){\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nconst arrayEvents = [\n 'push',\n 'pop',\n 'shift',\n 'splice',\n 'unshift'\n];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [\n listener\n ]\n }\n });\n arrayEvents.forEach((key)=>{\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value (...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object)=>{\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key)=>{\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */ function _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for(i = 0, ilen = items.length; i < ilen; ++i){\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/ const requestAnimFrame = function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */ function throttled(fn, thisArg) {\n let argsToUse = [];\n let ticking = false;\n return function(...args) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, ()=>{\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */ function debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */ const _toLeftRightCenter = (align)=>align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */ const _alignStartEnd = (align, start, end)=>align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */ const _textX = (align, left, right, rtl)=>{\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */ function _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const { iScale , _parsed } = meta;\n const axis = iScale.axis;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, min).lo, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {\n start,\n count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */ function _scaleRangesChanged(meta) {\n const { xScale , yScale , _scaleRanges } = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t)=>t === 0 || t === 1;\nconst elasticIn = (t, s, p)=>-(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p)=>Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */ const effects = {\n linear: (t)=>t,\n easeInQuad: (t)=>t * t,\n easeOutQuad: (t)=>-t * (t - 2),\n easeInOutQuad: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: (t)=>t * t * t,\n easeOutCubic: (t)=>(t -= 1) * t * t + 1,\n easeInOutCubic: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: (t)=>t * t * t * t,\n easeOutQuart: (t)=>-((t -= 1) * t * t * t - 1),\n easeInOutQuart: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: (t)=>t * t * t * t * t,\n easeOutQuint: (t)=>(t -= 1) * t * t * t * t + 1,\n easeInOutQuint: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: (t)=>-Math.cos(t * HALF_PI) + 1,\n easeOutSine: (t)=>Math.sin(t * HALF_PI),\n easeInOutSine: (t)=>-0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: (t)=>t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: (t)=>t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: (t)=>atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: (t)=>t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: (t)=>Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: (t)=>(t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: (t)=>atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: (t)=>atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic (t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack (t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack (t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack (t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: (t)=>1 - effects.easeOutBounce(1 - t),\n easeOutBounce (t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: (t)=>t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst numbers = [\n 'x',\n 'y',\n 'borderWidth',\n 'radius',\n 'tension'\n];\nconst colors = [\n 'color',\n 'borderColor',\n 'backgroundColor'\n];\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name)=>name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: (v)=>v | 0\n }\n }\n }\n });\n}\n\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst formatters = {\n values (value) {\n return isArray(value) ? value : '' + value;\n },\n numeric (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if ([\n 1,\n 2,\n 3,\n 5,\n 10,\n 15\n ].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n var Ticks = {\n formatters\n};\n\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options)=>options.lineWidth,\n tickColor: (_ctx, options)=>options.color,\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name)=>!name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name)=>name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash'\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: (name)=>name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name)=>name !== 'backdropPadding'\n });\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\n function getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for(let i = 0, n = keys.length; i < n; ++i){\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\n class Defaults {\n constructor(_descriptors, _appliers){\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context)=>context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options)=>getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options)=>getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options)=>getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get () {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set (value) {\n this[privateName] = value;\n }\n }\n });\n }\n apply(appliers) {\n appliers.forEach((apply)=>apply(this));\n }\n}\nvar defaults = /* #__PURE__ */ new Defaults({\n _scriptable: (name)=>!name.startsWith('on'),\n _indexable: (name)=>name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [\n applyAnimationsDefaults,\n applyLayoutsDefaults,\n applyScaleDefaults\n]);\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n function _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n function _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for(i = 0; i < ilen; i++){\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for(j = 0, jlen = thing.length; j < jlen; j++){\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for(i = 0; i < gcLen; i++){\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n function _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n function clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch(style){\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n function _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n function _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n function _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\n function renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [\n text\n ];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for(i = 0; i < lines.length; ++i){\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n function addRoundedRectPath(ctx, rect) {\n const { x , y , w , h , radius } = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */ function toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch(matches[3]){\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = (v)=>+v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? (prop)=>valueOrDefault(value[prop], value[props[prop]]) : (prop)=>value[prop] : ()=>value;\n for (const prop of keys){\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */ function toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */ function toTRBLCorners(value) {\n return _readValueToProps(value, [\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight'\n ]);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */ function toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */ function toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */ function resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for(i = 0, ilen = inputs.length; i < ilen; ++i){\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */ function _addGrace(minmax, grace, beginAtZero) {\n const { min , max } = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add)=>beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [\n ''\n], rootScopes = scopes, fallback, getTarget = ()=>scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope)=>_createResolver([\n scope,\n ...scopes\n ], prefixes, rootScopes, fallback)\n };\n return new Proxy(cache, {\n deleteProperty (target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get (target, prop) {\n return _cached(target, prop, ()=>_resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor (target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf () {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has (target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys (target) {\n return getKeysFromAllScopes(target);\n },\n set (target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\n function _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx)=>_attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope)=>_attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty (target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get (target, prop, receiver) {\n return _cached(target, prop, ()=>_resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor (target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf () {\n return Reflect.getPrototypeOf(proxy);\n },\n has (target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys () {\n return Reflect.ownKeys(proxy);\n },\n set (target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\n function _descriptors(proxy, defaults = {\n scriptable: true,\n indexable: true\n}) {\n const { _scriptable =defaults.scriptable , _indexable =defaults.indexable , _allKeys =defaults.allKeys } = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : ()=>_scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : ()=>_indexable\n };\n}\nconst readKey = (prefix, name)=>prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value)=>isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const { _proxy , _context , _subProxy , _stack } = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter((s)=>s !== arr);\n value = [];\n for (const item of arr){\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent)=>key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes){\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [\n ...parentScopes,\n ...rootScopes\n ];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [\n ''\n ], rootScopes, fallback, ()=>subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while(key){\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes){\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes){\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes){\n for (const key of Object.keys(scope).filter((k)=>!k.startsWith('_'))){\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const { iScale } = meta;\n const { key ='r' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i)=>i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis)=>indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */ function monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen - 1; ++i){\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */ function splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for(i = 0, ilen = points.length; i < ilen; ++i){\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */ function _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt)=>!pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for(i = 0, ilen = points.length; i < ilen; ++i){\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */ function _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */ function _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */ function parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element)=>element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = [\n 'top',\n 'right',\n 'bottom',\n 'left'\n];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for(let i = 0; i < 4; i++){\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target)=>(x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */ function getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const { offsetX , offsetY } = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */ function getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const { canvas , currentDevicePixelRatio } = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const { x , y , box } = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let { width , height } = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = (v)=>Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let { width , height } = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */ function retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */ const supportsEventListenerOptions = function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive () {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */ function readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */ function _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */ function _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */ function _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x (x) {\n return rectX + rectX + width - x;\n },\n setWidth (w) {\n width = w;\n },\n textAlign (align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus (x, value) {\n return x - value;\n },\n leftForLtr (x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x (x) {\n return x;\n },\n setWidth (w) {},\n textAlign (align) {\n return align;\n },\n xPlus (x, value) {\n return x + value;\n },\n leftForLtr (x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction')\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b)=>a - b,\n normalize: (x)=>x\n };\n}\nfunction normalizeSegment({ start , end , count , loop , style }) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const { property , start: startBound , end: endBound } = bounds;\n const { between , normalize } = propertyFn(property);\n const count = points.length;\n let { start , end , loop } = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for(i = 0, ilen = count; i < ilen; ++i){\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\n function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [\n segment\n ];\n }\n const { property , start: startBound , end: endBound } = bounds;\n const count = points.length;\n const { compare , between , normalize } = propertyFn(property);\n const { start , end , loop , style } = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = ()=>between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = ()=>compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = ()=>inside || startIsBefore();\n const shouldStop = ()=>!inside || endIsBefore();\n for(let i = start, prev = start; i <= end; ++i){\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\n function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for(let i = 0; i < segments.length; i++){\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n function findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while(start < count && !points[start].skip){\n start++;\n }\n }\n while(start < count && points[start].skip){\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while(end > start && points[end % count].skip){\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\n function solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for(end = start + 1; end <= max; ++end){\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\n function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const { start , end } = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [\n {\n start,\n end,\n loop\n }\n ], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n function splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n function doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const { _datasetIndex: datasetIndex , options: { spanGaps } } = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while(points[s % count].skip){\n s -= dir;\n }\n while(points[e % count].skip){\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments){\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for(i = start + 1; i <= segment.end; i++){\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n//# sourceMappingURL=helpers.segment.js.map\n","/*!\n * Chart.js v4.2.0\n * https://www.chartjs.org\n * (c) 2023 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nexport { aL as Ticks, d as defaults } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\n\nclass Animator {\n constructor(){\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach((fn)=>fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, ()=>{\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart)=>{\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for(; i >= 0; --i){\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur)=>Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for(; i >= 0; --i){\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */ new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean (from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color (from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number (from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to){\n const currentValue = target[prop];\n to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n const from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n this._from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej)=>{\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for(let i = 0; i < promises.length; i++){\n promises[i][method]();\n }\n }\n}\n\nclass Animations {\n constructor(chart, config){\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach((key)=>{\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions){\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [\n key\n ]).forEach((prop)=>{\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(()=>{\n target.options = newOptions;\n }, ()=>{\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for(i = props.length - 1; i >= 0; --i){\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for(let i = 0; i < keys.length; i++){\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const { min , max , minDefined , maxDefined } = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()){\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const { chart , _cachedMeta: meta } = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const { iScale , vScale , index: datasetIndex } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for(let i = 0; i < ilen; ++i){\n const item = parsed[i];\n const { [iAxis]: index , [vAxis]: value } = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter((key)=>scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items){\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = (mode)=>mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared)=>shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart)=>canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n };\nclass DatasetController {\n static defaults = {};\n static datasetElementType = null;\n static dataElementType = null;\n constructor(chart, datasetIndex){\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r)=>axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const { _cachedMeta: meta , _data: data } = this;\n const { iScale , _stacked } = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = ()=>cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for(i = 0; i < count; ++i){\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const { min: otherMin , max: otherMax } = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for(i = 0; i < ilen; ++i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for(i = ilen - 1; i >= 0; --i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for(i = 0, ilen = parsed.length; i < ilen; ++i){\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for(i = start; i < start + count; ++i){\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for(i = 0; i < active.length; ++i){\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [\n `${elementType}Hover`,\n 'hover',\n elementType,\n ''\n ] : [\n elementType,\n ''\n ];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = ()=>this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList){\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr)=>{\n arr.length += count;\n for(i = arr.length - 1; i >= end; i--){\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for(i = start; i < end; ++i){\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([\n this.index,\n ...args\n ]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync([\n '_insertElements',\n this.getDataset().data.length - count,\n count\n ]);\n }\n _onDataPop() {\n this._sync([\n '_removeElements',\n this._cachedMeta.data.length - 1,\n 1\n ]);\n }\n _onDataShift() {\n this._sync([\n '_removeElements',\n 0,\n 1\n ]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync([\n '_removeElements',\n start,\n count\n ]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync([\n '_insertElements',\n start,\n newCount\n ]);\n }\n }\n _onDataUnshift() {\n this._sync([\n '_insertElements',\n 0,\n arguments.length\n ]);\n }\n}\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for(let i = 0, ilen = visibleMetas.length; i < ilen; i++){\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b)=>a - b));\n }\n return scale._cache.$bar;\n}\n function computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = ()=>{\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for(i = 0, ilen = values.length; i < ilen; ++i){\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for(i = 0, ilen = scale.ticks.length; i < ilen; ++i){\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\n function computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\n function computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for(i = start, ilen = start + count; i < ilen; ++i){\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const { start , end , reverse , top , bottom } = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, { inflateAmount }, ratio) {\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n static id = 'bar';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n };\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for(i = start, ilen = start + count; i < ilen; ++i){\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const { iScale , vScale } = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const { index , _cachedMeta: { vScale } } = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n for(let i = start; i < start + count; i++){\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const { iScale } = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta)=>{\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets){\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for(i = 0, ilen = meta.data.length; i < ilen; ++i){\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const { _cachedMeta: { vScale , _stacked , index: datasetIndex } , options: { base: baseValue , minBarLength } } = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for(; i < ilen; ++i){\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\n\nclass BubbleController extends DatasetController {\n static id = 'bubble';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'borderWidth',\n 'radius'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n static id = 'doughnut';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'circumference',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'startAngle',\n 'x',\n 'y',\n 'offset',\n 'borderWidth',\n 'spacing'\n ]\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n };\n static descriptors = {\n _scriptable: (name)=>name !== 'spacing',\n _indexable: (name)=>name !== 'spacing'\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i)=>+data[i];\n if (isObject(data[start])) {\n const { key ='value' } = this._parsing;\n getter = (i)=>+resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for(i = start, ilen = start + count; i < ilen; ++i){\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for(let i = 0; i < this.chart.data.datasets.length; ++i){\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const { chartArea } = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const { circumference , rotation } = this._getRotationExtents();\n const { ratioX , ratioY , offsetX , offsetY } = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for(i = 0; i < start; ++i){\n startAngle += this._circumference(i, reset);\n }\n for(i = start; i < start + count; ++i){\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for(i = 0; i < metaData.length; i++){\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for(i = 0, ilen = chart.data.datasets.length; i < ilen; ++i){\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for(i = 0, ilen = arcs.length; i < ilen; ++i){\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for(let i = 0, ilen = arcs.length; i < ilen; ++i){\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for(let i = 0; i < datasetIndex; ++i){\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n\nclass LineController extends DatasetController {\n static id = 'line';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { dataset: line , data: points = [] , _dataset } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = 0; i < pointsCount; ++i){\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n\nclass PolarAreaController extends DatasetController {\n static id = 'polarArea';\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ]\n }\n },\n indexAxis: 'r',\n startAngle: 0\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index)=>{\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for(i = 0; i < start; ++i){\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for(i = start; i < start + count; i++){\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index)=>{\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\n\nclass PieController extends DoughnutController {\n static id = 'pie';\n static defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n };\n}\n\nclass RadarController extends DatasetController {\n static id = 'radar';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n };\n static overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n };\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n\nclass ScatterController extends DatasetController {\n static id = 'scatter';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n static overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { data: points = [] } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const { dataset: line , _dataset } = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const { showLine } = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = start; i < start + count; ++i){\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */ function abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */ class DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */ static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n constructor(options){\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const { controller , data , _sorted } = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n function evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for(let i = 0, ilen = metasets.length; i < ilen; ++i){\n const { index , data } = metasets[i];\n const { lo , hi } = binarySearch(metasets[i], axis, value, intersect);\n for(let j = lo; j <= hi; ++j){\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n function getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n function getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const { startAngle , endAngle } = element.getProps([\n 'startAngle',\n 'endAngle'\n ], useFinalPosition);\n const { angle } = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n });\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [\n {\n element,\n datasetIndex,\n index\n }\n ];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n function getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n var Interaction = {\n evaluateInteractionItems,\n modes: {\n index (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta)=>{\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for(let i = 0; i < data.length; ++i){\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n];\nfunction filterByPosition(array, position) {\n return array.filter((v)=>v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter((v)=>STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b)=>{\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for(i = 0, ilen = (boxes || []).length; i < ilen; ++i){\n box = boxes[i];\n ({ position: pos , options: { stack , stackWeight =1 } } = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts){\n const { stack , pos , stackWeight } = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n function setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const { vBoxMaxWidth , hBoxMaxHeight } = params;\n let i, ilen, layout;\n for(i = 0, ilen = layouts.length; i < ilen; ++i){\n layout = layouts[i];\n const { fullSize } = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter((wrap)=>wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const { pos , box } = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach((pos)=>{\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions([\n 'left',\n 'right'\n ]) : marginForPositions([\n 'top',\n 'bottom'\n ]);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for(i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i){\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const { same , other } = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let { x , y } = chartArea;\n for (const layout of boxes){\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height1 = chartArea.h * weight;\n const width1 = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width1, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width1, height1);\n }\n stack.start = x;\n stack.placed += height1;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [\n {\n z: 0,\n draw (chartArea) {\n item.draw(chartArea);\n }\n }\n ];\n };\n chart.boxes.push(item);\n },\n removeBox (chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure (chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update (chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, (box)=>{\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap)=>wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, (layout)=>{\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\n const EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = (value)=>value === null || value === '';\n function initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const { x , y } = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList){\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart)=>{\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height)=>{\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver((entries)=>{\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event)=>{\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\n class DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n [\n 'height',\n 'width'\n ].forEach((prop)=>{\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key)=>{\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n static defaults = {};\n static defaultRoutes = undefined;\n active = false;\n tooltipPosition(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach((prop)=>{\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for(i = 0, ilen = numMajorIndices - 1; i < ilen; i++){\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n function calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for(let i = 0, ilen = factors.length - 1; i < ilen; i++){\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n function getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n function skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for(i = 0; i < ticks.length; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n function skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while(next < 0){\n count++;\n next = Math.round(start + count * spacing);\n }\n for(i = Math.max(start, 0); i < end; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n function getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for(diff = arr[0], i = 1; i < len; ++i){\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align)=>align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset)=>edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\n function sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for(; i < len; i += increment){\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n function getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n function garbageCollect(caches, length) {\n each(caches, (cache)=>{\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for(i = 0; i < gcLen; ++i){\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n function getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n function getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const { top , left , bottom , right , chart } = scale;\n const { chartArea , scales } = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n titleX = scales[positionAxisID1].getPixelForValue(value1) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg){\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let { _userMin , _userMax , _suggestedMin , _suggestedMax } = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for(let i = 0, ilen = metas.length; i < ilen; ++i){\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [\n this\n ]);\n }\n update(maxWidth, maxHeight, margins) {\n const { beginAtZero , grace , ticks: tickOpts } = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [\n this\n ]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [\n this\n ]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [\n this\n ]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [\n this\n ]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [\n this\n ]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [\n tick.value,\n i,\n ticks\n ], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [\n this\n ]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [\n this\n ]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [\n this\n ]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [\n this\n ]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const { chart , options: { ticks: tickOpts , title: titleOpts , grid: gridOpts } } = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const { first , last , widest , highest } = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const { ticks: { align , padding } , position } = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [\n this\n ]);\n }\n isHorizontal() {\n const { axis , position } = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const { ctx , _longestTextCache: caches } = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for(i = 0; i < length; ++i){\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for(j = 0, jlen = label.length; j < jlen; ++j){\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx)=>({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const { min , max } = this;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const { grid , position , border } = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID1].getPixelForValue(value1));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for(i = 0; i < ticksLength; i += step){\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const { position , ticks: optionTicks } = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const { align , crossAlign , padding , mirror } = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret1 = this._getYAxisLabelAlignment(tl);\n textAlign = ret1.textAlign;\n x = ret1.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID1 = Object.keys(position)[0];\n const value1 = position[positionAxisID1];\n x = this.chart.scales[positionAxisID1].getPixelForValue(value1);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch(textBaseline){\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch(textAlign){\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [\n x,\n y\n ],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const { position , ticks } = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const { position , ticks: { crossAlign , mirror , padding } } = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const { ctx , options: { backgroundColor } , left , top , width , height } = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex((t)=>t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style)=>{\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for(i = 0, ilen = items.length; i < ilen; ++i){\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const { chart , ctx , options: { border , grid } } = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items){\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const { ctx , options: { position , title , reverse } } = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const { titleX , titleY , maxWidth , rotation } = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [\n {\n z: tz,\n draw: (chartArea)=>{\n this.draw(chartArea);\n }\n }\n ];\n }\n return [\n {\n z: gz,\n draw: (chartArea)=>{\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n },\n {\n z: bz,\n draw: ()=>{\n this.drawBorder();\n }\n },\n {\n z: tz,\n draw: (chartArea)=>{\n this.drawLabels(chartArea);\n }\n }\n ];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override){\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach((property)=>{\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [\n scope\n ].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor(){\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [\n this.controllers,\n this.scales,\n this.elements\n ];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [\n ...args\n ].forEach((arg)=>{\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, (item)=>{\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for(let i = 0; i < this._typedRegistries.length; i++){\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */ new Registry();\n\nclass PluginService {\n constructor(){\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors){\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [\n chart,\n args,\n descriptor.options\n ];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n function allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for(let i = 0; i < keys.length; i++){\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for(let i1 = 0; i1 < local.length; i1++){\n const plugin = local[i1];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, { plugins , localIds }, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins){\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, { plugin , local }, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [\n ''\n ], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n id = scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.length > 1 && determineAxis(id[0].toLowerCase(), scaleOptions);\n if (id) {\n return id;\n }\n throw new Error(`Cannot determine type of '${name}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach((id)=>{\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [\n {\n axis\n },\n scaleConf,\n defaultScaleOptions[axis],\n defaultScaleOptions[defaultId]\n ]);\n });\n config.data.datasets.forEach((dataset)=>{\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach((defaultID)=>{\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [\n {\n axis\n },\n configScales[id],\n defaultScaleOptions[defaultID]\n ]);\n });\n });\n Object.keys(scales).forEach((key)=>{\n const scale = scales[key];\n mergeIf(scale, [\n defaults.scales[scale.type],\n defaults.scale\n ]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key)=>{\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config){\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, ()=>[\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, ()=>[\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, ()=>[\n [\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]\n ]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, ()=>[\n [\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || []\n ]\n ]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const { options , type } = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach((keys)=>{\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach((key)=>addIfFound(scopes, mainScope, key));\n }\n keys.forEach((key)=>addIfFound(scopes, options, key));\n keys.forEach((key)=>addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach((key)=>addIfFound(scopes, defaults, key));\n keys.forEach((key)=>addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const { options , type } = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {\n type\n },\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = [\n ''\n ]) {\n const result = {\n $shared: true\n };\n const { resolver , subPrefixes } = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names){\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [\n ''\n ], descriptorDefaults) {\n const { resolver } = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter((p)=>!p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = (value)=>isObject(value) && Object.getOwnPropertyNames(value).reduce((acc, key)=>acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const { isScriptable , isIndexable } = _descriptors(proxy);\n for (const prop of names){\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"4.2.0\";\n\nconst KNOWN_POSITIONS = [\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'chartArea'\n];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [\n context\n ], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [\n context\n ], chart);\n}\n function getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key)=>{\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c)=>c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys){\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n function determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getDatasetArea(meta) {\n const { xScale , yScale } = meta;\n if (xScale && yScale) {\n return {\n left: xScale.left,\n right: xScale.right,\n top: yScale.top,\n bottom: yScale.bottom\n };\n }\n}\nclass Chart {\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n constructor(item, userConfig){\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce((mode)=>this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const { options: { aspectRatio , maintainAspectRatio } , width , height , _aspectRatio } = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [\n this,\n newSize\n ], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID)=>{\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id)=>{\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map((id)=>{\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, (item)=>{\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id)=>{\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale)=>{\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b)=>a.index - b.index);\n if (numMeta > numData) {\n for(let i = numData; i < numMeta; ++i){\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const { _metasets: metasets , data: { datasets } } = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index)=>{\n if (datasets.filter((x)=>x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for(i = 0, ilen = datasets.length; i < ilen; i++){\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const { datasetElementType , dataElementType } = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex)=>{\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; i++){\n const { controller } = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller)=>{\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const { _active , _lastEvent } = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale)=>{\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const { _hiddenIndices } = this;\n const changes = this._getUniformDataChanges() || [];\n for (const { method , start , count } of changes){\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx)=>new Set(_dataChanges.filter((c)=>c[0] === idx).map((c, i)=>i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for(let i = 1; i < datasetCount; i++){\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map((c)=>c.split(',')).map((a)=>({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box)=>{\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index)=>{\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this.getDatasetMeta(i).controller.configure();\n }\n for(let i1 = 0, ilen1 = this.data.datasets.length; i1 < ilen1; ++i1){\n this._updateDataset(i1, isFunction(mode) ? mode({\n datasetIndex: i1\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const { width , height } = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for(i = 0; i < layers.length && layers[i].z <= 0; ++i){\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for(; i < layers.length; ++i){\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta) || this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter((x)=>x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update((ctx)=>ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for(i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const { canvas , ctx } = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y)=>{\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type)=>_add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener)=>{\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height)=>{\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = ()=>{\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = ()=>{\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter((p)=>p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin)=>(plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const { _active: lastActive = [] , options } = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [\n e,\n active,\n this\n ], this);\n if (isClick) {\n callback(options.onClick, [\n e,\n active,\n this\n ], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart)=>chart._plugins.invalidate());\n}\n\nfunction clipArc(ctx, element, endAngle) {\n const { startAngle , pixelMargin , x , y , outerRadius , innerRadius } = element;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, [\n 'outerStart',\n 'outerEnd',\n 'innerStart',\n 'innerEnd'\n ]);\n}\n/**\n * Parse border radius from the provided options\n */ function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val)=>{\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */ function rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */ function pathArc(ctx, element, offset, spacing, end, circular) {\n const { x , y , startAngle: start , pixelMargin , innerRadius: innerR } = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const { outerStart , outerEnd , innerStart , innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter1 = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter1.x, pCenter1.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter2 = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter2.x, pCenter2.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter3 = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter3.x, pCenter3.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference } = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference , options } = element;\n const { borderWidth , borderJoinStyle } = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n static id = 'arc';\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n const { angle , distance } = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n });\n const { startAngle , endAngle , innerRadius , outerRadius , circumference } = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , startAngle , endAngle , innerRadius , outerRadius } = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const { offset , spacing } = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const { options , circumference } = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const { start: paramsStart = 0 , end: paramsEnd = count - 1 } = params;\n const { start: segmentStart , end: segmentEnd } = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n function pathSegment(ctx, line, segment, params) {\n const { points , options } = line;\n const { count , start , loop , ilen } = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let { move =true , reverse } = params || {};\n let i, point, prev;\n for(i = 0; i <= ilen; ++i){\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\n function fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const { count , start , ilen } = pathVars(points, segment, params);\n const { move =true , reverse } = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index)=>(start + (reverse ? ilen - index : index)) % count;\n const drawX = ()=>{\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for(i = 0; i <= ilen; ++i){\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\n function _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n function _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const { segments , options } = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments){\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n static id = 'line';\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash' && name !== 'fill'\n };\n constructor(cfg){\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for(i = 0, ilen = segments.length; i < ilen; ++i){\n const { start , end } = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments){\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const { [axis]: value } = el.getProps([\n axis\n ], useFinalPosition);\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n static id = 'point';\n /**\n * @type {any}\n */ static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n /**\n * @type {any}\n */ static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n\nfunction getBarBounds(bar, useFinalPosition) {\n const { x , y , base , width , height } = bar.getProps([\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const { enableBorderRadius } = bar.getProps([\n 'enableBorderRadius'\n ]);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n function addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n static id = 'bar';\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const { inflateAmount , options: { borderColor , backgroundColor } } = this;\n const { inner , outer } = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , base , horizontal } = this.getProps([\n 'x',\n 'y',\n 'base',\n 'horizontal'\n ], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nconst BORDER_COLORS = [\n 'rgb(54, 162, 235)',\n 'rgb(255, 99, 132)',\n 'rgb(255, 159, 64)',\n 'rgb(255, 205, 86)',\n 'rgb(75, 192, 192)',\n 'rgb(153, 102, 255)',\n 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map((color)=>color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex)=>{\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for(k in descriptors){\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nfunction containsColorsDefinition(descriptor) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout (chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const { data: { datasets } , options: chartOptions } = chart.config;\n const { elements } = chartOptions;\n if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements))) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for(i = 0; i < samples - 2; i++){\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for(j = avgRangeStart; j < avgRangeEnd; j++){\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const { x: pointAx , y: pointAy } = data[a];\n maxArea = area = -1;\n for(j = rangeOffs; j < rangeTo; j++){\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for(i = start; i < start + count; ++i){\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset)=>{\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const { iScale } = meta;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options)=>{\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex)=>{\n const { _data , indexAxis } = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([\n indexAxis,\n chart.options.indexAxis\n ]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let { start , count } = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch(options.algorithm){\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy (chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments){\n let { start , end } = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments){\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources){\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const { x =null , y =null } = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({ start , end })=>{\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for(; end > start; end--){\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [\n index\n ];\n let target;\n if (!propagate) {\n return fill;\n }\n while(fill !== false && visited.indexOf(fill) === -1){\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\n function _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return [\n 'origin',\n 'start',\n 'end',\n 'stack',\n 'shape'\n ].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\n function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n function _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n function parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const { scale , index , line } = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n for(let j = segment.start; j <= segment.end; j++){\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\n function getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for(let i = 0; i < metas.length; i++){\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n function addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for(let j = 0; j < linesBelow.length; j++){\n const line = linesBelow[j];\n const { first , last , point } = findPoint(line, sourcePoint, 'x');\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\n function findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\n\nclass simpleArc {\n constructor(opts){\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const { x , y , radius } = this;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const { x , y , radius } = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const { chart , fill , line } = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\n function getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const { scale ={} , fill } = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const { scale , fill } = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for(let i = 0; i < length; ++i){\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const { line , scale , axis } = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const { above =color , below =color } = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const { line , target , above , below , area , scale } = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const { segments , points } = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments){\n const { start , end } = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const { line , target , property , color , scale } = cfg;\n const segments = _segments(line, target, property);\n for (const { source: src , target: tgt , start , end } of segments){\n const { style: { backgroundColor =color } = {} } = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const { top , bottom } = scale.chart.chartArea;\n const { property , start , end } = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate (chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for(i = 0; i < count; ++i){\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for(i = 0; i < count; ++i){\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw (chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw (chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw (chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize)=>{\n let { boxHeight =fontSize , boxWidth =fontSize } = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b)=>a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config){\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [\n this.chart\n ], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item)=>labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b)=>labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const { options , ctx } = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const { boxWidth , itemHeight } = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const { ctx , maxWidth , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [\n 0\n ];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i)=>{\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const { ctx , maxHeight , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i)=>{\n const { itemWidth , itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const { legendHitBoxes: hitboxes , options: { align , labels: { padding } , rtl } } = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes){\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox1 of hitboxes){\n if (hitbox1.col !== col) {\n col = hitbox1.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox1.top = top;\n hitbox1.left += this.left + padding;\n hitbox1.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox1.left), hitbox1.width);\n top += hitbox1.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const { options: opts , columnSizes , lineWidths , ctx } = this;\n const { align , labels: labelOpts } = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const { padding } = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const { boxWidth , boxHeight , itemHeight } = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i)=>{\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight);\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size)=>Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for(i = 0; i < lh.length; ++i){\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [\n e,\n previous,\n this\n ], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [\n e,\n hoveredItem,\n this\n ], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [\n e,\n hoveredItem,\n this\n ], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b)=>a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length + 0.5 : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start (chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop (chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate (chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate (chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent (chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick (e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx)=>ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels (chart) {\n const datasets = chart.data.datasets;\n const { labels: { usePointStyle , pointStyle , textAlign , color , useBorderRadius , borderRadius } } = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta)=>{\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx)=>ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: (name)=>!name.startsWith('on'),\n labels: {\n _scriptable: (name)=>![\n 'generateLabels',\n 'filter',\n 'sort'\n ].includes(name)\n }\n }\n};\n\nclass Title extends Element {\n constructor(config){\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const { top , left , bottom , right , options } = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const { titleX , titleY , maxWidth , rotation } = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start (chart, _args, options) {\n createTitle(chart, options);\n },\n stop (chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate (chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start (chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop (chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate (chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst positioners = {\n average (items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest (items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\n function splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n function createTooltipItem(chart, item) {\n const { element , datasetIndex , index } = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const { label , value } = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n function getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const { body , footer , title } = tooltip;\n const { boxWidth , boxHeight } = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem)=>count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, (bodyItem)=>{\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const { y , height } = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const { x , width } = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const { x , width } = size;\n const { width: chartWidth , chartArea: { left , right } } = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\n function determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let { x , width } = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let { y , height } = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\n function getBackgroundPoint(options, size, alignment, chart) {\n const { caretSize , caretPadding , cornerRadius } = options;\n const { xAlign , yAlign } = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n function getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title (tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label (tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor () {\n return this.options.bodyColor;\n },\n labelPointStyle (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n function invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n static positioners = positioners;\n constructor(config){\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const { callbacks } = options;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const { callbacks } = options;\n const bodyItems = [];\n each(tooltipItems, (context)=>{\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const { callbacks } = options;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for(i = 0, len = active.length; i < len; ++i){\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array)=>options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b)=>options.itemSort(a, b, data));\n }\n each(tooltipItems, (context)=>{\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const { xAlign , yAlign } = this;\n const { caretSize , cornerRadius } = options;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n const { x: ptX , y: ptY } = tooltipPoint;\n const { width , height } = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const { boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const { body } = this;\n const { bodySpacing , bodyAlign , displayColors , boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for(i = 0, ilen = body.length; i < ilen; ++i){\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for(j = 0, jlen = lines.length; j < jlen; ++j){\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const { xAlign , yAlign } = this;\n const { x , y } = pt;\n const { width , height } = tooltipSize;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const { caretX , caretY , options } = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit (chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw (chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', {\n ...args,\n cancelable: true\n }) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent (chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts)=>opts.bodyFont.size,\n boxWidth: (ctx, opts)=>opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'width',\n 'height',\n 'caretX',\n 'caretY'\n ]\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name)=>name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: [\n 'interaction'\n ]\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nColors: plugin_colors,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels)=>{\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max)=>index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n static id = 'category';\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n constructor(cfg){\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const { index , label } of added){\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for(let value = min; value <= max; value++){\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const { bounds , step , min , max , precision , count , maxTicks , maxDigits , includeBounds } = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const { min: rmin , max: rmax } = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [\n {\n value: rmin\n },\n {\n value: rmax\n }\n ];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for(; j < numSpaces; ++j){\n ticks.push({\n value: Math.round((niceMin + j * spacing) * factor) / factor\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, { horizontal , minRotation }) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const { beginAtZero } = this.options;\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let { maxTicksLimit , stepSize } = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n static id = 'linear';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n\nconst log10Floor = (v)=>Math.floor(log10(v));\nconst changeExponent = (v, m)=>Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while(steps(min, max, rangeExp) > 10){\n rangeExp++;\n }\n while(steps(min, max, rangeExp) < 10){\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n function generateTicks(generationOptions, { min , max }) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while(value < max){\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n static id = 'logarithmic';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [\n raw,\n index\n ]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [\n label\n ];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\n function fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const { ctx , options: { pointLabels } } = scale;\n for(let i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const { x , y , textAlign , left , top , right , bottom } = scale._pointLabelItems[i];\n const { backdropColor } = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const { ctx } = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for(let i = 1; i < labelCount; i++){\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const { color , lineWidth } = gridLineOpts;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n static id = 'radialLinear';\n static defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback (label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n };\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n constructor(cfg){\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index)=>{\n const label = callback(this.options.pointLabels.callback, [\n value,\n index\n ], this);\n return label || label === 0 ? label : '';\n }).filter((v, i)=>this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const { left , top , right , bottom } = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const { backgroundColor , grid: { circular } } = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const { angleLines , grid , border } = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index)=>{\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for(i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const { color , lineWidth } = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index)=>{\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\n\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\n const UNITS = /* #__PURE__ */ Object.keys(INTERVALS);\n function sorter(a, b) {\n return a - b;\n}\n function parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const { parser , round , isoWeekday } = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\n function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for(let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i){\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\n function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for(let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--){\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n function determineMajorUnit(unit) {\n for(let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i){\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n function addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const { lo , hi } = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n function setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for(major = first; major <= last; major = +adapter.add(major, 1, majorUnit)){\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n function ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for(i = 0; i < ilen; ++i){\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n static id = 'time';\n static defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n };\n constructor(props){\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map((tick)=>+tick.value));\n }\n }\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for(time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++){\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b)=>a - b).map((x)=>+x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [\n time,\n index,\n ticks\n ], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [\n exampleTime\n ], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for(i = 0, ilen = labels.length; i < ilen; ++i){\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({ lo , hi } = _lookupByKey(table, 'pos', val));\n }\n ({ pos: prevSource , time: prevTarget } = table[lo]);\n ({ pos: nextSource , time: nextTarget } = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({ lo , hi } = _lookupByKey(table, 'time', val));\n }\n ({ time: prevSource , pos: prevTarget } = table[lo]);\n ({ time: nextSource , pos: nextTarget } = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n static id = 'timeseries';\n static defaults = TimeScale.defaults;\n constructor(props){\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const { min , max } = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for(i = 0, ilen = timestamps.length; i < ilen; ++i){\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {\n time: min,\n pos: 0\n },\n {\n time: max,\n pos: 1\n }\n ];\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n//# sourceMappingURL=chart.js.map\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { createSignal } from \"solid-js\";\nimport { TIME_RANGE } from \"./Top\";\nimport { parse_timerange } from \"./datetime\";\nimport { Chart } from \"chart.js\";\n\nconst DEFAULT_THEME = \"light\";\n\nexport const [currentThemeName, setCurrentThemeName] =\n createSignal(DEFAULT_THEME);\n\nexport function setTheme(name: string) {\n document.getElementById(\"theme\")?.remove();\n let e = document.createElement(\"style\");\n e.id = \"theme\";\n switch (name) {\n case \"dark\":\n document.querySelector(\"html\")?.setAttribute(\"data-bs-theme\", \"dark\");\n Chart.defaults.color = \"#fff\";\n name = \"dark\";\n break;\n default:\n name = \"light\";\n Chart.defaults.color = \"#666\";\n document.querySelector(\"html\")?.setAttribute(\"data-bs-theme\", \"light\");\n break;\n }\n document.body.appendChild(e);\n localStorage.setItem(\"THEME\", name);\n setCurrentThemeName(name);\n}\n\nexport function loadInitialTheme() {\n const localTheme = localStorage.getItem(\"THEME\");\n switch (localTheme) {\n case \"dark\":\n setTheme(\"dark\");\n break;\n default:\n setTheme(\"light\");\n break;\n }\n}\n\nexport function setViewSize(size: number | string) {\n localStorage.setItem(\"VIEW_SIZE\", `${size}`);\n}\n\nexport function getViewSize(): number | string {\n const localViewSize = localStorage.getItem(\"VIEW_SIZE\") || \"100\";\n switch (localViewSize) {\n case \"fit\":\n return \"fit\";\n default:\n return +localViewSize || 100;\n }\n}\n\nexport function timeRangeAsSeconds(): number | undefined {\n let time_range = TIME_RANGE();\n if (time_range !== undefined) {\n return parse_timerange(time_range);\n }\n return undefined;\n}\n","import { untrack, createSignal, useTransition, createComputed, batch, createMemo, $TRACK } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nvar noop = () => {\n};\nvar noopTransition = (el, done) => done();\nfunction createSwitchTransition(source, options) {\n const initSource = untrack(source);\n const initReturned = initSource ? [initSource] : [];\n if (isServer) {\n return () => initReturned;\n }\n const { onEnter = noopTransition, onExit = noopTransition } = options;\n const [returned, setReturned] = createSignal(\n options.appear ? [] : initReturned\n );\n const [isTransitionPending] = useTransition();\n let next;\n let isExiting = false;\n function exitTransition(el, after) {\n if (!el)\n return after && after();\n isExiting = true;\n onExit(el, () => {\n batch(() => {\n isExiting = false;\n setReturned((p) => p.filter((e) => e !== el));\n after && after();\n });\n });\n }\n function enterTransition(after) {\n const el = next;\n if (!el)\n return after && after();\n next = void 0;\n setReturned((p) => [el, ...p]);\n onEnter(el, after ?? noop);\n }\n const triggerTransitions = options.mode === \"out-in\" ? (\n // exit -> enter\n (prev) => isExiting || exitTransition(prev, enterTransition)\n ) : options.mode === \"in-out\" ? (\n // enter -> exit\n (prev) => enterTransition(() => exitTransition(prev))\n ) : (\n // exit & enter\n (prev) => {\n exitTransition(prev);\n enterTransition();\n }\n );\n createComputed(\n (prev) => {\n const el = source();\n if (untrack(isTransitionPending)) {\n isTransitionPending();\n return prev;\n }\n if (el !== prev) {\n next = el;\n batch(() => untrack(() => triggerTransitions(prev)));\n }\n return el;\n },\n options.appear ? void 0 : initSource\n );\n return returned;\n}\nfunction createListTransition(source, options) {\n const initSource = untrack(source);\n if (isServer) {\n const copy = initSource.slice();\n return () => copy;\n }\n const { onChange } = options;\n let prevSet = new Set(options.appear ? void 0 : initSource);\n const exiting = /* @__PURE__ */ new WeakSet();\n const [toRemove, setToRemove] = createSignal([], { equals: false });\n const [isTransitionPending] = useTransition();\n const finishRemoved = options.exitMethod === \"remove\" ? noop : (els) => {\n setToRemove((p) => (p.push.apply(p, els), p));\n for (const el of els)\n exiting.delete(el);\n };\n const handleRemoved = options.exitMethod === \"remove\" ? noop : options.exitMethod === \"keep-index\" ? (els, el, i) => els.splice(i, 0, el) : (els, el) => els.push(el);\n return createMemo(\n (prev) => {\n const elsToRemove = toRemove();\n const sourceList = source();\n sourceList[$TRACK];\n if (untrack(isTransitionPending)) {\n isTransitionPending();\n return prev;\n }\n if (elsToRemove.length) {\n const next = prev.filter((e) => !elsToRemove.includes(e));\n elsToRemove.length = 0;\n onChange({ list: next, added: [], removed: [], unchanged: next, finishRemoved });\n return next;\n }\n return untrack(() => {\n const nextSet = new Set(sourceList);\n const next = sourceList.slice();\n const added = [];\n const removed = [];\n const unchanged = [];\n for (const el of sourceList) {\n (prevSet.has(el) ? unchanged : added).push(el);\n }\n let nothingChanged = !added.length;\n for (let i = 0; i < prev.length; i++) {\n const el = prev[i];\n if (!nextSet.has(el)) {\n if (!exiting.has(el)) {\n removed.push(el);\n exiting.add(el);\n }\n handleRemoved(next, el, i);\n }\n if (nothingChanged && el !== next[i])\n nothingChanged = false;\n }\n if (!removed.length && nothingChanged)\n return prev;\n onChange({ list: next, added, removed, unchanged, finishRemoved });\n prevSet = nextSet;\n return next;\n });\n },\n options.appear ? [] : initSource.slice()\n );\n}\n\nexport { createListTransition, createSwitchTransition };\n","import { chain, arrayEquals } from '@solid-primitives/utils';\nimport { createMemo, children, createComputed, untrack, onCleanup } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nfunction mergeRefs(...refs) {\n return chain(refs);\n}\nvar defaultElementPredicate = isServer ? (item) => item != null && typeof item === \"object\" && \"t\" in item : (item) => item instanceof Element;\nfunction getResolvedElements(value, predicate) {\n if (predicate(value))\n return value;\n if (typeof value === \"function\" && !value.length)\n return getResolvedElements(value(), predicate);\n if (Array.isArray(value)) {\n const results = [];\n for (const item of value) {\n const result = getResolvedElements(item, predicate);\n if (result)\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results.length ? results : null;\n }\n return null;\n}\nfunction resolveElements(fn, predicate = defaultElementPredicate, serverPredicate = defaultElementPredicate) {\n const children2 = createMemo(fn);\n const memo = createMemo(\n () => getResolvedElements(children2(), isServer ? serverPredicate : predicate)\n );\n memo.toArray = () => {\n const value = memo();\n return Array.isArray(value) ? value : value ? [value] : [];\n };\n return memo;\n}\nfunction getFirstChild(value, predicate) {\n if (predicate(value))\n return value;\n if (typeof value === \"function\" && !value.length)\n return getFirstChild(value(), predicate);\n if (Array.isArray(value)) {\n for (const item of value) {\n const result = getFirstChild(item, predicate);\n if (result)\n return result;\n }\n }\n return null;\n}\nfunction resolveFirst(fn, predicate = defaultElementPredicate, serverPredicate = defaultElementPredicate) {\n const children2 = createMemo(fn);\n return createMemo(() => getFirstChild(children2(), isServer ? serverPredicate : predicate));\n}\nfunction Refs(props) {\n if (isServer) {\n return props.children;\n }\n const cb = props.ref, resolved = children(() => props.children);\n let prev = [];\n createComputed(() => {\n const els = resolved.toArray().filter(defaultElementPredicate);\n if (!arrayEquals(prev, els))\n untrack(() => cb(els));\n prev = els;\n }, []);\n onCleanup(() => prev.length && cb([]));\n return resolved;\n}\nfunction Ref(props) {\n if (isServer) {\n return props.children;\n }\n const cb = props.ref, resolved = children(() => props.children);\n let prev;\n createComputed(() => {\n const el = resolved.toArray().find(defaultElementPredicate);\n if (el !== prev)\n untrack(() => cb(el));\n prev = el;\n });\n onCleanup(() => prev && cb(void 0));\n return resolved;\n}\n\nexport { Ref, Refs, defaultElementPredicate, getFirstChild, getResolvedElements, mergeRefs, resolveElements, resolveFirst };\n","// src/common.ts\nimport { createMemo } from \"solid-js\";\nfunction createClassnames(props) {\n return createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActive: (props.enterActiveClass || name + \"-enter-active\").split(\" \"),\n enter: (props.enterClass || name + \"-enter\").split(\" \"),\n enterTo: (props.enterToClass || name + \"-enter-to\").split(\" \"),\n exitActive: (props.exitActiveClass || name + \"-exit-active\").split(\" \"),\n exit: (props.exitClass || name + \"-exit\").split(\" \"),\n exitTo: (props.exitToClass || name + \"-exit-to\").split(\" \"),\n move: (props.moveClass || name + \"-move\").split(\" \")\n };\n });\n}\nfunction nextFrame(fn) {\n requestAnimationFrame(() => requestAnimationFrame(fn));\n}\nfunction enterTransition(classes, events, el, done) {\n const { onBeforeEnter, onEnter, onAfterEnter } = events;\n onBeforeEnter?.(el);\n el.classList.add(...classes.enter);\n el.classList.add(...classes.enterActive);\n queueMicrotask(() => {\n if (!el.parentNode)\n return done?.();\n onEnter?.(el, () => endTransition());\n });\n nextFrame(() => {\n el.classList.remove(...classes.enter);\n el.classList.add(...classes.enterTo);\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n function endTransition(e) {\n if (!e || e.target === el) {\n done?.();\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...classes.enterActive);\n el.classList.remove(...classes.enterTo);\n onAfterEnter?.(el);\n }\n }\n}\nfunction exitTransition(classes, events, el, done) {\n const { onBeforeExit, onExit, onAfterExit } = events;\n if (!el.parentNode)\n return done?.();\n onBeforeExit?.(el);\n el.classList.add(...classes.exit);\n el.classList.add(...classes.exitActive);\n onExit?.(el, () => endTransition());\n nextFrame(() => {\n el.classList.remove(...classes.exit);\n el.classList.add(...classes.exitTo);\n if (!onExit || onExit.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n function endTransition(e) {\n if (!e || e.target === el) {\n done?.();\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...classes.exitActive);\n el.classList.remove(...classes.exitTo);\n onAfterExit?.(el);\n }\n }\n}\n\n// src/Transition.ts\nimport { createSwitchTransition } from \"@solid-primitives/transition-group\";\nimport { resolveFirst } from \"@solid-primitives/refs\";\nvar TRANSITION_MODE_MAP = {\n inout: \"in-out\",\n outin: \"out-in\"\n};\nvar Transition = (props) => {\n const classnames = createClassnames(props);\n return createSwitchTransition(\n resolveFirst(() => props.children),\n {\n mode: TRANSITION_MODE_MAP[props.mode],\n appear: props.appear,\n onEnter(el, done) {\n enterTransition(classnames(), props, el, done);\n },\n onExit(el, done) {\n exitTransition(classnames(), props, el, done);\n }\n }\n );\n};\n\n// src/TransitionGroup.ts\nimport { createListTransition } from \"@solid-primitives/transition-group\";\nimport { resolveElements } from \"@solid-primitives/refs\";\nvar TransitionGroup = (props) => {\n const classnames = createClassnames(props);\n return createListTransition(resolveElements(() => props.children).toArray, {\n appear: props.appear,\n exitMethod: \"keep-index\",\n onChange({ added, removed, finishRemoved, list }) {\n const classes = classnames();\n for (const el of added) {\n enterTransition(classes, props, el);\n }\n const toMove = [];\n for (const el of list) {\n if (el.isConnected && (el instanceof HTMLElement || el instanceof SVGElement)) {\n toMove.push({ el, rect: el.getBoundingClientRect() });\n }\n }\n queueMicrotask(() => {\n const moved = [];\n for (const { el, rect } of toMove) {\n if (el.isConnected) {\n const newRect = el.getBoundingClientRect(), dX = rect.left - newRect.left, dY = rect.top - newRect.top;\n if (dX || dY) {\n el.style.transform = `translate(${dX}px, ${dY}px)`;\n el.style.transitionDuration = \"0s\";\n moved.push(el);\n }\n }\n }\n document.body.offsetHeight;\n for (const el of moved) {\n let endTransition2 = function(e) {\n if (e.target === el || /transform$/.test(e.propertyName)) {\n el.removeEventListener(\"transitionend\", endTransition2);\n el.classList.remove(...classes.move);\n }\n };\n var endTransition = endTransition2;\n el.classList.add(...classes.move);\n el.style.transform = el.style.transitionDuration = \"\";\n el.addEventListener(\"transitionend\", endTransition2);\n }\n });\n for (const el of removed) {\n exitTransition(classes, props, el, () => finishRemoved([el]));\n }\n }\n });\n};\nexport {\n Transition,\n TransitionGroup\n};\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nexport function scrollToClass(className: string, index: number) {\n let error = 175;\n\n // If first element, just scroll to the top. Assumes that the rows start near the top of the page.\n if (index === 0) {\n scrollTo(0, 0);\n }\n\n const classElements = document.getElementsByClassName(className);\n\n if (index > 0 && classElements.length < index - 1) {\n index = classElements.length - 1;\n }\n\n let el = classElements[index] as HTMLElement;\n if (el === undefined) {\n return;\n }\n let elOffset = el.offsetTop;\n let elHeight = el.scrollHeight;\n let windowOffset = window.scrollY;\n let windowHeight = window.innerHeight;\n\n let elBottom = elOffset + elHeight;\n let windowBottom = windowOffset + windowHeight;\n\n if (elBottom > windowBottom - error - windowHeight * 0.2) {\n let newOffset = windowOffset + elHeight;\n\n // The first case gives us somewhat of a smooth scroll. But if it\n // doesn't get the active element into view, we need to jump to\n // which is handled by the else.\n if (elBottom < newOffset + windowHeight) {\n window.scrollTo(0, windowOffset + elHeight);\n } else {\n window.scrollTo(0, elBottom);\n }\n } else if (windowOffset > 0) {\n if (elOffset < windowOffset + windowHeight * 0.1) {\n window.scrollTo(0, Math.min(elOffset, windowOffset - elHeight));\n }\n }\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { EventWrapper } from \"./types\";\n\nexport enum Tag {\n Archived = \"evebox.archived\",\n Escalated = \"evebox.escalated\",\n}\n\nexport function eventIsArchived(event: EventWrapper) {\n return event._source.tags && event._source.tags.indexOf(Tag.Archived) > -1;\n}\n\nexport function eventIsEscalated(event: EventWrapper): boolean {\n if (event._source.tags && event._source.tags.indexOf(Tag.Escalated) > -1) {\n return true;\n }\n return false;\n}\n\nfunction eventEnsureHasTags(event: EventWrapper) {\n if (!event._source.tags) {\n event._source.tags = [];\n }\n}\n\nexport function eventSetArchived(event: EventWrapper) {\n if (!eventIsArchived(event)) {\n eventAddTag(event, Tag.Archived);\n }\n}\n\nexport function eventSetEscalated(event: EventWrapper) {\n eventAddTag(event, Tag.Escalated);\n}\n\nexport function eventUnsetEscalated(event: EventWrapper) {\n let index = event._source.tags!.indexOf(Tag.Escalated);\n if (index > -1) {\n event._source.tags!.splice(index, 1);\n }\n console.log(event._source.tags);\n}\n\nexport function eventAddTag(event: EventWrapper, tag: string) {\n eventEnsureHasTags(event);\n event._source.tags!.push(tag);\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { createSignal } from \"solid-js\";\n\nexport class IdleTimer {\n private intervalId: null | number = null;\n public timeout: () => number;\n private setTimeout: any = null;\n\n private eventListener = () => {\n this.resetTimer();\n };\n\n constructor(private ms: number = 60000) {\n [this.timeout, this.setTimeout] = createSignal(0);\n window.addEventListener(\"mousemove\", this.eventListener);\n window.addEventListener(\"keypress\", this.eventListener);\n this.resetTimer();\n }\n\n private resetTimer() {\n if (this.intervalId !== null) {\n clearInterval(this.intervalId);\n }\n this.intervalId = setInterval(() => {\n console.log(\"IdleTimer: TIMEOUT\");\n this.setTimeout((n: number) => n + 1);\n }, this.ms);\n }\n\n public stop() {\n window.removeEventListener(\"keypress\", this.eventListener);\n window.removeEventListener(\"mousemove\", this.eventListener);\n if (this.intervalId !== null) {\n clearInterval(this.intervalId);\n }\n }\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { EventWrapper } from \"./types\";\nimport { createMutable } from \"solid-js/store\";\n\nexport interface EventStore {\n events: EventWrapper[];\n active: EventWrapper | null;\n viewOffset: number;\n cursor: number;\n setActive: (active: EventWrapper) => void;\n reset: (events?: EventWrapper[]) => void;\n}\n\nexport const eventStore = createMutable({\n events: [],\n active: null,\n viewOffset: 0,\n cursor: 0,\n\n setActive(active: EventWrapper) {\n this.active = active;\n },\n\n reset(events: EventWrapper[] = []) {\n this.events = events;\n this.active = null;\n this.viewOffset = 0;\n this.cursor = 0;\n },\n});\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { Setter } from \"solid-js\";\nimport { API } from \"./api\";\n\nexport class Logger {\n constructor(\n private prefix: string,\n announce: boolean = false,\n ) {\n if (announce) {\n this.log(\"*************************************************\");\n }\n }\n\n log(msg: string) {\n console.log(`${this.prefix}: ${msg}`);\n }\n}\n\n// Utility function to wrap a promise with managing a loading counter.\nexport async function loadingTracker(\n setter: Setter,\n fn: () => Promise,\n) {\n let delay = 100;\n setter((c) => {\n if (delay > 0) {\n delay = delay * c;\n }\n return c + 1;\n });\n return fn().finally(() => {\n setTimeout(() => {\n setter((c) => c - 1);\n }, delay);\n });\n}\n\nexport function getVisibleRowCount(offsetId: string) {\n let elOffset = 0;\n let el = document.getElementById(offsetId);\n if (el) {\n elOffset = el.offsetTop;\n }\n console.log(elOffset);\n\n // Might actually be 57, but with a border, make it 60.\n let rowHeight = 60;\n\n let windowHeight = window.innerHeight - elOffset - 80;\n let numRows = Math.floor(windowHeight / rowHeight);\n return numRows;\n}\n\nexport function getChartCanvasElement(id: string) {\n let element = document.getElementById(id) as HTMLCanvasElement;\n return element.getContext(\"2d\") as CanvasRenderingContext2D;\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { createEffect, createSignal, For, Show } from \"solid-js\";\nimport { API } from \"../api\";\nimport { Button, Spinner } from \"solid-bootstrap\";\n\nexport function SensorSelect(props: {\n selected: string | undefined;\n onchange: (value: string | undefined) => void;\n}) {\n const [sensors, setSensors] = createSignal([]);\n const [loading, setLoading] = createSignal(true);\n\n createEffect(() => {\n API.getSensors()\n .then((response) => {\n setSensors(response.data);\n })\n .finally(() => {\n setLoading(false);\n });\n });\n function setSensor(event: any) {\n let sensor = event.currentTarget.value;\n if (sensor === \"\") {\n props.onchange(undefined);\n } else {\n props.onchange(sensor);\n }\n }\n\n return (\n \n Sensor\n \n {\"Loading \"}\n \n \n }\n >\n \n All\n \n {(sensor) => (\n \n {sensor}\n \n )}\n \n \n \n \n );\n}\n","/*!\n * Bootstrap v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n};\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n};\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n};\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n};\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n};\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n};\nconst noop = () => {};\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n};\nconst DOMContentLoadedCallbacks = [];\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\nconst isRTL = () => document.documentElement.dir === 'rtl';\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n};\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n}\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n}\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n}\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n};\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.2';\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null;\n }\n return selector;\n};\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n if (closeEvent.defaultPrevented) {\n return;\n }\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n }\n\n // Private\n _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close');\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default$c;\n }\n static get DefaultType() {\n return DefaultType$c;\n }\n static get NAME() {\n return NAME$d;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$b;\n }\n static get DefaultType() {\n return DefaultType$b;\n }\n static get NAME() {\n return NAME$c;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$a;\n }\n static get DefaultType() {\n return DefaultType$a;\n }\n static get NAME() {\n return NAME$b;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n\n // Getters\n static get Default() {\n return Default$9;\n }\n static get DefaultType() {\n return DefaultType$9;\n }\n static get NAME() {\n return NAME$a;\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._createPopper();\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n return config;\n }\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n let referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n const popperConfig = this._getPopperConfig();\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n };\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n if (!items.length) {\n return;\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n context._completeHide(relatedTarget);\n }\n }\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event.preventDefault();\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n};\n\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n // Getters\n static get Default() {\n return Default$8;\n }\n static get DefaultType() {\n return DefaultType$8;\n }\n static get NAME() {\n return NAME$9;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\n\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n // Getters\n static get Default() {\n return Default$7;\n }\n static get DefaultType() {\n return DefaultType$7;\n }\n static get NAME() {\n return NAME$8;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n }\n\n // Private\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$6;\n }\n static get DefaultType() {\n return DefaultType$6;\n }\n static get NAME() {\n return NAME$7;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY$4);\n EventHandler.off(this._dialog, EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n _hideModal() {\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$5;\n }\n static get DefaultType() {\n return DefaultType$5;\n }\n static get NAME() {\n return NAME$6;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n this._element.classList.add(CLASS_NAME_SHOW$3);\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n this.hide();\n };\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n });\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\n// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: ''\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default$4;\n }\n static get DefaultType() {\n return DefaultType$4;\n }\n static get NAME() {\n return NAME$5;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '' + '' + '' + '',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$3;\n }\n static get DefaultType() {\n return DefaultType$3;\n }\n static get NAME() {\n return NAME$4;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '' + '' + '' + '' + '',\n trigger: 'click'\n};\nconst DefaultType$2 = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n static get DefaultType() {\n return DefaultType$2;\n }\n static get NAME() {\n return NAME$3;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n }\n\n // Getters\n static get Default() {\n return Default$1;\n }\n static get DefaultType() {\n return DefaultType$1;\n }\n static get NAME() {\n return NAME$2;\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n dispose() {\n this._observer.disconnect();\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body;\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n return config;\n }\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n this._process(targetElement(entry));\n };\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\n }\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry);\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return;\n }\n continue;\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both and markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE$1);\n }\n }\n }\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE$1);\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE$1);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst HOME_KEY = 'Home';\nconst END_KEY = 'End';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst CLASS_DROPDOWN = 'dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nconst SELECTOR_OUTER = '.nav-item, .list-group-item';\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'; // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`;\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element);\n this._parent = this._element.closest(SELECTOR_TAB_PANEL);\n if (!this._parent) {\n return;\n // TODO: should throw exception in v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren());\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n }\n\n // Getters\n static get NAME() {\n return NAME$1;\n }\n\n // Public\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element;\n if (this._elemIsActive(innerElem)) {\n return;\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem();\n const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {\n relatedTarget: innerElem\n }) : null;\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {\n relatedTarget: active\n });\n if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {\n return;\n }\n this._deactivate(active, innerElem);\n this._activate(innerElem, active);\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return;\n }\n element.classList.add(CLASS_NAME_ACTIVE);\n this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW$1);\n return;\n }\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n this._toggleDropDown(element, true);\n EventHandler.trigger(element, EVENT_SHOWN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n _deactivate(element, relatedElem) {\n if (!element) {\n return;\n }\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW$1);\n return;\n }\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n this._toggleDropDown(element, false);\n EventHandler.trigger(element, EVENT_HIDDEN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {\n return;\n }\n event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault();\n const children = this._getChildren().filter(element => !isDisabled(element));\n let nextActiveElement;\n if ([HOME_KEY, END_KEY].includes(event.key)) {\n nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];\n } else {\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n nextActiveElement = getNextActiveElement(children, event.target, isNext, true);\n }\n if (nextActiveElement) {\n nextActiveElement.focus({\n preventScroll: true\n });\n Tab.getOrCreateInstance(nextActiveElement).show();\n }\n }\n _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n }\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null;\n }\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist');\n for (const child of children) {\n this._setInitialAttributesOnChild(child);\n }\n }\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child);\n const isActive = this._elemIsActive(child);\n const outerElem = this._getOuterElement(child);\n child.setAttribute('aria-selected', isActive);\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n }\n if (!isActive) {\n child.setAttribute('tabindex', '-1');\n }\n this._setAttributeIfNotExists(child, 'role', 'tab');\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child);\n }\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child);\n if (!target) {\n return;\n }\n this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);\n }\n }\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element);\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return;\n }\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem);\n if (element) {\n element.classList.toggle(className, open);\n }\n };\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);\n outerElem.setAttribute('aria-expanded', open);\n }\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value);\n }\n }\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n Tab.getOrCreateInstance(this).show();\n});\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n};\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n};\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._timeout = null;\n this._hasMouseInteraction = false;\n this._hasKeyboardInteraction = false;\n this._setListeners();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._clearTimeout();\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING);\n EventHandler.trigger(this._element, EVENT_SHOWN);\n this._maybeScheduleHide();\n };\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n hide() {\n if (!this.isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n this._element.classList.add(CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n dispose() {\n this._clearTimeout();\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n super.dispose();\n }\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW);\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return;\n }\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay);\n }\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n {\n this._hasMouseInteraction = isInteracting;\n break;\n }\n case 'focusin':\n case 'focusout':\n {\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n }\n if (isInteracting) {\n this._clearTimeout();\n return;\n }\n const nextElement = event.relatedTarget;\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n this._maybeScheduleHide();\n }\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n }\n _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast);\n\nexport { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };\n//# sourceMappingURL=bootstrap.esm.js.map\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { A } from \"@solidjs/router\";\n\nexport function SearchLink(props: {\n children?: any;\n field?: string;\n value: any;\n class?: string;\n}) {\n if (props.value === undefined) {\n return <>>;\n }\n\n let q;\n switch (typeof props.value) {\n case \"number\":\n case \"boolean\":\n q = encodeURIComponent(\n `${props.field ? props.field + \":\" : \"\"}${props.value}`,\n );\n break;\n default:\n let value;\n try {\n value = props.value.replaceAll('\"', '\\\\\"');\n } catch (_err) {\n console.log(`Failed to escape ${props.value}`);\n }\n q = encodeURIComponent(\n `${props.field ? props.field + \":\" : \"\"}\"${value}\"`,\n );\n break;\n }\n return (\n \n {props.children || props.value}\n \n );\n}\n\nexport function RawSearchLink(props: { children: any; q: string }) {\n const encoded = encodeURIComponent(props.q);\n return {props.children};\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { Event } from \"./types\";\nimport { get_duration } from \"./datetime\";\n\nexport function formatEventDescription(event: Event): string {\n try {\n const source = event._source;\n switch (event._source.event_type) {\n case \"alert\": {\n const alert = event._source.alert!;\n if (alert.signature) {\n return `${alert.signature}`;\n } else {\n return `[${alert.gid}:${alert.signature_id}:${alert.rev}] (${alert.category})`;\n }\n }\n case \"anomaly\": {\n const anom = event._source.anomaly!;\n if (anom.type === \"applayer\") {\n return `${anom.app_proto} - ${anom.event}`;\n } else if (anom.type === \"stream\") {\n return `STREAM: ${anom.event}`;\n } else if (anom.type === \"decode\") {\n return `DECODE: ${anom.event}`;\n }\n return JSON.stringify(anom);\n }\n case \"arp\": {\n const arp = event._source.arp!;\n if (arp.opcode == \"request\") {\n return `Request who-has ${arp.dest_ip} tell ${arp.src_ip}`;\n } else if (arp.opcode == \"reply\") {\n return `Reply ${arp.src_ip} is at ${arp.src_mac}`;\n }\n return JSON.stringify(arp);\n }\n case \"dhcp\": {\n const dhcp = event._source.dhcp!;\n let parts = [dhcp.type.toUpperCase()];\n if (dhcp.hostname) {\n parts.push(`Hostname: ${dhcp.hostname}`);\n }\n if (dhcp.assigned_ip && dhcp.assigned_ip != \"0.0.0.0\") {\n parts.push(`Assigned-IP: ${dhcp.assigned_ip}`);\n }\n if (dhcp.client_ip) {\n parts.push(`Client-IP: ${dhcp.client_ip}`);\n }\n return parts.join(\" \");\n }\n case \"dns\": {\n const dns = event._source.dns!;\n let parts = [dns.type.toUpperCase()];\n\n if (dns.queries && dns.queries[0]) {\n parts.push(dns.queries[0].rrtype);\n parts.push(dns.queries[0].rrname);\n } else if (dns.rrname) {\n parts.push(dns.rrtype);\n parts.push(dns.rrname);\n }\n\n if (dns.rcode && dns.rcode !== \"NOERROR\") {\n parts.push(...[\"-\", dns.rcode]);\n }\n return parts.join(\" \");\n }\n case \"drop\": {\n const source = formatAddressWithPort(\n event._source.src_ip,\n event._source.src_port,\n );\n const dest = formatAddressWithPort(\n event._source.dest_ip,\n event._source.dest_port,\n );\n return `${source} => ${dest}`;\n }\n case \"engine\": {\n let parts = [];\n if (event._source.log_level) {\n parts.push(event._source.log_level.toUpperCase());\n }\n if (event._source.engine?.message) {\n parts.push(event._source.engine.message);\n }\n return parts.join(\" \");\n }\n case \"fileinfo\": {\n const fileinfo = event._source.fileinfo;\n let parts = [];\n parts.push(fileinfo?.filename);\n\n if (event._source.http2) {\n const http2 = event._source.http2;\n for (const header of http2.request_headers) {\n if (header.name === \":authority\") {\n parts.push(`Authority:${header.value}`);\n } else if (header.name === \":path\") {\n parts.push(`Path:${header.value}`);\n }\n }\n }\n\n if (event._source.http) {\n const http = event._source.http;\n if (http.hostname) {\n parts.push(`Hostname:${http.hostname}`);\n }\n if (http.url) {\n parts.push(`Path:${http.url}`);\n }\n if (http.http_content_type) {\n parts.push(`Content-Type:${http.http_content_type}`);\n }\n }\n return parts.join(\" \");\n }\n case \"flow\": {\n const packets =\n event._source.flow?.pkts_toclient! +\n event._source.flow?.pkts_toserver! || \"N/A\";\n const bytes =\n event._source.flow?.bytes_toclient! +\n event._source.flow?.bytes_toserver! || \"N/A\";\n const source = formatAddressWithPort(\n event._source.src_ip,\n event._source.src_port,\n );\n const dest = formatAddressWithPort(\n event._source.dest_ip,\n event._source.dest_port,\n );\n let age =\n event._source.flow?.age != undefined ? event._source.flow.age : \"N/A\";\n let parts = [\n event._source.proto,\n `${source} => ${dest}`,\n `Age=${age}`,\n `Packets=${packets}`,\n `Bytes=${bytes}`,\n ];\n return parts.join(\" \");\n }\n case \"netflow\": {\n const netflow = event._source.netflow!;\n formatAddress(event._source.src_ip);\n const source = formatAddressWithPort(\n event._source.src_ip,\n event._source.src_port,\n );\n const dest = formatAddressWithPort(\n event._source.dest_ip,\n event._source.dest_port,\n );\n let parts = [\n event._source.proto,\n `${source} => ${dest}`,\n `Age=${netflow.age}`,\n `Packets=${netflow.pkts}`,\n `Bytes=${netflow.bytes}`,\n ];\n return parts.join(\" \");\n }\n case \"tls\": {\n const tls = source.tls!;\n let parts = [];\n if (tls.version) {\n parts.push(tls.version);\n } else {\n parts.push(\"TLS\");\n }\n if (tls.sni) {\n parts.push(tls.sni);\n }\n if (tls.subject) {\n parts.push(tls.subject);\n }\n return parts.join(\" - \");\n }\n case \"http\": {\n const http = event._source.http!;\n let parts = [];\n if (http.http_method) {\n parts.push(http.http_method);\n }\n if (http.hostname) {\n parts.push(http.hostname);\n }\n if (http.url) {\n parts.push(http.url);\n }\n return parts.join(\" \");\n }\n case \"smb\": {\n const smb = event._source.smb;\n return `${smb?.command} - ${smb?.status} (${smb?.dialect})`;\n }\n case \"ssh\": {\n const ssh = event._source.ssh;\n return `${ssh?.client?.software_version || \"Unknown\"}/${\n ssh?.client?.proto_version || \"Unknown\"\n } => ${ssh?.server?.software_version || \"Unknown\"}/${\n ssh?.server?.proto_version || \"Unknown\"\n }`;\n }\n case \"stats\": {\n const stats = event._source.stats!;\n let parts = [];\n if (stats.decoder.pkts !== undefined) {\n parts.push(`Packets=${stats.decoder.pkts}`);\n }\n if (stats.decoder.bytes !== undefined) {\n parts.push(`Bytes=${stats.decoder.bytes}`);\n }\n if (stats.capture?.kernel_drops !== undefined) {\n parts.push(`Drops=${stats.capture.kernel_drops}`);\n }\n if (stats.uptime !== undefined) {\n parts.push(`Uptime: ${get_duration(stats.uptime).humanize()}`);\n }\n return parts.join(\" \");\n }\n case \"quic\": {\n let quic = event._source.quic;\n let parts = [];\n if (quic.version) {\n parts.push(`Version ${quic.version}`);\n }\n if (quic.sni) {\n parts.push(`SNI ${quic.sni}`);\n }\n return parts.join(\"; \");\n }\n case \"sip\": {\n let sip = event._source.sip;\n if (sip.request_line) {\n return `REQUEST: ${sip.request_line}`;\n } else if (sip.response_line) {\n return `RESPONSE: ${sip.response_line}`;\n } else {\n return `${JSON.stringify(sip)}`;\n }\n }\n default: {\n const event_type = event._source.event_type;\n if (event_type && event._source[event_type]) {\n return JSON.stringify(event._source[event_type]);\n }\n return JSON.stringify(event._source);\n }\n }\n } catch (e) {\n console.log(`Failed to format event description: ${e}`);\n return \"Failed to render event\";\n }\n}\n\nexport function formatAddressWithPort(\n addr: string,\n port: undefined | number,\n): string {\n if (port) {\n return `${formatAddress(addr)}:[${port}]`;\n } else {\n return formatAddress(addr);\n }\n}\n\nexport function formatAddress(addr: string) {\n if (!addr) {\n return \"\";\n }\n return addr.replace(/(0000\\:)+/, \":\");\n}\n","// SPDX-FileCopyrightText: (C) 2025 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { createSignal } from \"solid-js\";\n\nexport const [PREFS, SET_PREFS] = createSignal(\n getClientPreferences(),\n);\n\nexport interface ClientPreferences {\n timestamp_format?: \"utc\" | \"local\";\n query_timeout?: number;\n}\n\nexport function createDefaultClientPreferences(): ClientPreferences {\n return {\n timestamp_format: \"local\",\n query_timeout: 5,\n };\n}\n\nexport function getClientPreferences(): ClientPreferences {\n let prefs: any = localStorage.getItem(\"clientPreferences\");\n if (!prefs) {\n console.log(\"Did not find localStorage clientPreferences, return defaults\");\n return createDefaultClientPreferences();\n }\n try {\n prefs = JSON.parse(prefs) as ClientPreferences;\n // Merge in defaults.\n prefs = { ...createDefaultClientPreferences(), ...prefs };\n return prefs;\n } catch (e) {\n return createDefaultClientPreferences();\n }\n}\n\nexport function saveClientPreferences(prefs: ClientPreferences) {\n localStorage.setItem(\"clientPreferences\", JSON.stringify(prefs));\n SET_PREFS(prefs);\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { For, JSXElement, Show, createMemo } from \"solid-js\";\nimport { SearchLink } from \"./common/SearchLink\";\nimport { parse_timestamp } from \"./datetime\";\nimport { EventSource } from \"./types\";\nimport { formatAddress } from \"./formatters\";\nimport { BiDashCircle, BiFilter, BiPlusCircle } from \"./icons\";\nimport { PREFS } from \"./preferences\";\nimport { API } from \"./api\";\n\n// Creates a table where the first column is a count, and the second\n// column is value.\nexport function CountValueDataTable(props: {\n title: string | JSXElement | (() => string | JSXElement);\n suffix?: string | JSXElement | (() => string | JSXElement);\n label: string;\n searchField?: string;\n loading?: boolean;\n rows: { count: number; key: any }[];\n}) {\n const searchLink = (value: any) => {\n if (props.searchField) {\n return (\n \n {value}\n \n );\n } else {\n return {value};\n }\n };\n\n const title = () => {\n if (typeof props.title === \"function\") {\n return props.title();\n }\n return props.title;\n };\n\n const suffix = () => {\n if (typeof props.suffix === \"function\") {\n return props.suffix();\n }\n return props.suffix;\n };\n\n return (\n <>\n \n \n {title()}\n \n {/* Loader in a button for placement reason's. */}\n \n {suffix()} \n \n \n Loading...\n \n \n \n \n \n No data\n \n 0}>\n \n \n \n \n #\n {props.label}\n \n \n \n \n {(row) => (\n \n {row.count}\n {searchLink(row.key)}\n \n )}\n \n \n \n \n \n \n >\n );\n}\n\nexport function FilterStrip(props: { filters: any; setFilters: any }) {\n const removeFilter = (filter: any) => {\n props.setFilters((filters: any[]) =>\n filters.filter((f: any) => f !== filter),\n );\n };\n\n const invertFilter = (filter: string) => {\n props.setFilters((filters: any[]) => {\n const i = filters.indexOf(filter);\n if (filters[i].startsWith(\"-\")) {\n filters[i] = filters[i].slice(1);\n } else {\n filters[i] = `-${filters[i]}`;\n }\n return [...filters];\n });\n };\n\n const buttonClass = (filter: string) => {\n if (filter.startsWith(\"-\")) {\n return \"filter-button-out\";\n } else {\n return \"filter-button-for\";\n }\n };\n\n const isExclude = (filter: string) => {\n return filter.startsWith(\"-\");\n };\n\n const isInclude = (filter: string) => {\n if (!filter.startsWith(\"@\") && !filter.startsWith(\"-\")) {\n return true;\n }\n return false;\n };\n\n const toggleToFrom = (filter: string) => {\n props.setFilters((filters: string[]) => {\n const i = filters.indexOf(filter);\n if (filters[i].startsWith(\"@to\")) {\n filters[i] = filters[i].replace(\"@to\", \"@from\");\n } else {\n filters[i] = filters[i].replace(\"@from\", \"@to\");\n }\n return [...filters];\n });\n };\n\n return (\n <>\n \n \n props.setFilters([])}\n >\n Clear\n \n \n {(filter) => {\n return (\n <>\n \n \n {filter}\n \n\n \n \n \n invertFilter(filter)}\n >\n Include results\n \n \n \n\n \n \n invertFilter(filter)}\n >\n Exclude results\n \n \n \n\n \n \n toggleToFrom(filter)}\n >\n Change to @from\n \n \n \n\n \n \n toggleToFrom(filter)}\n >\n Change to @to\n \n \n \n \n\n {\n removeFilter(filter);\n }}\n >\n X\n \n \n >\n );\n }}\n \n \n \n >\n );\n}\n\nexport function FormattedTimestamp(props: {\n timestamp: string;\n withMillis?: boolean;\n}) {\n const timestamp = createMemo(() => {\n return parse_timestamp(props.timestamp);\n });\n\n const formatted = createMemo(() => {\n let formatString = \"YYYY-MM-DD HH:mm:ss\";\n if (props.withMillis === true) {\n formatString += \".SSS\";\n }\n\n if (PREFS().timestamp_format === \"utc\") {\n return timestamp().utc().format(formatString) + \"Z\";\n } else {\n return timestamp().format(formatString);\n }\n });\n\n return <>{formatted}>;\n}\n\nexport function TimestampCell(props: {\n timestamp: string;\n addFilter?: (what: string, op: string, value: string) => void;\n}) {\n const timestamp = createMemo(() => {\n return parse_timestamp(props.timestamp);\n });\n\n const formatted = createMemo(() => {\n return ;\n });\n\n return (\n \n {formatted()}\n \n {timestamp().fromNow()}{\" \"}\n \n e.stopPropagation()}>\n \n \n \n \n \n {\n props.addFilter!(\"@from\", \"\", props.timestamp);\n }}\n >\n Filter for from {formatted()}\n \n \n \n {\n props.addFilter!(\"@to\", \"\", props.timestamp);\n }}\n >\n Filter for to {formatted()}\n \n \n \n \n \n \n );\n}\n\nexport function AddressCell(props: {\n source: EventSource;\n fn?: (what: string, op: string, value: string | number) => void;\n}) {\n try {\n return (\n <>\n 0}>\n S: {formatAddress(props.source.src_ip)}\n \n {\n e.stopPropagation();\n props.fn!(\"src_ip\", \"+\", props.source.src_ip);\n }}\n title=\"Filter for this src_ip\"\n >\n \n \n {\n e.stopPropagation();\n props.fn!(\"src_ip\", \"-\", props.source.src_ip);\n }}\n title=\"Filter out this src_ip\"\n >\n \n \n \n \n \n 0}>\n D: {formatAddress(props.source.dest_ip)}\n \n {\n e.stopPropagation();\n props.fn!(\"dest_ip\", \"+\", props.source.dest_ip);\n }}\n title=\"Filter for this dest_ip\"\n >\n \n \n {\n e.stopPropagation();\n props.fn!(\"dest_ip\", \"-\", props.source.dest_ip);\n }}\n title=\"Filter out this dest_ip\"\n >\n \n \n \n \n >\n );\n } catch (e) {\n return <>`Failed to format address: ${e}`>;\n }\n}\n\nexport function AutoArchiveMenuElements(props: {\n event: any;\n callback: (params: API.AddAutoArchiveRequest) => void;\n}) {\n const event = props.event;\n const signature_id = event?._source?.alert?.signature_id!;\n const src_ip = event?._source?.src_ip!;\n const dest_ip = event?._source?.dest_ip!;\n const sensor = event?._source.host!;\n const comment = `msg: ${event?._source?.alert?.signature}`;\n\n const autoArchive = (e: any, params: API.AddAutoArchiveRequest) => {\n e.preventDefault();\n params.comment = comment;\n props.callback(params);\n };\n\n let entries = [];\n\n entries.push(\n <>\n \n autoArchive(e, { signature_id })}\n >\n Auto-archive SID {signature_id}\n \n \n >,\n );\n\n entries.push(\n <>\n \n autoArchive(e, { signature_id, src_ip, dest_ip })}\n >\n Auto-archive SID {signature_id} when from {src_ip} to {dest_ip}\n \n \n >,\n );\n\n if (sensor && sensor.length > 0) {\n entries.push(\n <>\n \n \n autoArchive(e, { signature_id, src_ip, dest_ip, sensor })\n }\n >\n Auto-archive SID {signature_id} when from {src_ip} to {dest_ip} and\n from sensor {sensor}\n \n \n >,\n );\n\n entries.push(\n <>\n \n autoArchive(e, { signature_id, sensor })}\n >\n Auto-archive SID {signature_id} from sensor {sensor}\n \n \n >,\n );\n }\n\n return entries;\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { For } from \"solid-js\";\nimport { createSignal } from \"solid-js\";\nimport { Toast } from \"solid-bootstrap\";\n\nconst DEFAULT_DELAY = 3000;\n\nlet notificationId = 0;\n\ninterface Notification {\n bg: string;\n id: number;\n message: string;\n delay: number;\n}\n\nconst [notifications, setNotifications] = createSignal([]);\n\nexport function addNotification(message: string, options?: { delay?: number }) {\n setNotifications((l: any) => [\n {\n id: notificationId++,\n message: message,\n delay: options?.delay || DEFAULT_DELAY,\n },\n ...l,\n ]);\n}\n\nexport function addError(message: string, options?: { delay?: number }) {\n setNotifications((l: any) => [\n {\n id: notificationId++,\n message: message,\n delay: options?.delay || DEFAULT_DELAY,\n bg: \"danger\",\n },\n ...l,\n ]);\n}\n\nexport function removeNotification(e: any) {\n setNotifications((l) => {\n const index = l.indexOf(e);\n if (index > -1) {\n l.splice(index, 1);\n }\n return [...l];\n });\n}\n\nexport function Notifications() {\n return (\n \n \n {(e) => (\n <>\n {\n removeNotification(e);\n }}\n >\n Info\n {e.message}\n \n >\n )}\n \n \n );\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { useLocation, useNavigate, useSearchParams } from \"@solidjs/router\";\nimport { _SET_TIME_RANGE, SET_TIME_RANGE, TIME_RANGE, Top } from \"./Top\";\nimport { Badge, Col, Container, Form, Row } from \"solid-bootstrap\";\nimport {\n batch,\n createEffect,\n createMemo,\n createSignal,\n For,\n Match,\n onCleanup,\n onMount,\n Show,\n Switch,\n untrack,\n} from \"solid-js\";\nimport * as API from \"./api\";\nimport { QUEUE_SIZE } from \"./api\";\nimport { parse_timerange, parse_timestamp } from \"./datetime\";\nimport { EventWrapper } from \"./types\";\nimport {\n BiArchive,\n BiCaretDownFill,\n BiCaretRightFill,\n BiCaretUpFill,\n BiDashCircle,\n BiPlusCircle,\n BiStar,\n BiStarFill,\n BiStarHalf,\n} from \"./icons\";\nimport tinykeys from \"tinykeys\";\nimport { scrollToClass } from \"./scroll\";\nimport { Transition } from \"solid-transition-group\";\nimport { getViewSize } from \"./settings\";\nimport {\n eventIsArchived,\n eventSetArchived,\n eventSetEscalated,\n Tag,\n} from \"./event\";\nimport { IdleTimer } from \"./idletimer\";\nimport { eventStore } from \"./eventstore\";\nimport { Logger } from \"./util\";\nimport { SensorSelect } from \"./common/SensorSelect\";\nimport * as bootstrap from \"bootstrap\";\nimport {\n AddressCell,\n FilterStrip,\n AutoArchiveMenuElements,\n TimestampCell,\n} from \"./components\";\nimport { PREFS } from \"./preferences\";\nimport { addNotification } from \"./Notifications\";\n\nconst DEFAULT_SORTBY = \"timestamp\";\nconst DEFAULT_SORTORDER = \"desc\";\n\nenum View {\n Inbox,\n Escalated,\n Alerts,\n}\n\n// Get the number of rows to display.\nfunction getRowCount(): number {\n let rows = getViewSize();\n\n switch (rows) {\n case \"fit\":\n const windowHeight =\n window.innerHeight -\n 60 - // Nav bar\n 60 - // Refresh bar\n 60; // Pager\n return Math.floor(windowHeight / 60);\n default:\n return +rows || 100;\n }\n}\n\nexport function AlertState(props: any) {\n console.log(\"***** AlertState *****\");\n\n onMount(() => {\n eventStore.reset();\n });\n\n return <>{props.children}>;\n}\n\nexport function Alerts() {\n const logger = new Logger(\"Alerts\", true);\n const location = useLocation();\n const navigate = useNavigate();\n const [searchParams, setSearchParams] = useSearchParams<{\n q: string;\n offset: string;\n sortBy?: string;\n sortOrder?: \"asc\" | \"desc\";\n sensor?: undefined | string;\n f?: string[];\n }>();\n const [cursor, setCursor] = createSignal(0);\n const [isLoading, setIsLoading] = createSignal(false);\n const idleTimer = new IdleTimer(60000);\n const [visibleEvents, setVisibleEvents] = createSignal([]);\n const [timedOut, setTimedOut] = createSignal(false);\n\n // For display of the filters. Reactiveness comes from the searchParams.\n const [filters, setFilters] = createSignal(searchParams.f || []);\n\n let toggleSelectAllRef: HTMLInputElement | null = null;\n let bindings: any = null;\n let view: View | undefined = undefined;\n\n // If this is the escalated view we'll move to the \"All\" time range. The time\n // range upon entering the escalated view is stored here and will be returned\n // to when we leave the escalated view.\n let savedTimeRange: undefined | string = undefined;\n\n switch (location.pathname) {\n case \"/inbox\":\n view = View.Inbox;\n break;\n case \"/escalated\":\n view = View.Escalated;\n break;\n case \"/alerts\":\n view = View.Alerts;\n break;\n default:\n console.log(\n `Location path ${location.pathname} not supported here, redirecting to /inbox`,\n );\n navigate(\"/inbox\");\n break;\n }\n\n onMount(() => {\n const logger = new Logger(\"Alerts.onMount\");\n logger.log(\"Start\");\n\n if (view == View.Escalated) {\n untrack(() => {\n savedTimeRange = TIME_RANGE();\n _SET_TIME_RANGE(\"\");\n });\n }\n\n bindings = tinykeys(window, {\n j: () => {\n setCursor((c) => (c < visibleEvents().length - 1 ? c + 1 : c));\n scrollToClass(\"event-row\", cursor());\n },\n k: () => {\n setCursor((c) => (c > 0 ? c - 1 : 0));\n scrollToClass(\"event-row\", cursor());\n },\n \"Shift+h\": () => {\n setCursor(0);\n scrollToClass(\"event-row\", cursor());\n },\n \"Shift+g\": () => {\n if (visibleEvents().length > 0) {\n setCursor(visibleEvents().length - 1);\n scrollToClass(\"event-row\", cursor());\n }\n },\n \".\": () => {\n let element = document.getElementsByClassName(\"action-toggle\")[\n cursor()\n ] as HTMLElement;\n if (element) {\n element.click();\n element.focus();\n }\n },\n e: () => {\n if (visibleEvents().length > 0) {\n if (!archiveSelected()) {\n console.log(\"No selected rows to archive, will archive at cursor.\");\n archiveByRelIndex(cursor());\n }\n }\n },\n s: () => {\n if (visibleEvents().length > 0) {\n if (!escalateSelected()) {\n escalate(cursor());\n }\n }\n },\n \"Shift+s\": () => {\n escalateArchive(cursor());\n },\n x: () => {\n toggleSelected(cursor());\n },\n r: () => {\n refresh();\n },\n f8: () => {\n archiveByRelIndex(cursor());\n },\n f9: () => {\n escalateArchive(cursor());\n },\n o: () => {\n openEventAtCursor();\n },\n \"/\": (e) => {\n const input = document.getElementById(\"filter-input\");\n if (input) {\n input.focus();\n }\n e.preventDefault();\n },\n \"Shift+* a\": () => {\n console.log(\"Toggle select all\");\n selectAll();\n },\n \"Shift+* n\": () => {\n unselectAll();\n },\n \"Shift+* 1\": () => {\n const event = visibleEvents()[cursor()];\n if (event) {\n selectBySignatureId(event._source.alert?.signature_id!);\n }\n },\n });\n\n if (eventStore.events.length > 0 && view == View.Inbox) {\n // Find events that may now be archived.\n let i = eventStore.events.length;\n while (i--) {\n if (eventIsArchived(eventStore.events[i])) {\n logger.log(`Removing event at index ${i} as it is now archived`);\n eventStore.events.splice(i, 1);\n }\n }\n if (eventStore.cursor > eventStore.events.length - 1) {\n setCursor(eventStore.events.length - 1);\n } else {\n setCursor(eventStore.cursor);\n }\n }\n\n if (eventStore.events.length === 0) {\n if (QUEUE_SIZE() === 0) {\n refresh();\n }\n }\n\n logger.log(\"End\");\n });\n\n onCleanup(() => {\n if (bindings) {\n bindings();\n }\n idleTimer.stop();\n untrack(() => {\n if (savedTimeRange) {\n console.log(\"Restoring time range of \" + savedTimeRange);\n SET_TIME_RANGE(savedTimeRange);\n }\n });\n });\n\n function getOffset(): number {\n return +(searchParams.offset || 0);\n }\n\n function setOffset(offset: number) {\n batch(() => {\n setSearchParams({ offset: offset === 0 ? undefined : offset });\n setCursor(0);\n });\n }\n\n // Update the visible events as the offset is changed.\n createEffect(() => {\n const logger = new Logger(\"Alerts.createEffect: visible events\", true);\n batch(() => {\n setVisibleEvents(\n eventStore.events.slice(getOffset(), getOffset() + getRowCount()),\n );\n if (visibleEvents().length === 0 && getOffset() > 0) {\n logger.log(\"No more visible events, moving to previous page\");\n setOffset(getOffset() - getRowCount());\n }\n });\n });\n\n createEffect(() => {\n if (idleTimer.timeout()) {\n logger.log(\"Idle timeout, refreshing\");\n refresh();\n }\n });\n\n // Manage the state of the select all checkbox.\n createEffect(() => {\n let checked = false;\n let indeterminate = false;\n const selected = getSelectedIndexes();\n if (selected.length === 0) {\n checked = false;\n indeterminate = false;\n } else if (selected.length === visibleEvents().length) {\n checked = true;\n indeterminate = false;\n } else {\n checked = true;\n indeterminate = true;\n }\n if (toggleSelectAllRef) {\n toggleSelectAllRef!.checked = checked;\n toggleSelectAllRef!.indeterminate = indeterminate;\n }\n });\n\n function toggleSelected(i: number) {\n let event = visibleEvents()[i];\n if (!event.__private) {\n event.__private = {\n selected: false,\n };\n }\n event.__private.selected = !event.__private.selected;\n }\n\n // Effect to subscribe to all actions that should trigger a refresh.\n createEffect((prev) => {\n let _options = {\n // sortBy: searchParams.sortBy,\n // sortOrder: searchParams.sortOrder,\n q: searchParams.q,\n timeRange: TIME_RANGE(),\n sensor: searchParams.sensor,\n filters: searchParams.f,\n };\n if (prev === undefined) {\n logger.log(\"Initial check of sortBy and sortOrder, not refreshing\");\n } else {\n logger.log(\"Calling onRefresh as sortBy or sortOrder have changed\");\n refresh();\n }\n return true;\n });\n\n createEffect((prev) => {\n let sortBy = searchParams.sortBy || DEFAULT_SORTBY;\n let sortOrder = searchParams.sortOrder || DEFAULT_SORTORDER;\n if (prev) {\n console.log(\"updating sort order\");\n let events: EventWrapper[] = [];\n untrack(() => {\n events.push(...eventStore.events);\n });\n sortAlerts(events, sortBy, sortOrder);\n eventStore.events = events;\n } else {\n console.log(\"**** IGNORING sort\");\n }\n return true;\n });\n\n function refresh() {\n // Run untracked. Other effects will watch for the required changes and\n // call as needed. This is to avoid being called on first load unless\n // needed.\n untrack(() => {\n const logger = new Logger(\"Alerts.refreshEvents\", true);\n let qFilters = getFilters();\n let q: undefined | string = qFilters.join(\" \");\n\n if (searchParams.q) {\n q += ` ${searchParams.q}`;\n }\n\n if (q.length == 0) {\n q = undefined;\n }\n\n let params: any = {\n query_string: q,\n time_range: parse_timerange(TIME_RANGE()) || undefined,\n timeout: PREFS().query_timeout,\n };\n\n if (searchParams.sensor) {\n params.sensor = searchParams.sensor;\n }\n\n switch (view) {\n case View.Inbox:\n params.tags = [`-${Tag.Archived}`];\n break;\n case View.Escalated:\n params.tags = [`${Tag.Escalated}`];\n break;\n default:\n break;\n }\n\n setIsLoading(true);\n\n API.alerts(params)\n .then((response) => {\n setTimedOut(response.timed_out);\n const events: EventWrapper[] = response.events;\n sortAlerts(events, getSortBy(), getSortOrder());\n events.forEach((event) => {\n event.__private = {\n selected: false,\n };\n });\n\n if (eventStore.events.length === 0 && events.length === 0) {\n // Do nothing...\n } else {\n batch(() => {\n eventStore.events = events;\n eventStore.active = null;\n });\n logger.log(`Fetch ${events.length} events`);\n }\n })\n .finally(() => {\n setIsLoading(false);\n });\n });\n }\n\n function sortAlerts(\n alerts: EventWrapper[],\n sortBy: string,\n order: string,\n ): void {\n console.log(`sortAlerts: sortBy=${sortBy}, order=${order}`);\n\n function compare(a: any, b: any): number {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n return 0;\n }\n\n switch (sortBy) {\n case \"signature\":\n alerts.sort((a: any, b: any) => {\n return compare(\n a._source.alert.signature.toUpperCase(),\n b._source.alert.signature.toUpperCase(),\n );\n });\n break;\n case \"count\":\n alerts.sort((a: any, b: any) => {\n return a._metadata.count - b._metadata.count;\n });\n break;\n case \"source\":\n alerts.sort((a: any, b: any) => {\n return compare(a._source.src_ip, b._source.src_ip);\n });\n break;\n case \"dest\":\n alerts.sort((a: any, b: any) => {\n return compare(a._source.dest_ip, b._source.dest_ip);\n });\n break;\n case \"timestamp\":\n alerts.sort((a: any, b: any) => {\n const da = parse_timestamp(a._metadata.max_timestamp);\n const db = parse_timestamp(b._metadata.max_timestamp);\n return compare(da, db);\n });\n break;\n }\n\n if (order === \"desc\") {\n console.log(`sortAlerts: reversing as order is descending`);\n alerts.reverse();\n }\n }\n\n const applyFilter = (filter: string) => {\n console.log(\"applyFilter: \" + filter);\n setSearchParams({ q: filter });\n };\n\n const clearFilter = () => {\n setSearchParams({ q: undefined });\n };\n\n // Get the indexes of all event rows that are selected.\n function getSelectedIndexes(): number[] {\n let selected: number[] = [];\n visibleEvents().forEach((e, i) => {\n if (e.__private?.selected) {\n selected.push(i);\n }\n });\n selected.reverse();\n return selected;\n }\n\n function archiveSelected(): boolean {\n const selected = getSelectedIndexes();\n if (selected.length === 0) {\n return false;\n }\n for (const i of selected) {\n archiveByRelIndex(i);\n }\n return true;\n }\n\n // Archive an event by its relative index (visible index).\n function archiveByRelIndex(i: number) {\n const event = visibleEvents()[i];\n if (!event) {\n return;\n }\n return archiveByEvent(event);\n }\n\n function archiveByEvent(event: EventWrapper) {\n const relIndex = visibleEvents().indexOf(event);\n const absIndex = eventStore.events.indexOf(event);\n let ignore = API.archiveAggregateAlert(event);\n if (view === View.Inbox) {\n eventStore.events.splice(absIndex, 1);\n if (relIndex > -1) {\n if (cursor() > 0 && cursor() > relIndex) {\n setCursor(cursor() - 1);\n }\n if (cursor() > visibleEvents().length - 1) {\n setCursor(Math.max(0, cursor() - 1));\n }\n }\n } else {\n eventSetArchived(event);\n }\n }\n\n function escalate(i: number): Promise {\n let event = visibleEvents()[i];\n if (event._metadata!.count != event._metadata!.escalated_count) {\n // Optimistically set event as escalated.\n eventSetEscalated(event);\n event._metadata!.escalated_count = event._metadata!.count;\n\n return API.escalateAggregateAlert(event);\n } else {\n event._metadata!.escalated_count = 0;\n return API.unescalateAggregateAlert(event);\n }\n }\n\n function escalateSelected(): boolean {\n const selected = getSelectedIndexes();\n if (selected.length === 0) {\n return false;\n }\n for (const i of selected) {\n escalate(i);\n }\n return true;\n }\n\n function toggleSelectAll() {\n if (getSelectedIndexes().length > 0) {\n unselectAll();\n } else {\n selectAll();\n }\n }\n\n function isAllSelected(): boolean {\n return (\n visibleEvents().length > 0 &&\n getSelectedIndexes().length === visibleEvents().length\n );\n }\n\n function selectAll() {\n visibleEvents().forEach((event) => {\n event.__private.selected = true;\n });\n }\n\n function unselectAll() {\n visibleEvents().forEach((event) => {\n event.__private.selected = false;\n });\n }\n\n function navigateToEvent(event: EventWrapper) {\n // Run in batch so no effects are triggered as we navigate away at the end.\n batch(() => {\n console.log(`Navigating to event ${event._id}`);\n eventStore.setActive(event);\n eventStore.viewOffset = getOffset();\n eventStore.cursor = cursor();\n console.log(`EVENT_STORE.active._id=${eventStore.active?._id}`);\n navigate(`${location.pathname}/${event._id}`, {\n state: {\n referer: location.pathname,\n },\n });\n });\n }\n\n function openEventAtCursor() {\n let event = visibleEvents()[cursor()];\n navigateToEvent(event);\n }\n\n function blurInputs() {\n const elementIds = [\"filter-input\"];\n for (const elementId of elementIds) {\n const element = document.getElementById(elementId);\n if (element) {\n element.blur();\n }\n }\n }\n\n function selectBySignatureId(signatureId: number) {\n for (let event of visibleEvents()) {\n if (event._source.alert?.signature_id === signatureId) {\n event.__private.selected = true;\n }\n }\n }\n\n function filterForSignatureId(signatureId: number) {\n addFilter(\"@sid\", \"+\", signatureId);\n }\n\n function filterOutSignatureId(signatureId: number) {\n addFilter(\"@sid\", \"-\", signatureId);\n }\n\n function addFilter(what: string, op: string, value: any) {\n if (op == \"+\") {\n op = \"\";\n }\n let entry: string = \"\";\n if (typeof value === \"number\") {\n entry = `${op}${what}:${value}`;\n } else if (value.includes(\" \")) {\n entry = `${op}${what}:\"${value}\"`;\n } else {\n entry = `${op}${what}:${value}`;\n }\n\n let newFilters = filters();\n\n // If if entry already exists.\n if (newFilters.indexOf(entry) > -1) {\n return;\n }\n\n newFilters.push(entry);\n setSearchParams({\n f: newFilters,\n });\n }\n\n // Getter for searchParams.filters to convert to an array if there\n // is only one \"filters\" parameter.\n const getFilters = createMemo(() => {\n let filters = searchParams.f || [];\n\n if (!Array.isArray(filters)) {\n return [filters];\n } else {\n return filters;\n }\n });\n\n // Effect to update the filter strip based on the filters in the query string.\n createEffect(() => {\n setFilters(getFilters());\n });\n\n // Effect to update the query parameters when the filters signal updates.\n createEffect(() => {\n setSearchParams({\n f: filters().length == 0 ? undefined : filters(),\n });\n });\n\n function updateSort(key: string) {\n console.log(\"Sorting by \" + key);\n let order = getSortOrder();\n if (key === getSortBy()) {\n if (order === \"asc\") {\n order = \"desc\";\n } else {\n order = \"asc\";\n }\n }\n setSearchParams({ sortBy: key, sortOrder: order });\n }\n\n function getSortOrder() {\n return searchParams.sortOrder || DEFAULT_SORTORDER;\n }\n\n function getSortBy() {\n return searchParams.sortBy || DEFAULT_SORTBY;\n }\n\n function escalateArchive(index: number) {\n escalate(index).then(() => archiveByRelIndex(index));\n }\n\n const autoArchiveWithParams = (params: API.API.AddAutoArchiveRequest) => {\n API.API.addAutoArchive(params);\n const matchingEvents = eventStore.events.filter((e: EventWrapper) => {\n if (params.sensor && e._source?.host !== params.sensor) {\n return false;\n }\n if (params.src_ip && params.dest_ip) {\n if (!(e._source?.src_ip == params.src_ip && e._source?.dest_ip)) {\n return false;\n }\n }\n return params.signature_id == e._source?.alert?.signature_id;\n });\n for (let event of matchingEvents) {\n archiveByEvent(event);\n }\n addNotification(\n `Auto-archive filter successfully added and ${matchingEvents.length} events archived.`,\n );\n };\n\n return (\n <>\n \n \n {/* Debug. */}\n \n \n \n {JSON.stringify(\n {\n \"eventStore.events.length\": eventStore.events.length,\n \"visibleEvents().length\": visibleEvents().length,\n \"eventStore.active._id\": eventStore.active?._id || null,\n \"cursor()\": cursor(),\n \"eventStore.viewOffset\": eventStore.viewOffset,\n \"eventStore.cursor\": eventStore.cursor,\n },\n null,\n 1,\n )}\n \n \n \n {/* For mobile detection. */}\n \n \n \n \n \n \n \n \n Refresh\n \n \n \n \n Loading\n \n \n 0 && !isAllSelected()}>\n \n Select All\n \n \n \n \n Unselect All\n \n \n 0}>\n \n Archive\n \n \n 0}>\n \n Escalate\n \n \n \n {\n setSearchParams({ sensor: sensor });\n }}\n />\n \n \n \n {\n e.preventDefault();\n blurInputs();\n applyFilter(e.currentTarget.filter.value);\n }}\n >\n {\n if (\n e.code === \"Escape\" ||\n e.key === \"Escape\" ||\n e.keyCode === 27\n ) {\n blurInputs();\n }\n e.stopPropagation();\n }}\n />\n \n Apply\n \n \n Clear\n \n \n \n \n\n {/* Filter strip. */}\n 0}>\n \n \n\n \n \n \n \n {visibleEvents().length > 0 && (\n \n \n \n \n \n \n {\n e.preventDefault();\n toggleSelectAll();\n }}\n />\n \n \n \n \n \n updateSort(\"source\")}>\n Src{\" \"}\n \n \n \n \n /{\" \"}\n updateSort(\"dest\")}>\n Dst\n \n \n \n \n \n \n \n \n \n \n \n {(event, i) => {\n let severity = event._source.alert?.severity || 3;\n let alert = event._source.alert!;\n return (\n <>\n 2,\n \"evebox-row-warning table-warning\":\n severity === 2,\n \"table-danger\": severity === 1,\n \"event-row\": true,\n }}\n onclick={() => {\n setCursor(i);\n navigateToEvent(event);\n }}\n >\n \n \n \n \n \n e.stopPropagation()}>\n toggleSelected(i())}\n />\n \n {\n e.stopPropagation();\n escalate(i());\n }}\n >\n }>\n 0 &&\n event._metadata!.count ===\n event._metadata!.escalated_count\n }\n >\n \n \n 0 &&\n event._metadata!.count >\n event._metadata!.escalated_count\n }\n >\n \n \n \n \n \n \n {event._metadata!.count}\n \n \n \n \n \n \n \n \n \n \n\n {\n e.stopPropagation();\n addFilter(\"@sid\", \"+\", alert.signature_id);\n }}\n title=\"Filter for this SID\"\n >\n \n \n {\n e.stopPropagation();\n addFilter(\"@sid\", \"-\", alert.signature_id);\n }}\n title=\"Filter out this SID\"\n >\n \n \n \n {\n e.stopPropagation();\n }}\n >\n \n \n {\n archiveByRelIndex(i());\n }}\n >\n Archive\n \n \n\n \n escalateArchive(i())}\n >\n \n \n \n \n\n \n\n \n \n {\n e.preventDefault();\n e.stopPropagation();\n escalateArchive(i());\n }}\n >\n Escalate and Archive\n \n \n\n \n {\n e.preventDefault();\n e.stopPropagation();\n selectBySignatureId(alert.signature_id);\n }}\n >\n Select all with SID {alert.signature_id}\n \n \n\n \n {\n e.preventDefault();\n e.stopPropagation();\n filterForSignatureId(\n alert.signature_id,\n );\n }}\n >\n Filter for SID {alert.signature_id}\n \n \n \n {\n e.preventDefault();\n e.stopPropagation();\n filterOutSignatureId(\n alert.signature_id,\n );\n }}\n >\n Filter out SID {alert.signature_id}\n \n \n \n {\n e.preventDefault();\n e.stopPropagation();\n addFilter(\n \"@from\",\n \"\",\n event._source.timestamp,\n );\n }}\n >\n Filter for from {event._source.timestamp}\n \n \n \n {\n e.preventDefault();\n e.stopPropagation();\n addFilter(\n \"@to\",\n \"\",\n event._source.timestamp,\n );\n }}\n >\n Filter for to {event._source.timestamp}\n \n \n \n \n {\n e.preventDefault();\n e.stopPropagation();\n addFilter(\n \"host\",\n \"\",\n event._source.host,\n );\n }}\n >\n Filter for sensor {event._source.host}\n \n \n \n {\n e.preventDefault();\n e.stopPropagation();\n addFilter(\n \"host\",\n \"-\",\n event._source.host,\n );\n }}\n >\n Filter out host {event._source.host}\n \n \n\n \n \n \n \n \n \n >\n );\n }}\n \n \n \n \n )}\n \n 0}>\n \n \n \n \n \n >\n );\n}\n\nexport function AlertDescription(props: { event: EventWrapper }) {\n const alert = props.event._source.alert!;\n\n let badges = [];\n\n if (props.event._source.host && props.event._source.host.length > 0) {\n badges.push([\"primary\", props.event._source.host]);\n }\n\n return (\n <>\n \n {alert.action.toUpperCase()}\n \n {alert.signature}{\" \"}\n \n {(b) => {\n return {b[1]};\n }}\n \n \n \n {props.event._source.app_proto}\n \n \n \n \n {props.event?._source?.tls?.sni}\n \n \n \n \n {props.event?._source?.quic?.sni}\n \n \n \n \n {props.event?._source?.dns?.query?.[0]?.rrname}\n \n \n \n \n {props.event?._source?.dns?.queries?.[0]?.rrname}\n \n \n \n \n {props.event?._source?.http?.hostname}\n \n \n -1 ||\n props.event._source.tags.indexOf(\"evebox.auto_archived\") > -1)\n }\n >\n auto-archived\n \n >\n );\n}\n\nfunction PagerRow(props: {\n events: EventWrapper[];\n offset: number;\n setOffset: any;\n timedOut: boolean;\n}) {\n const [first, setFirst] = createSignal(props.offset + 1);\n const [last, setLast] = createSignal(props.offset + getRowCount());\n\n createEffect(() => {\n setFirst(props.offset + 1);\n if (props.offset + 1 + getRowCount() < props.events.length) {\n setLast(props.offset + getRowCount());\n } else {\n setLast(props.events.length);\n }\n });\n\n function gotoOlder() {\n const next = props.offset + getRowCount();\n if (next < props.events.length) {\n props.setOffset(next);\n }\n }\n\n function gotoOldest() {\n const pages = Math.floor(props.events.length / getRowCount());\n props.setOffset(pages * getRowCount());\n }\n\n const NoEvents = () => (\n \n No events found.\n \n );\n\n createEffect(() => {\n const tooltipTriggerList = document.querySelectorAll(\n '[data-bs-toggle=\"tooltip\"]',\n );\n const tooltipList = [...tooltipTriggerList].map(\n (tooltipTriggerEl) => new bootstrap.Tooltip(tooltipTriggerEl),\n );\n });\n\n return (\n <>\n 0} fallback={}>\n \n \n Alerts {first()}-{last()} of {props.events.length}\n \n {\" \"}\n \n Timed Out\n \n \n \n \n \n props.setOffset(0)}\n disabled={props.offset === 0}\n >\n Newest\n \n props.setOffset(props.offset - getRowCount())}\n >\n Newer\n \n props.events.length}\n onclick={gotoOlder}\n >\n Older\n \n \n Oldest\n \n \n \n \n \n >\n );\n}\n\nfunction SortCaret(props: { order: \"desc\" | \"asc\" }) {\n return (\n <>\n \n \n \n \n \n \n >\n );\n}\n\nfunction SortHeader(props: {\n title: string;\n key: string;\n sortBy: string;\n sortOrder: \"asc\" | \"desc\";\n class?: string;\n onclick: (key: string) => void;\n}) {\n return (\n <>\n props.onclick(props.key)}\n style={\"cursor: pointer;\"}\n >\n {props.title}\n \n \n \n \n >\n );\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport \"./Loader.scss\";\n\nexport const Loader = () => {\n return Loading...;\n};\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { Alert, Button, Col, Container, Form, Row } from \"solid-bootstrap\";\nimport {\n createEffect,\n createResource,\n createSignal,\n Show,\n Suspense,\n} from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\nimport { useNavigate, useSearchParams } from \"@solidjs/router\";\nimport { LoginOptions } from \"./api\";\nimport * as API from \"./api\";\nimport { SET_IS_AUTHENTICATED } from \"./global\";\n\nasync function getLoginOptions(): Promise {\n let response = await fetch(\"api/1/login\", {\n method: \"get\",\n });\n const json = await response.json();\n return json;\n}\n\nexport const Login = () => {\n const [loginForm, setLoginForm] = createStore({\n username: \"\",\n password: \"\",\n });\n const [error, setError] = createSignal(false);\n\n const [searchParams, setSearchParams] = useSearchParams();\n const [loginOptions] = createResource(getLoginOptions);\n const navigate = useNavigate();\n\n const doLogin = async (e: any) => {\n e.preventDefault();\n\n API.login(loginForm.username, loginForm.password)\n .then(() => {\n SET_IS_AUTHENTICATED(true);\n navigate(searchParams.redirectTo || \"/inbox\");\n })\n .catch((error) => {\n console.log(`Login error: ${error.toString()}`);\n setError(true);\n });\n };\n\n const isValid = () => {\n return loginForm.username.length > 0 && loginForm.password.length > 0;\n };\n\n createEffect(async () => {\n let options = loginOptions();\n if (options) {\n let redirectTo = searchParams.redirectTo || \"/inbox\";\n if (!options.authentication.required) {\n console.log(\n `No authentication required, navigating back to ${redirectTo}`,\n );\n navigate(redirectTo);\n }\n }\n });\n\n return (\n <>\n \n \n \n\n \n \n \n Login Failed\n \n \n\n \n \n {loginOptions() && (\n \n \n Username:\n \n setLoginForm(\"username\", e.currentTarget.value)\n }\n placeholder={\"Username...\"}\n />\n \n\n \n Password:\n \n setLoginForm(\"password\", e.currentTarget.value)\n }\n type={\"password\"}\n placeholder={\"Password...\"}\n />\n \n\n \n \n Login\n \n \n \n )}\n \n \n \n \n \n \n >\n );\n};\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { Alert, Container } from \"solid-bootstrap\";\nimport { Top } from \"./Top\";\nimport {\n currentThemeName,\n getViewSize,\n setTheme,\n setViewSize,\n} from \"./settings\";\nimport { getClientPreferences, saveClientPreferences } from \"./preferences\";\n\nimport * as bootstrap from \"bootstrap\";\nimport { createEffect } from \"solid-js\";\nimport { BiQuestionCircle } from \"./icons\";\n\nexport function Settings() {\n createEffect(() => {\n const popoverTriggerList = document.querySelectorAll(\n '[data-bs-toggle=\"popover\"]',\n );\n [...popoverTriggerList].map(\n (popoverTriggerEl) =>\n new bootstrap.Popover(popoverTriggerEl, { html: true }),\n );\n });\n\n const query_timeout_tooltip =\n \"Experimental: Timeout queries after a number of seconds. 0 to disable timeout. If set, recommended to be at least 3 seconds. Not applied to all queries yet. Default: 5 (disabled)\";\n\n return (\n <>\n \n \n \n \n \n \n Note: Settings are stored client side and will not be reflected on\n other computers or in other browsers.\n \n \n \n \n\n \n \n \n \n Theme\n \n setTheme(e.currentTarget.value)}\n >\n \n Light\n \n \n Dark\n \n \n \n \n \n \n \n\n \n \n \n \n View Size\n \n setViewSize(e.currentTarget.value)}\n >\n \n 100\n \n \n 200\n \n \n 300\n \n \n 400\n \n \n 500\n \n \n Fit to Height\n \n \n \n \n \n \n \n\n \n \n \n \n Timestamp Format\n \n {\n let prefs = getClientPreferences();\n switch (e.currentTarget.value) {\n case \"utc\":\n prefs.timestamp_format = \"utc\";\n break;\n default:\n prefs.timestamp_format = undefined;\n break;\n }\n saveClientPreferences(prefs);\n }}\n >\n \n Local\n \n \n UTC\n \n \n \n \n \n \n \n\n \n \n \n \n \n Query Timeout\n \n \n \n \n\n \n {\n let value: undefined | number = +e.target.value;\n if (isNaN(value) || value < 0) {\n console.log(\n `Invalid query timeout value: ${e.target.value}, will use default.`,\n );\n value = undefined;\n }\n console.log(`New query timeout value: ${e.target.value}`);\n let prefs = getClientPreferences();\n prefs.query_timeout = value;\n saveClientPreferences(prefs);\n }}\n />\n \n \n \n \n \n \n >\n );\n}\n","//! pretty-print-json v1.4.0 ~~ https://pretty-print-json.js.org ~~ MIT License\n\nconst prettyPrintJson = {\n version: '1.4.0',\n toHtml(thing, options) {\n const defaults = {\n indent: 3,\n lineNumbers: false,\n linkUrls: true,\n linksNewTab: true,\n quoteKeys: false,\n };\n const settings = Object.assign(Object.assign({}, defaults), options);\n const htmlEntities = (text) => text\n .replace(/&/g, '&')\n .replace(/\\\\\"/g, '\"')\n .replace(//g, '>');\n const spanTag = (type, display) => display ? '' + display + '' : '';\n const buildValueHtml = (value) => {\n const strType = /^\"/.test(value) && 'string';\n const boolType = ['true', 'false'].includes(value) && 'boolean';\n const nullType = value === 'null' && 'null';\n const type = boolType || nullType || strType || 'number';\n const urlPattern = /https?:\\/\\/[^\\s\"]+/g;\n const target = settings.linksNewTab ? ' target=_blank' : '';\n const makeLink = (link) => `${link}`;\n const display = strType && settings.linkUrls ? value.replace(urlPattern, makeLink) : value;\n return spanTag(type, display);\n };\n const replacer = (match, p1, p2, p3, p4) => {\n const part = { indent: p1, key: p2, value: p3, end: p4 };\n const findName = settings.quoteKeys ? /(.*)(): / : /\"([\\w$]+)\": |(.*): /;\n const indentHtml = part.indent || '';\n const keyName = part.key && part.key.replace(findName, '$1$2');\n const keyHtml = part.key ? spanTag('key', keyName) + spanTag('mark', ': ') : '';\n const valueHtml = part.value ? buildValueHtml(part.value) : '';\n const endHtml = spanTag('mark', part.end);\n return indentHtml + keyHtml + valueHtml + endHtml;\n };\n const jsonLine = /^( *)(\"[^\"]+\": )?(\"[^\"]*\"|[\\w.+-]*)?([{}[\\],]*)?$/mg;\n const json = JSON.stringify(thing, null, settings.indent) || 'undefined';\n const html = htmlEntities(json).replace(jsonLine, replacer);\n const makeLine = (line) => ` ${line}`;\n const addLineNumbers = (html) => ['', ...html.split('\\n').map(makeLine), ''].join('\\n');\n return settings.lineNumbers ? addLineNumbers(html) : html;\n },\n};\nexport { prettyPrintJson };\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { Top } from \"./Top\";\nimport * as API from \"./api\";\nimport {\n createEffect,\n createMemo,\n createSignal,\n For,\n Match,\n onCleanup,\n onMount,\n Show,\n Switch,\n} from \"solid-js\";\nimport { EventWrapper } from \"./types\";\nimport { Button, Col, Container, Form, Row } from \"solid-bootstrap\";\nimport { useNavigate, useSearchParams } from \"@solidjs/router\";\nimport { formatEventDescription } from \"./formatters\";\nimport { BiCaretRightFill, BiDashCircle, BiPlusCircle } from \"./icons\";\nimport tinykeys from \"tinykeys\";\nimport { scrollToClass } from \"./scroll\";\nimport { Transition } from \"solid-transition-group\";\nimport { eventIsArchived, eventSetArchived } from \"./event\";\nimport { AlertDescription } from \"./Alerts\";\nimport { EventsQueryParams } from \"./api\";\nimport { AddressCell, FilterStrip, TimestampCell } from \"./components\";\n\n// The list of event types that will be shown in dropdowns.\nexport const EVENT_TYPES: { name: string; eventType: string }[] = [\n { name: \"All\", eventType: \"\" },\n { name: \"Alert\", eventType: \"alert\" },\n { name: \"ARP\", eventType: \"arp\" },\n { name: \"Anomaly\", eventType: \"anomaly\" },\n { name: \"DCERPC\", eventType: \"dcerpc\" },\n { name: \"DHCP\", eventType: \"dhcp\" },\n { name: \"DNP3\", eventType: \"dnp3\" },\n { name: \"DNS\", eventType: \"dns\" },\n { name: \"Drop\", eventType: \"drop\" },\n { name: \"FileInfo\", eventType: \"fileinfo\" },\n { name: \"Flow\", eventType: \"flow\" },\n { name: \"Frame\", eventType: \"frame\" },\n { name: \"FTP\", eventType: \"ftp\" },\n { name: \"FTP Data\", eventType: \"ftp_data\" },\n { name: \"HTTP\", eventType: \"http\" },\n { name: \"IKE\", eventType: \"ike\" },\n { name: \"KRB5\", eventType: \"krb5\" },\n { name: \"Modbus\", eventType: \"modbus\" },\n { name: \"MQTT\", eventType: \"mqtt\" },\n { name: \"NetFlow\", eventType: \"netflow\" },\n { name: \"NFS\", eventType: \"nfs\" },\n { name: \"PostgreSQL\", eventType: \"pgsql\" },\n { name: \"QUIC\", eventType: \"quic\" },\n { name: \"RDP\", eventType: \"rdp\" },\n { name: \"RFB\", eventType: \"rfb\" },\n { name: \"SIP\", eventType: \"sip\" },\n { name: \"SMB\", eventType: \"smb\" },\n { name: \"SMTP\", eventType: \"smtp\" },\n { name: \"SNMP\", eventType: \"snmp\" },\n { name: \"SSH\", eventType: \"ssh\" },\n { name: \"Stats\", eventType: \"stats\" },\n { name: \"TFTP\", eventType: \"tftp\" },\n { name: \"TLS\", eventType: \"tls\" },\n];\n\nexport function eventNameFromType(type: string): string | undefined {\n for (const et of EVENT_TYPES) {\n if (et.eventType === type) {\n return et.name;\n }\n }\n return undefined;\n}\n\nexport function Events() {\n const navigate = useNavigate();\n const [isLoading, setIsLoading] = createSignal(false);\n const [events, setEvents] = createSignal([], {\n equals: (prev, next) => {\n return false;\n },\n });\n const [eventType, setEventType] = createSignal(EVENT_TYPES[0].eventType);\n const [searchParams, setSearchParams] = useSearchParams<{\n q?: string;\n order?: \"asc\";\n event_type?: string;\n from?: string;\n to?: string;\n f?: string[];\n }>();\n const [cursor, setCursor] = createSignal(0);\n const [filters, setFilters] = createSignal([]);\n let keybindings: any = null;\n\n onMount(() => {\n console.log(\"Events.onMount\");\n keybindings = tinykeys(window, {\n j: () => {\n setCursor((c) => (c < events().length - 1 ? c + 1 : c));\n scrollToClass(\"event-row\", cursor());\n },\n k: () => {\n setCursor((c) => (c > 0 ? c - 1 : 0));\n scrollToClass(\"event-row\", cursor());\n },\n o: () => {\n const event = events()[cursor()];\n if (event) {\n openEventById(event._id);\n }\n },\n \"/\": (e) => {\n document.getElementById(\"searchInput\")!.focus();\n e.preventDefault();\n },\n r: () => {\n setEvents([]);\n loadEvents();\n },\n e: () => {\n archive(cursor());\n },\n f8: () => {\n archive(cursor());\n },\n });\n });\n\n onCleanup(() => {\n if (keybindings) {\n keybindings();\n }\n });\n\n // Getter for searchParams.filters to convert to an array if there\n // is only one \"filters\" parameter.\n const getFilters = createMemo(() => {\n let filters = searchParams.f || [];\n\n if (!Array.isArray(filters)) {\n return [filters];\n } else {\n return filters;\n }\n });\n\n // Effect to update the filter strip based on the filters in the query string.\n createEffect(() => {\n setFilters(getFilters());\n });\n\n createEffect(() => {\n loadEvents();\n });\n\n function openEventById(id: string) {\n navigate(`/event/${id}`, {\n state: {\n referer: location.pathname,\n },\n });\n }\n\n function loadEvents() {\n let params: EventsQueryParams = {\n query_string: searchParams.q || \"\",\n };\n\n if (searchParams.event_type) {\n params.event_type = searchParams.event_type;\n setEventType(params.event_type);\n }\n\n const filterQuery: string = filters()?.join(\" \");\n if (filterQuery && filterQuery.length > 0) {\n params.query_string += \" \" + filterQuery;\n }\n\n if (searchParams.order) {\n params.order = searchParams.order;\n }\n\n if (searchParams.from) {\n params.from = searchParams.from;\n }\n\n if (searchParams.to) {\n params.to = searchParams.to;\n }\n\n setIsLoading(true);\n\n API.getEvents(params)\n .then((response) => {\n if (response.events) {\n console.log(`Received ${response.events.length} events`);\n const events: EventWrapper[] = response.events;\n if (searchParams.order === \"asc\") {\n events.reverse();\n }\n\n setEvents(events);\n } else {\n console.log(`ERROR: Response contained no data`);\n console.log(response);\n setEvents([]);\n }\n })\n .finally(() => {\n setIsLoading(false);\n\n if (events().length > 0 && cursor() > events().length - 1) {\n setCursor(events().length - 1);\n } else if (events().length === 0) {\n setCursor(0);\n }\n });\n }\n\n function gotoOldest() {\n setSearchParams({\n order: \"asc\",\n from: undefined,\n to: undefined,\n });\n }\n\n function gotoNewer() {\n // Removing \"-\" and \":\" are for URL tidyness, but don't matter.\n const timestamp = events()[0]\n ._source[\"@timestamp\"].replace(/(\\d{4})-(\\d{2})-(\\d{2})/, \"$1$2$3\")\n .replaceAll(\":\", \"\");\n setSearchParams({\n order: \"asc\",\n from: timestamp,\n to: undefined,\n });\n }\n\n function gotoOlder() {\n // Removing \"-\" and \":\" are for URL tidyness, but don't matter.\n const timestamp = events()\n [events().length - 1]._source[\"@timestamp\"].replace(\n /(\\d{4})-(\\d{2})-(\\d{2})/,\n \"$1$2$3\",\n )\n .replaceAll(\":\", \"\");\n setSearchParams({\n order: undefined,\n from: undefined,\n to: timestamp,\n });\n }\n\n function gotoNewest() {\n setSearchParams({\n order: undefined,\n to: undefined,\n from: undefined,\n });\n }\n\n function archive(i: number) {\n let event = events()[i];\n if (event._source.event_type !== \"alert\") {\n return;\n }\n eventSetArchived(event);\n API.archiveEvent(event).then(() => {});\n setEvents((events) => {\n events[i] = { ...event };\n return events;\n });\n }\n\n function addFilter(what: string, op: string, value: any) {\n if (op == \"+\") {\n op = \"\";\n }\n let entry: string = \"\";\n if (typeof value === \"number\") {\n entry = `${op}${what}:${value}`;\n } else if (value.includes(\" \")) {\n entry = `${op}${what}:\"${value}\"`;\n } else {\n entry = `${op}${what}:${value}`;\n }\n\n let newFilters = filters();\n\n // If if entry already exists.\n if (newFilters.indexOf(entry) > -1) {\n return;\n }\n\n newFilters.push(entry);\n setSearchParams({\n f: newFilters,\n });\n }\n\n // Effect to update the query parameters when the filters signal updates.\n createEffect(() => {\n setSearchParams({\n f: filters().length == 0 ? undefined : filters(),\n });\n });\n\n return (\n <>\n \n \n \n \n \n \n Refresh\n \n \n \n \n Loading\n \n \n \n\n \n \n \n Event Type:\n \n \n {\n setSearchParams({ event_type: e.currentTarget.value });\n e.currentTarget.blur();\n }}\n >\n \n {(et) => {\n return (\n <>\n \n {et.name}\n \n >\n );\n }}\n \n \n \n \n \n\n \n {\n e.preventDefault();\n setSearchParams({ q: e.currentTarget.searchInput.value });\n const inputs = e.currentTarget.getElementsByTagName(\"input\");\n for (let input of inputs) {\n input.blur();\n }\n }}\n >\n {\n if (\n e.code === \"Escape\" ||\n e.key === \"Escape\" ||\n e.keyCode === 27\n ) {\n e.currentTarget.blur();\n }\n e.stopPropagation();\n }}\n />\n \n Apply\n \n {\n setSearchParams({ q: undefined });\n }}\n >\n Clear\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n Newest\n \n \n Newer\n \n \n Older\n \n \n Oldest\n \n \n \n \n\n \n \n \n {events().length > 0 && (\n \n \n \n \n \n Timestamp\n Type\n Src/Dst\n Description\n \n \n \n \n {(event, i) => {\n let severity = event._source.alert?.severity;\n return (\n <>\n openEventById(event._id)}\n classList={{\n \"table-info\": severity! > 2,\n \"table-warning\": severity === 2,\n \"table-danger\": severity === 1,\n \"table-success\": severity === undefined,\n }}\n >\n \n \n \n \n \n \n \n \n \n {event._source.event_type?.toUpperCase() ||\n \"???\"}\n {\n e.stopPropagation();\n addFilter(\n \"event_type\",\n \"+\",\n event._source.event_type,\n );\n }}\n title={`Filter for event_type: ${event._source.event_type}`}\n >\n \n \n {\n e.stopPropagation();\n addFilter(\n \"event_type\",\n \"-\",\n event._source.event_type,\n );\n }}\n title={`Filter out event_type: ${event._source.event_type}`}\n >\n \n \n \n \n {event._source.host}>}>\n \n \n \n \n \n \n \n \n \n \n {formatEventDescription(event)}\n \n >\n }\n >\n \n \n \n \n\n \n {\n e.stopPropagation();\n archive(i());\n }}\n >\n Archive\n \n \n \n \n >\n );\n }}\n \n \n \n \n )}\n \n \n \n \n >\n );\n}\n\nfunction showArchiveButton(event: EventWrapper) {\n return event._source.event_type === \"alert\" && !eventIsArchived(event);\n}\n\nexport function AppProtoBadge(props: {\n event: EventWrapper;\n\n class?: string;\n}) {\n if (\n !props.event._source.app_proto ||\n props.event._source.app_proto === \"failed\"\n ) {\n return <>>;\n }\n return (\n \n {props.event._source.app_proto}\n \n );\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { A, useLocation, useNavigate, useParams } from \"@solidjs/router\";\nimport { Top } from \"./Top\";\nimport {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n Match,\n onCleanup,\n onMount,\n Setter,\n Show,\n Switch,\n untrack,\n} from \"solid-js\";\nimport { API, archiveEvent, getEventById, postComment } from \"./api\";\nimport { archiveAggregateAlert } from \"./api\";\nimport { Button, Col, Container, Row, Tab, Tabs, Toast } from \"solid-bootstrap\";\nimport { prettyPrintJson } from \"pretty-print-json\";\nimport { AggregateAlert, EcsGeo, EveDns, Event, EventWrapper } from \"./types\";\nimport { parse_timestamp } from \"./datetime\";\nimport { formatAddressWithPort, formatEventDescription } from \"./formatters\";\nimport tinykeys from \"tinykeys\";\nimport { eventIsArchived, eventIsEscalated, eventSetArchived } from \"./event\";\nimport { eventStore } from \"./eventstore\";\nimport { addNotification } from \"./Notifications\";\nimport { eventNameFromType } from \"./Events\";\nimport { EventServiceConfig, serverConfig } from \"./config\";\nimport { createStore } from \"solid-js/store\";\nimport { BiGear, BiInfoCircle, BiQuestionCircle } from \"./icons\";\nimport { SearchLink } from \"./common/SearchLink\";\nimport * as api from \"./api\";\nimport { FormattedTimestamp, AutoArchiveMenuElements } from \"./components\";\nimport * as bootstrap from \"bootstrap\";\n\nconst PCAP_BUTTON_STYLE =\n \"--bs-btn-padding-y: .1rem; --bs-btn-padding-x: .2rem; --bs-btn-font-size: .7rem;\";\n\ninterface HistoryEntry {\n action: string;\n timestamp: string;\n username?: string;\n}\n\nexport function EventView() {\n console.log(\"***** EventView *****\");\n const params = useParams<{ id: string }>();\n const [eventId, setEventId] = createSignal(null);\n const [event, setEvent] = createSignal();\n const [eventDetails, setEventDetails] = createSignal();\n const [commonDetails, setCommonDetails] = createSignal();\n const [showCopyToast, setShowCopyToast] = createSignal(false);\n const [history, setHistory] = createSignal([]);\n const [showCommentForm, setShowCommentForm] = createSignal(false);\n const [geoIp, setGeoIp] = createStore<{\n source: EcsGeo | undefined;\n destination: EcsGeo | undefined;\n }>({ source: undefined, destination: undefined });\n const navigate = useNavigate();\n const location = useLocation();\n let keybindings: any = null;\n let referer: null | string = null;\n let rawJsonRef: any = null;\n\n const [srcIpDns, setSrcIpDns] = createSignal(null);\n const [destIpDns, setDestIpDns] = createSignal(null);\n\n console.log(`- EventView: EVENT_STORE.active_id=${eventStore.active?._id}`);\n\n onMount(() => {\n const ignoreKey = (e: any) => {\n return [\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(e.target.tagName);\n };\n\n keybindings = tinykeys(window, {\n u: (e: any) => {\n if (ignoreKey(e)) {\n return;\n }\n window.history.back();\n },\n e: (e: any) => {\n if (ignoreKey(e)) {\n return;\n }\n archiveAlert();\n },\n f8: () => {\n archiveAlert();\n },\n \".\": (e: any) => {\n if (ignoreKey(e)) {\n return;\n }\n let element = document.getElementById(\"tool-menu\");\n if (element) {\n element.click();\n element.focus();\n }\n },\n });\n\n referer = (location.state as any)?.referer || null;\n if (referer) {\n console.log(\"EventView.onMount: referer=\" + referer);\n }\n });\n\n onCleanup(() => {\n if (keybindings) {\n keybindings();\n }\n });\n\n createEffect(() => {\n const _event = event();\n const _srcIpDns = srcIpDns();\n const _destIpDns = destIpDns();\n const popoverTriggerList = document.querySelectorAll(\n '[data-bs-toggle=\"popover\"]',\n );\n const popoverList = [...popoverTriggerList].map(\n (popoverTriggerEl) => new bootstrap.Popover(popoverTriggerEl),\n );\n });\n\n createEffect(() => {\n setEventId(params.id);\n });\n\n // Update the history signal.\n createEffect(() => {\n const history = event()?._source?.evebox?.history;\n if (history) {\n setHistory(history);\n } else {\n setHistory([]);\n }\n });\n\n // Update GeoIP information.\n createEffect(() => {\n // Check for SELKS style first.\n if (event()?._source.geoip) {\n const geoip = event()?._source.geoip;\n if (geoip?.country_name) {\n let geo = {\n country_name: geoip?.country_name,\n };\n let source = undefined;\n let destination = undefined;\n if (geoip.ip === event()?._source.src_ip) {\n source = geo;\n } else {\n destination = geo;\n }\n setGeoIp({ source: source, destination: destination });\n return;\n }\n }\n\n const source =\n event()?._source.source?.geo || event()?._source.geoip_source;\n const destination =\n event()?._source.destination?.geo || event()?._source.geoip_destination;\n\n // Elastic ECS or EveBox log reader.\n setGeoIp({\n source: source && Object.keys(source).length ? source : undefined,\n destination:\n destination && Object.keys(destination).length\n ? destination\n : undefined,\n });\n });\n\n createEffect(() => {\n console.log(`EventView.createEffect: Loading event ID: ${eventId()}`);\n\n untrack(() => {\n console.log(`-- Requested event ID: ${params.id}`);\n console.log(`-- Active event ID: ${eventStore.active?._id}`);\n console.log(`-- Events in store: ${eventStore.events.length}`);\n refreshEvent();\n });\n });\n\n // Find DNS.\n createEffect(async () => {\n let source = event()?._source;\n if (!source) {\n return;\n }\n const src_ip = source.src_ip;\n const dest_ip = source.dest_ip;\n const host = source.host;\n\n // Use flow start if available, otherwise use the event timestamp.\n const before = source.flow?.start || source.timestamp;\n\n api\n .get(\"/api/find-dns\", {\n src_ip: src_ip,\n dest_ip: dest_ip,\n before,\n host,\n })\n .then((response) => {\n if (response.data.rrnames?.length > 0) {\n setSrcIpDns(response.data.rrnames);\n }\n });\n\n api\n .get(\"/api/find-dns\", {\n src_ip: dest_ip,\n dest_ip: src_ip,\n before,\n host,\n })\n .then((response) => {\n if (response.data.rrnames?.length > 0) {\n setDestIpDns(response.data.rrnames);\n }\n });\n });\n\n const refreshEvent = () => {\n getEventById(params.id)\n .then((event) => {\n if (eventStore.active && eventStore.active._id == params.id) {\n // Copy (by reference) the metadata and tags from the partial\n // event in the store so the archive and escalation states are\n // reflected when the user clicks back to the alerts view.\n event._metadata = eventStore.active._metadata;\n event._source.tags = eventStore.active._source.tags;\n }\n setEvent(event);\n })\n .catch(() => {\n setEvent(undefined);\n });\n };\n\n createEffect(() => {\n let source = event()?._source;\n\n if (!source) {\n setEventDetails(undefined);\n setCommonDetails(undefined);\n return;\n }\n\n function SearchLink(props: { children?: any; field?: string; value: any }) {\n let q;\n switch (typeof props.value) {\n case \"number\":\n q = encodeURIComponent(\n `${props.field ? props.field + \":\" : \"\"}${props.value}`,\n );\n break;\n default:\n q = encodeURIComponent(\n `${props.field ? props.field + \":\" : \"\"}\"${props.value}\"`,\n );\n break;\n }\n return {props.children || props.value};\n }\n\n let commonDetails = [];\n\n if (source.timestamp) {\n commonDetails.push([\n \"Timestamp\",\n \n \n ,\n ]);\n }\n\n if (source.host) {\n commonDetails.push([\"Sensor\", source.host]);\n }\n if (source.proto) {\n commonDetails.push([\"Protocol\", source.proto]);\n }\n if (source.src_ip) {\n commonDetails.push([\n \"Source\",\n <>\n \n {formatAddressWithPort(source.src_ip, source.src_port)}\n \n \n \n \n >,\n ]);\n }\n if (source.dest_ip) {\n commonDetails.push([\n \"Destination\",\n <>\n \n {formatAddressWithPort(source.dest_ip, source.dest_port)}\n \n \n \n \n >,\n ]);\n }\n if (source.in_iface) {\n commonDetails.push([\"In Interface\", source.in_iface]);\n }\n if (source.flow_id) {\n commonDetails.push([\n \"Flow ID\",\n ,\n ]);\n }\n if (source.community_id) {\n commonDetails.push([\n \"Community ID\",\n ,\n ]);\n }\n\n if (source.ether?.src_mac) {\n commonDetails.push([\n \"Source MAC\",\n ,\n ]);\n }\n\n if (source.ether?.dest_mac) {\n commonDetails.push([\n \"Dest MAC\",\n ,\n ]);\n }\n\n setCommonDetails(commonDetails);\n\n if (event()?._source.event_type === \"alert\") {\n let alert = event()!._source.alert!;\n let eventDetails = [\n [\n \"Signature\",\n ,\n ],\n [\n \"Category\",\n ,\n ],\n [\"Severity\", alert.severity],\n [\n \"Signature ID\",\n ,\n ],\n [\"Generator ID\", alert.gid],\n [\"Revision\", alert.rev],\n ];\n setEventDetails(eventDetails);\n } else if (event()?._source.event_type === \"stats\") {\n const stats = event()!._source.stats!;\n let eventDetails = [];\n if (stats.uptime) {\n eventDetails.push([\"Uptime\", stats.uptime]);\n }\n if (stats.capture.kernel_packets) {\n eventDetails.push([\"Kernel packets\", stats.capture.kernel_packets]);\n }\n if (stats.capture.kernel_drops) {\n eventDetails.push([\"Kernel drops\", stats.capture.kernel_drops]);\n }\n if (stats.decoder.pkts) {\n eventDetails.push([\"Decoder packets\", stats.decoder.pkts]);\n }\n if (stats.decoder.bytes) {\n eventDetails.push([\"Decoder bytes\", stats.decoder.bytes]);\n }\n if (stats.detect.alert) {\n eventDetails.push([\"Alerts\", stats.detect.alert]);\n }\n setEventDetails(eventDetails);\n } else {\n setEventDetails(undefined);\n }\n });\n\n function copyRawJson() {\n const e: HTMLInputElement | null = document.getElementById(\n \"raw-json\",\n ) as HTMLInputElement;\n if (e) {\n e.select();\n window.navigator.clipboard.writeText(e.value);\n addNotification(\"JSON copied to clipboard\");\n }\n }\n\n // From: https://stackoverflow.com/a/2838358\n //\n // Copied from Stack Overflow. Highlights the text inside an element.\n function selectElementText(el: HTMLElement) {\n if (window.getSelection && document.createRange) {\n const sel = window.getSelection();\n if (sel) {\n const range = document.createRange();\n range.selectNodeContents(el);\n sel.removeAllRanges();\n sel.addRange(range);\n return;\n }\n }\n addNotification(\"Select not supported in this browser\");\n }\n\n function selectRawJson() {\n const e: HTMLInputElement | null = document.getElementById(\n \"formatted-json\",\n ) as HTMLInputElement;\n if (e) {\n selectElementText(e);\n }\n }\n\n function isAggregateAlert(): boolean {\n return event()?._metadata?.count! > 0;\n }\n\n function isEscalated(): boolean {\n let ev = event();\n if (ev) {\n if (ev._metadata) {\n if (\n ev._metadata.escalated_count > 0 &&\n ev._metadata.escalated_count === ev._metadata.count\n ) {\n return true;\n }\n } else {\n return eventIsEscalated(ev);\n }\n }\n return false;\n }\n\n function archiveAlert() {\n if (event()?._metadata) {\n const alert = event() as AggregateAlert;\n archiveAggregateAlert(alert).then(() => {});\n eventSetArchived(alert);\n } else if (event()) {\n archiveEvent(event()!);\n }\n\n goBack();\n }\n\n async function escalate() {\n let ev = event();\n if (ev) {\n if (isAggregateAlert()) {\n await API.escalateAggregateAlert(ev);\n ev._metadata!.escalated_count = ev._metadata!.count;\n } else {\n await API.escalateEvent(ev);\n }\n refreshEvent();\n }\n }\n\n async function deEscalate() {\n let ev = event();\n if (ev) {\n if (isAggregateAlert()) {\n await API.deEscalateAggregateAlert(ev);\n ev._metadata!.escalated_count = 0;\n } else {\n await API.deEscalateEvent(ev);\n }\n refreshEvent();\n }\n }\n\n // Go \"back\". If it appears like we came here from an internal click on event, use the back button\n // so state is restored. If not, go back \"parent\" view.\n function goBack() {\n if (location.state) {\n window.history.back();\n } else if (location.pathname.startsWith(\"/escalated\")) {\n navigate(\"/escalated\");\n } else if (location.pathname.startsWith(\"/inbox\")) {\n navigate(\"/inbox\");\n } else if (location.pathname.startsWith(\"/alerts\")) {\n navigate(\"/alerts\");\n } else if (location.pathname.startsWith(\"/event\")) {\n navigate(\"/events\");\n }\n }\n\n function OccurrenceLink(props: { children: any }) {\n if (event()?._source.alert) {\n const alert = event()!._source.alert!;\n let parts = [\n `alert.signature_id:${alert.signature_id}`,\n `src_ip:${event()?._source.src_ip}`,\n `dest_ip:${event()?._source.dest_ip}`,\n `@from:\"${event()?._metadata?.min_timestamp}\"`,\n `@to:\"${event()?._metadata?.max_timestamp}\"`,\n ];\n const url = \"/events?q=\" + parts.map(encodeURIComponent).join(\"+\");\n return {props.children};\n } else {\n return <>>;\n }\n }\n\n interface DisplayObject {\n title: string;\n key: string;\n rows: { key: string; val: any }[];\n }\n\n const [displayObjects, setDisplayObjects] = createSignal([]);\n\n const [objectColumns, setObjectColumns] = createStore<{\n col1: DisplayObject[];\n col2: DisplayObject[];\n }>({\n col1: [],\n col2: [],\n });\n\n createEffect(() => {\n let objects: DisplayObject[] = [];\n if (event()) {\n let source = event()!._source;\n for (const key of Object.keys(event()!._source)) {\n if (typeof source[key] === \"object\") {\n const flattened = flattenJson(source[key]);\n if (flattened.length > 0) {\n objects.push({\n key: key,\n title: eventNameFromType(key) || key.toUpperCase(),\n rows: flattened,\n });\n }\n }\n }\n objects.sort((a, b) => {\n if (a.rows.length < b.rows.length) {\n return 1;\n } else if (a.rows.length > b.rows.length) {\n return -1;\n } else {\n return 0;\n }\n });\n setDisplayObjects(objects);\n\n let card1_len = 0;\n let card2_len = 0;\n let card1: DisplayObject[] = [];\n let card2: DisplayObject[] = [];\n\n objects.forEach((object) => {\n if (card1_len === 0 || card1_len < card2_len) {\n card1.push(object);\n card1_len += object.rows.length;\n for (const row of object.rows) {\n if (row.val.length > 80) {\n card1_len += Math.ceil(row.val.length / 80);\n }\n }\n } else {\n card2.push(object);\n card2_len += object.rows.length;\n for (const row of object.rows) {\n if (row.val.length > 80) {\n card2_len += Math.ceil(row.val.length / 80);\n }\n }\n }\n });\n\n setObjectColumns({ col1: card1, col2: card2 });\n }\n });\n\n function getServiceLinks(event: EventWrapper): any[] {\n let serviceLinks = [];\n const eventServices = serverConfig?.[\n \"event-services\"\n ] as EventServiceConfig[];\n if (eventServices) {\n for (let service of eventServices) {\n if (!service.enabled) {\n continue;\n }\n let url = service.url.replace(\n \"{{raw}}\",\n encodeURIComponent(JSON.stringify(event._source)),\n );\n if (serviceLinks.length > 0) {\n serviceLinks.push(\" | \");\n }\n serviceLinks.push({service.name});\n }\n }\n\n return serviceLinks;\n }\n\n function eventToPcap(what: \"packet\" | \"payload\") {\n if (event()) {\n API.eventToPcap(event()!, what);\n }\n }\n\n const showToolMenu = createMemo(() => {\n console.log(event()?._source?.tags);\n const tags = event()?._source?.tags || [];\n const autoArchived =\n tags.indexOf(\"evebox.auto-archived\") > -1 ||\n tags.indexOf(\"evebox.auto_archived\") > -1;\n return event()?._source?.event_type == \"alert\" && !autoArchived;\n });\n\n const autoArchiveWithParams = (params: API.AddAutoArchiveRequest) => {\n API.addAutoArchive(params);\n archiveAlert();\n };\n\n return (\n <>\n \n \n \n \n \n Back\n \n \n \n \n Archive\n \n \n \n \n Archive{\" \"}\n \n ({event()?._metadata?.count})\n \n \n \n \n \n Escalate\n \n \n \n \n De-escalate\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n {formatTitle(event()!)}\n \n \n 0}>\n [ {getServiceLinks(event()!)} ]\n \n \n [{\" \"}\n \n {event()?._metadata!.count} Occurrences\n {\" \"}\n ]\n \n \n \n \n\n \n \n \n \n \n \n \n {(e) => (\n <>\n \n \n {e[0]}\n \n {e[1]}\n \n >\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {(e) => (\n <>\n \n \n {e[0]}\n \n {e[1]}\n \n >\n )}\n \n \n \n \n \n\n \n \n \n DNS Hostnames\n \n \n \n \n \n \n \n \n \n {(e) => (\n \n {event()?._source.src_ip}\n \n {e}\n \n \n )}\n \n \n \n \n {(e) => (\n \n {event()?._source.dest_ip}\n \n {e}\n \n \n )}\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n {/* Rule */}\n \n \n \n \n Rule\n \n \n \n \n \n \n \n\n \n\n {/* Never show if there is history, as it embeds a comment form. */}\n \n setShowCommentForm(false)}\n />\n \n\n {/* GeoIP */}\n \n \n \n \n GeoIP\n \n \n \n \n \n \n Source\n \n {geoIpInfoString(geoIp.source)}\n \n \n \n \n \n Destination\n \n {geoIpInfoString(geoIp.destination)}\n \n \n \n \n \n \n \n \n \n\n \n \n \n\n {/* Tabbed? */}\n \n \n \n \n \n \n {/* Object Cards */}\n \n \n {(col) => (\n <>\n \n \n {(o) => (\n <>\n \n {o.title}\n \n \n \n \n {(e) => (\n <>\n \n {e.key}\n \n \n {e.val}\n \n }\n >\n \n {`${e.val}`}\n \n \n \n {e.val}\n \n \n \n \n {e.val}\n \n \n \n \n \n >\n )}\n \n \n \n \n \n >\n )}\n \n \n >\n )}\n \n \n \n \n {(t, i) => {\n return (\n <>\n \n \n \n \n {(e) => (\n <>\n \n \n {e.key}\n \n \n \n {e.val}\n \n }\n >\n \n \n {e.val}\n \n \n \n \n \n >\n )}\n \n \n \n \n >\n );\n }}\n \n \n \n \n \n \n\n {/* Payload */}\n \n \n \n eventToPcap(\"payload\")}\n style={PCAP_BUTTON_STYLE}\n >\n PCAP\n \n }\n />\n \n \n \n\n {/* Packet */}\n \n \n \n eventToPcap(\"packet\")}\n style={PCAP_BUTTON_STYLE}\n >\n PCAP\n \n }\n />\n \n \n \n\n \n \n \n Event Listing\n \n \n \n \n {(e) => (\n <>\n \n {e.key}\n {e.val}\n \n >\n )}\n \n \n \n \n \n \n \n \n \n JSON\n \n [\n \n {\n e.preventDefault();\n copyRawJson();\n }}\n >\n Copy\n \n |\n \n {\n e.preventDefault();\n selectRawJson();\n }}\n >\n Select\n \n ]\n \n \n \n setShowCopyToast(false)}\n show={showCopyToast()}\n autohide\n delay={10000}\n >\n JSON copied to clipboard\n \n \n \n \n \n \n \n \n \n \n\n \n {JSON.stringify(event(), undefined, 4)}\n \n \n \n >\n );\n}\n\nfunction toPrettyHex(data: string): [string, string][] {\n let output: [string, string][] = [];\n let chars = [];\n\n for (let i = 0; i < data.length; i++) {\n chars.push(data.charCodeAt(i));\n }\n\n while (chars.length > 0) {\n const chunk = chars.splice(0, 16);\n let hex = [];\n let printable = [];\n for (let i = 0; i < chunk.length; i++) {\n const x = chunk[i].toString(16);\n if (x.length === 1) {\n hex.push(\"0\" + x);\n } else {\n hex.push(x);\n }\n if (chunk[i] >= 32 && chunk[i] <= 127) {\n printable.push(String.fromCharCode(chunk[i]));\n } else {\n printable.push(\".\");\n }\n }\n output.push([hex.join(\" \"), printable.join(\"\")]);\n }\n\n return output;\n}\n\nfunction formatTitle(event: Event): string {\n try {\n return `${event._source.event_type.toUpperCase()}: ${formatEventDescription(\n event,\n )}`;\n } catch (err) {\n return JSON.stringify(event);\n }\n}\n\nfunction bgClassForSeverity(event: Event) {\n switch (event._source.alert?.severity) {\n case 1:\n return \"alert-danger\";\n case 2:\n return \"alert-warning\";\n default:\n return \"alert-info\";\n }\n}\n\nfunction formatTimestamp(timestamp: string) {\n const ts = parse_timestamp(timestamp);\n return ts.format(\"YYYY-MM-DD HH:mm:ss.SSS\");\n}\n\nfunction flattenJson(\n object: any,\n prefix: string[] = [],\n output: { key: string; val: any }[] = [],\n): { key: string; val: any }[] {\n if (object === null) {\n return output;\n }\n for (const key of Object.keys(object)) {\n let key_prefix = [...prefix];\n key_prefix.push(key);\n let val = object[key];\n switch (typeof val) {\n case \"object\":\n flattenJson(val, key_prefix, output);\n break;\n default:\n const full_key = key_prefix.join(\".\");\n if (!full_key.startsWith(\"__private.\")) {\n output.push({ key: key_prefix.join(\".\"), val: val });\n }\n break;\n }\n }\n\n return output;\n}\n\nfunction PrettyJson(props: any) {\n let output: any = undefined;\n\n // Copy and delete client side private fields.\n const json = { ...props.json };\n delete json.__private;\n\n createEffect(() => {\n if (output) {\n output.innerHTML = prettyPrintJson.toHtml(json);\n }\n });\n\n return (\n <>\n \n >\n );\n}\n\nfunction Base64BufferCard(props: {\n title: string;\n buffer: string;\n addOn?: any;\n}) {\n return (\n \n \n {props.title}\n \n {props.addOn}\n \n \n \n \n \n \n \n {atob(props.buffer)}\n \n \n \n \n \n \n \n \n \n {(e) => (\n <>\n \n \n {e[0]}\n \n \n {e[1]}\n \n \n >\n )}\n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction HighlightedRule(props: { rule: string }) {\n const [rule, setRule] = createSignal(\"\");\n\n createEffect(() => {\n let html = props.rule;\n\n html = html.replace(\"<\", \"%___lt___%\");\n html = html.replace(\">\", \"%___gt___%\");\n\n html = html.replace(\n /^([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s+/,\n `$1\n $2\n $3\n $4 \n $5 \n $6\n $7 `,\n );\n\n html = html.replace(\n /:([^;]+)/g,\n `:$1`,\n );\n html = html.replace(/(\\w+\\:)/g, `$1`);\n\n // Catch keywords without a value.\n html = html.replace(\n /(;\\s*)(\\w+;)/g,\n `$1$2`,\n );\n\n // Replace referece URLs with the URL.\n html = html.replace(/url,(.*?)([;<])/g, `url,$1$2`);\n\n html = html.replace(\"%___lt___%\", \"<\");\n html = html.replace(\"%___gt___%\", \">\");\n\n setRule(html);\n });\n\n return ;\n}\n\nfunction DnsInfoCol(props: { dns: EveDns }) {\n interface DataCard {\n title: string | null;\n data: DataCardRow[];\n }\n\n interface DataCardRow {\n key: string;\n val: any;\n }\n\n const cards: DataCard[] = [];\n\n let common = [\n { key: \"Type\", val: props.dns.type.toUpperCase() },\n { key: \"Query\", val: `${props.dns.rrtype} ${props.dns.rrname}` },\n ];\n if (props.dns.rcode) {\n common.push({ key: \"RCODE\", val: props.dns.rcode });\n }\n\n cards.push({\n title: null,\n data: common,\n });\n\n if (props.dns.answers) {\n const rows = props.dns.answers.map((a) => {\n return {\n key: `${a.rrtype} ${a.rrname}`,\n val: a.rdata,\n };\n });\n cards.push({\n title: \"DNS Answers\",\n data: rows,\n });\n }\n\n if (props.dns.authorities) {\n let rows: DataCardRow[] = [];\n props.dns.authorities.forEach((a) => {\n if (a.rrtype === \"SOA\" && a.soa) {\n rows.push({\n key: `${a.rrtype} ${a.rrname}`,\n val: `${a.soa?.mname} (${a.soa.rname})`,\n });\n }\n });\n if (rows.length > 0) {\n cards.push({\n title: \"DNS Authorities\",\n data: rows,\n });\n }\n }\n\n return (\n <>\n \n {(card, i) => (\n <>\n \n \n \n \n \n {card.title}\n \n \n \n \n \n {(row) => (\n \n {row.key}\n {row.val}\n \n )}\n \n \n \n \n >\n )}\n \n >\n );\n}\n\nfunction geoIpInfoString(geo: any) {\n let parts = [];\n if (geo.continent_name) {\n parts.push(geo.continent_name);\n }\n if (geo.country_name) {\n parts.push(geo.country_name);\n }\n if (geo.region_name) {\n parts.push(geo.region_name);\n }\n if (geo.city_name) {\n parts.push(geo.city_name);\n }\n return parts.join(\" / \");\n}\n\nfunction StatsCard(props: { stats: { [key: string]: any } }) {\n const [hideZeros, setHideZeros] = createSignal(false);\n const [stats, setStats] = createSignal<{ key: string; val: any }[]>([]);\n const [filter, setFilter] = createSignal(\"\");\n\n function toggleHide(e: any) {\n setHideZeros(e.target.checked);\n }\n\n createEffect(() => {\n const flattened = flattenJson(props.stats);\n const filtered = flattened.filter((e) => {\n if (hideZeros()) {\n if (e.val === 0) {\n return false;\n }\n }\n if (filter()) {\n if (e.key.indexOf(filter()) < 0) {\n return false;\n }\n }\n return true;\n });\n setStats(filtered);\n });\n\n return (\n <>\n \n \n Stats\n \n \n Hide zeros\n \n \n \n {\n setFilter(e.target.value);\n }}\n />\n \n \n \n {(stat) => (\n <>\n \n \n {stat.key}\n \n {stat.val}\n \n >\n )}\n \n \n \n \n \n >\n );\n}\n\nfunction History(props: {\n eventId: string | number;\n history: any[];\n onChange: () => void;\n setShowCommentForm: Setter;\n showCommentForm: boolean;\n}) {\n const inputId = createUniqueId();\n\n const submitEvent = () => {\n let comment = (document.getElementById(inputId) as HTMLInputElement).value;\n postComment(props.eventId, comment).then(() => {\n props.onChange();\n });\n\n // Clear the comment.\n (document.getElementById(inputId) as HTMLInputElement).value = \"\";\n };\n\n return (\n \n \n \n \n History\n \n \n \n {(entry) => (\n <>\n \n {formatTimestamp(entry.timestamp).slice(0, -4)}\n {\" - \"}\n \n \n Escalated\n \n \n De-escalated\n \n \n Comment\n \n {\" \"}\n by {entry.username || \"null\"}\n \n {entry.comment}\n \n \n >\n )}\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction CommentEntry(props: {\n eventId: string | number;\n onChange: () => void;\n close: () => void;\n}) {\n const inputId = createUniqueId();\n\n const submitEvent = () => {\n let comment = (document.getElementById(inputId) as HTMLInputElement).value;\n postComment(props.eventId, comment).then(() => {\n props.onChange();\n });\n\n // Clear the comment.\n (document.getElementById(inputId) as HTMLInputElement).value = \"\";\n\n // Close the comment form.\n props.close();\n };\n\n return (\n <>\n \n \n \n \n Comment\n \n \n \n \n \n \n \n \n >\n );\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { Show } from \"solid-js\";\n\nexport function RefreshButton(props: { loading: number; refresh: () => void }) {\n return (\n <>\n 0}\n onclick={props.refresh}\n >\n Refresh\n 0}>\n \n {props.loading}\n unread messages\n \n \n \n >\n );\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { createEffect, createSignal, For, JSX, onCleanup } from \"solid-js\";\nimport { Top } from \"./Top\";\nimport { Col, Container, Row } from \"solid-bootstrap\";\nimport { timeRangeAsSeconds } from \"./settings\";\nimport { statsAgg } from \"./api\";\nimport { Chart } from \"chart.js\";\nimport { parse_timestamp } from \"./datetime\";\nimport { useSearchParams } from \"@solidjs/router\";\nimport { SensorSelect } from \"./common/SensorSelect\";\nimport { RefreshButton } from \"./common/RefreshButton\";\nimport { loadingTracker } from \"./util\";\n\ninterface ChartConfig {\n title: string;\n field: string;\n differential: boolean;\n canvasId: string;\n}\n\nconst CHARTS: ChartConfig[] = [\n {\n title: \"Decoder Bytes\",\n field: \"stats.decoder.bytes\",\n differential: true,\n canvasId: \"decoderBytes\",\n },\n {\n title: \"Decoder Packets\",\n field: \"stats.decoder.pkts\",\n differential: true,\n canvasId: \"decoderPackets\",\n },\n {\n title: \"Kernel Drops\",\n field: \"stats.capture.kernel_drops\",\n differential: true,\n canvasId: \"kernelDrops\",\n },\n {\n title: \"Flow Memory\",\n field: \"stats.flow.memuse\",\n differential: false,\n canvasId: \"flowMemuse\",\n },\n {\n title: \"TCP Memory\",\n field: \"stats.tcp.memuse\",\n differential: false,\n canvasId: \"tcpMemuse\",\n },\n];\n\nexport function Stats(): JSX.Element {\n const [searchParams, setSearchParams] = useSearchParams<{ sensor: string }>();\n const [loadingCounter, setLoadingCounter] = createSignal(0);\n let charts: any[] = [];\n\n onCleanup(() => {\n destroyAllCharts();\n });\n\n createEffect(() => {\n refresh();\n });\n\n function destroyAllCharts() {\n console.log(\"Destroying charts...\");\n while (charts.length > 0) {\n const chart = charts.pop();\n chart.destroy();\n }\n }\n\n function refresh() {\n loadData(timeRangeAsSeconds(), searchParams.sensor);\n }\n\n function loadData(timeRange: undefined | number, sensor: string | undefined) {\n destroyAllCharts();\n\n console.log(\"Loading chart...\");\n\n for (const chart of CHARTS) {\n loadingTracker(setLoadingCounter, () => {\n return statsAgg(\n chart.field,\n chart.differential,\n timeRange,\n sensor,\n ).then((response) => {\n const labels: any[] = [];\n const values: any[] = [];\n response.data.forEach((e) => {\n labels.push(parse_timestamp(e.timestamp).toDate());\n values.push(e.value);\n });\n const canvas = buildChart(\n chart.canvasId,\n chart.title,\n labels,\n values,\n );\n charts.push(canvas);\n });\n });\n }\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n {\n setSearchParams({ sensor: sensor });\n }}\n />\n \n \n \n \n \n {(chart) => (\n <>\n \n \n \n \n \n \n \n >\n )}\n \n \n \n );\n}\n\nfunction buildChart(\n elementId: string,\n title: string,\n labels: Date[],\n values: number[],\n): Chart {\n const ctx = (\n document.getElementById(elementId) as HTMLCanvasElement\n ).getContext(\"2d\") as CanvasRenderingContext2D;\n\n const chart = new Chart(ctx, {\n type: \"line\",\n data: {\n labels: labels,\n datasets: [\n {\n data: values,\n backgroundColor: \"rgba(0, 90, 0, 0.3)\",\n borderColor: \"rgba(0, 90, 0, 1)\",\n pointRadius: 0,\n fill: true,\n borderWidth: 1,\n },\n ],\n },\n options: {\n interaction: {\n intersect: false,\n },\n responsive: true,\n maintainAspectRatio: false,\n scales: {\n x: {\n type: \"time\",\n },\n },\n plugins: {\n title: {\n text: title,\n display: true,\n },\n legend: {\n display: false,\n },\n },\n },\n });\n return chart;\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { TIME_RANGE, Top } from \"../Top\";\nimport { useParams } from \"@solidjs/router\";\nimport { createEffect, createSignal, For, onCleanup } from \"solid-js\";\nimport { Col, Container, Row } from \"solid-bootstrap\";\nimport { API, AggRequest, AggResponseRow } from \"../api\";\nimport { CountValueDataTable } from \"../components\";\nimport { SetStoreFunction, createStore } from \"solid-js/store\";\nimport { RefreshButton } from \"../common/RefreshButton\";\nimport dayjs from \"dayjs\";\n\ninterface AggResults {\n loading: boolean;\n rows: AggResponseRow[];\n timestamp: null | dayjs.Dayjs;\n}\n\nfunction defaultAggResults(): AggResults {\n return {\n loading: false,\n rows: [],\n timestamp: null,\n };\n}\n\nexport function Address() {\n const params = useParams<{ address: string }>();\n\n const [loading, setLoading] = createSignal(0);\n\n // For SSE cancellation.\n const [version, setVersion] = createSignal(0);\n\n const [mostAlertingSignature, setMostAlertingSignature] =\n createStore(defaultAggResults());\n\n const [leastAlertingSignature, setLeastAlertingSignature] =\n createStore(defaultAggResults());\n\n const [mostRequestedDns, setMostRequestedDns] =\n createStore(defaultAggResults());\n\n const [leastRequestedDns, setLeastRequestedDns] =\n createStore(defaultAggResults());\n\n const [mostHttpUserAgents, setMostHttpUserAgents] =\n createStore(defaultAggResults());\n\n const [leastHttpUserAgents, setLeastHttpUserAgents] =\n createStore(defaultAggResults());\n\n const [mostRequestedTlsSni, setMostRequestedTlsSni] =\n createStore(defaultAggResults());\n\n const [leastRequestedTlsSni, setLeastRequestedTlsSni] =\n createStore(defaultAggResults());\n\n const [mostSshClientVersions, setMostSshClientVersions] =\n createStore(defaultAggResults());\n\n const [leastSshClientVersions, setLeastSshClientVersions] =\n createStore(defaultAggResults());\n\n const [mostSshServerVersions, setMostSshServerVersions] =\n createStore(defaultAggResults());\n\n const [leastSshServerVersions, setLeastSshServerVersions] =\n createStore(defaultAggResults());\n\n const [httpTopOutboundHostnames, setHttpTopOutboundHostnames] =\n createStore(defaultAggResults());\n\n const [httpLeastOutboundHostnames, setHttpLeastOutboundHostnames] =\n createStore(defaultAggResults());\n\n const [httpTopInboundHostnames, setHttpTopInboundHostnames] =\n createStore(defaultAggResults());\n\n const [httpLeastInboundHostnames, setHttpLeastInboundHostnames] =\n createStore(defaultAggResults());\n\n const [tlsSniInboundTop, setTlsSniInboundTop] =\n createStore(defaultAggResults());\n\n const [tlsSniInboundLeast, setTlsSniInboundLeast] =\n createStore(defaultAggResults());\n\n const [tlsMostRequestedSubjects, setTlsMostRequestedSubjects] =\n createStore(defaultAggResults());\n\n const [tlsLeastRequestedSubjects, setTlsLeastRequestedSubjects] =\n createStore(defaultAggResults());\n\n const [tlsMostRequestedIssueDn, setTlsMostRequestedIssueDn] =\n createStore(defaultAggResults());\n\n const [tlsLeastRequestedIssueDn, setTlsLeastRequestedIssueDn] =\n createStore(defaultAggResults());\n\n onCleanup(() => {\n API.cancelAllSse();\n });\n\n createEffect(() => {\n forceRefresh();\n });\n\n function forceRefresh() {\n refresh(TIME_RANGE());\n }\n\n // NOTE: We can't use ${params.address} here as this structure is static and not subject\n // to reactive updates. Thre refresh function will substitute {{address}} with the current\n // address when it changes.\n const LOADERS: {\n request: AggRequest;\n setter: SetStoreFunction;\n getter: AggResults;\n title: string;\n label: string;\n }[] = [\n // Most alerting rules.\n {\n request: {\n field: \"alert.signature\",\n order: \"desc\",\n q: `event_type:alert @ip:{{address}}`,\n size: 10,\n },\n setter: setMostAlertingSignature,\n getter: mostAlertingSignature,\n title: \"Most Alerting Rules\",\n label: \"Signature\",\n },\n\n // Least alerting rules.\n {\n request: {\n field: \"alert.signature\",\n order: \"asc\",\n q: `event_type:alert @ip:{{address}}`,\n size: 10,\n },\n setter: setLeastAlertingSignature,\n getter: leastAlertingSignature,\n title: \"Least Alerting Rules\",\n label: \"Signature\",\n },\n\n // Most requested DNS hostnames.\n {\n request: {\n field: \"dns.rrname\",\n order: \"desc\",\n q: `event_type:dns dns.type:query src_ip:{{address}}`,\n size: 10,\n },\n setter: setMostRequestedDns,\n getter: mostRequestedDns,\n title: \"Most Requested DNS Hostnames\",\n label: \"Hostname\",\n },\n\n // Least requested DNS hostnames.\n {\n request: {\n field: \"dns.rrname\",\n order: \"asc\",\n q: `event_type:dns dns.type:query src_ip:{{address}}`,\n size: 10,\n },\n setter: setLeastRequestedDns,\n getter: leastRequestedDns,\n title: \"Least Requested DNS Hostnames\",\n label: \"Hostname\",\n },\n\n // Top outbound HTTP hostnames\n {\n request: {\n field: \"http.hostname\",\n order: \"desc\",\n q: `event_type:http src_ip:{{address}}`,\n size: 10,\n },\n setter: setHttpTopOutboundHostnames,\n getter: httpTopOutboundHostnames,\n title: \"Top Outbound HTTP Hostnames\",\n label: \"Hostname\",\n },\n\n // Least outbound HTTP hostnames\n {\n request: {\n field: \"http.hostname\",\n order: \"asc\",\n q: `event_type:http src_ip:{{address}}`,\n size: 10,\n },\n setter: setHttpLeastOutboundHostnames,\n getter: httpLeastOutboundHostnames,\n title: \"Least Outbound HTTP Hostnames\",\n label: \"Hostname\",\n },\n\n // Top inbound HTTP hostnames\n {\n request: {\n field: \"http.hostname\",\n order: \"desc\",\n q: `event_type:http dest_ip:{{address}}`,\n size: 10,\n },\n setter: setHttpTopInboundHostnames,\n getter: httpTopInboundHostnames,\n title: \"Top Inbound HTTP Hostnames\",\n label: \"Hostname\",\n },\n\n // Least inbound HTTP hostnames\n {\n request: {\n field: \"http.hostname\",\n order: \"asc\",\n q: `event_type:http dest_ip:{{address}}`,\n size: 10,\n },\n setter: setHttpLeastInboundHostnames,\n getter: httpLeastInboundHostnames,\n title: \"Least Inbound HTTP Hostnames\",\n label: \"Hostname\",\n },\n\n // Most HTTP user agents.\n {\n request: {\n field: \"http.http_user_agent\",\n order: \"desc\",\n q: `event_type:http src_ip:{{address}}`,\n size: 10,\n },\n setter: setMostHttpUserAgents,\n getter: mostHttpUserAgents,\n title: \"Top Outbound HTTP User Agents\",\n label: \"User Agent\",\n },\n\n // Least HTTP user agents.\n {\n request: {\n field: \"http.http_user_agent\",\n order: \"asc\",\n q: `event_type:http src_ip:{{address}}`,\n size: 10,\n },\n setter: setLeastHttpUserAgents,\n getter: leastHttpUserAgents,\n title: \"Least Outbound HTTP User Agents\",\n label: \"User Agent\",\n },\n\n // Most TLS SNI.\n {\n request: {\n field: \"tls.sni\",\n order: \"desc\",\n q: `event_type:tls src_ip:{{address}}`,\n size: 10,\n },\n setter: setMostRequestedTlsSni,\n getter: mostRequestedTlsSni,\n title: \"Most Requested TLS SNI Names\",\n label: \"Name\",\n },\n\n // Least TLS SNI.\n {\n request: {\n field: \"tls.sni\",\n order: \"asc\",\n q: `event_type:tls src_ip:{{address}}`,\n size: 10,\n },\n setter: setLeastRequestedTlsSni,\n getter: leastRequestedTlsSni,\n title: \"Least Requested TLS SNI Names\",\n label: \"Name\",\n },\n\n // TLS: Top Inbound SNI\n {\n request: {\n field: \"tls.sni\",\n order: \"desc\",\n q: `event_type:tls dest_ip:{{address}}`,\n size: 10,\n },\n setter: setTlsSniInboundTop,\n getter: tlsSniInboundTop,\n title: \"Top Inbound TLS SNI Names\",\n label: \"Name\",\n },\n\n // TLS: Least Inbound SNI\n {\n request: {\n field: \"tls.sni\",\n order: \"asc\",\n q: `event_type:tls dest_ip:{{address}}`,\n size: 10,\n },\n setter: setTlsSniInboundLeast,\n getter: tlsSniInboundLeast,\n title: \"Least Inbound TLS SNI Names\",\n label: \"Name\",\n },\n\n // Top Requests TLS Subjects\n {\n request: {\n field: \"tls.subject\",\n order: \"desc\",\n q: `event_type:tls src_ip:{{address}}`,\n size: 10,\n },\n setter: setTlsMostRequestedSubjects,\n getter: tlsMostRequestedSubjects,\n title: \"Most Requested TLS Subjects\",\n label: \"Name\",\n },\n\n // Least Requested TLS Subjects\n {\n request: {\n field: \"tls.subject\",\n order: \"asc\",\n q: `event_type:tls src_ip:{{address}}`,\n size: 10,\n },\n setter: setTlsLeastRequestedSubjects,\n getter: tlsLeastRequestedSubjects,\n title: \"Least Requested TLS Subjects\",\n label: \"Name\",\n },\n\n // Top Requested TLS Issuer DN\n {\n request: {\n field: \"tls.issuerdn\",\n order: \"desc\",\n q: `event_type:tls src_ip:{{address}}`,\n size: 10,\n },\n setter: setTlsMostRequestedIssueDn,\n getter: tlsMostRequestedIssueDn,\n title: \"Most Requested TLS Issuer DN\",\n label: \"Name\",\n },\n\n // Least Requested TLS Issuer DN\n {\n request: {\n field: \"tls.issuerdn\",\n order: \"asc\",\n q: `event_type:tls src_ip:{{address}}`,\n size: 10,\n },\n setter: setTlsLeastRequestedIssueDn,\n getter: tlsLeastRequestedIssueDn,\n title: \"Least Requested TLS Issuer DN\",\n label: \"Name\",\n },\n\n // Most SSH client versions\n {\n request: {\n field: \"ssh.client.software_version\",\n order: \"desc\",\n q: `event_type:ssh src_ip:{{address}}`,\n size: 10,\n },\n setter: setMostSshClientVersions,\n getter: mostSshClientVersions,\n title: \"Most SSH Client Software Versions\",\n label: \"Version\",\n },\n\n // Least SSH client versions\n {\n request: {\n field: \"ssh.client.software_version\",\n order: \"asc\",\n q: `event_type:ssh src_ip:{{address}}`,\n size: 10,\n },\n setter: setLeastSshClientVersions,\n getter: leastSshClientVersions,\n title: \"Least SSH Client Software Versions\",\n label: \"Version\",\n },\n\n // Most SSH server versions\n {\n request: {\n field: \"ssh.server.software_version\",\n order: \"desc\",\n q: `event_type:ssh dest_ip:{{address}}`,\n size: 10,\n },\n setter: setMostSshServerVersions,\n getter: mostSshServerVersions,\n title: \"Most SSH Server Software Versions\",\n label: \"Version\",\n },\n\n // Least SSH server versions\n {\n request: {\n field: \"ssh.server.software_version\",\n order: \"asc\",\n q: `event_type:ssh dest_ip:{{address}}`,\n size: 10,\n },\n setter: setLeastSshServerVersions,\n getter: leastSshServerVersions,\n title: \"Least SSH Server Software Versions\",\n label: \"Version\",\n },\n ];\n\n function refresh(timeRange: string) {\n setVersion((version) => version + 1);\n setLoading(LOADERS.length);\n\n for (const loader of LOADERS) {\n let request = { time_range: timeRange, ...loader.request };\n request.q = request.q?.replace(\"{{address}}\", params.address);\n\n loader.setter(\"loading\", true);\n\n API.getSseAgg(request, version, (data: any) => {\n if (data) {\n loader.setter(\"timestamp\", dayjs(data.earliest_ts));\n loader.setter(\"rows\", data.rows);\n }\n }).finally(() => {\n loader.setter(\"loading\", false);\n setLoading((n) => n - 1);\n });\n }\n }\n\n const formatSuffix = (timestamp: dayjs.Dayjs | null) => {\n if (timestamp) {\n return `since ${timestamp.fromNow()}`;\n }\n return undefined;\n };\n\n return (\n <>\n \n \n \n \n \n \n Report for {params.address}\n \n \n \n\n \n \n {(loader) => (\n <>\n \n \n \n >\n )}\n \n \n \n >\n );\n}\n","// SPDX-FileCopyrightText: (C) 2024 Jason Ish \n// SPDX-License-Identifier: MIT\n\nexport const Colors = [\n \"#E57373\",\n \"#F06292\",\n \"#BA68C8\",\n \"#9575CD\",\n \"#7986CB\",\n \"#64B5F6\",\n \"#4FC3F7\",\n \"#4DD0E1\",\n \"#4DB6AC\",\n \"#81C784\",\n \"#AED581\",\n \"#DCE775\",\n \"#FFF176\",\n \"#FFD54F\",\n \"#FFB74D\",\n \"#FF8A65\",\n \"#A1887F\",\n \"#E0E0E0\",\n \"#90A4AE\",\n \"#FF8A80\",\n \"#FF80AB\",\n \"#EA80FC\",\n \"#B388FF\",\n \"#8C9EFF\",\n \"#82B1FF\",\n \"#80D8FF\",\n \"#84FFFF\",\n \"#A7FFEB\",\n \"#B9F6CA\",\n \"#CCFF90\",\n \"#F4FF81\",\n \"#FFFF8D\",\n \"#FFE57F\",\n \"#FFD180\",\n \"#FF9E80\",\n \"#FF5252\",\n \"#FF4081\",\n \"#E040FB\",\n \"#7C4DFF\",\n \"#536DFE\",\n \"#448AFF\",\n \"#40C4FF\",\n \"#18FFFF\",\n \"#64FFDA\",\n \"#69F0AE\",\n \"#B2FF59\",\n \"#EEFF41\",\n \"#FFFF00\",\n \"#FFD740\",\n \"#FFAB40\",\n \"#FF6E40\",\n \"#D50000\",\n \"#C51162\",\n \"#AA00FF\",\n \"#6200EA\",\n \"#304FFE\",\n \"#2962FF\",\n \"#0091EA\",\n \"#00B8D4\",\n \"#00BFA5\",\n \"#00C853\",\n \"#64DD17\",\n \"#AEEA00\",\n \"#FFD600\",\n \"#FFAB00\",\n];\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { TIME_RANGE, Top } from \"../Top\";\nimport { createEffect, createSignal, onCleanup } from \"solid-js\";\nimport { Col, Container, Form, Row } from \"solid-bootstrap\";\nimport { API } from \"../api\";\nimport { RefreshButton } from \"../common/RefreshButton\";\nimport { Chart, ChartConfiguration } from \"chart.js\";\nimport { useSearchParams } from \"@solidjs/router\";\nimport { SensorSelect } from \"../common/SensorSelect\";\nimport { loadingTracker } from \"../util\";\nimport { CountValueDataTable } from \"../components\";\nimport { Colors } from \"../common/colors\";\nimport { createStore } from \"solid-js/store\";\nimport type { SetStoreFunction } from \"solid-js/store\";\nimport dayjs from \"dayjs\";\n\ninterface CountValueRow {\n count: number;\n key: any;\n}\n\ninterface Model {\n rows: CountValueRow[];\n loading: boolean;\n timestamp: null | dayjs.Dayjs;\n}\n\nfunction defaultModel(): Model {\n return {\n rows: [],\n loading: false,\n timestamp: null,\n };\n}\n\nexport function AlertsDashboard() {\n const [version, setVersion] = createSignal(0);\n\n const [loading, setLoading] = createSignal(0);\n\n const [searchParams, setSearchParams] = useSearchParams<{\n sensor?: string;\n q?: string;\n }>();\n\n const [mostAlerting, setMostAlerting] = createStore(defaultModel());\n\n const [leastAlerting, setLeastAlerting] = createStore(defaultModel());\n\n const [mostAlertingSource, setMostAlertingSource] =\n createStore(defaultModel());\n\n const [leastAlertingSource, setLeastAlertingSource] =\n createStore(defaultModel());\n\n const [mostAlertingDest, setMostAlertingDest] =\n createStore(defaultModel());\n\n const [leastAlertingDest, setLeastAlertingDest] =\n createStore(defaultModel());\n\n let histogram: any = undefined;\n\n onCleanup(() => {\n API.cancelAllSse();\n });\n\n createEffect(() => {\n refresh();\n });\n\n function buildChart(response: any) {\n const dataValues: number[] = [];\n const dataLabels: number[] = [];\n response.data.forEach((e: any) => {\n dataValues.push(e.count);\n dataLabels.push(e.time);\n });\n\n const ctx = (\n document.getElementById(\"histogram\") as HTMLCanvasElement\n ).getContext(\"2d\") as CanvasRenderingContext2D;\n\n const config: ChartConfiguration = {\n type: \"bar\",\n data: {\n labels: dataLabels,\n datasets: [\n {\n data: dataValues,\n\n backgroundColor: dataValues.map(\n (_, index) => Colors[index % Colors.length],\n ),\n borderColor: dataValues.map(\n (_, index) => Colors[index % Colors.length],\n ),\n },\n ],\n },\n options: {\n plugins: {\n title: {\n display: true,\n text: \"Alerts Over Time\",\n padding: 0,\n },\n legend: {\n display: false,\n },\n },\n scales: {\n x: {\n type: \"time\",\n ticks: {\n source: \"auto\",\n },\n },\n },\n },\n };\n if (histogram) {\n histogram.destroy();\n }\n histogram = new Chart(ctx, config);\n }\n\n function refresh() {\n console.log(\"Alerts.refresh\");\n setVersion((version) => version + 1);\n const timeRange = TIME_RANGE();\n\n let queryString = [];\n if (searchParams.q) {\n queryString.push(searchParams.q);\n }\n if (searchParams.sensor) {\n queryString.push(`host:${searchParams.sensor}`);\n }\n\n API.histogramTime({\n time_range: timeRange,\n event_type: \"alert\",\n query_string: queryString.length > 0 ? queryString.join(\" \") : undefined,\n }).then((response) => {\n buildChart(response);\n });\n\n let loaders: {\n field: string;\n q: string;\n order: \"desc\" | \"asc\";\n setter: SetStoreFunction;\n }[] = [\n // Top alerting signatures.\n {\n field: \"alert.signature\",\n q: \"event_type:alert\",\n order: \"desc\",\n setter: setMostAlerting,\n },\n // Least alerting signatures.\n {\n field: \"alert.signature\",\n q: \"event_type:alert\",\n order: \"asc\",\n setter: setLeastAlerting,\n },\n // Top alerting source addresses.\n {\n field: \"src_ip\",\n q: \"event_type:alert\",\n order: \"desc\",\n setter: setMostAlertingSource,\n },\n // Least alerting source addresses.\n {\n field: \"src_ip\",\n q: \"event_type:alert\",\n order: \"asc\",\n setter: setLeastAlertingSource,\n },\n // Top alerting destination addresses.\n {\n field: \"dest_ip\",\n q: \"event_type:alert\",\n order: \"desc\",\n setter: setMostAlertingDest,\n },\n // Least alerting destination addresses.\n {\n field: \"dest_ip\",\n q: \"event_type:alert\",\n order: \"asc\",\n setter: setLeastAlertingDest,\n },\n ];\n\n for (const loader of loaders) {\n if (loader.setter) {\n loader.setter(\"loading\", true);\n }\n\n let q = [...queryString];\n if (loader.q) {\n q.push(loader.q);\n }\n\n let request = {\n time_range: timeRange,\n field: loader.field,\n order: loader.order,\n q: q.length > 0 ? q.join(\" \") : undefined,\n };\n\n loadingTracker(setLoading, () => {\n return API.getSseAgg(request, version, (data: any) => {\n if (data) {\n loader.setter(\"rows\", data.rows);\n loader.setter(\"timestamp\", dayjs(data.earliest_ts));\n }\n });\n }).finally(() => {\n if (loader.setter) {\n loader.setter(\"loading\", false);\n }\n });\n }\n }\n\n const formatSuffix = (timestamp: dayjs.Dayjs | null) => {\n if (timestamp) {\n return `since ${timestamp.fromNow()}`;\n }\n return undefined;\n };\n\n return (\n <>\n \n\n \n \n \n \n \n \n \n \n {\n setSearchParams({ sensor: sensor });\n }}\n />\n \n \n \n\n \n {\n e.preventDefault();\n // blurInputs();\n // applyFilter(e.currentTarget.filter.value);\n setSearchParams({ q: e.currentTarget.filter.value });\n }}\n >\n {\n if (\n e.code === \"Escape\" ||\n e.key === \"Escape\" ||\n e.keyCode === 27\n ) {\n // blurInputs();\n }\n e.stopPropagation();\n }}\n />\n \n Apply\n \n {\n setSearchParams({ q: undefined });\n }}\n >\n Clear\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n >\n );\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport {\n createEffect,\n createSignal,\n createUniqueId,\n onCleanup,\n Show,\n} from \"solid-js\";\nimport { API, AggRequest } from \"../api\";\nimport { TIME_RANGE, Top } from \"../Top\";\nimport { Card, Col, Container, Row } from \"solid-bootstrap\";\nimport { Chart, ChartConfiguration } from \"chart.js\";\nimport { RefreshButton } from \"../common/RefreshButton\";\nimport { useSearchParams } from \"@solidjs/router\";\nimport { SensorSelect } from \"../common/SensorSelect\";\nimport { Colors } from \"../common/colors\";\nimport { getChartCanvasElement, loadingTracker } from \"../util\";\nimport { createStore } from \"solid-js/store\";\nimport { CountValueDataTable } from \"../components\";\nimport dayjs from \"dayjs\";\n\ninterface AggResults {\n loading: boolean;\n rows: any[];\n timestamp: null | dayjs.Dayjs;\n}\n\nfunction defaultAggResults(): AggResults {\n return {\n loading: false,\n rows: [],\n timestamp: null,\n };\n}\n\nexport function Overview() {\n const [version, setVersion] = createSignal(0);\n const [loading, setLoading] = createSignal(0);\n let histogram: any = undefined;\n let hiddenTypes: { [key: string]: boolean } = {\n anomaly: true,\n stats: true,\n netflow: true,\n };\n\n const [searchParams, setSearchParams] = useSearchParams<{\n sensor?: string;\n }>();\n\n const [topAlerts, setTopAlerts] =\n createStore(defaultAggResults());\n\n const [topDnsRequests, setTopDnsRequests] =\n createStore(defaultAggResults());\n\n const [topTlsSni, setTopTlsSni] =\n createStore(defaultAggResults());\n\n const [topQuicSni, setTopQuicSni] =\n createStore(defaultAggResults());\n\n const [eventsOverTimeLoading, setEventsOverTimeLoading] = createSignal(0);\n\n const [protocols, setProtocols] = createStore({\n loading: false,\n data: [],\n });\n let protocolsPieChartRef;\n\n function initChart() {\n if (histogram) {\n histogram.destroy();\n }\n buildChart();\n }\n\n onCleanup(() => {\n API.cancelAllSse();\n });\n\n createEffect(() => {\n refresh();\n });\n\n async function refresh() {\n setVersion((version) => version + 1);\n\n let q = \"\";\n if (searchParams.sensor) {\n q += `host:${searchParams.sensor}`;\n }\n\n loadingTracker(setLoading, async () => {\n let request: AggRequest = {\n field: \"alert.signature\",\n size: 10,\n order: \"desc\",\n time_range: TIME_RANGE(),\n q: q + \" event_type:alert\",\n };\n\n setTopAlerts(\"loading\", true);\n\n API.getSseAgg(request, version, (data: any) => {\n if (data === null) {\n setTopAlerts(\"loading\", false);\n } else {\n const timestamp = dayjs(data.earliest_ts);\n setTopAlerts(\"timestamp\", timestamp);\n setTopAlerts(\"rows\", data.rows);\n }\n });\n });\n\n loadingTracker(setLoading, async () => {\n let request: AggRequest = {\n field: \"dns.rrname\",\n size: 10,\n order: \"desc\",\n time_range: TIME_RANGE(),\n q: q + \" event_type:dns dns.type:query\",\n };\n\n setTopDnsRequests(\"loading\", true);\n\n return API.getSseAgg(request, version, (data: any) => {\n if (data === null) {\n setTopDnsRequests(\"loading\", false);\n } else {\n setTopDnsRequests(\"timestamp\", dayjs(data.earliest_ts));\n setTopDnsRequests(\"rows\", data.rows);\n }\n });\n });\n\n loadingTracker(setLoading, async () => {\n let request: AggRequest = {\n field: \"proto\",\n size: 10,\n time_range: TIME_RANGE(),\n\n // Limit to flow types to get an accurate count, otherwise\n // we'll get duplicate counts from different event types.\n q: q + \" event_type:flow\",\n };\n\n setProtocols(\"loading\", true);\n setProtocols(\"data\", []);\n\n return await API.getSseAgg(request, version, (data: any) => {\n if (data) {\n if (protocols.data.length == 0) {\n setProtocols(\"data\", data.rows);\n } else {\n let labels = data.rows.map((e: any) => e.key);\n let dataset = data.rows.map((e: any) => e.count);\n let chart: any = Chart.getChart(protocolsPieChartRef!);\n chart.data.labels = labels;\n chart.data.datasets[0].data = dataset;\n chart.update();\n }\n }\n }).finally(() => {\n setProtocols(\"loading\", false);\n });\n });\n\n // TLS SNI.\n loadingTracker(setLoading, async () => {\n let request: AggRequest = {\n field: \"tls.sni\",\n size: 10,\n time_range: TIME_RANGE(),\n q: q + \" event_type:tls\",\n };\n\n setTopTlsSni(\"loading\", true);\n\n return await API.getSseAgg(request, version, (data: any) => {\n if (data) {\n setTopTlsSni(\"timestamp\", dayjs(data.earliest_ts));\n setTopTlsSni(\"rows\", data.rows);\n }\n }).finally(() => {\n setTopTlsSni(\"loading\", false);\n });\n });\n\n // Quic SNI.\n loadingTracker(setLoading, async () => {\n let request: AggRequest = {\n field: \"quic.sni\",\n size: 10,\n time_range: TIME_RANGE(),\n q: q + \" event_type:quic\",\n };\n setTopQuicSni(\"loading\", true);\n\n return await API.getSseAgg(request, version, (data: any) => {\n if (data) {\n setTopQuicSni(\"timestamp\", dayjs(data.earliest_ts));\n setTopQuicSni(\"rows\", data.rows);\n }\n }).finally(() => {\n setTopQuicSni(\"loading\", false);\n });\n });\n\n fetchEventsHistogram(q);\n }\n\n async function fetchEventsHistogram(q: string) {\n initChart();\n\n let eventTypes = await API.getEventTypes({\n time_range: TIME_RANGE(),\n });\n\n let labels: number[] = [];\n\n for (const row of eventTypes) {\n let request = {\n time_range: TIME_RANGE(),\n event_type: row,\n query_string: q,\n };\n\n loadingTracker(setLoading, async () => {\n setEventsOverTimeLoading((v) => v + 1);\n let response = await API.histogramTime(request);\n if (labels.length === 0) {\n response.data.forEach((e) => {\n labels.push(e.time);\n });\n histogram.data.labels = labels;\n }\n\n if (response.data.length != labels.length) {\n console.log(\"ERROR: Label and data mismatch\");\n } else {\n let values = response.data.map((e) => e.count);\n let hidden = hiddenTypes[row];\n let colorIdx = histogram.data.datasets.length;\n histogram.data.datasets.push({\n data: values,\n label: row,\n pointRadius: 0,\n hidden: hidden,\n backgroundColor: Colors[colorIdx % Colors.length],\n borderColor: Colors[colorIdx % Colors.length],\n });\n histogram.update();\n }\n }).finally(() => {\n setEventsOverTimeLoading((v) => v - 1);\n });\n }\n }\n\n function buildChart() {\n const ctx = getChartCanvasElement(\"histogram\");\n\n const config: ChartConfiguration | any = {\n type: \"bar\",\n data: {\n labels: [],\n datasets: [],\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n\n plugins: {\n title: {\n display: false,\n padding: 0,\n },\n tooltip: {\n enabled: true,\n callbacks: {\n label: function (context: any) {\n let label = context.dataset.label;\n let value = context.parsed.y;\n if (value == 0) {\n return null;\n }\n return `${label}: ${value}`;\n },\n },\n // Sort items in descending order.\n itemSort: function (a: any, b: any) {\n return b.raw - a.raw;\n },\n // Limit the tooltip to the top 5 items. Like default Kibana.\n filter: function (item: any, _data: any) {\n return item.datasetIndex < 6;\n },\n },\n legend: {\n display: true,\n position: \"top\",\n onClick: (_e: any, legendItem: any, legend: any) => {\n const eventType = legendItem.text;\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n hiddenTypes[eventType] = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n hiddenTypes[eventType] = false;\n }\n },\n },\n },\n interaction: {\n intersect: false,\n mode: \"nearest\",\n axis: \"x\",\n },\n elements: {\n line: {\n tension: 0.4,\n },\n },\n scales: {\n x: {\n type: \"time\",\n ticks: {\n source: \"auto\",\n },\n stacked: true,\n },\n y: {\n display: true,\n },\n },\n },\n };\n if (histogram) {\n histogram.destroy();\n }\n histogram = new Chart(ctx, config);\n }\n\n const formatSuffix = (timestamp: dayjs.Dayjs | null) => {\n if (timestamp) {\n return `since ${timestamp.fromNow()}`;\n }\n return undefined;\n };\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n {\n setSearchParams({ sensor: sensor });\n }}\n />\n \n \n \n \n\n \n \n \n \n Events by Type Over Time\n 0}>\n \n \n \n Loading...\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Protocols\n \n {/* Loader in a button for placement reason's. */}\n \n \n \n Loading...\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n >\n );\n}\n\nfunction PieChart(props: { data: any[]; ref?: any }) {\n const chartId = createUniqueId();\n let chart: any = null;\n\n createEffect(() => {\n const element = getChartCanvasElement(chartId);\n\n if (chart != null) {\n chart.destroy();\n }\n\n chart = new Chart(element, {\n type: \"pie\",\n data: {\n labels: props.data.map((e) => e.key),\n datasets: [\n {\n data: props.data.map((e) => e.count),\n },\n ],\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n display: true,\n labels: {\n font: {\n size: 10,\n },\n },\n onHover: (_evt, legendItem) => {\n const activeElement = {\n datasetIndex: 0,\n index: legendItem.index,\n };\n chart.tooltip.setActiveElements([activeElement]);\n chart.update();\n },\n },\n },\n },\n });\n });\n\n return (\n <>\n \n \n \n \n \n >\n );\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { Card, Col, Container, Row, Table } from \"solid-bootstrap\";\nimport { TIME_RANGE, Top } from \"../Top\";\nimport * as api from \"../api\";\nimport { createEffect, createSignal, For } from \"solid-js\";\nimport { EventSource } from \"../types\";\nimport { parse_timestamp } from \"../datetime\";\nimport { useSearchParams } from \"@solidjs/router\";\nimport { SensorSelect } from \"../common/SensorSelect\";\nimport { RefreshButton } from \"../common/RefreshButton\";\nimport { loadingTracker } from \"../util\";\nimport { SearchLink } from \"../common/SearchLink\";\n\nexport function DHCP() {\n const [acks, setAcks] = createSignal([]);\n const [dhcpServers, setDhcpServers] = createSignal([]);\n const [searchParams, setSearchParams] = useSearchParams<{\n sensor?: string;\n }>();\n const [loading, setLoading] = createSignal(0);\n\n createEffect(() => {\n refresh();\n });\n\n function refresh() {\n loadingTracker(setLoading, async () => {\n const query = { time_range: TIME_RANGE(), sensor: searchParams.sensor };\n\n const response = await api.dhcpRequest(query);\n let requestHostnames: { [key: number]: string } = {};\n for (const event of response.events) {\n if (event.dhcp?.hostname) {\n requestHostnames[event.dhcp.id] = event.dhcp?.hostname;\n }\n }\n const response_1 = await api.dhcpAck(query);\n response_1.events.forEach((event_1: EventSource) => {\n if (!event_1[\"dhcp\"]) {\n console.log(\n `DHCP ACK entry does not contain DHCP object: ${JSON.stringify(\n event_1,\n )}`,\n );\n } else {\n const hostname = requestHostnames[event_1.dhcp!.id];\n if (hostname) {\n if (!event_1.dhcp!.hostname) {\n event_1.dhcp!.hostname = hostname;\n } else if (event_1.dhcp!.hostname != hostname) {\n event_1.dhcp!.hostname = `${event_1.dhcp?.hostname} (${hostname})`;\n }\n }\n }\n });\n setAcks(response_1.events);\n });\n\n let sensor = \"\";\n if (searchParams.sensor) {\n sensor = ` host:${searchParams.sensor}`;\n }\n\n loadingTracker(setLoading, async () => {\n const response = await api.fetchAgg({\n field: \"src_ip\",\n size: 100,\n time_range: TIME_RANGE(),\n order: \"desc\",\n q: `event_type:dhcp dhcp.dhcp_type:ack${sensor}`,\n });\n let servers = response.rows.map((e) => e.key);\n setDhcpServers(servers);\n });\n }\n\n return (\n <>\n \n \n \n \n \n \n \n {\n setSearchParams({ sensor: sensor });\n }}\n selected={searchParams.sensor}\n />\n \n \n \n \n \n DHCP Leases\n \n \n \n \n Timestamp\n Sensor\n Client MAC\n Assigned IP\n Hostname\n Lease Time\n \n \n \n \n {(ack) => (\n <>\n \n \n {parse_timestamp(ack.timestamp).format(\n \"YYYY-MM-DD HH:mm:ss\",\n )}\n \n {ack.host}\n \n \n {ack.dhcp!.client_mac}\n \n \n \n \n {ack.dhcp!.assigned_ip}\n \n \n \n \n {ack.dhcp!.hostname}\n \n \n {ack.dhcp!.lease_time}\n \n >\n )}\n \n \n \n \n \n \n\n \n \n \n \n DHCP Servers\n \n \n \n \n {(server) => (\n <>\n \n \n \n {server}\n \n \n \n >\n )}\n \n \n \n \n \n \n \n \n \n \n >\n );\n}\n","// SPDX-FileCopyrightText: (C) 2024 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { useParams } from \"@solidjs/router\";\nimport { TIME_RANGE, Top } from \"../Top\";\nimport * as api from \"../api\";\nimport { createEffect, createResource, createSignal, Show } from \"solid-js\";\nimport { CountValueDataTable } from \"../components\";\nimport { SearchLink } from \"../common/SearchLink\";\n\nfunction getPrefix(ja4: string) {\n if (ja4.startsWith(\"t\")) {\n return \"tls\";\n } else if (ja4.startsWith(\"q\")) {\n return \"quic\";\n } else {\n // TODO: Throw an error?\n return \"\";\n }\n}\n\nexport function Ja4Report() {\n const params = useParams<{ ja4: string }>();\n const prefix = getPrefix(params.ja4);\n const q = `${prefix}.ja4:${params.ja4}`;\n const [parsed, setParsed] = createSignal(null);\n\n createEffect(() => {\n try {\n const parsed = parseJa4(params.ja4);\n setParsed(parsed);\n } catch (e) {}\n });\n\n const [ja4db] = createResource(params.ja4, async () => {\n const ja4db_entry = await api.get(`/api/ja4db/${params.ja4}`);\n return ja4db_entry.data;\n });\n\n const [topSnis] = createResource(TIME_RANGE, async () => {\n let snis = await api.fetchAgg({\n field: `${prefix}.sni`,\n q: q,\n time_range: TIME_RANGE(),\n });\n return snis.rows;\n });\n\n const [leastSnis] = createResource(TIME_RANGE, async () => {\n let snis = await api.fetchAgg({\n field: `${prefix}.sni`,\n q: q,\n order: \"asc\",\n time_range: TIME_RANGE(),\n });\n return snis.rows;\n });\n\n const [topSourceIps] = createResource(TIME_RANGE, async () => {\n let agg = await api.fetchAgg({\n field: `src_ip`,\n q: q,\n time_range: TIME_RANGE(),\n });\n return agg.rows;\n });\n\n const [leastSourceIps] = createResource(TIME_RANGE, async () => {\n let agg = await api.fetchAgg({\n field: \"src_ip\",\n q: q,\n order: \"asc\",\n time_range: TIME_RANGE(),\n });\n return agg.rows;\n });\n\n const [topDestIps] = createResource(TIME_RANGE, async () => {\n let agg = await api.fetchAgg({\n field: \"dest_ip\",\n q: q,\n time_range: TIME_RANGE(),\n });\n return agg.rows;\n });\n\n const [leastDestIps] = createResource(TIME_RANGE, async () => {\n let agg = await api.fetchAgg({\n field: \"dest_ip\",\n q: q,\n order: \"asc\",\n time_range: TIME_RANGE(),\n });\n return agg.rows;\n });\n\n return (\n <>\n \n\n \n \n \n \n JA4:\n \n {\" \"}\n {params.ja4}\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n >\n );\n}\n\ninterface Ja4 {\n proto: string;\n version: string;\n sni: string;\n ciphers: number;\n extensions: number;\n alpn: string;\n}\n\nfunction parseJa4(ja4: string): null | Ja4 {\n const matches = ja4.match(/(.)(..)(.)(..)(..)(..)/);\n\n if (matches) {\n const proto = ((s) => {\n switch (s) {\n case \"t\":\n return \"tls\";\n case \"q\":\n return \"quic\";\n default:\n return s;\n }\n })(matches[1]);\n\n const version = ((s) => {\n return `${s[0]}.${s[1]}`;\n })(matches[2]);\n\n const sni = ((s) => {\n switch (s) {\n case \"d\":\n return \"domain\";\n case \"i\":\n return \"ip\";\n default:\n return s;\n }\n })(matches[3]);\n\n let parsed = {\n proto: proto,\n version: version,\n sni: sni,\n ciphers: parseInt(matches[4]),\n extensions: parseInt(matches[5]),\n alpn: matches[6],\n };\n return parsed;\n }\n return null;\n}\n","// SPDX-FileCopyrightText: (C) 2024 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { createStore } from \"solid-js/store\";\nimport { Top } from \"../../Top\";\nimport * as api from \"../../api\";\nimport { Show, createEffect, createMemo, createResource } from \"solid-js\";\nimport { serverConfig } from \"../../config\";\n\ninterface AutoArchiveSettings {\n enabled: boolean;\n value: number;\n}\n\nasync function fetchAutoArchiveSettings(): Promise {\n const json = await api.API.getJson(\"api/admin/kv/config\");\n const config = json[\"config.autoarchive\"];\n if (config) {\n return config;\n } else {\n return defaultAutoArchiveSettings();\n }\n}\n\nfunction defaultAutoArchiveSettings(): AutoArchiveSettings {\n return {\n enabled: false,\n value: 7,\n };\n}\n\ninterface RetentionSettings {\n enabled: boolean;\n value: number;\n}\n\nasync function fetchRetentionSettings(): Promise {\n const json = await api.API.getJson(\"api/admin/kv/config\");\n const config = json[\"config.retention\"];\n if (config) {\n return config;\n } else {\n return defaultRetentionSettings();\n }\n}\n\nasync function fetchRetentionSizeSettings(): Promise {\n const json = await api.API.getJson(\"api/admin/kv/config\");\n const config = json[\"config.retention.size\"];\n if (config) {\n return config;\n } else {\n return defaultRetentionSizeSettings();\n }\n}\n\nfunction defaultRetentionSettings(): RetentionSettings {\n return {\n enabled: false,\n value: 365,\n };\n}\n\nfunction defaultRetentionSizeSettings(): RetentionSettings {\n return {\n enabled: false,\n value: 20,\n };\n}\n\nexport function Admin() {\n const [state, setState] = createStore({\n ja4: {\n updating: false,\n success: false,\n failed: false,\n },\n });\n\n // Auto archive.\n const [autoArchiveSettings, { refetch: refetchAutoArchiveSettings }] =\n createResource(fetchAutoArchiveSettings);\n const [localAutoArchiveSettings, setLocalAutoArchiveSettings] =\n createStore(defaultAutoArchiveSettings());\n\n // Retention by age.\n const [retentionSettings, { refetch: refetchRetentionSettings }] =\n createResource(fetchRetentionSettings);\n const [localRetentionSettings, setLocalRetentionSettings] =\n createStore(defaultRetentionSettings());\n\n // Retention by size.\n const [retentionSizeSettings, { refetch: refetchRetentionSizeSettings }] =\n createResource(fetchRetentionSizeSettings);\n const [localRetentionSizeSettings, setLocalRetentionSizeSettings] =\n createStore(defaultRetentionSizeSettings());\n\n createEffect(() => {\n if (autoArchiveSettings()) {\n setLocalAutoArchiveSettings(autoArchiveSettings()!);\n }\n });\n\n createEffect(() => {\n if (retentionSettings()) {\n setLocalRetentionSettings(retentionSettings()!);\n }\n });\n\n createEffect(() => {\n if (retentionSizeSettings()) {\n setLocalRetentionSizeSettings(retentionSizeSettings()!);\n }\n });\n\n const archiveSettingsModified = createMemo(() => {\n return (\n JSON.stringify(localAutoArchiveSettings) !=\n JSON.stringify(autoArchiveSettings.latest)\n );\n });\n\n const retentionSettingsModified = createMemo(() => {\n return (\n JSON.stringify(localRetentionSettings) !=\n JSON.stringify(retentionSettings.latest)\n );\n });\n\n const retentionSizeSettingsModified = createMemo(() => {\n return (\n JSON.stringify(localRetentionSizeSettings) !=\n JSON.stringify(retentionSizeSettings.latest)\n );\n });\n\n const saveAutoArchiveSettings = async () => {\n await api.API.postJson(\n \"api/admin/kv/config/config.autoarchive\",\n localAutoArchiveSettings,\n );\n refetchAutoArchiveSettings();\n };\n\n const saveRetentionSettings = async () => {\n await api.API.postJson(\n \"api/admin/kv/config/config.retention\",\n localRetentionSettings,\n );\n refetchRetentionSettings();\n };\n\n const saveRetentionSizeSettings = async () => {\n await api.API.postJson(\n \"api/admin/kv/config/config.retention.size\",\n localRetentionSizeSettings,\n );\n refetchRetentionSizeSettings();\n };\n\n const updateJa4Db = async (e: any) => {\n e.preventDefault();\n try {\n setState(\"ja4\", { updating: true });\n await api.post(\"api/admin/update/ja4db\");\n setState(\"ja4\", {\n success: true,\n failed: false,\n });\n } catch (e) {\n setState(\"ja4\", {\n success: false,\n failed: true,\n });\n } finally {\n setState(\"ja4\", { updating: false });\n }\n };\n\n const links = () => {\n let links = [<>[>];\n if (serverConfig?.datastore === \"elasticsearch\") {\n links.push(Elasticsearch);\n links.push(<> | >);\n }\n links.push(Filters);\n links.push(<>]>);\n return links;\n };\n\n return (\n <>\n \n \n \n \n {links()}\n \n \n\n \n \n \n \n Update JA4db:\n \n \n Updating\n \n \n \n Update successful\n \n \n \n Update failed\n \n \n Update\n \n \n \n \n \n \n\n {/* Auto archive. */}\n \n \n \n \n \n \n \n {\n setLocalAutoArchiveSettings({\n enabled: e.target.checked,\n });\n }}\n />\n \n Auto-archive events older than:\n \n \n \n \n \n {\n setLocalAutoArchiveSettings(\"value\", +e.target.value);\n }}\n onChange={(e) => {\n setLocalAutoArchiveSettings(\"value\", +e.target.value);\n }}\n />\n Days\n \n \n \n \n {\n saveAutoArchiveSettings();\n }}\n >\n Save\n \n {\n setLocalAutoArchiveSettings(\n autoArchiveSettings.latest!,\n );\n }}\n >\n Reset\n \n \n \n \n \n \n \n \n\n {/* Retention by age. */}\n \n \n \n \n \n \n \n Warning: Do not enable if you have Elasticsearch ILM\n policies managing your indices.\n \n \n \n \n \n \n Warning: This setting will not be effective if age\n retention is set in the configuration file.\n \n \n \n \n \n \n {\n setLocalRetentionSettings({\n enabled: e.target.checked,\n });\n }}\n />\n \n \n Delete indices older than:\n \n \n Delete events older than:\n \n \n \n \n \n \n {\n setLocalRetentionSettings(\"value\", +e.target.value);\n }}\n onChange={(e) => {\n setLocalRetentionSettings(\"value\", +e.target.value);\n }}\n />\n Days\n \n \n \n \n {\n saveRetentionSettings();\n }}\n >\n Save\n \n {\n setLocalRetentionSettings(retentionSettings.latest!);\n }}\n >\n Reset\n \n \n \n \n \n \n \n \n\n {/* Retention by disk size. */}\n \n \n \n \n \n \n \n Warning: This setting will not be effective if size\n retention is set in the configuration file.\n \n \n \n \n \n {\n setLocalRetentionSizeSettings({\n enabled: e.target.checked,\n });\n }}\n />\n \n Limit event database to size:\n \n \n \n \n \n {\n setLocalRetentionSizeSettings(\n \"value\",\n +e.target.value,\n );\n }}\n onChange={(e) => {\n setLocalRetentionSizeSettings(\n \"value\",\n +e.target.value,\n );\n }}\n />\n Gigabytes\n \n \n \n \n {\n saveRetentionSizeSettings();\n }}\n >\n Save\n \n {\n setLocalRetentionSizeSettings(\n retentionSizeSettings.latest!,\n );\n }}\n >\n Reset\n \n \n \n \n \n \n \n \n \n \n >\n );\n}\n","// SPDX-FileCopyrightText: (C) 2025 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport {\n For,\n Show,\n Suspense,\n createEffect,\n createResource,\n createSignal,\n} from \"solid-js\";\nimport { Top } from \"../../Top\";\nimport { API } from \"../../api\";\n\nexport function AdminFilters() {\n const [filters0, setFilters] = createSignal([]);\n const [filters, { refetch }] = createResource(API.fetchFilters);\n let filterRef: any = undefined;\n\n createEffect(() => {\n setFilters(filters());\n });\n\n const onFilterChange = () => {\n const filterString = filterRef?.value;\n if (!filterString) {\n setFilters(filters);\n return;\n }\n\n setFilters(\n filters().filter((a: any) => {\n return JSON.stringify(a).indexOf(filterString) > -1;\n }),\n );\n };\n\n const deleteFilter = (id: number) => {\n API.deleteFilter(id).then(() => {\n refetch();\n });\n };\n\n return (\n <>\n \n \n \n \n Auto Archive Filters\n \n \n \n \n \n \n \n \n \n Sensor\n Source IP\n Destination IP\n Signature ID\n \n \n \n \n \n {(filter) => {\n return (\n <>\n \n \n \n \n {filter.filter.sensor || \"*\"}\n {filter.filter.src_ip || \"*\"}\n {filter.filter.dest_ip || \"*\"}\n {filter.filter.signature_id}\n \n deleteFilter(filter.id)}\n >\n Delete\n \n \n \n \n Comment: \n {filter.comment}\n \n \n \n \n \n \n >\n );\n }}\n \n \n \n >\n );\n}\n","// SPDX-FileCopyrightText: (C) 2025 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { For, Suspense, createResource } from \"solid-js\";\nimport { API } from \"../../api\";\nimport { Top } from \"../../Top\";\nimport { addError, addNotification } from \"../../Notifications\";\n\nasync function fetchIndices() {\n const indices = await API.getJson(\"api/admin/elastic/indices\");\n return indices;\n}\n\nexport function AdminElastic() {\n const [indices, { refetch: refetchIndices }] = createResource(fetchIndices);\n\n const deleteIndex = (name: string) => {\n API.doDelete(`api/admin/elastic/index/${name}`)\n .then((response) => {\n console.log(response);\n addNotification(`Index ${name} has been deleted.`);\n refetchIndices();\n })\n .catch((error: any) => {\n addError(`error: ${error}`);\n });\n };\n\n return (\n <>\n \n \n Elasticsearch Index Management\n \n \n \n \n Name\n Doc Count\n Store Size\n \n \n \n \n \n {(e) => {\n return (\n <>\n \n {e.name}\n {e.doc_count}\n {e.store_size}\n \n {\n deleteIndex(e.name);\n }}\n >\n Delete\n \n \n \n >\n );\n }}\n \n \n \n \n \n >\n );\n}\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport {\n Navigate,\n Route,\n HashRouter,\n useLocation,\n useNavigate,\n} from \"@solidjs/router\";\nimport { createEffect, createSignal, onMount } from \"solid-js\";\nimport { Transition } from \"solid-transition-group\";\n\nimport * as API from \"./api\";\nimport { Alerts, AlertState } from \"./Alerts\";\nimport { Loader } from \"./Loader\";\nimport { Login } from \"./Login\";\nimport { Settings } from \"./Settings\";\n\nimport \"./styles/transitions.scss\";\nimport { EventView } from \"./EventView\";\nimport { Notifications } from \"./Notifications\";\nimport { Events } from \"./Events\";\nimport { Stats } from \"./Stats\";\nimport { serverConfigSet } from \"./config\";\nimport { Address } from \"./dashboards/Address\";\nimport { AlertsDashboard } from \"./dashboards/Alerts\";\nimport { Overview } from \"./dashboards/Overview\";\nimport { DHCP } from \"./dashboards/DHCP\";\nimport { IS_AUTHENTICATED, SET_IS_AUTHENTICATED } from \"./global\";\nimport { Ja4Report } from \"./pages/ja4\";\nimport { Admin } from \"./pages/admin/Admin\";\nimport { AdminFilters } from \"./pages/admin/AdminFilters\";\nimport { AdminElastic } from \"./pages/admin/AdminElastic\";\n\nexport function AppRouter() {\n return (\n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n );\n}\n\nfunction App(props: any) {\n return <>{props.children}>;\n}\n\nfunction RedirectToIndex() {\n return ;\n}\n\nfunction AuthenticationRequired(props: any) {\n const [loading, setLoading] = createSignal(true);\n const navigate = useNavigate();\n const location = useLocation();\n let mounted = false;\n\n createEffect(() => {\n if (!IS_AUTHENTICATED() && mounted) {\n console.log(\n \"App is mounted but not authenticated, redirecting to login.\",\n );\n navigate(\n `/login?redirectTo=${encodeURIComponent(\n location.pathname + \"?\" + location.search,\n )}`,\n );\n }\n });\n\n onMount(() => {\n console.log(\"Wrapper.onMount: checking user\");\n API.getUser()\n .then((user: any) => {\n console.log(`Hello ${user.username}`);\n console.log(user);\n if (!user.anonymous) {\n SET_IS_AUTHENTICATED(true);\n }\n API.getConfig().then((config) => {\n console.log(\"Got server config:\");\n console.log(config);\n serverConfigSet(config);\n setLoading(false);\n });\n })\n .catch((error: any) => {\n console.log(`Failed to get user: ${error}`);\n navigate(\n `/login?redirectTo=${encodeURIComponent(\n location.pathname + \"?\" + location.search,\n )}`,\n );\n });\n mounted = true;\n });\n\n return (\n <>\n {loading() && }\n \n {!loading() && (\n \n \n {props.children}\n \n )}\n \n >\n );\n}\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return s.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return s.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return s.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return n.bind(this)(a)}}}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){\"use strict\";var e=\"day\";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf(\"year\"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,\"week\")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return\"isoweek\"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf(\"day\"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(\"day\"):n.bind(this)(e,t)}}}));","import { _adapters } from 'chart.js';\nimport dayjs from 'dayjs';\nimport CustomParseFormat from 'dayjs/plugin/customParseFormat.js';\nimport AdvancedFormat from 'dayjs/plugin/advancedFormat.js';\nimport QuarterOfYear from 'dayjs/plugin/quarterOfYear.js';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat.js';\nimport isoWeek from 'dayjs/plugin/isoWeek.js';\n\ndayjs.extend(AdvancedFormat);\ndayjs.extend(QuarterOfYear);\ndayjs.extend(LocalizedFormat);\ndayjs.extend(CustomParseFormat);\ndayjs.extend(isoWeek);\nvar FORMATS = {\n datetime: 'MMM D, YYYY, h:mm:ss a',\n millisecond: 'h:mm:ss.SSS a',\n second: 'h:mm:ss a',\n minute: 'h:mm a',\n hour: 'hA',\n day: 'MMM D',\n week: 'll',\n month: 'MMM YYYY',\n quarter: '[Q]Q - YYYY',\n year: 'YYYY'\n};\n_adapters._date.override({\n //_id: 'dayjs', //DEBUG,\n formats: function formats() {\n return FORMATS;\n },\n parse: function parse(value, format) {\n var valueType = typeof value;\n if (value === null || valueType === 'undefined') {\n return null;\n }\n if (valueType === 'string' && typeof format === 'string') {\n return dayjs(value, format).isValid() ? dayjs(value, format).valueOf() : null;\n } else if (!(value instanceof dayjs)) {\n return dayjs(value).isValid() ? dayjs(value).valueOf() : null;\n }\n return null;\n },\n format: function format(time, _format) {\n return dayjs(time).format(_format);\n },\n add: function add(time, amount, unit) {\n return dayjs(time).add(amount, unit).valueOf();\n },\n diff: function diff(max, min, unit) {\n return dayjs(max).diff(dayjs(min), unit);\n },\n startOf: function startOf(time, unit, weekday) {\n if (unit === 'isoWeek') {\n // Ensure that weekday has a valid format\n //const formattedWeekday\n var validatedWeekday = typeof weekday === 'number' && weekday > 0 && weekday < 7 ? weekday : 1;\n return dayjs(time).isoWeekday(validatedWeekday).startOf('day').valueOf();\n }\n return dayjs(time).startOf(unit).valueOf();\n },\n endOf: function endOf(time, unit) {\n return dayjs(time).endOf(unit).valueOf();\n }\n});\n//# sourceMappingURL=chartjs-adapter-dayjs-4.esm.js.map\n","// SPDX-FileCopyrightText: (C) 2023 Jason Ish \n// SPDX-License-Identifier: MIT\n\nimport { render } from \"solid-js/web\";\n\nimport { loadInitialTheme } from \"./settings\";\nimport { AppRouter } from \"./App\";\n\nimport \"./styles/index.scss\";\n\n// Initialize Chartjs.\nimport { Chart, registerables } from \"chart.js\";\nimport \"chartjs-adapter-dayjs-4\";\n\nChart.register(...registerables);\n\nloadInitialTheme();\n\nconst root = document.getElementById(\"root\");\nrender(() => , root!);\n"],"names":["sharedConfig","getContextId","count","num","len","setHydrateContext","context","IS_DEV","equalFn","a","b","$PROXY","SUPPORTS_PROXY","$TRACK","signalOptions","runEffects","runQueue","STALE","PENDING","UNOWNED","NO_INIT","Owner","Transition","ExternalSourceConfig","Listener","Updates","Effects","ExecCount","createRoot","fn","detachedOwner","listener","owner","unowned","current","root","updateFn","untrack","cleanNode","runUpdates","createSignal","value","options","s","setter","writeSignal","readSignal","createComputed","c","createComputation","updateComputation","createRenderEffect","createEffect","runUserEffects","SuspenseContext","useContext","createMemo","isPromise","v","createResource","pSource","pFetcher","pOptions","source","fetcher","pr","initP","id","loadedUnderTransition","scheduled","resolved","dynamic","contexts","setValue","error","setError","track","trigger","state","setState","loadEnd","p","key","completeLoad","err","read","load","refetching","lookup","castError","e","batch","on","deps","isArray","prevInput","defer","prevValue","input","i","result","onMount","onCleanup","getListener","getOwner","runWithOwner","o","prev","prevListener","handleError","startTransition","l","t","res","transPending","setTransPending","useTransition","resumeEffects","createContext","defaultValue","createProvider","children","memo","resolveChildren","getSuspenseContext","runningTransition","updates","lookUpstream","sSlot","node","isComp","TransitionRunning","markDownstream","time","runComputation","nextValue","init","pure","runTop","ancestors","top","wait","completeUpdates","sources","disposed","d","queue","userLength","ignore","index","obs","n","reset","results","props","FALLBACK","dispose","mapArray","list","mapFn","items","mapped","disposers","indexes","newItems","newLen","j","newIndices","newIndicesNext","temp","tempdisposers","tempIndexes","start","end","newEnd","item","disposer","mapper","set","createComponent","Comp","trueFn","propTraps","_","property","receiver","resolveSource","resolveSources","length","mergeProps","proxy","keys","sourcesMap","defined","sourceKeys","desc","target","definedKeys","splitProps","blocked","k","otherObject","objects","propName","isDefaultDesc","objectIndex","counter","createUniqueId","narrowedError","name","For","fallback","Show","keyed","conditionValue","condition","child","Switch","chs","switchFunc","ch","mps","func","mp","prevFunc","sel","Match","SuspenseListContext","Suspense","show","ctx","flicker","inFallback","setFallback","store","ref","listContext","rendered","showContent","showFallback","booleans","Properties","ChildProperties","Aliases","PropAliases","getPropAlias","prop","tagName","DelegatedEvents","SVGElements","SVGNamespace","reconcileArrays","parentNode","bLength","aEnd","bEnd","aStart","bStart","after","map","sequence","$$EVENTS","render","code","element","insert","template","html","isImportNode","isSVG","isMathML","create","delegateEvents","eventNames","document","eventHandler","setAttribute","isHydrating","setAttributeNS","namespace","setBoolAttribute","className","addEventListener","handler","delegate","handlerFn","classList","classKeys","prevKeys","toggleClassKey","classValue","style","nodeStyle","spread","skipChildren","prevProps","insertExpression","use","assign","arg","parent","accessor","marker","initial","skipRef","assignProp","getNextElement","getHydrationKey","toPropertyName","w","classNames","nameLen","isCE","isProp","isChildProp","propAlias","forceProp","h","ns","el","ev","oriTarget","oriCurrentTarget","retarget","handleNode","data","walkUpTree","path","unwrapArray","hydrating","cleaned","multi","cleanChildren","array","currentArray","normalizeIncomingArray","nodes","appendNodes","normalized","unwrap","replacement","inserted","isParent","isServer","SVG_NAMESPACE","createElement","Portal","useShadow","mount","content","clean","setClean","cleanup","container","renderRoot","createDynamic","component","cached","isSvg","Dynamic","others","toVal","mix","y","str","classes","tmp","x","callEventHandler","isPropagationStopped","defaultFn","resolveClasses","now","isTrivialHref","href","trim","defaultOptions","tabIndex","useButtonProps","rel","meta","type","disabled","getClickHandler","event","preventDefault","stopPropagation","onClick","getKeyDownHandler","getHref","undefined","role","onKeyDown","Button","local","otherProps","buttonProps","as","_$createComponent","_$mergeProps","Anchor","handleKeyDown","_el$","_tmpl$","_el$2","toArray","qsa","selector","canUseDOM","optionsSupported","onceSupported","eventName","once","capture","wrappedHandler","onceHandler","DropdownContext","$RAW","$NODE","$HAS","$SELF","wrap$1","proxyTraps$1","isWrappable","obj","proto","unwrapped","getNodes","symbol","getNode","proxyDescriptor$1","trackSelf","ownKeys","tracked","setProperty","deleting","mergeStoreNode","updateArray","next","updatePath","traversed","part","partType","from","to","by","createStore","unwrappedStore","wrappedStore","setStore","args","proxyDescriptor","proxyTraps","isFunction","wrap","isClass","descriptors","get","og","createMutable","$ROOT","applyState","merge","previous","keyVal","targetKeys","previousKeys","reconcile","bottom","right","left","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","getWindow","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","_ref","attributes","effect","_ref2","initialStyles","styleProperties","attribute","applyStyles$1","getBasePlacement","max","min","round","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","width","height","getLayoutRect","contains","rootNode","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","css","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","padding","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","position","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","order","modifiers","visited","modifier","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","debounce","pending","resolve","mergeByName","merged","existing","DEFAULT_OPTIONS","areValidElements","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","m","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","disabledApplyStylesModifier","ariaDescribedByModifier","ids","EMPTY_MODIFIERS","usePopper","referenceElement","popperElement","popperInstance","setPopperInstance","enabled","update","forceUpdate","popperState","setPopperState","updateModifier","styles","removeEventListener","listen","noop","isLeftClickEvent","isModifiedEvent","getRefTarget","useClickOutside","onClickOutside","clickTrigger","preventMouseClickOutsideRef","setPreventMouseClickOutsideRef","handleMouseCapture","currentTarget","handleMouse","doc","currentEvent","removeMouseCaptureListener","removeMouseListener","mobileSafariHackListeners","remove","toModifierMap","toModifierArray","mergeOptionsWithPopperConfig","enableEvents","fixed","containerPadding","popperConfig","useDropdownMenu","attachArrowRef","hasShownRef","setHasShownRef","popperOptions","setPopperOptions","enableEventListeners","handleClose","toggle","toggleElement","menuElement","rootCloseEvent","setMenu","hasShown","arrowProps","DropdownMenu","_$memo","currentId","useSSRSafeId","defaultId","isRoleMenu","getAttribute","toLowerCase","useDropdownToggle","setToggle","DropdownToggle","SelectableContext","makeEventKey","eventKey","String","NavContext","ATTRIBUTE_PREFIX","PROPERTY_PREFIX","dataAttr","dataProp","useDropdownItem","onSelectCtx","navContext","activeKey","isActive","active","DropdownItem","dropdownItemProps","Context","useWindow","createControlledProp","propValue","stateValue","isControlled","is","was","Dropdown","itemSelector","onToggle","defaultShow","menuRef","toggleRef","lastSourceEvent","setLastSourceEvent","focusInDropdown","activeElement","nextShow","originalEvent","handleSelect","onSelect","focusToggle","focus","maybeFocusFirst","focusType","focusFirstItemOnShow","test","first","getNextFocusedChild","indexOf","Math","keydownHandler","fromMenu","fromToggle","Provider","Menu","Toggle","Item","ownerWindow","psuedoElement","rUpper","hyphenate","string","msPattern","hyphenateStyleName","supportedTransforms","isTransform","transforms","getBodyScrollbarWidth","OPEN_DATA_ATTRIBUTE","ModalManager","handleContainerOverflow","isRTL","_modal","containerState","paddingProp","modal","modalIdx","resolveContainerRef","useWaitForDOMRef","resolvedRef","setRef","nextRef","manager","getManager","useModalManager","provided","modalManager","dialog","backdrop","Object","add","isTopModal","setDialogRef","setBackdropRef","defaultProps","keyboard","autoFocus","enforceFocus","restoreFocus","renderBackdrop","onHide","Modal","isMounted","setIsMounted","exited","setExited","lastFocusRef","prevShow","transition","handleShow","handleDocumentKeyDown","setTimeout","handleEnforceFocus","onShow","currentActiveElement","handleHide","removeKeydownListenerRef","removeFocusListenerRef","restoreFocusOptions","handleBackdropClick","onBackdropClick","keyCode","onEscapeKeyDown","defaultPrevented","handleHidden","onExited","dialogVisible","dialogProps","class","getChildAsDocument","innerDialog","renderDialog","_$insert","Dialog","appear","unmountOnExit","onExit","onExiting","onEnter","onEntering","onEntered","Backdrop","backdropElement","BackdropTransition","backdropTransition","when","BaseModal","Manager","TabContext","useNavItem","parentOnSelect","tabContext","getControllerId","mountOnEnter","getControlledId","NavItem","EVENT_KEY_ATTR","Nav","needsRefocusRef","setNeedsRefocusRef","listNode","setListNode","getNextActiveTab","currentListNode","activeChild","querySelector","nextIndex","nextActiveChild","dataset","mergedRef","r","getRole","BaseNav","TransitionGroupContext","nextFrame","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","in","enter","exit","childProps","childRef","isMounting","initialStatus","appearStatus","status","setStatus","nextCallback","mounted","setMounted","notUnmounted","updateStatus","inMemo","prevStatus","nextStatus","cancelNextCallback","getTimeouts","timeout","mounting","performEnter","performExit","appearing","maybeNode","maybeAppearing","nodeRef","timeouts","enterTimeout","safeSetState","onTransitionEnd","cancel","nextState","callback","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","resolvedChildren","renderChild","NoopTransition","callChild","useTabPanel","TabPanel","tabPanelProps","other","hidden","Tabs","defaultActiveKey","generateChildId","Panel","DEFAULT_BREAKPOINTS","ThemeContext","prefixes","breakpoints","useBootstrapPrefix","prefix","defaultPrefix","themeContext","useBootstrapBreakpoints","useIsRTL","dir","triggerBrowserReflow","offsetHeight","triggerEvent","bubbles","cancelable","parseDuration","mult","emulateTransitionEnd","duration","called","handle","transitionEnd","removeEmulate","transitionEndListener","delay","TransitionWrapper","setNodeRef","normalize","param","handlers","innerProps","MARGINS","getDefaultDimensionValue","dimension","elem","toUpperCase","slice","margins","parseInt","collapseStyles","getDimensionValue","Collapse","computedDimension","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","prevClasses","newClasses","fadeStyles","Fade","isAppearing","transitionClasses","CloseButton","_$spread","variant","divWithClass","createWithBsPrefix","Component","BsComponent","resolvedPrefix","bsPrefix","DivStyledAsH4","AlertHeading","AlertLink","closeLabel","Alert","uncontrolledProps","onClose","alert","dismissible","_c$","closeVariant","r$","Alert$2","Link","Heading","bg","pill","Badge","text","hasClass","addClass","replaceClassName","origClass","classToRemove","removeClass","Selector","FIXED_CONTENT","STICKY_CONTENT","NAVBAR_TOGGLER","BootstrapModalManager","adjustAndStore","adjust","actual","parseFloat","restore","setContainerStyle","getElement","scrollBarWidth","marginProp","forEach","removeContainerStyle","sharedManager","getSharedManager","size","CardImg","CardHeader","contextValue","cardHeaderBsPrefix","CardHeaderContext","DivStyledAsH5","DivStyledAsH6","CardBody","CardTitle","CardSubtitle","CardLink","CardText","CardFooter","CardImgOverlay","Card","border","Card$1","Img","Title","Subtitle","Body","Text","Header","Footer","ImgOverlay","DEVICE_SIZES","useCol","spans","brkPoint","span","infix","push","cleanedProps","Col","useProps","colProps","fluid","Container","suffix","getDropdownMenuPlacement","alignEnd","dropDirection","topStart","topEnd","bottomStart","bottomEnd","leftStart","leftEnd","rightStart","rightEnd","isNavbar","NavbarContext","dropdownContext","align","isInputGroup","InputGroupContext","alignClasses","direction","menuProps","menuMeta","drop","extendedMenuProps","close","renderOnMount","childBsPrefix","toggleProps","toggleLocal","toggleOther","split","DropdownHeader","DropdownDivider","DropdownItemText","navbar","autoClose","isClosingPermitted","handleToggle","BaseDropdown","Dropdown$2","ItemText","Divider","tooltip","Feedback","FormContext","FormGroup","controlId","FloatingLabel","label","_$effect","_$setAttribute","isValid","isInvalid","FormCheckInput","formContext","FormCheckContext","FormCheckLabel","formCheckContext","setHasFormCheckLabel","for","title","inline","feedbackTooltip","FormCheck","bsSwitchPrefix","hasFormCheckLabel","innerFormContext","hasLabel","_c$2","feedback","feedbackType","_p$","_v$","_v$2","_$style","_$className","FormCheck$1","Input","Label","FormControl","plaintext","htmlSize","readOnly","FormControl$1","column","visuallyHidden","FormLabel","columnClass","htmlFor","FormRange","FormSelect","FormText","muted","Switch$1","Form","validated","Form$1","Group","Control","Floating","FormFloating","Check","Range","Select","scrollbarSize","recalc","scrollDiv","ModalContext","ModalDialog","dialogClass","fullScreenClass","fullscreen","firstChild","centered","scrollable","contentClass","closeButton","AbstractModalHeader","handleClick","ModalHeader","animation","dialogAs","DialogTransition","modalStyle","setStyle","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","modalContext","getModalManager","updateDialogStyle","containerIsOverflowing","getScrollbarWidth","modalIsOverflowing","scrollHeight","clientHeight","paddingRight","getScrollbarSize","paddingLeft","handleWindowResize","handleDialogMouseDown","handleMouseUp","handleStaticModalAnimation","handleStaticBackdropClick","handleEscapeKeyDown","display","handleExited","backdropProps","backdropClass","baseModalStyle","_tmpl$2","onMouseDown","Modal$2","ModalBody","ModalTitle","ModalFooter","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","NavLink","navItemProps","justify","fill","navbarBsPrefix","navbarContext","cardHeaderContext","navbarScroll","Nav$1","NavbarBrand","NavbarCollapse","expanded","_ref$","_$use","classnames","NavbarToggle","transitionStyles","OffcanvasToggling","OffcanvasHeader","Offcanvas","visibility","Offcanvas$2","OffcanvasBody","OffcanvasTitle","NavbarOffcanvas","NavbarText","expand","collapseOnSelect","Navbar","defaultExpanded","handleCollapse","expandClass","sticky","Navbar$1","Brand","NavDropdown","navItemPrefix","menuRole","renderMenuOnMount","menuVariant","NavDropdown$1","Row","decoratedBsPrefix","sizePrefix","cols","Spinner","bsSpinnerPrefix","getTabTransitionComponent","TabContainer","TabPane","panelProps","panelLocal","rest","Tab","Tab$2","Content","TabContent","Pane","Table","striped","bordered","borderless","hover","table","responsive","responsiveClass","getDefaultActiveKey","tabs","tab","RenderTab","tabClass","tabAttrs","tabsAccessor","Array","BaseTabs","each","tabProps","ToastFade","ToastContext","ToastHeader","autohide","Toast","delayRef","onCloseRef","autohideTimeout","autohideToast","autohideFunc","clearTimeout","toastContext","hasAnimation","ToastInner","Toast$2","ToastBody","createBeforeLeave","listeners","subscribe","confirm","force","depth","saveCurrentDepth","keepDepth","notifyIfNotBlocked","notify","block","prevDepth","delta","hasSchemeRegex","trimPathRegex","mockBase","normalizePath","omitSlash","resolvePath","base","basePath","fromPath","invariant","message","joinPaths","extractSearchParams","url","params","createMatcher","partial","matchFilters","pattern","splat","segments","location","locSegments","lenDiff","match","matchFilter","segment","locSegment","matchSegment","remainder","filter","isEqual","scoreRoute","route","score","createMemoObject","mergeSearchString","search","expandOptionals","expansion","MAX_REDIRECTS","RouterContextObj","RouteContextObj","useRouter","useRoute","useResolvedPath","useHref","router","to_","useNavigate","useLocation","useParams","useSearchParams","navigate","setSearchParams","searchString","createRoutes","routeDef","preload","info","isLeaf","shared","asArray","originalPath","expandedPath","createBranch","routes","matches","createBranches","stack","branches","routeDefs","def","isEmptyArray","branch","getRouteMatches","createLocation","queryWrapper","origin","path_","pathname","queryFn","intent","getIntent","createRouterContext","integration","getContext","setSource","utils","parsePath","renderPath","beforeLeave","isRouting","setIsRouting","lastTransitionTarget","newIntent","newTarget","setReference","submissions","navigateEnd","referrers","buildParams","baseRoute","navigatorFactory","preloadRoute","navigateFromRoute","queryOnly","replace","resolvedTo","preloadData","prevIntent","createRouteContext","outlet","createRouterComponent","routerState","singleFlight","transformUrl","Root","rootPreload","rootLoad","Routes","routeStates","nextMatches","prevMatches","equal","prevMatch","nextMatch","createOutlet","splice","Route","childRoutes","intercept","createRouter","config","signal","bindEvent","scrollToHash","fallbackTop","actions","setupNativeEvents","explicitLinks","actionBase","preloadTimeout","lastElement","handleAnchor","evt","svg","handleAnchorClick","handleAnchorPreload","handleAnchorMove","handleFormSubmit","actionRef","hashParser","HashRouter","getSource","hashIndex","A","inactiveClass","activeClass","loc","decodeURI","startsWith","JSON","stringify","Navigate","u","f","BiGear","BiCaretRightFill","BiCaretUpFill","_tmpl$3","BiCaretDownFill","_tmpl$4","BiStar","_el$5","_tmpl$5","_$p","BiStarFill","_el$6","_tmpl$6","BiStarHalf","_tmpl$7","BiInfoCircle","_el$8","_tmpl$8","BiArchive","_el$9","_tmpl$9","BiPlusCircle","_tmpl$11","BiDashCircle","_tmpl$12","BiFilter","_tmpl$13","BiQuestionCircle","_tmpl$15","bind","thisArg","toString","getPrototypeOf","kindOf","cache","thing","kindOfTest","typeOfTest","isUndefined","isBuffer","val","isArrayBuffer","isArrayBufferView","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","allOwnKeys","findKey","_global","isContextDefined","caseless","assignValue","targetKey","extend","stripBOM","inherits","constructor","superConstructor","toFlatObject","sourceObj","destObj","propFilter","endsWith","lastIndex","arr","isTypedArray","TypedArray","forEachEntry","iterator","pair","matchAll","regExp","isHTMLForm","toCamelCase","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","ret","freezeMethods","toObjectSet","arrayOrString","delimiter","define","toFiniteNumber","isSpecCompliantForm","toJSONObject","visit","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","token","callbacks","cb","asap","utils$1","AxiosError","request","response","customProps","axiosError","httpAdapter","isVisitable","removeBrackets","renderKey","dots","isFlatArray","predicates","toFormData","formData","option","metaTokens","visitor","defaultVisitor","useBlob","convertValue","exposedHelpers","build","encode","charMap","AxiosURLSearchParams","encoder","_encode","buildURL","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","transitionalDefaults","URLSearchParams$1","FormData$1","Blob$1","platform$1","URLSearchParams","FormData","Blob","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","platform","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","rawValue","parser","defaults","headers","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","method","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","line","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","setHeaders","matcher","deleted","deleteHeader","format","targets","asStrings","computed","accessors","defineAccessor","headerValue","transformData","fns","isCancel","CanceledError","settle","reject","validateStatus","parseProtocol","speedometer","samplesCount","bytes","timestamps","head","tail","firstSampleTS","chunkLength","startedAt","bytesCount","passed","throttle","freq","timestamp","threshold","lastArgs","timer","invoke","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","progressEventDecorator","throttled","lengthComputable","asyncDecorator","isURLSameOrigin","isMSIE","cookies","expires","domain","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","resolveConfig","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","xsrfValue","isXHRAdapterSupported","xhrAdapter","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","onloadend","responseHeaders","timeoutErrorMessage","protocol","composeSignals","signals","controller","aborted","onabort","reason","unsubscribe","streamChunk","chunk","chunkSize","pos","readBytes","iterable","readStream","stream","reader","trackStream","onProgress","onFinish","_onFinish","loadedBytes","isFetchSupported","isReadableStreamSupported","encodeText","supportsRequestStream","duplexAccessed","hasContentType","DEFAULT_CHUNK_SIZE","supportsResponseStream","resolvers","getBodyLength","resolveBodyLength","fetchAdapter","cancelToken","withCredentials","fetchOptions","composedSignal","requestContentLength","_request","contentTypeHeader","flush","isCredentialsSupported","isStreamResponse","responseContentLength","responseData","knownAdapters","renderReason","isResolvedHandle","adapter","adapters$1","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","version","formatMessage","opt","opts","correctSpelling","assertOptions","schema","allowUnknown","Axios","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","onFulfilled","onRejected","fullPath","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","onfulfilled","_resolve","abort","isAxiosError","payload","HttpStatusCode","createInstance","defaultConfig","axios","promises","inherits_browserModule","ctor","superCtor","TempCtor","R","ReflectApply","ReflectOwnKeys","ProcessEmitWarning","warning","NumberIsNaN","EventEmitter","eventsModule","defaultMaxListeners","checkListener","_getMaxListeners","that","doError","events","er","arrayClone","_addListener","prepend","onceWrapper","_onceWrap","wrapped","originalListener","spliceOne","_listeners","evlistener","unwrapListeners","emitter","listenerCount","copy","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","flags","wrapListener","require$$0","require$$1","queueModule","Queue","arrayMethods","begin","arrayAddMethods","methodResult","callOnErrorOrEnd","job","session","timeoutId","didTimeout","resultIndex","clearTimers","onerror","onend","module","this","M","$","g","D","S","O","T","dayjs","relativeTime","utc","parse_timestamp","parse_timerange","timerange","units","get_duration","unit","get_timezone_offset_str","IS_AUTHENTICATED","SET_IS_AUTHENTICATED","SERVER_REVISION","SET_SERVER_REVISION","QUEUE_SIZE","SET_QUEUE_SIZE","QUEUE","queueAdd","update_revision","server_rev","post","postJson","postComment","eventId","comment","getUser","getConfig","login","username","password","logout","alerts","getEvents","archiveAggregateAlert","archiveEvent","escalateAggregateAlert","unescalateAggregateAlert","getEventById","getVersion","statsAgg","field","differential","time_range","sensor_name","fetchAgg","dhcpAck","query","dhcpRequest","API","getJson","histogramTime","getSensors","getEventTypes","deEscalateAggregateAlert","escalateEvent","deEscalateEvent","eventToPcap","what","form","whatField","eventField","ES_TRACKER","cancelAllSse","es","getSseAgg","onData","_reject","currentVersion","addAutoArchive","urlSearchParams","fetchFilters","doDelete","deleteFilter","GIT_REV","HelpModal","setTab","showHelp","closeHelp","Keyboard","About","then","plus","shortcuts","_el$7","nextSibling","_el$10","_el$11","_el$20","revision","_el$12","_el$13","_el$14","_el$15","_el$18","_el$16","_el$19","serverConfig","serverConfigSet","setShowHelp","openHelp","DEFAULT_TIME_RANGE","TIME_RANGE_OPTIONS","isValidTimeRange","range","tr","getInitialTimeRange","localTimeRange","localStorage","getItem","console","log","serverTimeRange","TIME_RANGE","_SET_TIME_RANGE","SET_TIME_RANGE","setItem","Top","disableRange","_searchParams","brand","toolDropDownOpen","setToolDropDownOpen","tinykeys","includes","q","getElementById","click","innerHTML","api","$$click","reload","blur","onclick","_el$3","_$delegateEvents","lim","p2b","n2b","b2n","n2p","map$1","hex","h1","h2","eq","isShort","hexParse","alpha","hexString","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","hueValue","rgb2hsl","calln","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","rotate","deg","hslString","names$1","unpack","unpacked","tkeys","ok","nk","names","nameParse","RGB_RE","rgbParse","rgbString","interpolate","rgb1","rgb2","modHSL","ratio","clone","fromObject","functionParse","Color","color","weight","c1","c2","w2","w1","uid","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toPercentage","toDimension","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","klen","isValidKey","_merger","tval","sval","merger","mergeIf","_mergerIf","keyResolvers","_splitKey","parts","_getKeyResolver","resolveObjectKey","_capitalize","setsEqual","_isClickEvent","PI","TAU","PITAU","INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","niceNum","roundedRange","niceRange","fraction","_factorize","sqrt","almostWhole","rounded","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","cmp","hi","lo","mid","_lookupByKey","last","ti","_rlookupByKey","_filterBetween","values","arrayEvents","listenArrayEvents","object","unlistenArrayEvents","stub","_arrayUnique","requestAnimFrame","argsToUse","ticking","_toLeftRightCenter","_alignStartEnd","_textX","rtl","_getStartAndCountOfVisiblePoints","points","animationsDisabled","pointCount","iScale","_parsed","minDefined","maxDefined","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","changed","atEdge","elasticIn","elasticOut","effects","isPatternOrGradient","getHoverColor","numbers","colors","applyAnimationsDefaults","applyLayoutsDefaults","intlCache","getNumberFormat","locale","cacheKey","formatter","formatNumber","formatters","tickValue","ticks","notation","maxTick","calculateDelta","logDelta","numDecimal","remain","Ticks","applyScaleDefaults","_ctx","overrides","getScope$1","scope","Defaults","_descriptors","_appliers","targetScope","targetName","scopeObject","targetScopeObject","privateName","appliers","apply","toFontString","font","_measureText","gc","longest","textWidth","_longestText","arrayOfThings","jlen","nestedThing","gcLen","_alignPixel","chart","pixel","devicePixelRatio","halfWidth","clearCanvas","canvas","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","rotation","radius","rad","_isPointInArea","point","area","margin","clipArea","unclipArea","_steppedLineTo","mode","midpoint","_bezierCurveTo","renderText","lines","stroke","setRenderOpts","drawBackdrop","decorateText","metrics","yDecoration","oldColor","addRoundedRectPath","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","toTRBL","toTRBLCorners","toPadding","toFont","inputs","_addGrace","minmax","grace","beginAtZero","change","keepZero","parentContext","_createResolver","scopes","rootScopes","getTarget","_cached","_resolveWithPrefixes","getKeysFromAllScopes","storage","_attachContext","subProxy","descriptorDefaults","_resolveWithContext","_scriptable","_indexable","_allKeys","readKey","needsSubResolver","_proxy","_context","_subProxy","_resolveScriptable","_resolveArray","_stack","createSubResolver","isIndexable","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","EPSILON","getPoint","getValueAxis","indexAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","loop","controlPoints","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getStyle","positions","getPositionedStyle","useOffsetPos","getCanvasPosition","touches","box","getRelativePosition","currentDevicePixelRatio","borderBox","paddings","borders","getContainerSize","maxWidth","maxHeight","containerStyle","containerBorder","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","containerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","supportsEventListenerOptions","passiveSupported","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRightToLeftAdapter","rectX","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","original","restoreTextDirection","propertyFn","normalizeSegment","getSegment","bounds","startBound","endBound","between","_boundSegment","compare","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","sub","findStartAndEnd","spanGaps","solidSegments","cur","_computeSegments","segmentOptions","splitByStyles","completeLoop","doSplitByStyles","chartContext","baseStyle","readStyle","datasetIndex","prevStyle","addStyle","st","styleChanged","Animator","anims","date","numSteps","remaining","draw","charts","animator","transparent","interpolators","factor","c0","Animation","cfg","currentValue","elapsed","rej","Animations","animationOptions","animatedProps","newOptions","resolveTargetOptions","animations","awaitAll","running","properties","anim","scaleClip","scale","allowedOverflow","defaultClip","toClip","getSortedDatasetIndices","filterVisible","metasets","applyStack","dsIndex","singleMode","otherValue","convertObjectDataToArray","adata","isStacked","stacked","getStackKey","indexScale","valueScale","getUserBounds","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","updateStacks","iAxis","vAxis","itemStacks","visualValues","getFirstScaleId","scales","createDatasetContext","createDataContext","clearStacks","isDirectUpdateMode","cloneIfNotShared","createStack","canStack","DatasetController","chooseId","xid","yid","rid","iid","vid","scaleID","_data","resetNewElements","stackChanged","oldStacked","scopeKeys","_stacked","sorted","isNotInOrderComparedToPrev","labels","singleScale","xAxisKey","yAxisKey","parsedValue","otherScale","otherMin","otherMax","_skip","elements","drawActiveElementsOnTop","elementType","sharing","sharedOptions","firstOpts","previouslySharedOptions","includeOptions","numMeta","numData","move","removed","newCount","getAllScaleValues","visibleMetas","computeMinSampleSize","curr","updateMinAndPrev","computeFitCategoryTraits","ruler","stackCount","thickness","computeFlexCategoryTraits","pixels","percent","parseFloatBar","entry","startValue","endValue","barStart","barEnd","parseValue","parseArrayOrPrimitive","isFloatBar","custom","barSign","actualBase","borderProps","setBorderSkipped","edge","parseEdge","swap","startEnd","orig","v2","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","horizontal","vpixels","ipixels","dataIndex","skipNull","barThickness","baseValue","minBarLength","floating","startPixel","endPixel","halfGrid","maxBarThickness","stackIndex","BubbleController","getRatioAndOffset","circumference","cutout","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","DoughnutController","pointStyle","legendItem","legend","getter","chartArea","arcs","spacing","maxSize","chartWeight","maxRadius","outerRadius","innerRadius","radiusLength","animationOpts","centerX","centerY","animateScale","arc","metaData","ringWeightOffset","LineController","_dataset","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","PolarAreaController","minSize","datasetStartAngle","defaultAngle","PieController","RadarController","pointPosition","ScatterController","showLine","controllers","abstract","DateAdapterBase","members","binarySearch","metaset","intersect","_sorted","lookupMethod","evaluateInteractionItems","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","getIntersectItems","useFinalPosition","includeInvisible","getNearestRadialItems","evaluationFunc","getNearestCartesianItems","distanceMetric","minDistance","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","wrapBoxes","boxes","layoutBoxes","stackWeight","buildStacks","layouts","setLayoutDims","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","buildLayoutBoxes","centerHorizontal","centerVertical","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","newWidth","newHeight","widthChanged","heightChanged","handleMaxPadding","updatePos","getMargins","marginForPositions","fitBoxes","refitBoxes","refit","same","setBoxDims","placeBoxes","userPadding","height1","width1","layoutItem","minPadding","availableWidth","availableHeight","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","BasePlatform","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","isNullOrEmpty","initCanvas","renderHeight","renderWidth","displayWidth","displayHeight","eventListenerOptions","addListener","removeListener","fromNativeEvent","nodeListContains","nodeList","createAttachObserver","observer","entries","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","releaseObserver","createProxyAndListen","DomPlatform","proxies","_detectPlatform","Element$1","final","autoSkip","tickOpts","determinedMaxTicks","determineMaxTicks","ticksLimit","majorIndices","getMajorIndices","numMajorIndices","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","skip","tickLength","maxScale","maxChart","evenMajorSpacing","getEvenSpacing","factors","majorStart","majorEnd","diff","reverseAlign","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","garbageCollect","caches","getTickMarkLength","getTitleHeight","createScaleContext","createTickContext","tick","titleAlign","titleArgs","titleX","titleY","positionAxisID","positionAxisID1","value1","Scale","Element","raw","_userMin","_userMax","_suggestedMin","_suggestedMax","metas","sampleSize","samplingEnabled","reversePixels","numTicks","minRotation","maxRotation","labelRotation","tickWidth","maxLabelDiagonal","labelSizes","maxLabelWidth","maxLabelHeight","titleOpts","gridOpts","isHorizontal","titleHeight","widest","highest","tickPadding","angleRadians","cos","sin","labelHeight","labelWidth","isRotated","labelsBelowTicks","offsetLeft","offsetRight","paddingTop","paddingBottom","widths","heights","widestLabelSize","highestLabelSize","tickFont","fontString","lineHeight","nestedLabel","valueAt","idx","decimal","optionTicks","rot","grid","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","limit","step","optsAtIndex","optsAtIndexBorder","lineWidth","lineColor","borderDash","borderDashOffset","tickColor","tickBorderDash","tickBorderDashOffset","crossAlign","mirror","tickAndPadding","hTickAndPadding","textAlign","lineCount","textOffset","textBaseline","ret1","halfCount","strokeColor","strokeWidth","tickTextAlign","labelPadding","backgroundColor","drawLine","lastLineWidth","renderTextOptions","tz","gz","bz","axisID","fontSize","TypedRegistry","override","parentScope","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","propertyParts","sourceName","sourceScope","Registry","typedRegistry","reg","itemReg","registry","camelMethod","PluginService","hook","plugin","all","plugins","allPlugins","createDescriptors","previousDescriptors","localIds","i1","getOpts","pluginOpts","getIndexAxis","datasetDefaults","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","axisFromPosition","determineAxis","scaleOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","cachedKeys","generate","addIfFound","Config$1","datasetType","mainScope","resetCache","_scopeCache","keyLists","subPrefixes","getResolver","needContext","subResolver","resolverCache","hasFunction","isScriptable","scriptable","indexable","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onAnimationProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","getDatasetArea","Chart","invalidatePlugins","userConfig","Config","initialCanvas","existingChart","maintainAspectRatio","_aspectRatio","newSize","newRatio","scalesOptions","axisOptions","scaleOpts","updated","isRadial","scaleType","scaleClass","hasUpdated","datasets","newControllers","ControllerClass","datasetElementType","dataElementType","animsDisabled","_active","_lastEvent","existingEvents","newEvents","_hiddenIndices","changes","_dataChanges","datasetCount","makeSet","changeSet","noArea","ilen1","layers","clip","useClip","visible","_add","_remove","detached","attached","activeElements","lastActive","pluginId","replay","hoverOptions","deactivated","activated","eventFilter","clipArc","pixelMargin","angleMargin","toRadiusCorners","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","rThetaToXY","theta","pathArc","circular","innerR","spacingOffset","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStart","outerEnd","innerStart","innerEnd","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","pCenter1","innerMidAdjustedAngle","pCenter2","p8","pCenter3","outerStartX","outerStartY","outerEndX","outerEndY","drawArc","fullCircles","drawBorder","borderWidth","borderJoinStyle","inner","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","fix","radiusOffset","lineTo","getLineMethod","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","avgX","countX","prevX","lastY","pointIndex","drawX","truncX","_getSegmentMethod","_getInterpolationMethod","strokePathWithCache","strokePathDirect","segmentMethod","usePath2D","LineElement","_interpolate","interpolated","inRange$1","PointElement","mouseX","mouseY","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","enableBorderRadius","maxR","enableBorder","boundingRects","skipX","skipY","hasRadius","addNormalRectPath","inflateRect","amount","refRect","BarElement","borderColor","outer","addRectPath","BORDER_COLORS","BACKGROUND_COLORS","getBorderColor","getBackgroundColor","colorizeDefaultDataset","colorizeDoughnutDataset","colorizePolarAreaDataset","getColorizer","containsColorsDefinitions","containsColorsDefinition","plugin_colors","_args","chartOptions","colorizer","lttbDecimation","samples","decimated","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","startIndex","xMin","dx","intermediateIndex1","intermediateIndex2","cleanDecimatedDataset","cleanDecimatedData","getStartAndCountOfVisiblePointsSimplified","plugin_decimation","xAxis","_segments","tpoints","_findSegmentEnd","_getBounds","targetSegments","tgt","subBounds","fillSources","fillSource","_getEdge","_pointsFromSegments","linePoints","_createBoundaryLine","_shouldApplyFill","_resolveTarget","propagate","_decodeFill","parseFillOption","decodeTargetIndex","firstCh","_getTargetPixel","_getTargetValue","fillOption","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","addPointsBelow","below","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","_getTarget","getLineByIndex","computeBoundary","computeCircularBoundary","computeLinearBoundary","_drawfill","lineOpts","above","doFill","clipVertical","clipY","lineLoop","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","getBoxSize","labelOpts","boxHeight","boxWidth","itemsEqual","Legend","legendItems","labelFont","itemHeight","hitboxes","lineWidths","totalHeight","row","_itemHeight","columnSizes","heightLimit","totalWidth","currentColWidth","currentColHeight","col","calculateItemSize","rtlHelper","hitbox","hitbox1","defaultColor","halfFontSize","cursor","drawLegendBox","drawOptions","yBoxTop","xBoxLeft","borderRadius","fillText","realX","fontLineHeight","calculateLegendItemHeight","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","isListened","hoveredItem","sameItem","calculateItemWidth","calculateItemHeight","legendItemText","plugin_legend","ci","usePointStyle","useBorderRadius","textSize","fontOpts","createTitle","plugin_title","titleBlock","plugin_subtitle","positioners","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","bodyLineHeight","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","caret","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","caretSize","caretPadding","topLeft","topRight","bottomLeft","bottomRight","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","defaultCallbacks","labelCount","tooltipItem","invokeCallbackWithFallback","beforeTitle","afterTitle","bodyItems","scoped","beforeFooter","afterFooter","labelColors","labelPointStyles","labelTextColors","positionAndSize","backgroundPoint","tooltipPoint","caretPosition","ptX","ptY","x3","y3","titleSpacing","labelPointStyle","colorX","rtlColorX","yOffSet","colorY","outerX","innerX","bodySpacing","bodyAlign","displayColors","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","tooltipSize","animX","animY","opacity","hasTooltipContent","positionChanged","caretX","caretY","plugin_tooltip","Tooltip","addIfString","addedLabels","findOrAddLabel","_getLabelForValue","CategoryScale","added","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","LinearScaleBase","setMin","setMax","minSign","maxSign","maxTicksLimit","stepSize","numericGeneratorOptions","LinearScale","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","startExp","generateTicks","minExp","exp","significand","lastTick","LogarithmicScale","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","limits","valueCount","pointLabelOpts","additionalAngle","plFont","hLimits","vLimits","updateLimits","buildPointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabels","pointLabels","backdropColor","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabel","distanceFromCenter","angleLines","INTERVALS","UNITS","sorter","parse","isoWeekday","determineUnitForAutoTicks","minUnit","capacity","interval","determineUnitForFormatting","determineMajorUnit","addTick","setMajorTicks","majorUnit","major","ticksFromTimestamps","TimeScale","_applyBounds","timeOpts","minor","weekday","hasWeekday","formats","fmt","minorFormat","majorFormat","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","displayFormats","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","TimeSeriesScale","registerables","DEFAULT_THEME","currentThemeName","setCurrentThemeName","setTheme","loadInitialTheme","setViewSize","getViewSize","localViewSize","timeRangeAsSeconds","noopTransition","createSwitchTransition","initSource","initReturned","returned","setReturned","isTransitionPending","isExiting","exitTransition","enterTransition","triggerTransitions","defaultElementPredicate","getFirstChild","predicate","resolveFirst","serverPredicate","children2","createClassnames","onBeforeEnter","onAfterEnter","endTransition","onBeforeExit","onAfterExit","TRANSITION_MODE_MAP","scrollToClass","classElements","elOffset","elHeight","windowOffset","windowHeight","elBottom","windowBottom","newOffset","Tag","eventIsArchived","eventIsEscalated","eventEnsureHasTags","eventSetArchived","eventAddTag","eventSetEscalated","tag","IdleTimer","ms","eventStore","Logger","announce","msg","loadingTracker","getChartCanvasElement","SensorSelect","sensors","setSensors","loading","setLoading","finally","setSensor","sensor","onchange","selected","elementMap","Data","instanceMap","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","toType","getUID","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","triggerTransitionEnd","isVisible","elementIsVisible","closedDetails","summary","isDisabled","findShadowRoot","reflow","getjQuery","DOMContentLoadedCallbacks","onDOMContentLoaded","defineJQueryPlugin","JQUERY_NO_CONFLICT","execute","possibleCallback","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","getNextActiveElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","nativeEvents","makeEventUid","getElementEvents","bootstrapHandler","hydrateObj","EventHandler","bootstrapDelegationHandler","domElements","domElement","findHandler","callable","delegationSelector","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","previousFunction","removeHandler","removeNamespacedHandlers","storeElementEvent","handlerKey","inNamespace","isNamespace","elementEvent","keyHandlers","jQueryEvent","nativeDispatch","normalizeData","normalizeDataKey","chr","Manipulator","bsKeys","pureKey","jsonConfig","configTypes","expectedTypes","valueType","BaseComponent","propertyName","isAnimated","getSelector","hrefAttribute","SelectorEngine","parents","ancestor","focusables","enableDismissTrigger","clickEvent","NAME$f","DATA_KEY$a","EVENT_KEY$b","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE$5","CLASS_NAME_SHOW$8","NAME$e","DATA_KEY$9","EVENT_KEY$a","DATA_API_KEY$6","CLASS_NAME_ACTIVE$3","SELECTOR_DATA_TOGGLE$5","EVENT_CLICK_DATA_API$6","button","NAME$d","EVENT_KEY$9","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","Default$c","DefaultType$c","Swipe","absDeltaX","NAME$c","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$5","ARROW_LEFT_KEY$1","ARROW_RIGHT_KEY$1","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN$1","EVENT_MOUSEENTER$1","EVENT_MOUSELEAVE$1","EVENT_DRAG_START","EVENT_LOAD_DATA_API$3","EVENT_CLICK_DATA_API$5","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","Default$b","DefaultType$b","Carousel","activeIndex","img","swipeConfig","activeIndicator","newActiveIndicator","elementInterval","isNext","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","completeCallBack","carousel","slideIndex","carousels","NAME$b","DATA_KEY$7","EVENT_KEY$7","DATA_API_KEY$4","EVENT_SHOW$6","EVENT_SHOWN$6","EVENT_HIDE$6","EVENT_HIDDEN$6","EVENT_CLICK_DATA_API$4","CLASS_NAME_SHOW$7","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$4","Default$a","DefaultType$a","toggleList","filterElement","foundElement","activeChildren","activeInstance","complete","scrollSize","triggerArray","isOpen","NAME$a","DATA_KEY$6","EVENT_KEY$6","DATA_API_KEY$3","ESCAPE_KEY$2","TAB_KEY$1","ARROW_UP_KEY$1","ARROW_DOWN_KEY$1","RIGHT_MOUSE_BUTTON","EVENT_HIDE$5","EVENT_HIDDEN$5","EVENT_SHOW$5","EVENT_SHOWN$5","EVENT_CLICK_DATA_API$3","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW$6","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_DROPUP_CENTER","CLASS_NAME_DROPDOWN_CENTER","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_NAVBAR","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","PLACEMENT_TOPCENTER","PLACEMENT_BOTTOMCENTER","Default$9","DefaultType$9","relatedTarget","Popper","Popper.createPopper","parentDropdown","isEnd","popperData","defaultBsPopperConfig","openToggles","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","NAME$9","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$5","EVENT_MOUSEDOWN","Default$8","DefaultType$8","NAME$8","DATA_KEY$5","EVENT_KEY$5","EVENT_FOCUSIN$2","EVENT_KEYDOWN_TAB","TAB_KEY","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","Default$7","DefaultType$7","FocusTrap","trapElement","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","documentWidth","calculatedValue","styleProperty","scrollbarWidth","manipulationCallBack","actualValue","callBack","NAME$7","DATA_KEY$4","EVENT_KEY$4","DATA_API_KEY$2","ESCAPE_KEY$1","EVENT_HIDE$4","EVENT_HIDE_PREVENTED$1","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_RESIZE$1","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_OPEN","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","OPEN_SELECTOR$1","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$2","Default$6","DefaultType$6","modalBody","transitionComplete","event2","isModalOverflowing","initialOverflowY","isBodyOverflowing","showEvent","alreadyOpen","NAME$6","DATA_KEY$3","EVENT_KEY$3","DATA_API_KEY$1","EVENT_LOAD_DATA_API$2","ESCAPE_KEY","CLASS_NAME_SHOW$3","CLASS_NAME_SHOWING$1","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_HIDE$3","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$3","EVENT_RESIZE","EVENT_CLICK_DATA_API$1","EVENT_KEYDOWN_DISMISS","SELECTOR_DATA_TOGGLE$1","Default$5","DefaultType$5","completeCallback","clickCallback","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","attributeRegex","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","elementName","attributeList","allowedAttributes","NAME$5","Default$4","DefaultType$4","DefaultContentType","TemplateFactory","templateWrapper","extraClass","templateElement","NAME$4","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$2","CLASS_NAME_MODAL","CLASS_NAME_SHOW$2","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_HIDE$2","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_INSERTED","EVENT_CLICK$1","EVENT_FOCUSIN$1","EVENT_FOCUSOUT$1","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","AttachmentMap","Default$3","DefaultType$3","isInTheDom","tip","tipId","attachment","triggers","eventIn","eventOut","dataAttributes","dataAttribute","NAME$3","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","NAME$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API$1","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE$1","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE$1","Default$1","DefaultType$1","ScrollSpy","section","observableSection","targetElement","activate","parentScrollTop","userScrollsDown","entryIsLowerThanPrevious","targetLinks","anchor","listGroup","activeNodes","spy","NAME$1","DATA_KEY$1","EVENT_KEY$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","CLASS_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_MENU","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","innerElem","hideEvent","relatedElem","nextActiveElement","outerElem","open","NAME","DATA_KEY","EVENT_KEY","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_FADE","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","DefaultType","Default","isInteracting","SearchLink","encodeURIComponent","replaceAll","formatEventDescription","anom","arp","dhcp","dns","formatAddressWithPort","dest","fileinfo","http2","http","packets","age","netflow","formatAddress","tls","smb","ssh","stats","quic","sip","event_type","addr","port","PREFS","SET_PREFS","getClientPreferences","createDefaultClientPreferences","prefs","saveClientPreferences","CountValueDataTable","searchLink","searchField","_el$4","rows","FilterStrip","removeFilter","setFilters","filters","invertFilter","buttonClass","isExclude","isInclude","toggleToFrom","_el$17","_el$21","_el$22","_el$31","_el$23","_el$24","_el$25","_el$26","_el$27","_el$28","_el$29","_tmpl$10","_el$30","FormattedTimestamp","formatted","formatString","withMillis","timestamp_format","TimestampCell","_el$32","_el$33","_el$34","fromNow","addFilter","_el$36","_el$37","_el$38","_el$39","_el$40","_el$42","_el$43","AddressCell","src_ip","_el$45","_tmpl$14","_el$46","_tmpl$16","dest_ip","_el$48","_tmpl$17","_el$49","_tmpl$18","AutoArchiveMenuElements","signature_id","_source","host","signature","autoArchive","_el$50","_tmpl$19","_el$51","_el$53","_tmpl$20","_el$54","_el$55","_el$58","_el$56","_el$59","_el$60","_tmpl$21","_el$61","_el$62","_el$66","_el$63","_el$67","_el$64","_el$68","_el$69","_tmpl$22","_el$70","_el$71","_el$73","DEFAULT_DELAY","notificationId","notifications","setNotifications","addNotification","addError","removeNotification","Notifications","DEFAULT_SORTBY","DEFAULT_SORTORDER","getRowCount","innerHeight","floor","AlertState","Alerts","logger","searchParams","setCursor","isLoading","setIsLoading","idleTimer","visibleEvents","setVisibleEvents","timedOut","setTimedOut","toggleSelectAllRef","bindings","view","savedTimeRange","View","Shift+h","Shift+g",".","getElementsByClassName","archiveSelected","archiveByRelIndex","escalateSelected","escalate","Shift+s","escalateArchive","toggleSelected","refresh","f8","f9","openEventAtCursor","Shift+* a","selectAll","Shift+* n","unselectAll","Shift+* 1","stop","getOffset","setOffset","checked","indeterminate","getSelectedIndexes","__private","sortBy","sortOrder","getFilters","join","query_string","query_timeout","tags","Archived","Escalated","timed_out","sortAlerts","getSortBy","getSortOrder","_metadata","da","max_timestamp","db","applyFilter","clearFilter","archiveByEvent","relIndex","absIndex","escalated_count","toggleSelectAll","isAllSelected","navigateToEvent","_id","setActive","viewOffset","referer","blurInputs","elementIds","elementId","selectBySignatureId","signatureId","filterForSignatureId","filterOutSignatureId","op","newFilters","updateSort","autoArchiveWithParams","matchingEvents","onsubmit","$$keydown","PagerRow","SortHeader","SortCaret","severity","_el$35","_el$41","_el$44","_el$52","_el$65","AlertDescription","_el$47","_$classList","badges","action","_el$80","app_proto","sni","_el$74","_el$75","_el$76","rrname","queries","_el$77","hostname","_el$78","setFirst","setLast","gotoOlder","gotoOldest","pages","NoEvents","querySelectorAll","tooltipTriggerEl","bootstrap","_el$82","_tmpl$24","_el$83","_el$87","_el$84","_el$88","_tmpl$23","_el$89","_tmpl$25","_el$90","_el$91","_el$92","_el$93","_el$94","_v$3","_v$4","_el$95","_tmpl$26","Loader","getLoginOptions","json","fetch","Login","loginForm","setLoginForm","loginOptions","doLogin","redirectTo","catch","authentication","required","xs","md","lg","spellcheck","oninput","placeholder","Settings","popoverTriggerEl","_v$5","_v$6","_v$7","_v$8","_v$9","_v$10","isNaN","prettyPrintJson","settings","htmlEntities","spanTag","buildValueHtml","strType","urlPattern","makeLink","link","replacer","p3","findName","indentHtml","keyName","keyHtml","valueHtml","endHtml","jsonLine","makeLine","addLineNumbers","eventType","eventNameFromType","et","Events","setEvents","equals","setEventType","keybindings","openEventById","loadEvents","archive","filterQuery","gotoNewer","gotoNewest","searchInput","getElementsByTagName","AppProtoBadge","showArchiveButton","PCAP_BUTTON_STYLE","EventView","setEventId","setEvent","eventDetails","setEventDetails","commonDetails","setCommonDetails","showCopyToast","setShowCopyToast","history","setHistory","showCommentForm","setShowCommentForm","geoIp","setGeoIp","destination","rawJsonRef","srcIpDns","setSrcIpDns","destIpDns","setDestIpDns","ignoreKey","back","archiveAlert","evebox","geoip","country_name","geo","ip","geoip_source","geoip_destination","refreshEvent","before","flow","rrnames","src_port","dest_port","in_iface","flow_id","community_id","ether","src_mac","dest_mac","category","gid","rev","uptime","kernel_packets","kernel_drops","decoder","pkts","detect","copyRawJson","select","navigator","clipboard","writeText","selectElementText","getSelection","createRange","selectNodeContents","removeAllRanges","addRange","selectRawJson","isAggregateAlert","isEscalated","goBack","deEscalate","OccurrenceLink","min_timestamp","displayObjects","setDisplayObjects","objectColumns","setObjectColumns","col1","col2","flattened","flattenJson","card1_len","card2_len","card1","card2","ceil","getServiceLinks","serviceLinks","eventServices","service","showToolMenu","autoArchived","formatTitle","bgClassForSeverity","xl","_el$57","DnsInfoCol","rule","HighlightedRule","History","onChange","CommentEntry","geoIpInfoString","StatsCard","_el$72","_el$79","_el$81","Base64BufferCard","buffer","addOn","packet","sm","xxl","_el$85","PrettyJson","toPrettyHex","output","chars","charCodeAt","printable","fromCharCode","formatTimestamp","ts","key_prefix","toHtml","_el$86","_ref$2","_tmpl$27","atob","_el$96","_el$97","_el$98","_tmpl$28","_el$99","_el$100","_el$101","_el$102","setRule","_el$103","_tmpl$29","cards","common","rrtype","rcode","answers","rdata","authorities","soa","mname","rname","card","_el$104","_tmpl$31","_el$105","_el$109","_el$106","_tmpl$30","_el$107","_el$108","_el$110","_tmpl$32","_el$111","_el$112","continent_name","region_name","city_name","hideZeros","setHideZeros","setStats","setFilter","toggleHide","filtered","_el$113","_tmpl$33","_el$114","_el$115","_el$116","_el$117","_el$118","_el$119","_el$120","_el$121","$$input","_el$122","_tmpl$34","_el$123","_el$124","stat","_el$125","_tmpl$36","_el$126","_el$127","_el$128","_el$129","_el$130","_el$134","_tmpl$38","_el$135","_el$140","_el$136","_el$138","_el$139","_tmpl$37","_el$131","_tmpl$35","_el$132","_el$133","inputId","submitEvent","_el$141","_tmpl$39","_el$142","_el$143","_el$144","_el$145","_el$146","_el$147","_el$148","_el$149","_$addEventListener","RefreshButton","CHARTS","canvasId","Stats","loadingCounter","setLoadingCounter","destroyAllCharts","pop","destroy","loadData","timeRange","toDate","buildChart","pointRadius","interaction","defaultAggResults","Address","setVersion","mostAlertingSignature","setMostAlertingSignature","leastAlertingSignature","setLeastAlertingSignature","mostRequestedDns","setMostRequestedDns","leastRequestedDns","setLeastRequestedDns","mostHttpUserAgents","setMostHttpUserAgents","leastHttpUserAgents","setLeastHttpUserAgents","mostRequestedTlsSni","setMostRequestedTlsSni","leastRequestedTlsSni","setLeastRequestedTlsSni","mostSshClientVersions","setMostSshClientVersions","leastSshClientVersions","setLeastSshClientVersions","mostSshServerVersions","setMostSshServerVersions","leastSshServerVersions","setLeastSshServerVersions","httpTopOutboundHostnames","setHttpTopOutboundHostnames","httpLeastOutboundHostnames","setHttpLeastOutboundHostnames","httpTopInboundHostnames","setHttpTopInboundHostnames","httpLeastInboundHostnames","setHttpLeastInboundHostnames","tlsSniInboundTop","setTlsSniInboundTop","tlsSniInboundLeast","setTlsSniInboundLeast","tlsMostRequestedSubjects","setTlsMostRequestedSubjects","tlsLeastRequestedSubjects","setTlsLeastRequestedSubjects","tlsMostRequestedIssueDn","setTlsMostRequestedIssueDn","tlsLeastRequestedIssueDn","setTlsLeastRequestedIssueDn","forceRefresh","LOADERS","loader","address","earliest_ts","formatSuffix","Colors","defaultModel","AlertsDashboard","mostAlerting","setMostAlerting","leastAlerting","setLeastAlerting","mostAlertingSource","setMostAlertingSource","leastAlertingSource","setLeastAlertingSource","mostAlertingDest","setMostAlertingDest","leastAlertingDest","setLeastAlertingDest","histogram","dataValues","dataLabels","queryString","loaders","Overview","hiddenTypes","anomaly","topAlerts","setTopAlerts","topDnsRequests","setTopDnsRequests","topTlsSni","setTopTlsSni","topQuicSni","setTopQuicSni","eventsOverTimeLoading","setEventsOverTimeLoading","protocols","setProtocols","protocolsPieChartRef","initChart","fetchEventsHistogram","eventTypes","colorIdx","itemSort","_e","isDatasetVisible","tension","PieChart","chartId","onHover","_evt","setActiveElements","DHCP","acks","setAcks","dhcpServers","setDhcpServers","requestHostnames","response_1","event_1","servers","ack","client_mac","assigned_ip","lease_time","server","getPrefix","ja4","Ja4Report","setParsed","parseJa4","ja4db","topSnis","leastSnis","topSourceIps","leastSourceIps","topDestIps","leastDestIps","ciphers","extensions","user_agent_string","alpn","fetchAutoArchiveSettings","defaultAutoArchiveSettings","fetchRetentionSettings","defaultRetentionSettings","fetchRetentionSizeSettings","defaultRetentionSizeSettings","Admin","updating","success","failed","autoArchiveSettings","refetch","refetchAutoArchiveSettings","localAutoArchiveSettings","setLocalAutoArchiveSettings","retentionSettings","refetchRetentionSettings","localRetentionSettings","setLocalRetentionSettings","retentionSizeSettings","refetchRetentionSizeSettings","localRetentionSizeSettings","setLocalRetentionSizeSettings","archiveSettingsModified","latest","retentionSettingsModified","retentionSizeSettingsModified","saveAutoArchiveSettings","saveRetentionSettings","saveRetentionSizeSettings","updateJa4Db","links","datastore","AdminFilters","filters0","filterRef","onFilterChange","filterString","fetchIndices","indices","AdminElastic","refetchIndices","deleteIndex","doc_count","store_size","AppRouter","App","AuthenticationRequired","RedirectToIndex","user","anonymous","Y","AdvancedFormat","QuarterOfYear","LocalizedFormat","CustomParseFormat","isoWeek","FORMATS","_adapters","_format","validatedWeekday","register"],"mappings":"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,GAAkB,CAChB,GAAIiO,EAAI,GAAK,IACb,MAAO,CACvB,CAAe,EACDA,EAAM,QAED5E,EAAM,UACZ1H,CAAK,CAClB,CAAS,CACT,CAAO,CACP,CACA,CAAG,CACH,CCtxDA,MAAMgN,GAAW,CACf,kBACA,QACA,YACA,WACA,UACA,WACA,UACA,WACA,iBACA,SACA,gBACA,QACA,QACA,OACA,WACA,QACA,WACA,aACA,OACA,cACA,WACA,WACA,WACA,WACA,UACF,EACMC,GAA2B,IAAI,IAAI,CACvC,YACA,QACA,WACA,iBACA,QACA,WACA,cACA,GAAGD,EACL,CAAC,EACKE,GAAgC,IAAI,IAAI,CAC5C,YACA,cACA,YACA,UACF,CAAC,EACKC,GAAwB,OAAO,OAAO,OAAO,OAAO,IAAI,EAAG,CAC/D,UAAW,QACX,QAAS,KACX,CAAC,EACKC,GAA4B,OAAO,OAAO,OAAO,OAAO,IAAI,EAAG,CACnE,MAAO,YACP,eAAgB,CACd,EAAG,iBACH,OAAQ,EACR,MAAO,CACR,EACD,MAAO,CACL,EAAG,QACH,IAAK,CACN,EACD,SAAU,CACR,EAAG,WACH,OAAQ,CACT,EACD,YAAa,CACX,EAAG,cACH,MAAO,CACR,EACD,SAAU,CACR,EAAG,WACH,MAAO,EACP,SAAU,CACd,CACA,CAAC,EACD,SAASC,GAAaC,EAAMC,EAAS,CACnC,MAAM9O,EAAI2O,GAAYE,CAAI,EAC1B,OAAO,OAAO7O,GAAM,SAAYA,EAAE8O,CAAO,EAAI9O,EAAE,EAAO,OAAaA,CACrE,CACA,MAAM+O,GAAgC,IAAI,IAAI,CAC5C,cACA,QACA,WACA,cACA,UACA,WACA,QACA,UACA,QACA,YACA,YACA,WACA,YACA,UACA,cACA,cACA,aACA,cACA,YACA,WACA,YACA,YACF,CAAC,EACKC,GAA4B,IAAI,IAAI,CACxC,WACA,cACA,eACA,UACA,eACA,gBACA,mBACA,SACA,WACA,gBACA,SACA,OACA,OACA,UACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,SACA,OACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,gBACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,MACA,OACA,MACA,SACA,SACA,OACA,WACA,OACA,QACA,MACA,OACA,OACF,CAAC,EACKC,GAAe,CACnB,MAAO,+BACP,IAAK,sCACP,EA2RA,SAASC,GAAgBC,EAAYnP,EAAGC,EAAG,CACzC,IAAImP,EAAUnP,EAAE,OACdoP,EAAOrP,EAAE,OACTsP,EAAOF,EACPG,EAAS,EACTC,EAAS,EACTC,EAAQzP,EAAEqP,EAAO,CAAC,EAAE,YACpBK,EAAM,KACR,KAAOH,EAASF,GAAQG,EAASF,GAAM,CACrC,GAAItP,EAAEuP,CAAM,IAAMtP,EAAEuP,CAAM,EAAG,CAC3BD,IACAC,IACA,QACN,CACI,KAAOxP,EAAEqP,EAAO,CAAC,IAAMpP,EAAEqP,EAAO,CAAC,GAC/BD,IACAC,IAEF,GAAID,IAASE,EAAQ,CACnB,MAAM/H,EAAO8H,EAAOF,EAAWI,EAASvP,EAAEuP,EAAS,CAAC,EAAE,YAAcvP,EAAEqP,EAAOE,CAAM,EAAKC,EACxF,KAAOD,EAASF,GAAMH,EAAW,aAAalP,EAAEuP,GAAQ,EAAGhI,CAAI,CACrE,SAAe8H,IAASE,EAClB,KAAOD,EAASF,IACV,CAACK,GAAO,CAACA,EAAI,IAAI1P,EAAEuP,CAAM,CAAC,IAAGvP,EAAEuP,CAAM,EAAE,OAAQ,EACnDA,YAEOvP,EAAEuP,CAAM,IAAMtP,EAAEqP,EAAO,CAAC,GAAKrP,EAAEuP,CAAM,IAAMxP,EAAEqP,EAAO,CAAC,EAAG,CACjE,MAAM7H,EAAOxH,EAAE,EAAEqP,CAAI,EAAE,YACvBF,EAAW,aAAalP,EAAEuP,GAAQ,EAAGxP,EAAEuP,GAAQ,EAAE,WAAW,EAC5DJ,EAAW,aAAalP,EAAE,EAAEqP,CAAI,EAAG9H,CAAI,EACvCxH,EAAEqP,CAAI,EAAIpP,EAAEqP,CAAI,CACtB,KAAW,CACL,GAAI,CAACI,EAAK,CACRA,EAAM,IAAI,IACV,IAAIhK,EAAI8J,EACR,KAAO9J,EAAI4J,GAAMI,EAAI,IAAIzP,EAAEyF,CAAC,EAAGA,GAAG,CAC1C,CACM,MAAMkD,EAAQ8G,EAAI,IAAI1P,EAAEuP,CAAM,CAAC,EAC/B,GAAI3G,GAAS,KACX,GAAI4G,EAAS5G,GAASA,EAAQ0G,EAAM,CAClC,IAAI5J,EAAI6J,EACNI,EAAW,EACXpJ,EACF,KAAO,EAAEb,EAAI2J,GAAQ3J,EAAI4J,GAClB,GAAA/I,EAAImJ,EAAI,IAAI1P,EAAE0F,CAAC,CAAC,IAAM,MAAQa,IAAMqC,EAAQ+G,IACjDA,IAEF,GAAIA,EAAW/G,EAAQ4G,EAAQ,CAC7B,MAAMhI,EAAOxH,EAAEuP,CAAM,EACrB,KAAOC,EAAS5G,GAAOuG,EAAW,aAAalP,EAAEuP,GAAQ,EAAGhI,CAAI,CAC5E,MAAiB2H,EAAW,aAAalP,EAAEuP,GAAQ,EAAGxP,EAAEuP,GAAQ,CAAC,CACxD,MAAMA,SACFvP,EAAEuP,GAAQ,EAAE,OAAQ,CACjC,CACA,CACA,CAEA,MAAMK,GAAW,gBACjB,SAASC,GAAOC,EAAMC,EAAShI,EAAM9F,EAAU,CAAA,EAAI,CACjD,IAAIsI,EACJ,OAAApJ,GAAWgI,GAAW,CACpBoB,EAAWpB,EACX4G,IAAY,SACRD,EAAI,EACJE,EAAOD,EAASD,IAAQC,EAAQ,WAAa,KAAO,OAAWhI,CAAI,CAC3E,EAAK9F,EAAQ,KAAK,EACT,IAAM,CACXsI,EAAU,EACVwF,EAAQ,YAAc,EACvB,CACH,CACA,SAASE,EAASC,EAAMC,EAAcC,EAAOC,EAAU,CACrD,IAAI7I,EACJ,MAAM8I,EAAS,IAAM,CACnB,MAAM/J,EAEF,SAAS,cAAc,UAAU,EACrC,OAAAA,EAAE,UAAY2J,EAC6D3J,EAAE,QAAQ,UACtF,EACKnF,EAEF,KAAOoG,IAASA,EAAO8I,MAAW,UAAU,EAAI,EACpD,OAAAlP,EAAG,UAAYA,EACRA,CACT,CACA,SAASmP,GAAeC,EAAYC,EAAW,OAAO,SAAU,CAC9D,MAAMxL,EAAIwL,EAASb,EAAQ,IAAMa,EAASb,EAAQ,EAAI,IAAI,KAC1D,QAASlK,EAAI,EAAGY,EAAIkK,EAAW,OAAQ9K,EAAIY,EAAGZ,IAAK,CACjD,MAAM8G,EAAOgE,EAAW9K,CAAC,EACpBT,EAAE,IAAIuH,CAAI,IACbvH,EAAE,IAAIuH,CAAI,EACViE,EAAS,iBAAiBjE,EAAMkE,EAAY,EAElD,CACA,CAWA,SAASC,GAAanJ,EAAMgF,EAAMxK,EAAO,CACnC4O,GAAYpJ,CAAI,IAChBxF,GAAS,KAAMwF,EAAK,gBAAgBgF,CAAI,EACvChF,EAAK,aAAagF,EAAMxK,CAAK,EACpC,CACA,SAAS6O,GAAerJ,EAAMsJ,EAAWtE,EAAMxK,EAAO,CAChD4O,GAAYpJ,CAAI,IAChBxF,GAAS,KAAMwF,EAAK,kBAAkBsJ,EAAWtE,CAAI,EACpDhF,EAAK,eAAesJ,EAAWtE,EAAMxK,CAAK,EACjD,CACA,SAAS+O,GAAiBvJ,EAAMgF,EAAMxK,EAAO,CACvC4O,GAAYpJ,CAAI,IACpBxF,EAAQwF,EAAK,aAAagF,EAAM,EAAE,EAAIhF,EAAK,gBAAgBgF,CAAI,EACjE,CACA,SAASwE,GAAUxJ,EAAMxF,EAAO,CAC1B4O,GAAYpJ,CAAI,IAChBxF,GAAS,KAAMwF,EAAK,gBAAgB,OAAO,EAC1CA,EAAK,UAAYxF,EACxB,CACA,SAASiP,GAAiBzJ,EAAMgF,EAAM0E,EAASC,EAAU,CACvD,GAAIA,EACE,MAAM,QAAQD,CAAO,GACvB1J,EAAK,KAAKgF,CAAI,EAAE,EAAI0E,EAAQ,CAAC,EAC7B1J,EAAK,KAAKgF,CAAI,MAAM,EAAI0E,EAAQ,CAAC,GAC5B1J,EAAK,KAAKgF,CAAI,EAAE,EAAI0E,UAClB,MAAM,QAAQA,CAAO,EAAG,CACjC,MAAME,EAAYF,EAAQ,CAAC,EAC3B1J,EAAK,iBAAiBgF,EAAO0E,EAAQ,CAAC,EAAIjM,GAAKmM,EAAU,KAAK5J,EAAM0J,EAAQ,CAAC,EAAGjM,CAAC,CAAG,CACxF,MAASuC,EAAK,iBAAiBgF,EAAM0E,EAAS,OAAOA,GAAY,YAAcA,CAAO,CACtF,CACA,SAASG,GAAU7J,EAAMxF,EAAOkE,EAAO,CAAA,EAAI,CACzC,MAAMoL,EAAY,OAAO,KAAKtP,GAAS,CAAA,CAAE,EACvCuP,EAAW,OAAO,KAAKrL,CAAI,EAC7B,IAAIR,EAAG/F,EACP,IAAK+F,EAAI,EAAG/F,EAAM4R,EAAS,OAAQ7L,EAAI/F,EAAK+F,IAAK,CAC/C,MAAMjB,EAAM8M,EAAS7L,CAAC,EAClB,CAACjB,GAAOA,IAAQ,aAAezC,EAAMyC,CAAG,IAC5C+M,GAAehK,EAAM/C,EAAK,EAAK,EAC/B,OAAOyB,EAAKzB,CAAG,EACnB,CACE,IAAKiB,EAAI,EAAG/F,EAAM2R,EAAU,OAAQ5L,EAAI/F,EAAK+F,IAAK,CAChD,MAAMjB,EAAM6M,EAAU5L,CAAC,EACrB+L,EAAa,CAAC,CAACzP,EAAMyC,CAAG,EACtB,CAACA,GAAOA,IAAQ,aAAeyB,EAAKzB,CAAG,IAAMgN,GAAc,CAACA,IAChED,GAAehK,EAAM/C,EAAK,EAAI,EAC9ByB,EAAKzB,CAAG,EAAIgN,EAChB,CACE,OAAOvL,CACT,CACA,SAASwL,GAAMlK,EAAMxF,EAAOkE,EAAM,CAChC,GAAI,CAAClE,EAAO,OAAOkE,EAAOyK,GAAanJ,EAAM,OAAO,EAAIxF,EACxD,MAAM2P,EAAYnK,EAAK,MACvB,GAAI,OAAOxF,GAAU,SAAU,OAAQ2P,EAAU,QAAU3P,EAC3D,OAAOkE,GAAS,WAAayL,EAAU,QAAUzL,EAAO,QACxDA,IAASA,EAAO,IAChBlE,IAAUA,EAAQ,IAClB,IAAIiB,EAAGf,EACP,IAAKA,KAAKgE,EACRlE,EAAME,CAAC,GAAK,MAAQyP,EAAU,eAAezP,CAAC,EAC9C,OAAOgE,EAAKhE,CAAC,EAEf,IAAKA,KAAKF,EACRiB,EAAIjB,EAAME,CAAC,EACPe,IAAMiD,EAAKhE,CAAC,IACdyP,EAAU,YAAYzP,EAAGe,CAAC,EAC1BiD,EAAKhE,CAAC,EAAIe,GAGd,OAAOiD,CACT,CACA,SAAS0L,GAAOpK,EAAMyB,EAAQ,CAAA,EAAImH,EAAOyB,EAAc,CACrD,MAAMC,EAAY,CAAE,EACpB,OAAKD,GACHnP,GACE,IAAOoP,EAAU,SAAWC,GAAiBvK,EAAMyB,EAAM,SAAU6I,EAAU,QAAQ,CACtF,EAEHpP,GAAmB,IAAM,OAAOuG,EAAM,KAAQ,YAAc+I,GAAI/I,EAAM,IAAKzB,CAAI,CAAC,EAChF9E,GAAmB,IAAMuP,GAAOzK,EAAMyB,EAAOmH,EAAO,GAAM0B,EAAW,EAAI,CAAC,EACnEA,CACT,CAWA,SAASE,GAAI5Q,EAAI2O,EAASmC,EAAK,CAC7B,OAAOtQ,GAAQ,IAAMR,EAAG2O,EAASmC,CAAG,CAAC,CACvC,CACA,SAASlC,EAAOmC,EAAQC,EAAUC,EAAQC,EAAS,CAEjD,GADID,IAAW,QAAa,CAACC,IAASA,EAAU,CAAE,GAC9C,OAAOF,GAAa,WAAY,OAAOL,GAAiBI,EAAQC,EAAUE,EAASD,CAAM,EAC7F3P,GAAmBjB,GAAWsQ,GAAiBI,EAAQC,EAAQ,EAAI3Q,EAAS4Q,CAAM,EAAGC,CAAO,CAC9F,CACA,SAASL,GAAOzK,EAAMyB,EAAOmH,EAAOyB,EAAcC,EAAY,CAAA,EAAIS,EAAU,GAAO,CACjFtJ,IAAUA,EAAQ,IAClB,UAAW4F,KAAQiD,EACjB,GAAI,EAAEjD,KAAQ5F,GAAQ,CACpB,GAAI4F,IAAS,WAAY,SACzBiD,EAAUjD,CAAI,EAAI2D,GAAWhL,EAAMqH,EAAM,KAAMiD,EAAUjD,CAAI,EAAGuB,EAAOmC,EAAStJ,CAAK,CAC3F,CAEE,UAAW4F,KAAQ5F,EAAO,CACxB,GAAI4F,IAAS,WAEX,SAEF,MAAM7M,EAAQiH,EAAM4F,CAAI,EACxBiD,EAAUjD,CAAI,EAAI2D,GAAWhL,EAAMqH,EAAM7M,EAAO8P,EAAUjD,CAAI,EAAGuB,EAAOmC,EAAStJ,CAAK,CAC1F,CACA,CAoBA,SAASwJ,GAAexC,EAAU,CAChC,IAAIzI,EACF/C,EAEF,MAAI,CADUmM,GAAa,GACT,EAAEpJ,EAAOjI,GAAa,SAAS,IAAKkF,EAAMiO,GAAiB,CAAA,GACpEzC,EAAU,GAEf1Q,GAAa,WAAWA,GAAa,UAAU,IAAIiI,CAAI,EAC3DjI,GAAa,SAAS,OAAOkF,CAAG,EACzB+C,EACT,CA6CA,SAASoJ,GAAYpJ,EAAM,CACzB,MAAO,CAAC,CAACjI,GAAa,SAAW,CAACA,GAAa,OAAS,CAACiI,GAAQA,EAAK,YACxE,CACA,SAASmL,GAAenG,EAAM,CAC5B,OAAOA,EAAK,YAAa,EAAC,QAAQ,YAAa,CAAC1B,EAAG8H,IAAMA,EAAE,aAAa,CAC1E,CACA,SAASpB,GAAehK,EAAM/C,EAAKzC,EAAO,CACxC,MAAM6Q,EAAapO,EAAI,KAAI,EAAG,MAAM,KAAK,EACzC,QAAS,EAAI,EAAGqO,EAAUD,EAAW,OAAQ,EAAIC,EAAS,IACxDtL,EAAK,UAAU,OAAOqL,EAAW,CAAC,EAAG7Q,CAAK,CAC9C,CACA,SAASwQ,GAAWhL,EAAMqH,EAAM7M,EAAOkE,EAAMkK,EAAOmC,EAAStJ,EAAO,CAClE,IAAI8J,EAAMC,EAAQC,EAAaC,EAAWC,EAC1C,GAAItE,IAAS,QAAS,OAAO6C,GAAMlK,EAAMxF,EAAOkE,CAAI,EACpD,GAAI2I,IAAS,YAAa,OAAOwC,GAAU7J,EAAMxF,EAAOkE,CAAI,EAC5D,GAAIlE,IAAUkE,EAAM,OAAOA,EAC3B,GAAI2I,IAAS,MACN0D,GAASvQ,EAAMwF,CAAI,UACfqH,EAAK,MAAM,EAAG,CAAC,IAAM,MAAO,CACrC,MAAM5J,EAAI4J,EAAK,MAAM,CAAC,EACtB3I,GAAQsB,EAAK,oBAAoBvC,EAAGiB,EAAM,OAAOA,GAAS,YAAcA,CAAI,EAC5ElE,GAASwF,EAAK,iBAAiBvC,EAAGjD,EAAO,OAAOA,GAAU,YAAcA,CAAK,CACjF,SAAa6M,EAAK,MAAM,EAAG,EAAE,IAAM,aAAc,CAC7C,MAAM5J,EAAI4J,EAAK,MAAM,EAAE,EACvB3I,GAAQsB,EAAK,oBAAoBvC,EAAGiB,EAAM,EAAI,EAC9ClE,GAASwF,EAAK,iBAAiBvC,EAAGjD,EAAO,EAAI,CACjD,SAAa6M,EAAK,MAAM,EAAG,CAAC,IAAM,KAAM,CACpC,MAAMrC,EAAOqC,EAAK,MAAM,CAAC,EAAE,YAAa,EAClCsC,EAAWpC,GAAgB,IAAIvC,CAAI,EACzC,GAAI,CAAC2E,GAAYjL,EAAM,CACrB,MAAMkN,EAAI,MAAM,QAAQlN,CAAI,EAAIA,EAAK,CAAC,EAAIA,EAC1CsB,EAAK,oBAAoBgF,EAAM4G,CAAC,CACtC,EACQjC,GAAYnP,KACdiP,GAAiBzJ,EAAMgF,EAAMxK,EAAOmP,CAAQ,EAC5CA,GAAYZ,GAAe,CAAC/D,CAAI,CAAC,EAEvC,SAAaqC,EAAK,MAAM,EAAG,CAAC,IAAM,QAC9B8B,GAAanJ,EAAMqH,EAAK,MAAM,CAAC,EAAG7M,CAAK,UAC9B6M,EAAK,MAAM,EAAG,CAAC,IAAM,QAC9BkC,GAAiBvJ,EAAMqH,EAAK,MAAM,CAAC,EAAG7M,CAAK,WAE1CmR,EAAYtE,EAAK,MAAM,EAAG,CAAC,IAAM,WACjCoE,EAAcxE,GAAgB,IAAII,CAAI,IACtC,CAACuB,KACE8C,EAAYtE,GAAaC,EAAMrH,EAAK,OAAO,KAAOwL,EAASxE,GAAW,IAAIK,CAAI,MACjFkE,EAAOvL,EAAK,SAAS,SAAS,GAAG,GAAK,OAAQyB,GAC/C,CACA,GAAIkK,EACFtE,EAAOA,EAAK,MAAM,CAAC,EACnBmE,EAAS,WACApC,GAAYpJ,CAAI,EAAG,OAAOxF,EACjC6M,IAAS,SAAWA,IAAS,YAAamC,GAAUxJ,EAAMxF,CAAK,EAC1D+Q,GAAQ,CAACC,GAAU,CAACC,EAAazL,EAAKmL,GAAe9D,CAAI,CAAC,EAAI7M,EAClEwF,EAAK0L,GAAarE,CAAI,EAAI7M,CACnC,KAAS,CACL,MAAMqR,EAAKjD,GAASvB,EAAK,QAAQ,GAAG,EAAI,IAAMI,GAAaJ,EAAK,MAAM,GAAG,EAAE,CAAC,CAAC,EACzEwE,EAAIxC,GAAerJ,EAAM6L,EAAIxE,EAAM7M,CAAK,EACvC2O,GAAanJ,EAAMkH,GAAQG,CAAI,GAAKA,EAAM7M,CAAK,CACxD,CACE,OAAOA,CACT,CACA,SAAS0O,GAAa,EAAG,CACvB,GAAInR,GAAa,UAAYA,GAAa,QACpCA,GAAa,OAAO,KAAK,CAAC,CAAC+T,EAAIC,CAAE,IAAMA,IAAO,CAAC,EAAG,OAExD,IAAI/L,EAAO,EAAE,OACb,MAAM/C,EAAM,KAAK,EAAE,IAAI,GACjB+O,EAAY,EAAE,OACdC,EAAmB,EAAE,cACrBC,EAAW1R,GACf,OAAO,eAAe,EAAG,SAAU,CACjC,aAAc,GACd,MAAAA,CACN,CAAK,EACG2R,EAAa,IAAM,CACvB,MAAMzC,EAAU1J,EAAK/C,CAAG,EACxB,GAAIyM,GAAW,CAAC1J,EAAK,SAAU,CAC7B,MAAMoM,EAAOpM,EAAK,GAAG/C,CAAG,MAAM,EAE9B,GADAmP,IAAS,OAAY1C,EAAQ,KAAK1J,EAAMoM,EAAM,CAAC,EAAI1C,EAAQ,KAAK1J,EAAM,CAAC,EACnE,EAAE,aAAc,MAC1B,CACI,OAAAA,EAAK,MACH,OAAOA,EAAK,MAAS,UACrB,CAACA,EAAK,KAAK,QACXA,EAAK,SAAS,EAAE,MAAM,GACtBkM,EAASlM,EAAK,IAAI,EACb,EACR,EACKqM,EAAa,IAAM,CACvB,KAAOF,EAAU,IAAOnM,EAAOA,EAAK,QAAUA,EAAK,YAAcA,EAAK,OAAM,CAC7E,EAQD,GAPA,OAAO,eAAe,EAAG,gBAAiB,CACxC,aAAc,GACd,KAAM,CACJ,OAAOA,GAAQ,QACrB,CACA,CAAG,EACGjI,GAAa,UAAY,CAACA,GAAa,OAAMA,GAAa,KAAO,KAAK,KAAO,IAC7E,EAAE,aAAc,CAClB,MAAMuU,EAAO,EAAE,aAAc,EAC7BJ,EAASI,EAAK,CAAC,CAAC,EAChB,QAASpO,EAAI,EAAGA,EAAIoO,EAAK,OAAS,IAChCtM,EAAOsM,EAAKpO,CAAC,EACT,EAACiO,EAAU,GAFoBjO,IAAK,CAGxC,GAAI8B,EAAK,OAAQ,CACfA,EAAOA,EAAK,OACZqM,EAAY,EACZ,KACR,CACM,GAAIrM,EAAK,aAAeiM,EACtB,KAER,CACG,MAAMI,EAAY,EACnBH,EAASF,CAAS,CACpB,CACA,SAASzB,GAAiBI,EAAQnQ,EAAOP,EAAS4Q,EAAQ0B,EAAa,CACrE,MAAMC,EAAYpD,GAAYuB,CAAM,EACpC,GAAI6B,EAAW,CACb,CAACvS,IAAYA,EAAU,CAAC,GAAG0Q,EAAO,UAAU,GAC5C,IAAI8B,EAAU,CAAE,EAChB,QAASvO,EAAI,EAAGA,EAAIjE,EAAQ,OAAQiE,IAAK,CACvC,MAAM8B,EAAO/F,EAAQiE,CAAC,EAClB8B,EAAK,WAAa,GAAKA,EAAK,KAAK,MAAM,EAAG,CAAC,IAAM,KAAMA,EAAK,OAAQ,EACnEyM,EAAQ,KAAKzM,CAAI,CAC5B,CACI/F,EAAUwS,CACd,CACE,KAAO,OAAOxS,GAAY,YAAYA,EAAUA,EAAS,EACzD,GAAIO,IAAUP,EAAS,OAAOA,EAC9B,MAAM8E,EAAI,OAAOvE,EACfkS,EAAQ7B,IAAW,OAErB,GADAF,EAAU+B,GAASzS,EAAQ,CAAC,GAAKA,EAAQ,CAAC,EAAE,YAAe0Q,EACvD5L,IAAM,UAAYA,IAAM,SAAU,CAEpC,GADIyN,GACAzN,IAAM,WACRvE,EAAQA,EAAM,SAAU,EACpBA,IAAUP,GAAS,OAAOA,EAEhC,GAAIyS,EAAO,CACT,IAAI1M,EAAO/F,EAAQ,CAAC,EAChB+F,GAAQA,EAAK,WAAa,EAC5BA,EAAK,OAASxF,IAAUwF,EAAK,KAAOxF,GAC/BwF,EAAO,SAAS,eAAexF,CAAK,EAC3CP,EAAU0S,GAAchC,EAAQ1Q,EAAS4Q,EAAQ7K,CAAI,CAC3D,MACU/F,IAAY,IAAM,OAAOA,GAAY,SACvCA,EAAU0Q,EAAO,WAAW,KAAOnQ,EAC9BP,EAAU0Q,EAAO,YAAcnQ,CAEzC,SAAUA,GAAS,MAAQuE,IAAM,UAAW,CAC3C,GAAIyN,EAAW,OAAOvS,EACtBA,EAAU0S,GAAchC,EAAQ1Q,EAAS4Q,CAAM,CACnD,KAAS,IAAI9L,IAAM,WACf,OAAA7D,GAAmB,IAAM,CACvB,IAAIO,EAAIjB,EAAO,EACf,KAAO,OAAOiB,GAAM,YAAYA,EAAIA,EAAG,EACvCxB,EAAUsQ,GAAiBI,EAAQlP,EAAGxB,EAAS4Q,CAAM,CAC3D,CAAK,EACM,IAAM5Q,EACR,GAAI,MAAM,QAAQO,CAAK,EAAG,CAC/B,MAAMoS,EAAQ,CAAE,EACVC,EAAe5S,GAAW,MAAM,QAAQA,CAAO,EACrD,GAAI6S,GAAuBF,EAAOpS,EAAOP,EAASsS,CAAW,EAC3D,OAAArR,GAAmB,IAAOjB,EAAUsQ,GAAiBI,EAAQiC,EAAO3S,EAAS4Q,EAAQ,EAAI,CAAE,EACpF,IAAM5Q,EAEf,GAAIuS,EAAW,CACb,GAAI,CAACI,EAAM,OAAQ,OAAO3S,EAC1B,GAAI4Q,IAAW,OAAW,OAAQ5Q,EAAU,CAAC,GAAG0Q,EAAO,UAAU,EACjE,IAAI3K,EAAO4M,EAAM,CAAC,EAClB,GAAI5M,EAAK,aAAe2K,EAAQ,OAAO1Q,EACvC,MAAM8S,EAAQ,CAAC/M,CAAI,EACnB,MAAQA,EAAOA,EAAK,eAAiB6K,GAAQkC,EAAM,KAAK/M,CAAI,EAC5D,OAAQ/F,EAAU8S,CACxB,CACI,GAAIH,EAAM,SAAW,GAEnB,GADA3S,EAAU0S,GAAchC,EAAQ1Q,EAAS4Q,CAAM,EAC3C6B,EAAO,OAAOzS,OACT4S,EACL5S,EAAQ,SAAW,EACrB+S,GAAYrC,EAAQiC,EAAO/B,CAAM,EAC5BnD,GAAgBiD,EAAQ1Q,EAAS2S,CAAK,GAE7C3S,GAAW0S,GAAchC,CAAM,EAC/BqC,GAAYrC,EAAQiC,CAAK,GAE3B3S,EAAU2S,CACd,SAAapS,EAAM,SAAU,CACzB,GAAIgS,GAAahS,EAAM,WAAY,OAAQP,EAAUyS,EAAQ,CAAClS,CAAK,EAAIA,EACvE,GAAI,MAAM,QAAQP,CAAO,EAAG,CAC1B,GAAIyS,EAAO,OAAQzS,EAAU0S,GAAchC,EAAQ1Q,EAAS4Q,EAAQrQ,CAAK,EACzEmS,GAAchC,EAAQ1Q,EAAS,KAAMO,CAAK,CAChD,MAAeP,GAAW,MAAQA,IAAY,IAAM,CAAC0Q,EAAO,WACtDA,EAAO,YAAYnQ,CAAK,EACnBmQ,EAAO,aAAanQ,EAAOmQ,EAAO,UAAU,EACnD1Q,EAAUO,CACd,EACE,OAAOP,CACT,CACA,SAAS6S,GAAuBG,EAAYL,EAAO3S,EAASiT,EAAQ,CAClE,IAAI5Q,EAAU,GACd,QAAS4B,EAAI,EAAG/F,EAAMyU,EAAM,OAAQ1O,EAAI/F,EAAK+F,IAAK,CAChD,IAAI4E,EAAO8J,EAAM1O,CAAC,EAChBQ,EAAOzE,GAAWA,EAAQgT,EAAW,MAAM,EAC3ClO,EACF,GAAI,EAAA+D,GAAQ,MAAQA,IAAS,IAAQA,IAAS,IACzC,IAAK/D,EAAI,OAAO+D,IAAU,UAAYA,EAAK,SAC9CmK,EAAW,KAAKnK,CAAI,UACX,MAAM,QAAQA,CAAI,EAC3BxG,EAAUwQ,GAAuBG,EAAYnK,EAAMpE,CAAI,GAAKpC,UACnDyC,IAAM,WACf,GAAImO,EAAQ,CACV,KAAO,OAAOpK,GAAS,YAAYA,EAAOA,EAAM,EAChDxG,EACEwQ,GACEG,EACA,MAAM,QAAQnK,CAAI,EAAIA,EAAO,CAACA,CAAI,EAClC,MAAM,QAAQpE,CAAI,EAAIA,EAAO,CAACA,CAAI,CAC9C,GAAepC,CACf,MACQ2Q,EAAW,KAAKnK,CAAI,EACpBxG,EAAU,OAEP,CACL,MAAM9B,EAAQ,OAAOsI,CAAI,EACrBpE,GAAQA,EAAK,WAAa,GAAKA,EAAK,OAASlE,EAAOyS,EAAW,KAAKvO,CAAI,EACvEuO,EAAW,KAAK,SAAS,eAAezS,CAAK,CAAC,CACzD,CACA,CACE,OAAO8B,CACT,CACA,SAAS0Q,GAAYrC,EAAQiC,EAAO/B,EAAS,KAAM,CACjD,QAAS3M,EAAI,EAAG/F,EAAMyU,EAAM,OAAQ1O,EAAI/F,EAAK+F,IAAKyM,EAAO,aAAaiC,EAAM1O,CAAC,EAAG2M,CAAM,CACxF,CACA,SAAS8B,GAAchC,EAAQ1Q,EAAS4Q,EAAQsC,EAAa,CAC3D,GAAItC,IAAW,OAAW,OAAQF,EAAO,YAAc,GACvD,MAAM3K,EAAOmN,GAAe,SAAS,eAAe,EAAE,EACtD,GAAIlT,EAAQ,OAAQ,CAClB,IAAImT,EAAW,GACf,QAASlP,EAAIjE,EAAQ,OAAS,EAAGiE,GAAK,EAAGA,IAAK,CAC5C,MAAM4N,EAAK7R,EAAQiE,CAAC,EACpB,GAAI8B,IAAS8L,EAAI,CACf,MAAMuB,EAAWvB,EAAG,aAAenB,EAC/B,CAACyC,GAAY,CAAClP,EAChBmP,EAAW1C,EAAO,aAAa3K,EAAM8L,CAAE,EAAInB,EAAO,aAAa3K,EAAM6K,CAAM,EACxEwC,GAAYvB,EAAG,OAAQ,CAC7B,MAAMsB,EAAW,EACxB,CACG,MAAMzC,EAAO,aAAa3K,EAAM6K,CAAM,EACvC,MAAO,CAAC7K,CAAI,CACd,CAUA,SAASkL,IAAkB,CACzB,OAAOnT,GAAa,iBAAkB,CACxC,CAoCA,MAAMuV,GAAW,GAEXC,GAAgB,6BACtB,SAASC,GAAclG,EAASsB,EAAQ,GAAO,CAC7C,OAAOA,EAAQ,SAAS,gBAAgB2E,GAAejG,CAAO,EAAI,SAAS,cAAcA,CAAO,CAClG,CAKA,SAASmG,GAAOhM,EAAO,CACrB,KAAM,CAAE,UAAAiM,CAAS,EAAKjM,EACpBoJ,EAAS,SAAS,eAAe,EAAE,EACnC8C,EAAQ,IAAMlM,EAAM,OAAS,SAAS,KACtC1H,EAAQwE,GAAU,EACpB,IAAIqP,EACApB,EAAY,CAAC,CAACzU,GAAa,QAC/B,OAAAoD,GACE,IAAM,CACAqR,IAAWjO,GAAQ,EAAG,KAAOiO,EAAY,IAC7CoB,IAAYA,EAAUpP,GAAazE,EAAO,IAAMwB,EAAW,IAAMkG,EAAM,QAAQ,CAAC,GAChF,MAAMqK,EAAK6B,EAAO,EAClB,GAAI7B,aAAc,gBAAiB,CACjC,KAAM,CAAC+B,EAAOC,CAAQ,EAAIvT,EAAa,EAAK,EACtCwT,EAAU,IAAMD,EAAS,EAAI,EACnCnU,GAAWgI,GAAW6G,EAAOsD,EAAI,IAAQ+B,IAAsBlM,IAAZiM,IAAwB,IAAI,CAAC,EAChFvP,GAAU0P,CAAO,CACzB,KAAa,CACL,MAAMC,EAAYR,GAAc/L,EAAM,MAAQ,IAAM,MAAOA,EAAM,KAAK,EACpEwM,EACEP,GAAaM,EAAU,aACnBA,EAAU,aAAa,CACrB,KAAM,MACP,CAAA,EACDA,EACR,OAAO,eAAeA,EAAW,SAAU,CACzC,KAAM,CACJ,OAAOnD,EAAO,UACf,EACD,aAAc,EACxB,CAAS,EACDrC,EAAOyF,EAAYL,CAAO,EAC1B9B,EAAG,YAAYkC,CAAS,EACxBvM,EAAM,KAAOA,EAAM,IAAIuM,CAAS,EAChC3P,GAAU,IAAMyN,EAAG,YAAYkC,CAAS,CAAC,CACjD,CACK,EACD,OACA,CACE,OAAQ,CAACxB,CACf,CACG,EACM3B,CACT,CACA,SAASqD,GAAcC,EAAW1M,EAAO,CACvC,MAAM2M,EAAS7S,EAAW4S,CAAS,EACnC,OAAO5S,EAAW,IAAM,CACtB,MAAM4S,EAAYC,EAAQ,EAC1B,OAAQ,OAAOD,EAAS,CACtB,IAAK,WACH,OAAO/T,GAAQ,IAAM+T,EAAU1M,CAAK,CAAC,EACvC,IAAK,SACH,MAAM4M,EAAQ7G,GAAY,IAAI2G,CAAS,EACjCrC,EAAK/T,GAAa,QAAUkT,GAAc,EAAKuC,GAAcW,EAAWE,CAAK,EACnFjE,OAAAA,GAAO0B,EAAIrK,EAAO4M,CAAK,EAChBvC,CACf,CACA,CAAG,CACH,CACA,SAASwC,GAAQ7M,EAAO,CACtB,KAAM,CAAA,CAAG8M,CAAM,EAAIlK,GAAW5C,EAAO,CAAC,WAAW,CAAC,EAClD,OAAOyM,GAAc,IAAMzM,EAAM,UAAW8M,CAAM,CACpD,CC3oCA,SAASC,GAAMC,EAAK,CAChB,IAAIlK,EAAGmK,EAAGC,EAAM,GAChB,GAAI,OAAOF,GAAQ,UAAY,OAAOA,GAAQ,SAC1CE,GAAOF,UAEF,OAAOA,GAAQ,SACpB,GAAI,MAAM,QAAQA,CAAG,EACjB,IAAKlK,EAAI,EAAGA,EAAIkK,EAAI,OAAQlK,IACpBkK,EAAIlK,CAAC,IACAmK,EAAIF,GAAMC,EAAIlK,CAAC,CAAC,KACjBoK,IAAQA,GAAO,KACfA,GAAOD,OAMnB,KAAKnK,KAAKkK,EACFA,EAAIlK,CAAC,IACLoK,IAAQA,GAAO,KACfA,GAAOpK,GAKvB,OAAOoK,CACX,CACe,SAAQtD,MAAKuD,EAAS,CAEjC,QADI1Q,EAAI,EAAG2Q,EAAKC,EAAGH,EAAM,GAClBzQ,EAAI0Q,EAAQ,SACVC,EAAMD,EAAQ1Q,GAAG,KACb4Q,EAAIN,GAAMK,CAAG,KACdF,IAAQA,GAAO,KACfA,GAAOG,GAInB,OAAOH,CACX,CCnCO,SAASI,GAAiBnD,EAAGnO,EAAG,CAEnC,IAAIuR,EAAuB,GAC3B,MAAMC,EAAYxR,EAAE,gBACpB,OAAAA,EAAE,gBAAkB,IAAM,CACtBuR,EAAuB,GACvBC,GACR,EAEQ,OAAOrD,GAAM,WACbA,EAAEnO,CAAC,EAEE,MAAM,QAAQmO,CAAC,GACpBA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAGnO,CAAC,EAEhBA,EAAE,gBAAkBwR,EACb,CACH,qBAAAD,CACR,CACA,CACO,SAASE,GAAepD,EAAIpN,EAAMyQ,EAAK,CAC1C,MAAMnS,EAAI0B,EAAOA,EAAK,MAAM,GAAG,EAAI,GAC7B4C,EAAI6N,EAAMA,EAAI,MAAM,GAAG,EAAI,GACjCrD,EAAG,WAAW,OAAO,GAAG9O,EAAE,OAAQtC,GAAM4G,EAAE,QAAQ5G,CAAC,IAAM,EAAE,CAAC,EAC5DoR,EAAG,WAAW,IAAI,GAAGxK,EAAE,OAAQ5G,GAAMsC,EAAE,QAAQtC,CAAC,IAAM,EAAE,CAAC,CAC7D,CC1BO,SAAS0U,GAAcC,EAAM,CAChC,MAAO,CAACA,GAAQA,EAAKC,KAAW,IAAA,GACpC,CACA,MAAMC,GAAiB,CACnBC,SAAU,CACd,EACO,SAASC,GAAehR,EAAG,CACxBhE,MAAAA,EAAUmJ,EAAW2L,GAAgB9Q,CAAC,EACtC6I,EAAU/L,EAAW,IAClBd,EAAQ6M,QAQN7M,EAAQ6M,QAPP7M,EAAQ4U,MAAQ,MAAQ5U,EAAQ0J,QAAU,MAAQ1J,EAAQiV,KAAO,KAC1D,IAGA,QAIlB,EACKC,EAAO,CACT,IAAIrI,SAAU,CACV,OAAOA,EAAQ,CAAA,CAEvB,EACIA,GAAAA,MAAc,SACd,MAAO,CACH,CACI,IAAIsI,MAAO,CACP,OAAOnV,EAAQmV,MAAQ,QAC3B,EACA,IAAIC,UAAW,CACX,OAAOpV,EAAQoV,QAAAA,GAGvBF,CAAI,EAGNG,MAAAA,EAAkBvU,EAAW,IAAiBwU,GAAA,CAIhD,IAHItV,EAAQoV,UAAavI,EAAQ,IAAM,KAAO8H,GAAc3U,EAAQ4U,IAAI,IACpEU,EAAMC,eAAe,EAErBvV,EAAQoV,SAAU,CAClBE,EAAME,gBAAgB,EACtB,MAAA,CAEaxV,GAAAA,EAAQyV,QAASH,CAAK,CAAA,CAC1C,EACKI,EAAoB5U,EAAW,IAAiBwU,GAAA,CAC9CA,EAAM9S,MAAQ,MACd8S,EAAMC,eAAe,EACLF,EAAA,EAAEC,CAAwD,EAC9E,CACH,EACKK,EAAUA,IACR9I,MAAc,IAEP7M,EAAQoV,SAAWQ,OAAY5V,EAAQ4U,MAAQ,IAEnD5U,EAAQ4U,KAEnB,MAAO,CACH,CACIiB,KAAM,SAGNT,SAAUQ,OACV,IAAIb,UAAW,CACJ/U,OAAAA,EAAQoV,SAAWQ,OAAY5V,EAAQ+U,QAClD,EACA,IAAIH,MAAO,CACP,OAAOe,EAAQ,CACnB,EACA,IAAIjM,QAAS,CACT,OAAOmD,EAAQ,IAAM,IAAM7M,EAAQ0J,OAASkM,MAChD,EACA,GAAI,iBAAkB,CAClB,OAAQ5V,EAAQoV,SAAuBpV,EAAQoV,SAApBQ,MAC/B,EACA,IAAIX,KAAM,CACN,OAAOpI,EAAQ,IAAM,IAAM7M,EAAQiV,IAAMW,MAC7C,EACA,IAAIH,SAAU,CACV,OAAOJ,EAAgB,CAC3B,EACA,IAAIS,WAAY,CACZ,OAAOJ,EAAkB,CAAA,GAGjCR,CAAI,CAEZ,CACO,MAAMa,GAAoB/O,GAAA,CACvB,KAAA,CAACgP,EAAOC,CAAU,EAAIrM,GAAW5C,EAAO,CAAC,IAAI,CAAC,EAC5CA,EAAM+N,SACd,KAAM,CAACmB,EAAa,CAAErJ,QAAAA,CAAS,CAAA,EAAImI,GAAe,CAC9CnI,QAASmJ,EAAMG,GACf,GAAGF,CAAAA,CACN,EACD,OAAAG,EAAQvC,GAAOwC,EAAKJ,EAAgBC,EAAW,CAAExC,UAAW7G,CAAAA,CAAO,CAAA,CACvE,kBCnGO,SAAS8H,GAAcC,EAAM,CAChC,MAAO,CAACA,GAAQA,EAAKC,KAAW,IAAA,GACpC,CAKO,MAAMyB,GAAoBtP,GAAA,CACvB,KAAA,CAACgP,EAAOC,CAAU,EAAIrM,GAAW5C,EAAO,CAAC,WAAW,CAAC,EACrD,CAACkP,CAAW,EAAIlB,GAAe7L,EAAW,CAAE0D,QAAS,GAAI,EAAGoJ,CAAU,CAAC,EACvEM,EAAwBvT,GAAA,CACTkT,GAAAA,EAAYJ,UAAW9S,CAAC,EACxBgT,GAAAA,EAAMF,UAAW9S,CAAC,CACvC,EACQ2R,OAAAA,GAAc3N,EAAM4N,IAAI,GAAK,CAAC5N,EAAM6O,MAAS7O,EAAM6O,OAAS,UAAQ,IAAA,CAAA,IAAAW,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAAH,EAAWJ,EAAgBC,EAAW,CAAA,UAAaK,CAAAA,CAAa,EAAA,GAAA,EAAA,EAAAC,CAAA,GAAA,GAAA,IAAA,CAAA,IAAAE,EAAAD,GAAA,EAAAC,OAAAA,GAAAA,EAAAL,EAAeJ,EAAU,CAAA,IAAEH,WAAS,CAAA,OAAEE,EAAMF,SAAAA,CAAS,CAAA,EAAA,GAAA,EAAA,EAAAY,CAAAA,GAAI,CACzM,EClBA,IAAIC,GAAU,SAAS,UAAU,KAAK,KAAK,SAAS,UAAU,KAAM,CAAE,EAAC,KAAK,EAQ7D,SAASC,GAAI9I,EAAS+I,EAAU,CAC7C,OAAOF,GAAQ7I,EAAQ,iBAAiB+I,CAAQ,CAAC,CACnD,CCVA,MAAAC,GAAe,CAAC,EAAE,OAAO,OAAW,KAAe,OAAO,UAAY,OAAO,SAAS,eCE/E,IAAIC,GAAmB,GACnBC,GAAgB,GAE3B,GAAI,CACF,IAAIhX,GAAU,CACZ,IAAI,SAAU,CACZ,OAAO+W,GAAmB,EAC3B,EAED,IAAI,MAAO,CAET,OAAOC,GAAgBD,GAAmB,EAChD,CAEG,EAEGD,KACF,OAAO,iBAAiB,OAAQ9W,GAASA,EAAO,EAChD,OAAO,oBAAoB,OAAQA,GAAS,EAAI,EAEpD,MAAY,CAEZ,CAUA,SAASgP,GAAiBzJ,EAAM0R,EAAWhI,EAASjP,EAAS,CAC3D,GAAIA,GAAW,OAAOA,GAAY,WAAa,CAACgX,GAAe,CAC7D,IAAIE,EAAOlX,EAAQ,KACfmX,EAAUnX,EAAQ,QAClBoX,EAAiBnI,EAEjB,CAAC+H,IAAiBE,IACpBE,EAAiBnI,EAAQ,QAAU,SAASoI,EAAY/B,EAAO,CAC7D,KAAK,oBAAoB2B,EAAWI,EAAaF,CAAO,EACxDlI,EAAQ,KAAK,KAAMqG,CAAK,CACzB,EAEDrG,EAAQ,OAASmI,GAGnB7R,EAAK,iBAAiB0R,EAAWG,EAAgBL,GAAmB/W,EAAUmX,CAAO,CACzF,CAEE5R,EAAK,iBAAiB0R,EAAWhI,EAASjP,CAAO,CACnD,CCpDO,MAAMsX,GAAkB1S,GAAc,IAAI,ECC3C2S,GAAO,OAAO,WAAW,EAC7BC,GAAQ,OAAO,YAAY,EAC3BC,GAAO,OAAO,WAAW,EACzBC,GAAQ,OAAO,YAAY,EAC7B,SAASC,GAAO5X,EAAO,CACrB,IAAIwC,EAAIxC,EAAM9B,EAAM,EACpB,GAAI,CAACsE,IACH,OAAO,eAAexC,EAAO9B,GAAQ,CACnC,MAAQsE,EAAI,IAAI,MAAMxC,EAAO6X,EAAY,CAC/C,CAAK,EACG,CAAC,MAAM,QAAQ7X,CAAK,GAAG,CACzB,MAAMsJ,EAAO,OAAO,KAAKtJ,CAAK,EAC5B0J,EAAO,OAAO,0BAA0B1J,CAAK,EAC/C,QAAS,EAAI,EAAGsE,EAAIgF,EAAK,OAAQ,EAAIhF,EAAG,IAAK,CAC3C,MAAMuI,EAAOvD,EAAK,CAAC,EACfI,EAAKmD,CAAI,EAAE,KACb,OAAO,eAAe7M,EAAO6M,EAAM,CACjC,WAAYnD,EAAKmD,CAAI,EAAE,WACvB,IAAKnD,EAAKmD,CAAI,EAAE,IAAI,KAAKrK,CAAC,CACtC,CAAW,CAEX,CACA,CAEE,OAAOA,CACT,CACA,SAASsV,GAAYC,EAAK,CACxB,IAAIC,EACJ,OACED,GAAO,MACP,OAAOA,GAAQ,WACdA,EAAI7Z,EAAM,GACT,EAAE8Z,EAAQ,OAAO,eAAeD,CAAG,IACnCC,IAAU,OAAO,WACjB,MAAM,QAAQD,CAAG,EAEvB,CACA,SAASrF,GAAOpK,EAAMG,EAAM,IAAI,IAAO,CACrC,IAAI9E,EAAQsU,EAAWhX,EAAG4L,EAC1B,GAAKlJ,EAAS2E,GAAQ,MAAQA,EAAKkP,EAAI,EAAI,OAAO7T,EAClD,GAAI,CAACmU,GAAYxP,CAAI,GAAKG,EAAI,IAAIH,CAAI,EAAG,OAAOA,EAChD,GAAI,MAAM,QAAQA,CAAI,EAAG,CACnB,OAAO,SAASA,CAAI,EAAGA,EAAOA,EAAK,MAAM,CAAC,EACzCG,EAAI,IAAIH,CAAI,EACjB,QAAS5E,EAAI,EAAGY,EAAIgE,EAAK,OAAQ5E,EAAIY,EAAGZ,IACtCzC,EAAIqH,EAAK5E,CAAC,GACLuU,EAAYvF,GAAOzR,EAAGwH,CAAG,KAAOxH,IAAGqH,EAAK5E,CAAC,EAAIuU,EAExD,KAAS,CACD,OAAO,SAAS3P,CAAI,EAAGA,EAAO,OAAO,OAAO,CAAE,EAAEA,CAAI,EACnDG,EAAI,IAAIH,CAAI,EACjB,MAAMgB,EAAO,OAAO,KAAKhB,CAAI,EAC3BoB,EAAO,OAAO,0BAA0BpB,CAAI,EAC9C,QAAS5E,EAAI,EAAGY,EAAIgF,EAAK,OAAQ5F,EAAIY,EAAGZ,IACtCmJ,EAAOvD,EAAK5F,CAAC,EACT,CAAAgG,EAAKmD,CAAI,EAAE,MACf5L,EAAIqH,EAAKuE,CAAI,GACRoL,EAAYvF,GAAOzR,EAAGwH,CAAG,KAAOxH,IAAGqH,EAAKuE,CAAI,EAAIoL,GAE3D,CACE,OAAO3P,CACT,CACA,SAAS4P,GAASvO,EAAQwO,EAAQ,CAChC,IAAI5F,EAAQ5I,EAAOwO,CAAM,EACzB,OAAK5F,GACH,OAAO,eAAe5I,EAAQwO,EAAQ,CACpC,MAAQ5F,EAAQ,OAAO,OAAO,IAAI,CACxC,CAAK,EACIA,CACT,CACA,SAAS6F,GAAQ7F,EAAOxJ,EAAU/I,EAAO,CACvC,GAAIuS,EAAMxJ,CAAQ,EAAG,OAAOwJ,EAAMxJ,CAAQ,EAC1C,KAAM,CAAC,EAAGN,CAAG,EAAI1I,EAAaC,EAAO,CACnC,OAAQ,GACR,SAAU,EACd,CAAG,EACD,SAAE,EAAIyI,EACE8J,EAAMxJ,CAAQ,EAAI,CAC5B,CACA,SAASsP,GAAkB1O,EAAQZ,EAAU,CAC3C,MAAMW,EAAO,QAAQ,yBAAyBC,EAAQZ,CAAQ,EAC9D,MAAI,CAACW,GAAQA,EAAK,KAAO,CAACA,EAAK,cAAgBX,IAAa7K,IAAU6K,IAAa0O,KAEnF,OAAO/N,EAAK,MACZ,OAAOA,EAAK,SACZA,EAAK,IAAM,IAAMC,EAAOzL,EAAM,EAAE6K,CAAQ,GACjCW,CACT,CACA,SAAS4O,GAAU3O,EAAQ,CACzB7F,GAAW,GAAMsU,GAAQF,GAASvO,EAAQ8N,EAAK,EAAGE,EAAK,EAAG,CAC5D,CACA,SAASY,GAAQ5O,EAAQ,CACvB,OAAA2O,GAAU3O,CAAM,EACT,QAAQ,QAAQA,CAAM,CAC/B,CACA,MAAMkO,GAAe,CACnB,IAAIlO,EAAQZ,EAAUC,EAAU,CAC9B,GAAID,IAAayO,GAAM,OAAO7N,EAC9B,GAAIZ,IAAa7K,GAAQ,OAAO8K,EAChC,GAAID,IAAa3K,GACf,OAAAka,GAAU3O,CAAM,EACTX,EAET,MAAMuJ,EAAQ2F,GAASvO,EAAQ8N,EAAK,EAC9Be,EAAUjG,EAAMxJ,CAAQ,EAC9B,IAAI/I,EAAQwY,EAAUA,EAAO,EAAK7O,EAAOZ,CAAQ,EACjD,GAAIA,IAAa0O,IAAS1O,IAAa2O,IAAQ3O,IAAa,YAAa,OAAO/I,EAChF,GAAI,CAACwY,EAAS,CACZ,MAAM9O,EAAO,OAAO,yBAAyBC,EAAQZ,CAAQ,EAE3DjF,GAAa,IACZ,OAAO9D,GAAU,YAAc2J,EAAO,eAAeZ,CAAQ,IAC9D,EAAEW,GAAQA,EAAK,OAEf1J,EAAQoY,GAAQ7F,EAAOxJ,EAAU/I,CAAK,EAAG,EACjD,CACI,OAAO8X,GAAY9X,CAAK,EAAI4X,GAAO5X,CAAK,EAAIA,CAC7C,EACD,IAAI2J,EAAQZ,EAAU,CACpB,OACEA,IAAayO,IACbzO,IAAa7K,IACb6K,IAAa3K,IACb2K,IAAa0O,IACb1O,IAAa2O,IACb3O,IAAa,YAEN,IACTjF,GAAW,GAAMsU,GAAQF,GAASvO,EAAQ+N,EAAI,EAAG3O,CAAQ,EAAG,EACrDA,KAAYY,EACpB,EACD,KAAM,CACJ,MAAO,EACR,EACD,gBAAiB,CACf,MAAO,EACR,EACD,QAAS4O,GACT,yBAA0BF,EAC5B,EACA,SAASI,GAAYpW,EAAO0G,EAAU/I,EAAO0Y,EAAW,GAAO,CAC7D,GAAI,CAACA,GAAYrW,EAAM0G,CAAQ,IAAM/I,EAAO,OAC5C,MAAMkE,EAAO7B,EAAM0G,CAAQ,EACzBpL,EAAM0E,EAAM,OACVrC,IAAU,QACZ,OAAOqC,EAAM0G,CAAQ,EACjB1G,EAAMqV,EAAI,GAAKrV,EAAMqV,EAAI,EAAE3O,CAAQ,GAAK7E,IAAS,QAAW7B,EAAMqV,EAAI,EAAE3O,CAAQ,EAAE,EAAG,IAEzF1G,EAAM0G,CAAQ,EAAI/I,EACdqC,EAAMqV,EAAI,GAAKrV,EAAMqV,EAAI,EAAE3O,CAAQ,GAAK7E,IAAS,QAAW7B,EAAMqV,EAAI,EAAE3O,CAAQ,EAAE,EAAG,GAE3F,IAAIwJ,EAAQ2F,GAAS7V,EAAOoV,EAAK,EAC/BjS,EAEF,IADKA,EAAO4S,GAAQ7F,EAAOxJ,EAAU7E,CAAI,IAAIsB,EAAK,EAAE,IAAMxF,CAAK,EAC3D,MAAM,QAAQqC,CAAK,GAAKA,EAAM,SAAW1E,EAAK,CAChD,QAAS+F,EAAIrB,EAAM,OAAQqB,EAAI/F,EAAK+F,KAAM8B,EAAO+M,EAAM7O,CAAC,IAAM8B,EAAK,EAAG,GACrEA,EAAO4S,GAAQ7F,EAAO,SAAU5U,CAAG,IAAM6H,EAAK,EAAEnD,EAAM,MAAM,CACjE,EACGmD,EAAO+M,EAAMoF,EAAK,IAAMnS,EAAK,EAAG,CACnC,CACA,SAASmT,GAAetW,EAAOrC,EAAO,CACpC,MAAMsJ,EAAO,OAAO,KAAKtJ,CAAK,EAC9B,QAAS0D,EAAI,EAAGA,EAAI4F,EAAK,OAAQ5F,GAAK,EAAG,CACvC,MAAMjB,EAAM6G,EAAK5F,CAAC,EAClB+U,GAAYpW,EAAOI,EAAKzC,EAAMyC,CAAG,CAAC,CACtC,CACA,CACA,SAASmW,GAAYnZ,EAASoZ,EAAM,CAGlC,GAFI,OAAOA,GAAS,aAAYA,EAAOA,EAAKpZ,CAAO,GACnDoZ,EAAOnG,GAAOmG,CAAI,EACd,MAAM,QAAQA,CAAI,EAAG,CACvB,GAAIpZ,IAAYoZ,EAAM,OACtB,IAAInV,EAAI,EACN/F,EAAMkb,EAAK,OACb,KAAOnV,EAAI/F,EAAK+F,IAAK,CACnB,MAAM1D,EAAQ6Y,EAAKnV,CAAC,EAChBjE,EAAQiE,CAAC,IAAM1D,GAAOyY,GAAYhZ,EAASiE,EAAG1D,CAAK,CAC7D,CACIyY,GAAYhZ,EAAS,SAAU9B,CAAG,CACtC,MAASgb,GAAelZ,EAASoZ,CAAI,CACrC,CACA,SAASC,GAAWrZ,EAASqS,EAAMiH,EAAY,CAAA,EAAI,CACjD,IAAIC,EACF9U,EAAOzE,EACT,GAAIqS,EAAK,OAAS,EAAG,CACnBkH,EAAOlH,EAAK,MAAO,EACnB,MAAMmH,EAAW,OAAOD,EACtB3V,EAAU,MAAM,QAAQ5D,CAAO,EACjC,GAAI,MAAM,QAAQuZ,CAAI,EAAG,CACvB,QAAStV,EAAI,EAAGA,EAAIsV,EAAK,OAAQtV,IAC/BoV,GAAWrZ,EAAS,CAACuZ,EAAKtV,CAAC,CAAC,EAAE,OAAOoO,CAAI,EAAGiH,CAAS,EAEvD,MACN,SAAe1V,GAAW4V,IAAa,WAAY,CAC7C,QAASvV,EAAI,EAAGA,EAAIjE,EAAQ,OAAQiE,IAC9BsV,EAAKvZ,EAAQiE,CAAC,EAAGA,CAAC,GAAGoV,GAAWrZ,EAAS,CAACiE,CAAC,EAAE,OAAOoO,CAAI,EAAGiH,CAAS,EAE1E,MACN,SAAe1V,GAAW4V,IAAa,SAAU,CAC3C,KAAM,CAAE,KAAAC,EAAO,EAAG,GAAAC,EAAK1Z,EAAQ,OAAS,EAAG,GAAA2Z,EAAK,CAAC,EAAKJ,EACtD,QAAStV,EAAIwV,EAAMxV,GAAKyV,EAAIzV,GAAK0V,EAC/BN,GAAWrZ,EAAS,CAACiE,CAAC,EAAE,OAAOoO,CAAI,EAAGiH,CAAS,EAEjD,MACN,SAAejH,EAAK,OAAS,EAAG,CAC1BgH,GAAWrZ,EAAQuZ,CAAI,EAAGlH,EAAM,CAACkH,CAAI,EAAE,OAAOD,CAAS,CAAC,EACxD,MACN,CACI7U,EAAOzE,EAAQuZ,CAAI,EACnBD,EAAY,CAACC,CAAI,EAAE,OAAOD,CAAS,CACvC,CACE,IAAI/Y,EAAQ8R,EAAK,CAAC,EACd,OAAO9R,GAAU,aACnBA,EAAQA,EAAMkE,EAAM6U,CAAS,EACzB/Y,IAAUkE,IAEZ8U,IAAS,QAAahZ,GAAS,OACnCA,EAAQ0S,GAAO1S,CAAK,EAChBgZ,IAAS,QAAclB,GAAY5T,CAAI,GAAK4T,GAAY9X,CAAK,GAAK,CAAC,MAAM,QAAQA,CAAK,EACxF2Y,GAAezU,EAAMlE,CAAK,EACrByY,GAAYhZ,EAASuZ,EAAMhZ,CAAK,EACzC,CACA,SAASqZ,MAAe,CAACpN,EAAOhM,CAAO,EAAG,CACxC,MAAMqZ,EAAiB5G,GAAOzG,GAAS,EAAE,EACnC5I,EAAU,MAAM,QAAQiW,CAAc,EACtCC,EAAe3B,GAAO0B,CAAc,EAC1C,SAASE,KAAYC,EAAM,CACzBvW,GAAM,IAAM,CACVG,GAAWoW,EAAK,SAAW,EACvBb,GAAYU,EAAgBG,EAAK,CAAC,CAAC,EACnCX,GAAWQ,EAAgBG,CAAI,CACzC,CAAK,CACL,CACE,MAAO,CAACF,EAAcC,CAAQ,CAChC,CAEA,SAASE,GAAgB/P,EAAQZ,EAAU,CACzC,MAAMW,EAAO,QAAQ,yBAAyBC,EAAQZ,CAAQ,EAC9D,MACE,CAACW,GACDA,EAAK,KACLA,EAAK,KACL,CAACA,EAAK,cACNX,IAAa7K,IACb6K,IAAa0O,KAGf,OAAO/N,EAAK,MACZ,OAAOA,EAAK,SACZA,EAAK,IAAM,IAAMC,EAAOzL,EAAM,EAAE6K,CAAQ,EACxCW,EAAK,IAAMzI,GAAM0I,EAAOzL,EAAM,EAAE6K,CAAQ,EAAI9H,GACrCyI,CACT,CACA,MAAMiQ,GAAa,CACjB,IAAIhQ,EAAQZ,EAAUC,EAAU,CAC9B,GAAID,IAAayO,GAAM,OAAO7N,EAC9B,GAAIZ,IAAa7K,GAAQ,OAAO8K,EAChC,GAAID,IAAa3K,GACf,OAAAka,GAAU3O,CAAM,EACTX,EAET,MAAMuJ,EAAQ2F,GAASvO,EAAQ8N,EAAK,EAC9Be,EAAUjG,EAAMxJ,CAAQ,EAC9B,IAAI/I,EAAQwY,EAAUA,EAAO,EAAK7O,EAAOZ,CAAQ,EACjD,GAAIA,IAAa0O,IAAS1O,IAAa2O,IAAQ3O,IAAa,YAAa,OAAO/I,EAChF,GAAI,CAACwY,EAAS,CACZ,MAAM9O,EAAO,OAAO,yBAAyBC,EAAQZ,CAAQ,EACvD6Q,EAAa,OAAO5Z,GAAU,WACpC,GAAI8D,GAAa,IAAK,CAAC8V,GAAcjQ,EAAO,eAAeZ,CAAQ,IAAM,EAAEW,GAAQA,EAAK,KACtF1J,EAAQoY,GAAQ7F,EAAOxJ,EAAU/I,CAAK,EAAG,UAClCA,GAAS,MAAQ4Z,GAAc5Z,IAAU,MAAM,UAAU+I,CAAQ,EACxE,MAAO,IAAI0Q,IAASvW,GAAM,IAAM,MAAM,UAAU6F,CAAQ,EAAE,MAAMC,EAAUyQ,CAAI,CAAC,CAEvF,CACI,OAAO3B,GAAY9X,CAAK,EAAI6Z,GAAK7Z,CAAK,EAAIA,CAC3C,EACD,IAAI2J,EAAQZ,EAAU,CACpB,OACEA,IAAayO,IACbzO,IAAa7K,IACb6K,IAAa3K,IACb2K,IAAa0O,IACb1O,IAAa2O,IACb3O,IAAa,YAEN,IACTjF,GAAW,GAAMsU,GAAQF,GAASvO,EAAQ+N,EAAI,EAAG3O,CAAQ,EAAG,EACrDA,KAAYY,EACpB,EACD,IAAIA,EAAQZ,EAAU/I,EAAO,CAC3B,OAAAkD,GAAM,IAAMuV,GAAY9O,EAAQZ,EAAU2J,GAAO1S,CAAK,CAAC,CAAC,EACjD,EACR,EACD,eAAe2J,EAAQZ,EAAU,CAC/B,OAAA7F,GAAM,IAAMuV,GAAY9O,EAAQZ,EAAU,OAAW,EAAI,CAAC,EACnD,EACR,EACD,QAASwP,GACT,yBAA0BmB,EAC5B,EACA,SAASG,GAAK7Z,EAAO,CACnB,IAAIwC,EAAIxC,EAAM9B,EAAM,EACpB,GAAI,CAACsE,EAAG,CACN,OAAO,eAAexC,EAAO9B,GAAQ,CACnC,MAAQsE,EAAI,IAAI,MAAMxC,EAAO2Z,EAAU,CAC7C,CAAK,EACD,MAAMrQ,EAAO,OAAO,KAAKtJ,CAAK,EAC5B0J,EAAO,OAAO,0BAA0B1J,CAAK,EACzCgY,EAAQ,OAAO,eAAehY,CAAK,EACnC8Z,EACJ9B,IAAU,MACVhY,IAAU,MACV,OAAOA,GAAU,UACjB,CAAC,MAAM,QAAQA,CAAK,GACpBgY,IAAU,OAAO,UACnB,GAAI8B,EAAS,CACX,MAAMC,EAAc,OAAO,0BAA0B/B,CAAK,EAC1D1O,EAAK,KAAK,GAAG,OAAO,KAAKyQ,CAAW,CAAC,EACrC,OAAO,OAAOrQ,EAAMqQ,CAAW,CACrC,CACI,QAASrW,EAAI,EAAGY,EAAIgF,EAAK,OAAQ5F,EAAIY,EAAGZ,IAAK,CAC3C,MAAMmJ,EAAOvD,EAAK5F,CAAC,EACnB,GAAI,EAAAoW,GAAWjN,IAAS,eACxB,IAAInD,EAAKmD,CAAI,EAAE,IAAK,CAClB,MAAMmN,EAAMtQ,EAAKmD,CAAI,EAAE,IAAI,KAAKrK,CAAC,EACjC,OAAO,eAAexC,EAAO6M,EAAM,CACjC,IAAAmN,EACA,aAAc,EACxB,CAAS,CACT,CACM,GAAItQ,EAAKmD,CAAI,EAAE,IAAK,CAClB,MAAMoN,EAAKvQ,EAAKmD,CAAI,EAAE,IAEtB,OAAO,eAAe7M,EAAO6M,EAAM,CACjC,IAFM5L,GAAKiC,GAAM,IAAM+W,EAAG,KAAKzX,EAAGvB,CAAC,CAAC,EAGpC,aAAc,EACxB,CAAS,CACT,EACA,CACA,CACE,OAAOuB,CACT,CACA,SAAS0X,GAAc7X,EAAOpC,EAAS,CACrC,MAAMqZ,EAAiB5G,GAAOrQ,GAAS,EAAE,EAEzC,OADqBwX,GAAKP,CAAc,CAE1C,CAKA,MAAMa,GAAQ,OAAO,YAAY,EACjC,SAASC,GAAWzQ,EAAQwG,EAAQpH,EAAUsR,EAAO5X,EAAK,CACxD,MAAM6X,EAAWnK,EAAOpH,CAAQ,EAChC,GAAIY,IAAW2Q,EAAU,OACzB,MAAMjX,EAAU,MAAM,QAAQsG,CAAM,EACpC,GACEZ,IAAaoR,KACZ,CAACrC,GAAYnO,CAAM,GAClB,CAACmO,GAAYwC,CAAQ,GACrBjX,IAAY,MAAM,QAAQiX,CAAQ,GACjC7X,GAAOkH,EAAOlH,CAAG,IAAM6X,EAAS7X,CAAG,GACtC,CACAgW,GAAYtI,EAAQpH,EAAUY,CAAM,EACpC,MACJ,CACE,GAAItG,EAAS,CACX,GACEsG,EAAO,QACP2Q,EAAS,SACR,CAACD,GAAU5X,GAAOkH,EAAO,CAAC,GAAKA,EAAO,CAAC,EAAElH,CAAG,GAAK,MAClD,CACA,IAAIiB,EAAGmE,EAAGM,EAAOC,EAAKC,EAAQC,EAAMP,EAAgBwS,EACpD,IACEpS,EAAQ,EAAGC,EAAM,KAAK,IAAIkS,EAAS,OAAQ3Q,EAAO,MAAM,EACxDxB,EAAQC,IACPkS,EAASnS,CAAK,IAAMwB,EAAOxB,CAAK,GAC9B1F,GAAO6X,EAASnS,CAAK,GAAKwB,EAAOxB,CAAK,GAAKmS,EAASnS,CAAK,EAAE1F,CAAG,IAAMkH,EAAOxB,CAAK,EAAE1F,CAAG,GACxF0F,IAEAiS,GAAWzQ,EAAOxB,CAAK,EAAGmS,EAAUnS,EAAOkS,EAAO5X,CAAG,EAEvD,MAAMuF,EAAO,IAAI,MAAM2B,EAAO,MAAM,EAClC7B,EAAa,IAAI,IACnB,IACEM,EAAMkS,EAAS,OAAS,EAAGjS,EAASsB,EAAO,OAAS,EACpDvB,GAAOD,GACPE,GAAUF,IACTmS,EAASlS,CAAG,IAAMuB,EAAOtB,CAAM,GAC7B5F,GAAO6X,EAASlS,CAAG,GAAKuB,EAAOtB,CAAM,GAAKiS,EAASlS,CAAG,EAAE3F,CAAG,IAAMkH,EAAOtB,CAAM,EAAE5F,CAAG,GACtF2F,IAAOC,IAEPL,EAAKK,CAAM,EAAIiS,EAASlS,CAAG,EAE7B,GAAID,EAAQE,GAAUF,EAAQC,EAAK,CACjC,IAAKP,EAAIM,EAAON,GAAKQ,EAAQR,IAAK4Q,GAAY6B,EAAUzS,EAAG8B,EAAO9B,CAAC,CAAC,EACpE,KAAOA,EAAI8B,EAAO,OAAQ9B,IACxB4Q,GAAY6B,EAAUzS,EAAGG,EAAKH,CAAC,CAAC,EAChCuS,GAAWzQ,EAAO9B,CAAC,EAAGyS,EAAUzS,EAAGwS,EAAO5X,CAAG,EAE3C6X,EAAS,OAAS3Q,EAAO,QAAQ8O,GAAY6B,EAAU,SAAU3Q,EAAO,MAAM,EAClF,MACR,CAEM,IADA5B,EAAiB,IAAI,MAAMM,EAAS,CAAC,EAChCR,EAAIQ,EAAQR,GAAKM,EAAON,IAC3BS,EAAOqB,EAAO9B,CAAC,EACf0S,EAAS9X,GAAO6F,EAAOA,EAAK7F,CAAG,EAAI6F,EACnC5E,EAAIoE,EAAW,IAAIyS,CAAM,EACzBxS,EAAeF,CAAC,EAAInE,IAAM,OAAY,GAAKA,EAC3CoE,EAAW,IAAIyS,EAAQ1S,CAAC,EAE1B,IAAKnE,EAAIyE,EAAOzE,GAAK0E,EAAK1E,IACxB4E,EAAOgS,EAAS5W,CAAC,EACjB6W,EAAS9X,GAAO6F,EAAOA,EAAK7F,CAAG,EAAI6F,EACnCT,EAAIC,EAAW,IAAIyS,CAAM,EACrB1S,IAAM,QAAaA,IAAM,KAC3BG,EAAKH,CAAC,EAAIyS,EAAS5W,CAAC,EACpBmE,EAAIE,EAAeF,CAAC,EACpBC,EAAW,IAAIyS,EAAQ1S,CAAC,GAG5B,IAAKA,EAAIM,EAAON,EAAI8B,EAAO,OAAQ9B,IAC7BA,KAAKG,GACPyQ,GAAY6B,EAAUzS,EAAGG,EAAKH,CAAC,CAAC,EAChCuS,GAAWzQ,EAAO9B,CAAC,EAAGyS,EAAUzS,EAAGwS,EAAO5X,CAAG,GACxCgW,GAAY6B,EAAUzS,EAAG8B,EAAO9B,CAAC,CAAC,CAEjD,KACM,SAASnE,EAAI,EAAG/F,EAAMgM,EAAO,OAAQjG,EAAI/F,EAAK+F,IAC5C0W,GAAWzQ,EAAOjG,CAAC,EAAG4W,EAAU5W,EAAG2W,EAAO5X,CAAG,EAG7C6X,EAAS,OAAS3Q,EAAO,QAAQ8O,GAAY6B,EAAU,SAAU3Q,EAAO,MAAM,EAClF,MACJ,CACE,MAAM6Q,EAAa,OAAO,KAAK7Q,CAAM,EACrC,QAASjG,EAAI,EAAG/F,EAAM6c,EAAW,OAAQ9W,EAAI/F,EAAK+F,IAChD0W,GAAWzQ,EAAO6Q,EAAW9W,CAAC,CAAC,EAAG4W,EAAUE,EAAW9W,CAAC,EAAG2W,EAAO5X,CAAG,EAEvE,MAAMgY,EAAe,OAAO,KAAKH,CAAQ,EACzC,QAAS5W,EAAI,EAAG/F,EAAM8c,EAAa,OAAQ/W,EAAI/F,EAAK+F,IAC9CiG,EAAO8Q,EAAa/W,CAAC,CAAC,IAAM,QAAW+U,GAAY6B,EAAUG,EAAa/W,CAAC,EAAG,MAAS,CAE/F,CACA,SAASgX,GAAU1a,EAAOC,EAAU,GAAI,CACtC,KAAM,CAAE,MAAAoa,EAAO,IAAA5X,EAAM,IAAM,EAAGxC,EAC5BgB,EAAIyR,GAAO1S,CAAK,EAClB,OAAOqC,GAAS,CACd,GAAI,CAACyV,GAAYzV,CAAK,GAAK,CAACyV,GAAY7W,CAAC,EAAG,OAAOA,EACnD,MAAMuD,EAAM4V,GACVnZ,EACA,CACE,CAACkZ,EAAK,EAAG9X,CACV,EACD8X,GACAE,EACA5X,CACD,EACD,OAAO+B,IAAQ,OAAYnC,EAAQmC,CACpC,CACH,CC9cO,IAAI2B,GAAM,MACNwU,GAAS,SACTC,GAAQ,QACRC,GAAO,OACPC,GAAO,OACPC,GAAiB,CAAC5U,GAAKwU,GAAQC,GAAOC,EAAI,EAC1C1S,GAAQ,QACRC,GAAM,MACN4S,GAAkB,kBAClBC,GAAW,WACXC,GAAS,SACTC,GAAY,YACZC,GAAmCL,GAAe,OAAO,SAAUM,EAAKC,EAAW,CAC5F,OAAOD,EAAI,OAAO,CAACC,EAAY,IAAMnT,GAAOmT,EAAY,IAAMlT,EAAG,CAAC,CACpE,EAAG,EAAE,EACMmT,GAA0B,CAAA,EAAG,OAAOR,GAAgB,CAACD,EAAI,CAAC,EAAE,OAAO,SAAUO,EAAKC,EAAW,CACtG,OAAOD,EAAI,OAAO,CAACC,EAAWA,EAAY,IAAMnT,GAAOmT,EAAY,IAAMlT,EAAG,CAAC,CAC/E,EAAG,CAAE,CAAA,EAEMoT,GAAa,aACb5Y,GAAO,OACP6Y,GAAY,YAEZC,GAAa,aACbC,GAAO,OACPC,GAAY,YAEZC,GAAc,cACdC,GAAQ,QACRC,GAAa,aACbC,GAAiB,CAACR,GAAY5Y,GAAM6Y,GAAWC,GAAYC,GAAMC,GAAWC,GAAaC,GAAOC,EAAU,EC9BtG,SAASE,GAAYlO,EAAS,CAC3C,OAAOA,GAAWA,EAAQ,UAAY,IAAI,YAAW,EAAK,IAC5D,CCFe,SAASmO,GAAU1W,EAAM,CACtC,GAAIA,GAAQ,KACV,OAAO,OAGT,GAAIA,EAAK,SAAU,IAAK,kBAAmB,CACzC,IAAI2W,EAAgB3W,EAAK,cACzB,OAAO2W,GAAgBA,EAAc,aAAe,MACxD,CAEE,OAAO3W,CACT,CCTA,SAAS4W,GAAU5W,EAAM,CACvB,IAAI6W,EAAaH,GAAU1W,CAAI,EAAE,QACjC,OAAOA,aAAgB6W,GAAc7W,aAAgB,OACvD,CAEA,SAAS8W,GAAc9W,EAAM,CAC3B,IAAI6W,EAAaH,GAAU1W,CAAI,EAAE,YACjC,OAAOA,aAAgB6W,GAAc7W,aAAgB,WACvD,CAEA,SAAS+W,GAAa/W,EAAM,CAE1B,GAAI,OAAO,WAAe,IACxB,MAAO,GAGT,IAAI6W,EAAaH,GAAU1W,CAAI,EAAE,WACjC,OAAOA,aAAgB6W,GAAc7W,aAAgB,UACvD,CChBA,SAASgX,GAAYC,EAAM,CACzB,IAAIpa,EAAQoa,EAAK,MACjB,OAAO,KAAKpa,EAAM,QAAQ,EAAE,QAAQ,SAAUmI,EAAM,CAClD,IAAIkF,EAAQrN,EAAM,OAAOmI,CAAI,GAAK,CAAE,EAChCkS,EAAara,EAAM,WAAWmI,CAAI,GAAK,CAAE,EACzCuD,EAAU1L,EAAM,SAASmI,CAAI,EAE7B,CAAC8R,GAAcvO,CAAO,GAAK,CAACkO,GAAYlO,CAAO,IAOnD,OAAO,OAAOA,EAAQ,MAAO2B,CAAK,EAClC,OAAO,KAAKgN,CAAU,EAAE,QAAQ,SAAUlS,EAAM,CAC9C,IAAIxK,EAAQ0c,EAAWlS,CAAI,EAEvBxK,IAAU,GACZ+N,EAAQ,gBAAgBvD,CAAI,EAE5BuD,EAAQ,aAAavD,EAAMxK,IAAU,GAAO,GAAKA,CAAK,CAE9D,CAAK,EACL,CAAG,CACH,CAEA,SAAS2c,GAAOC,EAAO,CACrB,IAAIva,EAAQua,EAAM,MACdC,EAAgB,CAClB,OAAQ,CACN,SAAUxa,EAAM,QAAQ,SACxB,KAAM,IACN,IAAK,IACL,OAAQ,GACT,EACD,MAAO,CACL,SAAU,UACX,EACD,UAAW,CAAA,CACZ,EACD,cAAO,OAAOA,EAAM,SAAS,OAAO,MAAOwa,EAAc,MAAM,EAC/Dxa,EAAM,OAASwa,EAEXxa,EAAM,SAAS,OACjB,OAAO,OAAOA,EAAM,SAAS,MAAM,MAAOwa,EAAc,KAAK,EAGxD,UAAY,CACjB,OAAO,KAAKxa,EAAM,QAAQ,EAAE,QAAQ,SAAUmI,EAAM,CAClD,IAAIuD,EAAU1L,EAAM,SAASmI,CAAI,EAC7BkS,EAAara,EAAM,WAAWmI,CAAI,GAAK,CAAE,EACzCsS,EAAkB,OAAO,KAAKza,EAAM,OAAO,eAAemI,CAAI,EAAInI,EAAM,OAAOmI,CAAI,EAAIqS,EAAcrS,CAAI,CAAC,EAE1GkF,EAAQoN,EAAgB,OAAO,SAAUpN,EAAO3G,EAAU,CAC5D,OAAA2G,EAAM3G,CAAQ,EAAI,GACX2G,CACR,EAAE,CAAE,CAAA,EAED,CAAC4M,GAAcvO,CAAO,GAAK,CAACkO,GAAYlO,CAAO,IAInD,OAAO,OAAOA,EAAQ,MAAO2B,CAAK,EAClC,OAAO,KAAKgN,CAAU,EAAE,QAAQ,SAAUK,EAAW,CACnDhP,EAAQ,gBAAgBgP,CAAS,CACzC,CAAO,EACP,CAAK,CACF,CACH,CAGA,MAAeC,GAAA,CACb,KAAM,cACN,QAAS,GACT,MAAO,QACP,GAAIR,GACJ,OAAQG,GACR,SAAU,CAAC,eAAe,CAC5B,EClFe,SAASM,GAAiB3B,EAAW,CAClD,OAAOA,EAAU,MAAM,GAAG,EAAE,CAAC,CAC/B,CCHO,IAAI4B,GAAM,KAAK,IACXC,GAAM,KAAK,IACXC,GAAQ,KAAK,MCFT,SAASC,IAAc,CACpC,IAAIC,EAAS,UAAU,cAEvB,OAAIA,GAAU,MAAQA,EAAO,QAAU,MAAM,QAAQA,EAAO,MAAM,EACzDA,EAAO,OAAO,IAAI,SAAUhV,EAAM,CACvC,OAAOA,EAAK,MAAQ,IAAMA,EAAK,OACrC,CAAK,EAAE,KAAK,GAAG,EAGN,UAAU,SACnB,CCTe,SAASiV,IAAmB,CACzC,MAAO,CAAC,iCAAiC,KAAKF,IAAa,CAC7D,CCCe,SAASG,GAAsBzP,EAAS0P,EAAcC,EAAiB,CAChFD,IAAiB,SACnBA,EAAe,IAGbC,IAAoB,SACtBA,EAAkB,IAGpB,IAAIC,EAAa5P,EAAQ,sBAAuB,EAC5C6P,EAAS,EACTC,EAAS,EAETJ,GAAgBnB,GAAcvO,CAAO,IACvC6P,EAAS7P,EAAQ,YAAc,GAAIqP,GAAMO,EAAW,KAAK,EAAI5P,EAAQ,aAAe,EACpF8P,EAAS9P,EAAQ,aAAe,GAAIqP,GAAMO,EAAW,MAAM,EAAI5P,EAAQ,cAAgB,GAGzF,IAAI0O,EAAOL,GAAUrO,CAAO,EAAImO,GAAUnO,CAAO,EAAI,OACjD+P,EAAiBrB,EAAK,eAEtBsB,EAAmB,CAACR,GAAgB,GAAMG,EAC1CpJ,GAAKqJ,EAAW,MAAQI,GAAoBD,EAAiBA,EAAe,WAAa,IAAMF,EAC/F1J,GAAKyJ,EAAW,KAAOI,GAAoBD,EAAiBA,EAAe,UAAY,IAAMD,EAC7FG,EAAQL,EAAW,MAAQC,EAC3BK,EAASN,EAAW,OAASE,EACjC,MAAO,CACL,MAAOG,EACP,OAAQC,EACR,IAAK/J,EACL,MAAOI,EAAI0J,EACX,OAAQ9J,EAAI+J,EACZ,KAAM3J,EACN,EAAGA,EACH,EAAGJ,CACJ,CACH,CCrCe,SAASgK,GAAcnQ,EAAS,CAC7C,IAAI4P,EAAaH,GAAsBzP,CAAO,EAG1CiQ,EAAQjQ,EAAQ,YAChBkQ,EAASlQ,EAAQ,aAErB,OAAI,KAAK,IAAI4P,EAAW,MAAQK,CAAK,GAAK,IACxCA,EAAQL,EAAW,OAGjB,KAAK,IAAIA,EAAW,OAASM,CAAM,GAAK,IAC1CA,EAASN,EAAW,QAGf,CACL,EAAG5P,EAAQ,WACX,EAAGA,EAAQ,UACX,MAAOiQ,EACP,OAAQC,CACT,CACH,CCvBe,SAASE,GAAShO,EAAQpF,EAAO,CAC9C,IAAIqT,EAAWrT,EAAM,aAAeA,EAAM,YAAW,EAErD,GAAIoF,EAAO,SAASpF,CAAK,EACvB,MAAO,GAEJ,GAAIqT,GAAY7B,GAAa6B,CAAQ,EAAG,CACzC,IAAIvF,EAAO9N,EAEX,EAAG,CACD,GAAI8N,GAAQ1I,EAAO,WAAW0I,CAAI,EAChC,MAAO,GAITA,EAAOA,EAAK,YAAcA,EAAK,IACvC,OAAeA,EACV,CAGH,MAAO,EACT,CCrBe,SAASwF,GAAiBtQ,EAAS,CAChD,OAAOmO,GAAUnO,CAAO,EAAE,iBAAiBA,CAAO,CACpD,CCFe,SAASuQ,GAAevQ,EAAS,CAC9C,MAAO,CAAC,QAAS,KAAM,IAAI,EAAE,QAAQkO,GAAYlO,CAAO,CAAC,GAAK,CAChE,CCFe,SAASwQ,GAAmBxQ,EAAS,CAElD,QAASqO,GAAUrO,CAAO,EAAIA,EAAQ,cACtCA,EAAQ,WAAa,OAAO,UAAU,eACxC,CCFe,SAASyQ,GAAczQ,EAAS,CAC7C,OAAIkO,GAAYlO,CAAO,IAAM,OACpBA,EAMPA,EAAQ,cACRA,EAAQ,aACRwO,GAAaxO,CAAO,EAAIA,EAAQ,KAAO,OAEvCwQ,GAAmBxQ,CAAO,CAG9B,CCVA,SAAS0Q,GAAoB1Q,EAAS,CACpC,MAAI,CAACuO,GAAcvO,CAAO,GAC1BsQ,GAAiBtQ,CAAO,EAAE,WAAa,QAC9B,KAGFA,EAAQ,YACjB,CAIA,SAAS2Q,GAAmB3Q,EAAS,CACnC,IAAI4Q,EAAY,WAAW,KAAKtB,GAAW,CAAE,EACzCuB,EAAO,WAAW,KAAKvB,GAAW,CAAE,EAExC,GAAIuB,GAAQtC,GAAcvO,CAAO,EAAG,CAElC,IAAI8Q,EAAaR,GAAiBtQ,CAAO,EAEzC,GAAI8Q,EAAW,WAAa,QAC1B,OAAO,IAEb,CAEE,IAAIC,EAAcN,GAAczQ,CAAO,EAMvC,IAJIwO,GAAauC,CAAW,IAC1BA,EAAcA,EAAY,MAGrBxC,GAAcwC,CAAW,GAAK,CAAC,OAAQ,MAAM,EAAE,QAAQ7C,GAAY6C,CAAW,CAAC,EAAI,GAAG,CAC3F,IAAIC,EAAMV,GAAiBS,CAAW,EAItC,GAAIC,EAAI,YAAc,QAAUA,EAAI,cAAgB,QAAUA,EAAI,UAAY,SAAW,CAAC,YAAa,aAAa,EAAE,QAAQA,EAAI,UAAU,IAAM,IAAMJ,GAAaI,EAAI,aAAe,UAAYJ,GAAaI,EAAI,QAAUA,EAAI,SAAW,OAC5O,OAAOD,EAEPA,EAAcA,EAAY,UAEhC,CAEE,OAAO,IACT,CAIe,SAASE,GAAgBjR,EAAS,CAI/C,QAHIkR,EAAS/C,GAAUnO,CAAO,EAC1BmR,EAAeT,GAAoB1Q,CAAO,EAEvCmR,GAAgBZ,GAAeY,CAAY,GAAKb,GAAiBa,CAAY,EAAE,WAAa,UACjGA,EAAeT,GAAoBS,CAAY,EAGjD,OAAIA,IAAiBjD,GAAYiD,CAAY,IAAM,QAAUjD,GAAYiD,CAAY,IAAM,QAAUb,GAAiBa,CAAY,EAAE,WAAa,UACxID,EAGFC,GAAgBR,GAAmB3Q,CAAO,GAAKkR,CACxD,CCpEe,SAASE,GAAyB7D,EAAW,CAC1D,MAAO,CAAC,MAAO,QAAQ,EAAE,QAAQA,CAAS,GAAK,EAAI,IAAM,GAC3D,CCDO,SAAS8D,GAAOjC,EAAKnd,EAAOkd,EAAK,CACtC,OAAOmC,GAAQlC,EAAKmC,GAAQtf,EAAOkd,CAAG,CAAC,CACzC,CACO,SAASqC,GAAepC,EAAKnd,EAAOkd,EAAK,CAC9C,IAAIjc,EAAIme,GAAOjC,EAAKnd,EAAOkd,CAAG,EAC9B,OAAOjc,EAAIic,EAAMA,EAAMjc,CACzB,CCPe,SAASue,IAAqB,CAC3C,MAAO,CACL,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,CACP,CACH,CCNe,SAASC,GAAmBC,EAAe,CACxD,OAAO,OAAO,OAAO,CAAE,EAAEF,GAAkB,EAAIE,CAAa,CAC9D,CCHe,SAASC,GAAgB3f,EAAOsJ,EAAM,CACnD,OAAOA,EAAK,OAAO,SAAUsW,EAASnd,EAAK,CACzC,OAAAmd,EAAQnd,CAAG,EAAIzC,EACR4f,CACR,EAAE,EAAE,CACP,CCKA,IAAIC,GAAkB,SAAyBC,EAASzd,EAAO,CAC7D,OAAAyd,EAAU,OAAOA,GAAY,WAAaA,EAAQ,OAAO,OAAO,CAAA,EAAIzd,EAAM,MAAO,CAC/E,UAAWA,EAAM,SAClB,CAAA,CAAC,EAAIyd,EACCL,GAAmB,OAAOK,GAAY,SAAWA,EAAUH,GAAgBG,EAAS/E,EAAc,CAAC,CAC5G,EAEA,SAASgF,GAAMtD,EAAM,CACnB,IAAIuD,EAEA3d,EAAQoa,EAAK,MACbjS,EAAOiS,EAAK,KACZxc,EAAUwc,EAAK,QACfwD,EAAe5d,EAAM,SAAS,MAC9B6d,EAAgB7d,EAAM,cAAc,cACpC8d,EAAgBlD,GAAiB5a,EAAM,SAAS,EAChD+d,EAAOjB,GAAyBgB,CAAa,EAC7CE,EAAa,CAACxF,GAAMD,EAAK,EAAE,QAAQuF,CAAa,GAAK,EACrDxiB,EAAM0iB,EAAa,SAAW,QAElC,GAAI,GAACJ,GAAgB,CAACC,GAItB,KAAIR,EAAgBG,GAAgB5f,EAAQ,QAASoC,CAAK,EACtDie,EAAYpC,GAAc+B,CAAY,EACtCM,EAAUH,IAAS,IAAMja,GAAM0U,GAC/B2F,EAAUJ,IAAS,IAAMzF,GAASC,GAClC6F,EAAUpe,EAAM,MAAM,UAAU1E,CAAG,EAAI0E,EAAM,MAAM,UAAU+d,CAAI,EAAIF,EAAcE,CAAI,EAAI/d,EAAM,MAAM,OAAO1E,CAAG,EACjH+iB,EAAYR,EAAcE,CAAI,EAAI/d,EAAM,MAAM,UAAU+d,CAAI,EAC5DO,EAAoB3B,GAAgBiB,CAAY,EAChDW,EAAaD,EAAoBP,IAAS,IAAMO,EAAkB,cAAgB,EAAIA,EAAkB,aAAe,EAAI,EAC3HE,EAAoBJ,EAAU,EAAIC,EAAY,EAG9CvD,EAAMuC,EAAca,CAAO,EAC3BrD,EAAM0D,EAAaN,EAAU3iB,CAAG,EAAI+hB,EAAcc,CAAO,EACzDM,EAASF,EAAa,EAAIN,EAAU3iB,CAAG,EAAI,EAAIkjB,EAC/CE,EAAS3B,GAAOjC,EAAK2D,EAAQ5D,CAAG,EAEhC8D,EAAWZ,EACf/d,EAAM,cAAcmI,CAAI,GAAKwV,EAAwB,CAAE,EAAEA,EAAsBgB,CAAQ,EAAID,EAAQf,EAAsB,aAAee,EAASD,EAAQd,GAC3J,CAEA,SAASrD,GAAOC,EAAO,CACrB,IAAIva,EAAQua,EAAM,MACd3c,EAAU2c,EAAM,QAChBqE,EAAmBhhB,EAAQ,QAC3BggB,EAAegB,IAAqB,OAAS,sBAAwBA,EAErEhB,GAAgB,OAKhB,OAAOA,GAAiB,WAC1BA,EAAe5d,EAAM,SAAS,OAAO,cAAc4d,CAAY,EAE3D,CAACA,IAKF9B,GAAS9b,EAAM,SAAS,OAAQ4d,CAAY,IAIjD5d,EAAM,SAAS,MAAQ4d,GACzB,CAGA,MAAeiB,GAAA,CACb,KAAM,QACN,QAAS,GACT,MAAO,OACP,GAAInB,GACJ,OAAQpD,GACR,SAAU,CAAC,eAAe,EAC1B,iBAAkB,CAAC,iBAAiB,CACtC,ECzFe,SAASwE,GAAa7F,EAAW,CAC9C,OAAOA,EAAU,MAAM,GAAG,EAAE,CAAC,CAC/B,CCOA,IAAI8F,GAAa,CACf,IAAK,OACL,MAAO,OACP,OAAQ,OACR,KAAM,MACR,EAIA,SAASC,GAAkB5E,EAAM6E,EAAK,CACpC,IAAIhN,EAAImI,EAAK,EACTvI,EAAIuI,EAAK,EACT8E,EAAMD,EAAI,kBAAoB,EAClC,MAAO,CACL,EAAGlE,GAAM9I,EAAIiN,CAAG,EAAIA,GAAO,EAC3B,EAAGnE,GAAMlJ,EAAIqN,CAAG,EAAIA,GAAO,CAC5B,CACH,CAEO,SAASC,GAAY5E,EAAO,CACjC,IAAI6E,EAEAvG,EAAS0B,EAAM,OACf8E,EAAa9E,EAAM,WACnBtB,EAAYsB,EAAM,UAClB+E,EAAY/E,EAAM,UAClBgF,EAAUhF,EAAM,QAChBiF,EAAWjF,EAAM,SACjBkF,EAAkBlF,EAAM,gBACxBmF,EAAWnF,EAAM,SACjBoF,EAAepF,EAAM,aACrBqF,EAAUrF,EAAM,QAChBsF,EAAaN,EAAQ,EACrBtN,EAAI4N,IAAe,OAAS,EAAIA,EAChCC,EAAaP,EAAQ,EACrB1N,EAAIiO,IAAe,OAAS,EAAIA,EAEhCC,EAAQ,OAAOJ,GAAiB,WAAaA,EAAa,CAC5D,EAAG1N,EACH,EAAGJ,CACP,CAAG,EAAI,CACH,EAAGI,EACH,EAAGJ,CACJ,EAEDI,EAAI8N,EAAM,EACVlO,EAAIkO,EAAM,EACV,IAAIC,EAAOT,EAAQ,eAAe,GAAG,EACjCU,EAAOV,EAAQ,eAAe,GAAG,EACjCW,EAAQ1H,GACR2H,EAAQrc,GACRmb,EAAM,OAEV,GAAIS,EAAU,CACZ,IAAI7C,EAAeF,GAAgB9D,CAAM,EACrCuH,EAAa,eACbC,EAAY,cAchB,GAZIxD,IAAiBhD,GAAUhB,CAAM,IACnCgE,EAAeX,GAAmBrD,CAAM,EAEpCmD,GAAiBa,CAAY,EAAE,WAAa,UAAY2C,IAAa,aACvEY,EAAa,eACbC,EAAY,gBAKhBxD,EAAeA,EAEX5D,IAAcnV,KAAQmV,IAAcT,IAAQS,IAAcV,KAAU+G,IAAcvZ,GAAK,CACzFoa,EAAQ7H,GACR,IAAIgI,EAAUV,GAAW/C,IAAiBoC,GAAOA,EAAI,eAAiBA,EAAI,eAAe,OACzFpC,EAAauD,CAAU,EACvBvO,GAAKyO,EAAUjB,EAAW,OAC1BxN,GAAK4N,EAAkB,EAAI,EACjC,CAEI,GAAIxG,IAAcT,KAASS,IAAcnV,IAAOmV,IAAcX,KAAWgH,IAAcvZ,GAAK,CAC1Fma,EAAQ3H,GACR,IAAIgI,EAAUX,GAAW/C,IAAiBoC,GAAOA,EAAI,eAAiBA,EAAI,eAAe,MACzFpC,EAAawD,CAAS,EACtBpO,GAAKsO,EAAUlB,EAAW,MAC1BpN,GAAKwN,EAAkB,EAAI,EACjC,CACA,CAEE,IAAIe,EAAe,OAAO,OAAO,CAC/B,SAAUhB,CACd,EAAKE,GAAYX,EAAU,EAErB0B,EAAQd,IAAiB,GAAOX,GAAkB,CACpD,EAAG/M,EACH,EAAGJ,CACP,EAAKgI,GAAUhB,CAAM,CAAC,EAAI,CACtB,EAAG5G,EACH,EAAGJ,CACJ,EAKD,GAHAI,EAAIwO,EAAM,EACV5O,EAAI4O,EAAM,EAENhB,EAAiB,CACnB,IAAIiB,EAEJ,OAAO,OAAO,OAAO,CAAE,EAAEF,GAAeE,EAAiB,CAAE,EAAEA,EAAeP,CAAK,EAAIF,EAAO,IAAM,GAAIS,EAAeR,CAAK,EAAIF,EAAO,IAAM,GAAIU,EAAe,WAAazB,EAAI,kBAAoB,IAAM,EAAI,aAAehN,EAAI,OAASJ,EAAI,MAAQ,eAAiBI,EAAI,OAASJ,EAAI,SAAU6O,EAAgB,CACrT,CAEE,OAAO,OAAO,OAAO,CAAE,EAAEF,GAAepB,EAAkB,CAAE,EAAEA,EAAgBe,CAAK,EAAIF,EAAOpO,EAAI,KAAO,GAAIuN,EAAgBc,CAAK,EAAIF,EAAO/N,EAAI,KAAO,GAAImN,EAAgB,UAAY,GAAIA,EAAiB,CAC/M,CAEA,SAASuB,GAAcC,EAAO,CAC5B,IAAI5gB,EAAQ4gB,EAAM,MACdhjB,EAAUgjB,EAAM,QAChBC,EAAwBjjB,EAAQ,gBAChC6hB,EAAkBoB,IAA0B,OAAS,GAAOA,EAC5DC,EAAoBljB,EAAQ,SAC5B8hB,EAAWoB,IAAsB,OAAS,GAAOA,EACjDC,EAAwBnjB,EAAQ,aAChC+hB,EAAeoB,IAA0B,OAAS,GAAOA,EACzDP,EAAe,CACjB,UAAW5F,GAAiB5a,EAAM,SAAS,EAC3C,UAAW8e,GAAa9e,EAAM,SAAS,EACvC,OAAQA,EAAM,SAAS,OACvB,WAAYA,EAAM,MAAM,OACxB,gBAAiByf,EACjB,QAASzf,EAAM,QAAQ,WAAa,OACrC,EAEGA,EAAM,cAAc,eAAiB,OACvCA,EAAM,OAAO,OAAS,OAAO,OAAO,CAAA,EAAIA,EAAM,OAAO,OAAQmf,GAAY,OAAO,OAAO,CAAA,EAAIqB,EAAc,CACvG,QAASxgB,EAAM,cAAc,cAC7B,SAAUA,EAAM,QAAQ,SACxB,SAAU0f,EACV,aAAcC,CACf,CAAA,CAAC,CAAC,GAGD3f,EAAM,cAAc,OAAS,OAC/BA,EAAM,OAAO,MAAQ,OAAO,OAAO,CAAA,EAAIA,EAAM,OAAO,MAAOmf,GAAY,OAAO,OAAO,CAAA,EAAIqB,EAAc,CACrG,QAASxgB,EAAM,cAAc,MAC7B,SAAU,WACV,SAAU,GACV,aAAc2f,CACf,CAAA,CAAC,CAAC,GAGL3f,EAAM,WAAW,OAAS,OAAO,OAAO,GAAIA,EAAM,WAAW,OAAQ,CACnE,wBAAyBA,EAAM,SACnC,CAAG,CACH,CAGA,MAAeghB,GAAA,CACb,KAAM,gBACN,QAAS,GACT,MAAO,cACP,GAAIL,GACJ,KAAM,CAAA,CACR,ECtKA,IAAIM,GAAU,CACZ,QAAS,EACX,EAEA,SAAS3G,GAAOF,EAAM,CACpB,IAAIpa,EAAQoa,EAAK,MACb8G,EAAW9G,EAAK,SAChBxc,EAAUwc,EAAK,QACf+G,EAAkBvjB,EAAQ,OAC1BwjB,EAASD,IAAoB,OAAS,GAAOA,EAC7CE,EAAkBzjB,EAAQ,OAC1B0jB,EAASD,IAAoB,OAAS,GAAOA,EAC7CzE,EAAS/C,GAAU7Z,EAAM,SAAS,MAAM,EACxCuhB,EAAgB,GAAG,OAAOvhB,EAAM,cAAc,UAAWA,EAAM,cAAc,MAAM,EAEvF,OAAIohB,GACFG,EAAc,QAAQ,SAAUC,EAAc,CAC5CA,EAAa,iBAAiB,SAAUN,EAAS,OAAQD,EAAO,CACtE,CAAK,EAGCK,GACF1E,EAAO,iBAAiB,SAAUsE,EAAS,OAAQD,EAAO,EAGrD,UAAY,CACbG,GACFG,EAAc,QAAQ,SAAUC,EAAc,CAC5CA,EAAa,oBAAoB,SAAUN,EAAS,OAAQD,EAAO,CAC3E,CAAO,EAGCK,GACF1E,EAAO,oBAAoB,SAAUsE,EAAS,OAAQD,EAAO,CAEhE,CACH,CAGA,MAAeQ,GAAA,CACb,KAAM,iBACN,QAAS,GACT,MAAO,QACP,GAAI,UAAc,CAAE,EACpB,OAAQnH,GACR,KAAM,CAAA,CACR,EChDA,IAAIoH,GAAO,CACT,KAAM,QACN,MAAO,OACP,OAAQ,MACR,IAAK,QACP,EACe,SAASC,GAAqB1I,EAAW,CACtD,OAAOA,EAAU,QAAQ,yBAA0B,SAAU2I,EAAS,CACpE,OAAOF,GAAKE,CAAO,CACvB,CAAG,CACH,CCVA,IAAIF,GAAO,CACT,MAAO,MACP,IAAK,OACP,EACe,SAASG,GAA8B5I,EAAW,CAC/D,OAAOA,EAAU,QAAQ,aAAc,SAAU2I,EAAS,CACxD,OAAOF,GAAKE,CAAO,CACvB,CAAG,CACH,CCPe,SAASE,GAAgB3e,EAAM,CAC5C,IAAI8b,EAAMpF,GAAU1W,CAAI,EACpB4e,EAAa9C,EAAI,YACjB+C,EAAY/C,EAAI,YACpB,MAAO,CACL,WAAY8C,EACZ,UAAWC,CACZ,CACH,CCNe,SAASC,GAAoBvW,EAAS,CAQnD,OAAOyP,GAAsBe,GAAmBxQ,CAAO,CAAC,EAAE,KAAOoW,GAAgBpW,CAAO,EAAE,UAC5F,CCRe,SAASwW,GAAgBxW,EAASyW,EAAU,CACzD,IAAIlD,EAAMpF,GAAUnO,CAAO,EACvBG,EAAOqQ,GAAmBxQ,CAAO,EACjC+P,EAAiBwD,EAAI,eACrBtD,EAAQ9P,EAAK,YACb+P,EAAS/P,EAAK,aACdoG,EAAI,EACJJ,EAAI,EAER,GAAI4J,EAAgB,CAClBE,EAAQF,EAAe,MACvBG,EAASH,EAAe,OACxB,IAAI2G,EAAiBlH,GAAkB,GAEnCkH,GAAkB,CAACA,GAAkBD,IAAa,WACpDlQ,EAAIwJ,EAAe,WACnB5J,EAAI4J,EAAe,UAEzB,CAEE,MAAO,CACL,MAAOE,EACP,OAAQC,EACR,EAAG3J,EAAIgQ,GAAoBvW,CAAO,EAClC,EAAGmG,CACJ,CACH,CCvBe,SAASwQ,GAAgB3W,EAAS,CAC/C,IAAI4W,EAEAzW,EAAOqQ,GAAmBxQ,CAAO,EACjC6W,EAAYT,GAAgBpW,CAAO,EACnC8W,GAAQF,EAAwB5W,EAAQ,gBAAkB,KAAO,OAAS4W,EAAsB,KAChG3G,EAAQd,GAAIhP,EAAK,YAAaA,EAAK,YAAa2W,EAAOA,EAAK,YAAc,EAAGA,EAAOA,EAAK,YAAc,CAAC,EACxG5G,EAASf,GAAIhP,EAAK,aAAcA,EAAK,aAAc2W,EAAOA,EAAK,aAAe,EAAGA,EAAOA,EAAK,aAAe,CAAC,EAC7GvQ,EAAI,CAACsQ,EAAU,WAAaN,GAAoBvW,CAAO,EACvDmG,EAAI,CAAC0Q,EAAU,UAEnB,OAAIvG,GAAiBwG,GAAQ3W,CAAI,EAAE,YAAc,QAC/CoG,GAAK4I,GAAIhP,EAAK,YAAa2W,EAAOA,EAAK,YAAc,CAAC,EAAI7G,GAGrD,CACL,MAAOA,EACP,OAAQC,EACR,EAAG3J,EACH,EAAGJ,CACJ,CACH,CC3Be,SAAS4Q,GAAe/W,EAAS,CAE9C,IAAIgX,EAAoB1G,GAAiBtQ,CAAO,EAC5CiX,EAAWD,EAAkB,SAC7BE,EAAYF,EAAkB,UAC9BG,EAAYH,EAAkB,UAElC,MAAO,6BAA6B,KAAKC,EAAWE,EAAYD,CAAS,CAC3E,CCLe,SAASE,GAAgB3f,EAAM,CAC5C,MAAI,CAAC,OAAQ,OAAQ,WAAW,EAAE,QAAQyW,GAAYzW,CAAI,CAAC,GAAK,EAEvDA,EAAK,cAAc,KAGxB8W,GAAc9W,CAAI,GAAKsf,GAAetf,CAAI,EACrCA,EAGF2f,GAAgB3G,GAAchZ,CAAI,CAAC,CAC5C,CCJe,SAAS4f,GAAkBrX,EAAS1G,EAAM,CACvD,IAAIsd,EAEAtd,IAAS,SACXA,EAAO,CAAE,GAGX,IAAIwc,EAAesB,GAAgBpX,CAAO,EACtCsX,EAASxB,MAAmBc,EAAwB5W,EAAQ,gBAAkB,KAAO,OAAS4W,EAAsB,MACpHrD,EAAMpF,GAAU2H,CAAY,EAC5Bla,EAAS0b,EAAS,CAAC/D,CAAG,EAAE,OAAOA,EAAI,gBAAkB,CAAE,EAAEwD,GAAejB,CAAY,EAAIA,EAAe,CAAA,CAAE,EAAIA,EAC7GyB,EAAcje,EAAK,OAAOsC,CAAM,EACpC,OAAO0b,EAASC,EAChBA,EAAY,OAAOF,GAAkB5G,GAAc7U,CAAM,CAAC,CAAC,CAC7D,CCzBe,SAAS4b,GAAiBC,EAAM,CAC7C,OAAO,OAAO,OAAO,CAAE,EAAEA,EAAM,CAC7B,KAAMA,EAAK,EACX,IAAKA,EAAK,EACV,MAAOA,EAAK,EAAIA,EAAK,MACrB,OAAQA,EAAK,EAAIA,EAAK,MAC1B,CAAG,CACH,CCQA,SAASC,GAA2B1X,EAASyW,EAAU,CACrD,IAAIgB,EAAOhI,GAAsBzP,EAAS,GAAOyW,IAAa,OAAO,EACrE,OAAAgB,EAAK,IAAMA,EAAK,IAAMzX,EAAQ,UAC9ByX,EAAK,KAAOA,EAAK,KAAOzX,EAAQ,WAChCyX,EAAK,OAASA,EAAK,IAAMzX,EAAQ,aACjCyX,EAAK,MAAQA,EAAK,KAAOzX,EAAQ,YACjCyX,EAAK,MAAQzX,EAAQ,YACrByX,EAAK,OAASzX,EAAQ,aACtByX,EAAK,EAAIA,EAAK,KACdA,EAAK,EAAIA,EAAK,IACPA,CACT,CAEA,SAASE,GAA2B3X,EAAS4X,EAAgBnB,EAAU,CACrE,OAAOmB,IAAmB1K,GAAWsK,GAAiBhB,GAAgBxW,EAASyW,CAAQ,CAAC,EAAIpI,GAAUuJ,CAAc,EAAIF,GAA2BE,EAAgBnB,CAAQ,EAAIe,GAAiBb,GAAgBnG,GAAmBxQ,CAAO,CAAC,CAAC,CAC9O,CAKA,SAAS6X,GAAmB7X,EAAS,CACnC,IAAIiN,EAAkBoK,GAAkB5G,GAAczQ,CAAO,CAAC,EAC1D8X,EAAoB,CAAC,WAAY,OAAO,EAAE,QAAQxH,GAAiBtQ,CAAO,EAAE,QAAQ,GAAK,EACzF+X,EAAiBD,GAAqBvJ,GAAcvO,CAAO,EAAIiR,GAAgBjR,CAAO,EAAIA,EAE9F,OAAKqO,GAAU0J,CAAc,EAKtB9K,EAAgB,OAAO,SAAU2K,EAAgB,CACtD,OAAOvJ,GAAUuJ,CAAc,GAAKxH,GAASwH,EAAgBG,CAAc,GAAK7J,GAAY0J,CAAc,IAAM,MACpH,CAAG,EANQ,CAAE,CAOb,CAIe,SAASI,GAAgBhY,EAASiY,EAAUC,EAAczB,EAAU,CACjF,IAAI0B,EAAsBF,IAAa,kBAAoBJ,GAAmB7X,CAAO,EAAI,CAAA,EAAG,OAAOiY,CAAQ,EACvGhL,EAAkB,CAAA,EAAG,OAAOkL,EAAqB,CAACD,CAAY,CAAC,EAC/DE,EAAsBnL,EAAgB,CAAC,EACvCoL,EAAepL,EAAgB,OAAO,SAAUqL,EAASV,EAAgB,CAC3E,IAAIH,EAAOE,GAA2B3X,EAAS4X,EAAgBnB,CAAQ,EACvE,OAAA6B,EAAQ,IAAMnJ,GAAIsI,EAAK,IAAKa,EAAQ,GAAG,EACvCA,EAAQ,MAAQlJ,GAAIqI,EAAK,MAAOa,EAAQ,KAAK,EAC7CA,EAAQ,OAASlJ,GAAIqI,EAAK,OAAQa,EAAQ,MAAM,EAChDA,EAAQ,KAAOnJ,GAAIsI,EAAK,KAAMa,EAAQ,IAAI,EACnCA,CACR,EAAEX,GAA2B3X,EAASoY,EAAqB3B,CAAQ,CAAC,EACrE,OAAA4B,EAAa,MAAQA,EAAa,MAAQA,EAAa,KACvDA,EAAa,OAASA,EAAa,OAASA,EAAa,IACzDA,EAAa,EAAIA,EAAa,KAC9BA,EAAa,EAAIA,EAAa,IACvBA,CACT,CCjEe,SAASE,GAAe7J,EAAM,CAC3C,IAAItB,EAAYsB,EAAK,UACjB1O,EAAU0O,EAAK,QACfnB,EAAYmB,EAAK,UACjB0D,EAAgB7E,EAAY2B,GAAiB3B,CAAS,EAAI,KAC1DqG,EAAYrG,EAAY6F,GAAa7F,CAAS,EAAI,KAClDiL,EAAUpL,EAAU,EAAIA,EAAU,MAAQ,EAAIpN,EAAQ,MAAQ,EAC9DyY,EAAUrL,EAAU,EAAIA,EAAU,OAAS,EAAIpN,EAAQ,OAAS,EAChE6T,EAEJ,OAAQzB,EAAa,CACnB,KAAKha,GACHyb,EAAU,CACR,EAAG2E,EACH,EAAGpL,EAAU,EAAIpN,EAAQ,MAC1B,EACD,MAEF,KAAK4M,GACHiH,EAAU,CACR,EAAG2E,EACH,EAAGpL,EAAU,EAAIA,EAAU,MAC5B,EACD,MAEF,KAAKP,GACHgH,EAAU,CACR,EAAGzG,EAAU,EAAIA,EAAU,MAC3B,EAAGqL,CACJ,EACD,MAEF,KAAK3L,GACH+G,EAAU,CACR,EAAGzG,EAAU,EAAIpN,EAAQ,MACzB,EAAGyY,CACJ,EACD,MAEF,QACE5E,EAAU,CACR,EAAGzG,EAAU,EACb,EAAGA,EAAU,CACd,CACP,CAEE,IAAIsL,EAAWtG,EAAgBhB,GAAyBgB,CAAa,EAAI,KAEzE,GAAIsG,GAAY,KAAM,CACpB,IAAI9oB,EAAM8oB,IAAa,IAAM,SAAW,QAExC,OAAQ9E,EAAS,CACf,KAAKxZ,GACHyZ,EAAQ6E,CAAQ,EAAI7E,EAAQ6E,CAAQ,GAAKtL,EAAUxd,CAAG,EAAI,EAAIoQ,EAAQpQ,CAAG,EAAI,GAC7E,MAEF,KAAKyK,GACHwZ,EAAQ6E,CAAQ,EAAI7E,EAAQ6E,CAAQ,GAAKtL,EAAUxd,CAAG,EAAI,EAAIoQ,EAAQpQ,CAAG,EAAI,GAC7E,KAGR,CACA,CAEE,OAAOikB,CACT,CC3De,SAAS8E,GAAerkB,EAAOpC,EAAS,CACjDA,IAAY,SACdA,EAAU,CAAE,GAGd,IAAI0mB,EAAW1mB,EACX2mB,EAAqBD,EAAS,UAC9BrL,EAAYsL,IAAuB,OAASvkB,EAAM,UAAYukB,EAC9DC,EAAoBF,EAAS,SAC7BnC,EAAWqC,IAAsB,OAASxkB,EAAM,SAAWwkB,EAC3DC,EAAoBH,EAAS,SAC7BX,EAAWc,IAAsB,OAAS9L,GAAkB8L,EAC5DC,EAAwBJ,EAAS,aACjCV,EAAec,IAA0B,OAAS9L,GAAW8L,EAC7DC,EAAwBL,EAAS,eACjCM,EAAiBD,IAA0B,OAAS9L,GAAS8L,EAC7DE,EAAuBP,EAAS,YAChCQ,EAAcD,IAAyB,OAAS,GAAQA,EACxDE,EAAmBT,EAAS,QAC5B7G,EAAUsH,IAAqB,OAAS,EAAIA,EAC5C1H,EAAgBD,GAAmB,OAAOK,GAAY,SAAWA,EAAUH,GAAgBG,EAAS/E,EAAc,CAAC,EACnHsM,EAAaJ,IAAmB/L,GAASC,GAAYD,GACrDwG,EAAarf,EAAM,MAAM,OACzB0L,EAAU1L,EAAM,SAAS8kB,EAAcE,EAAaJ,CAAc,EAClEK,EAAqBvB,GAAgB3J,GAAUrO,CAAO,EAAIA,EAAUA,EAAQ,gBAAkBwQ,GAAmBlc,EAAM,SAAS,MAAM,EAAG2jB,EAAUC,EAAczB,CAAQ,EACzK+C,EAAsB/J,GAAsBnb,EAAM,SAAS,SAAS,EACpE6d,EAAgBoG,GAAe,CACjC,UAAWiB,EACX,QAAS7F,EACT,SAAU,WACV,UAAWpG,CACf,CAAG,EACGkM,EAAmBjC,GAAiB,OAAO,OAAO,GAAI7D,EAAYxB,CAAa,CAAC,EAChFuH,EAAoBR,IAAmB/L,GAASsM,EAAmBD,EAGnEG,EAAkB,CACpB,IAAKJ,EAAmB,IAAMG,EAAkB,IAAM/H,EAAc,IACpE,OAAQ+H,EAAkB,OAASH,EAAmB,OAAS5H,EAAc,OAC7E,KAAM4H,EAAmB,KAAOG,EAAkB,KAAO/H,EAAc,KACvE,MAAO+H,EAAkB,MAAQH,EAAmB,MAAQ5H,EAAc,KAC3E,EACGiI,EAAatlB,EAAM,cAAc,OAErC,GAAI4kB,IAAmB/L,IAAUyM,EAAY,CAC3C,IAAI5G,EAAS4G,EAAWrM,CAAS,EACjC,OAAO,KAAKoM,CAAe,EAAE,QAAQ,SAAUjlB,EAAK,CAClD,IAAImlB,EAAW,CAAChN,GAAOD,EAAM,EAAE,QAAQlY,CAAG,GAAK,EAAI,EAAI,GACnD2d,EAAO,CAACja,GAAKwU,EAAM,EAAE,QAAQlY,CAAG,GAAK,EAAI,IAAM,IACnDilB,EAAgBjlB,CAAG,GAAKse,EAAOX,CAAI,EAAIwH,CAC7C,CAAK,CACL,CAEE,OAAOF,CACT,CC5De,SAASG,GAAqBxlB,EAAOpC,EAAS,CACvDA,IAAY,SACdA,EAAU,CAAE,GAGd,IAAI0mB,EAAW1mB,EACXqb,EAAYqL,EAAS,UACrBX,EAAWW,EAAS,SACpBV,EAAeU,EAAS,aACxB7G,EAAU6G,EAAS,QACnBmB,EAAiBnB,EAAS,eAC1BoB,EAAwBpB,EAAS,sBACjCqB,EAAwBD,IAA0B,OAASE,GAAgBF,EAC3EpG,EAAYR,GAAa7F,CAAS,EAClCC,EAAaoG,EAAYmG,EAAiB1M,GAAsBA,GAAoB,OAAO,SAAUE,EAAW,CAClH,OAAO6F,GAAa7F,CAAS,IAAMqG,CACpC,CAAA,EAAI5G,GACDmN,EAAoB3M,EAAW,OAAO,SAAUD,EAAW,CAC7D,OAAO0M,EAAsB,QAAQ1M,CAAS,GAAK,CACvD,CAAG,EAEG4M,EAAkB,SAAW,IAC/BA,EAAoB3M,GAItB,IAAI4M,EAAYD,EAAkB,OAAO,SAAU7M,EAAKC,EAAW,CACjE,OAAAD,EAAIC,CAAS,EAAIoL,GAAerkB,EAAO,CACrC,UAAWiZ,EACX,SAAU0K,EACV,aAAcC,EACd,QAASnG,CACf,CAAK,EAAE7C,GAAiB3B,CAAS,CAAC,EACvBD,CACR,EAAE,EAAE,EACL,OAAO,OAAO,KAAK8M,CAAS,EAAE,KAAK,SAAUnqB,EAAGC,EAAG,CACjD,OAAOkqB,EAAUnqB,CAAC,EAAImqB,EAAUlqB,CAAC,CACrC,CAAG,CACH,CClCA,SAASmqB,GAA8B9M,EAAW,CAChD,GAAI2B,GAAiB3B,CAAS,IAAMR,GAClC,MAAO,CAAE,EAGX,IAAIuN,EAAoBrE,GAAqB1I,CAAS,EACtD,MAAO,CAAC4I,GAA8B5I,CAAS,EAAG+M,EAAmBnE,GAA8BmE,CAAiB,CAAC,CACvH,CAEA,SAASC,GAAK7L,EAAM,CAClB,IAAIpa,EAAQoa,EAAK,MACbxc,EAAUwc,EAAK,QACfjS,EAAOiS,EAAK,KAEhB,GAAI,CAAApa,EAAM,cAAcmI,CAAI,EAAE,MAoC9B,SAhCI+d,EAAoBtoB,EAAQ,SAC5BuoB,EAAgBD,IAAsB,OAAS,GAAOA,EACtDE,EAAmBxoB,EAAQ,QAC3ByoB,EAAeD,IAAqB,OAAS,GAAOA,EACpDE,EAA8B1oB,EAAQ,mBACtC6f,EAAU7f,EAAQ,QAClB+lB,EAAW/lB,EAAQ,SACnBgmB,EAAehmB,EAAQ,aACvBknB,EAAclnB,EAAQ,YACtB2oB,EAAwB3oB,EAAQ,eAChC6nB,EAAiBc,IAA0B,OAAS,GAAOA,EAC3DZ,EAAwB/nB,EAAQ,sBAChC4oB,EAAqBxmB,EAAM,QAAQ,UACnC8d,EAAgBlD,GAAiB4L,CAAkB,EACnDC,EAAkB3I,IAAkB0I,EACpCE,EAAqBJ,IAAgCG,GAAmB,CAAChB,EAAiB,CAAC9D,GAAqB6E,CAAkB,CAAC,EAAIT,GAA8BS,CAAkB,GACvLtN,EAAa,CAACsN,CAAkB,EAAE,OAAOE,CAAkB,EAAE,OAAO,SAAU1N,GAAKC,GAAW,CAChG,OAAOD,GAAI,OAAO4B,GAAiB3B,EAAS,IAAMR,GAAO+M,GAAqBxlB,EAAO,CACnF,UAAWiZ,GACX,SAAU0K,EACV,aAAcC,EACd,QAASnG,EACT,eAAgBgI,EAChB,sBAAuBE,CACxB,CAAA,EAAI1M,EAAS,CACf,EAAE,EAAE,EACD0N,EAAgB3mB,EAAM,MAAM,UAC5Bqf,EAAarf,EAAM,MAAM,OACzB4mB,EAAY,IAAI,IAChBC,EAAqB,GACrBC,EAAwB5N,EAAW,CAAC,EAE/B7X,EAAI,EAAGA,EAAI6X,EAAW,OAAQ7X,IAAK,CAC1C,IAAI4X,EAAYC,EAAW7X,CAAC,EAExB0lB,EAAiBnM,GAAiB3B,CAAS,EAE3C+N,EAAmBlI,GAAa7F,CAAS,IAAMnT,GAC/CkY,EAAa,CAACla,GAAKwU,EAAM,EAAE,QAAQyO,CAAc,GAAK,EACtDzrB,EAAM0iB,EAAa,QAAU,SAC7B2E,EAAW0B,GAAerkB,EAAO,CACnC,UAAWiZ,EACX,SAAU0K,EACV,aAAcC,EACd,YAAakB,EACb,QAASrH,CACf,CAAK,EACGwJ,EAAoBjJ,EAAagJ,EAAmBzO,GAAQC,GAAOwO,EAAmB1O,GAASxU,GAE/F6iB,EAAcrrB,CAAG,EAAI+jB,EAAW/jB,CAAG,IACrC2rB,EAAoBtF,GAAqBsF,CAAiB,GAG5D,IAAIC,EAAmBvF,GAAqBsF,CAAiB,EACzDE,EAAS,CAAE,EAUf,GARIhB,GACFgB,EAAO,KAAKxE,EAASoE,CAAc,GAAK,CAAC,EAGvCV,GACFc,EAAO,KAAKxE,EAASsE,CAAiB,GAAK,EAAGtE,EAASuE,CAAgB,GAAK,CAAC,EAG3EC,EAAO,MAAM,SAAUC,GAAO,CAChC,OAAOA,EACb,CAAK,EAAG,CACFN,EAAwB7N,EACxB4N,EAAqB,GACrB,KACN,CAEID,EAAU,IAAI3N,EAAWkO,CAAM,CACnC,CAEE,GAAIN,EAqBF,QAnBIQ,EAAiB5B,EAAiB,EAAI,EAEtC6B,GAAQ,SAAeC,GAAI,CAC7B,IAAIC,GAAmBtO,EAAW,KAAK,SAAUD,GAAW,CAC1D,IAAIkO,GAASP,EAAU,IAAI3N,EAAS,EAEpC,GAAIkO,GACF,OAAOA,GAAO,MAAM,EAAGI,EAAE,EAAE,MAAM,SAAUH,EAAO,CAChD,OAAOA,CACnB,CAAW,CAEX,CAAO,EAED,GAAII,GACF,OAAAV,EAAwBU,GACjB,OAEV,EAEQD,GAAKF,EAAgBE,GAAK,EAAGA,KAAM,CAC1C,IAAIE,GAAOH,GAAMC,EAAE,EAEnB,GAAIE,KAAS,QAAS,KAC5B,CAGMznB,EAAM,YAAc8mB,IACtB9mB,EAAM,cAAcmI,CAAI,EAAE,MAAQ,GAClCnI,EAAM,UAAY8mB,EAClB9mB,EAAM,MAAQ,IAElB,CAGA,MAAe0nB,GAAA,CACb,KAAM,OACN,QAAS,GACT,MAAO,OACP,GAAIzB,GACJ,iBAAkB,CAAC,QAAQ,EAC3B,KAAM,CACJ,MAAO,EACX,CACA,EC/IA,SAAS0B,GAAehF,EAAUQ,EAAMyE,EAAkB,CACxD,OAAIA,IAAqB,SACvBA,EAAmB,CACjB,EAAG,EACH,EAAG,CACJ,GAGI,CACL,IAAKjF,EAAS,IAAMQ,EAAK,OAASyE,EAAiB,EACnD,MAAOjF,EAAS,MAAQQ,EAAK,MAAQyE,EAAiB,EACtD,OAAQjF,EAAS,OAASQ,EAAK,OAASyE,EAAiB,EACzD,KAAMjF,EAAS,KAAOQ,EAAK,MAAQyE,EAAiB,CACrD,CACH,CAEA,SAASC,GAAsBlF,EAAU,CACvC,MAAO,CAAC7e,GAAKyU,GAAOD,GAAQE,EAAI,EAAE,KAAK,SAAUsP,EAAM,CACrD,OAAOnF,EAASmF,CAAI,GAAK,CAC7B,CAAG,CACH,CAEA,SAASC,GAAK3N,EAAM,CAClB,IAAIpa,EAAQoa,EAAK,MACbjS,EAAOiS,EAAK,KACZuM,EAAgB3mB,EAAM,MAAM,UAC5Bqf,EAAarf,EAAM,MAAM,OACzB4nB,EAAmB5nB,EAAM,cAAc,gBACvCgoB,EAAoB3D,GAAerkB,EAAO,CAC5C,eAAgB,WACpB,CAAG,EACGioB,EAAoB5D,GAAerkB,EAAO,CAC5C,YAAa,EACjB,CAAG,EACGkoB,EAA2BP,GAAeK,EAAmBrB,CAAa,EAC1EwB,EAAsBR,GAAeM,EAAmB5I,EAAYuI,CAAgB,EACpFQ,EAAoBP,GAAsBK,CAAwB,EAClEG,EAAmBR,GAAsBM,CAAmB,EAChEnoB,EAAM,cAAcmI,CAAI,EAAI,CAC1B,yBAA0B+f,EAC1B,oBAAqBC,EACrB,kBAAmBC,EACnB,iBAAkBC,CACnB,EACDroB,EAAM,WAAW,OAAS,OAAO,OAAO,GAAIA,EAAM,WAAW,OAAQ,CACnE,+BAAgCooB,EAChC,sBAAuBC,CAC3B,CAAG,CACH,CAGA,MAAeC,GAAA,CACb,KAAM,OACN,QAAS,GACT,MAAO,OACP,iBAAkB,CAAC,iBAAiB,EACpC,GAAIP,EACN,ECzDO,SAASQ,GAAwBtP,EAAWuP,EAAO9J,EAAQ,CAChE,IAAIZ,EAAgBlD,GAAiB3B,CAAS,EAC1CwP,EAAiB,CAACjQ,GAAM1U,EAAG,EAAE,QAAQga,CAAa,GAAK,EAAI,GAAK,EAEhE1D,EAAO,OAAOsE,GAAW,WAAaA,EAAO,OAAO,OAAO,CAAE,EAAE8J,EAAO,CACxE,UAAWvP,CACZ,CAAA,CAAC,EAAIyF,EACFgK,EAAWtO,EAAK,CAAC,EACjBuO,EAAWvO,EAAK,CAAC,EAErB,OAAAsO,EAAWA,GAAY,EACvBC,GAAYA,GAAY,GAAKF,EACtB,CAACjQ,GAAMD,EAAK,EAAE,QAAQuF,CAAa,GAAK,EAAI,CACjD,EAAG6K,EACH,EAAGD,CACP,EAAM,CACF,EAAGA,EACH,EAAGC,CACJ,CACH,CAEA,SAASjK,GAAOnE,EAAO,CACrB,IAAIva,EAAQua,EAAM,MACd3c,EAAU2c,EAAM,QAChBpS,EAAOoS,EAAM,KACbqO,EAAkBhrB,EAAQ,OAC1B8gB,EAASkK,IAAoB,OAAS,CAAC,EAAG,CAAC,EAAIA,EAC/CrZ,EAAO2J,GAAW,OAAO,SAAUF,EAAKC,EAAW,CACrD,OAAAD,EAAIC,CAAS,EAAIsP,GAAwBtP,EAAWjZ,EAAM,MAAO0e,CAAM,EAChE1F,CACR,EAAE,EAAE,EACD6P,EAAwBtZ,EAAKvP,EAAM,SAAS,EAC5CiS,EAAI4W,EAAsB,EAC1BhX,EAAIgX,EAAsB,EAE1B7oB,EAAM,cAAc,eAAiB,OACvCA,EAAM,cAAc,cAAc,GAAKiS,EACvCjS,EAAM,cAAc,cAAc,GAAK6R,GAGzC7R,EAAM,cAAcmI,CAAI,EAAIoH,CAC9B,CAGA,MAAeuZ,GAAA,CACb,KAAM,SACN,QAAS,GACT,MAAO,OACP,SAAU,CAAC,eAAe,EAC1B,GAAIpK,EACN,ECnDA,SAASb,GAAczD,EAAM,CAC3B,IAAIpa,EAAQoa,EAAK,MACbjS,EAAOiS,EAAK,KAKhBpa,EAAM,cAAcmI,CAAI,EAAI8b,GAAe,CACzC,UAAWjkB,EAAM,MAAM,UACvB,QAASA,EAAM,MAAM,OACrB,SAAU,WACV,UAAWA,EAAM,SACrB,CAAG,CACH,CAGA,MAAe+oB,GAAA,CACb,KAAM,gBACN,QAAS,GACT,MAAO,OACP,GAAIlL,GACJ,KAAM,CAAA,CACR,ECxBe,SAASmL,GAAWjL,EAAM,CACvC,OAAOA,IAAS,IAAM,IAAM,GAC9B,CCUA,SAASkL,GAAgB7O,EAAM,CAC7B,IAAIpa,EAAQoa,EAAK,MACbxc,EAAUwc,EAAK,QACfjS,EAAOiS,EAAK,KACZ8L,EAAoBtoB,EAAQ,SAC5BuoB,EAAgBD,IAAsB,OAAS,GAAOA,EACtDE,EAAmBxoB,EAAQ,QAC3ByoB,EAAeD,IAAqB,OAAS,GAAQA,EACrDzC,EAAW/lB,EAAQ,SACnBgmB,EAAehmB,EAAQ,aACvBknB,EAAclnB,EAAQ,YACtB6f,EAAU7f,EAAQ,QAClBsrB,EAAkBtrB,EAAQ,OAC1BurB,EAASD,IAAoB,OAAS,GAAOA,EAC7CE,EAAwBxrB,EAAQ,aAChCyrB,EAAeD,IAA0B,OAAS,EAAIA,EACtDzG,EAAW0B,GAAerkB,EAAO,CACnC,SAAU2jB,EACV,aAAcC,EACd,QAASnG,EACT,YAAaqH,CACjB,CAAG,EACGhH,EAAgBlD,GAAiB5a,EAAM,SAAS,EAChDsf,EAAYR,GAAa9e,EAAM,SAAS,EACxCymB,EAAkB,CAACnH,EACnB8E,EAAWtH,GAAyBgB,CAAa,EACjDwL,EAAUN,GAAW5E,CAAQ,EAC7BvG,EAAgB7d,EAAM,cAAc,cACpC2mB,EAAgB3mB,EAAM,MAAM,UAC5Bqf,EAAarf,EAAM,MAAM,OACzBupB,EAAoB,OAAOF,GAAiB,WAAaA,EAAa,OAAO,OAAO,CAAA,EAAIrpB,EAAM,MAAO,CACvG,UAAWA,EAAM,SAClB,CAAA,CAAC,EAAIqpB,EACFG,EAA8B,OAAOD,GAAsB,SAAW,CACxE,SAAUA,EACV,QAASA,CACb,EAAM,OAAO,OAAO,CAChB,SAAU,EACV,QAAS,CACV,EAAEA,CAAiB,EAChBE,EAAsBzpB,EAAM,cAAc,OAASA,EAAM,cAAc,OAAOA,EAAM,SAAS,EAAI,KACjGuP,EAAO,CACT,EAAG,EACH,EAAG,CACJ,EAED,GAAKsO,EAIL,IAAIsI,EAAe,CACjB,IAAIuD,EAEAC,EAAWvF,IAAa,IAAMtgB,GAAM0U,GACpCoR,EAAUxF,IAAa,IAAM9L,GAASC,GACtCjd,EAAM8oB,IAAa,IAAM,SAAW,QACpC1F,EAASb,EAAcuG,CAAQ,EAC/BtJ,EAAM4D,EAASiE,EAASgH,CAAQ,EAChC9O,EAAM6D,EAASiE,EAASiH,CAAO,EAC/BC,EAAWV,EAAS,CAAC9J,EAAW/jB,CAAG,EAAI,EAAI,EAC3CwuB,GAASxK,IAAcxZ,GAAQ6gB,EAAcrrB,CAAG,EAAI+jB,EAAW/jB,CAAG,EAClEyuB,GAASzK,IAAcxZ,GAAQ,CAACuZ,EAAW/jB,CAAG,EAAI,CAACqrB,EAAcrrB,CAAG,EAGpEsiB,GAAe5d,EAAM,SAAS,MAC9Bie,GAAYkL,GAAUvL,GAAe/B,GAAc+B,EAAY,EAAI,CACrE,MAAO,EACP,OAAQ,CACT,EACGoM,GAAqBhqB,EAAM,cAAc,kBAAkB,EAAIA,EAAM,cAAc,kBAAkB,EAAE,QAAUmd,GAAoB,EACrI8M,GAAkBD,GAAmBL,CAAQ,EAC7CO,GAAkBF,GAAmBJ,CAAO,EAM5CO,GAAWpN,GAAO,EAAG4J,EAAcrrB,CAAG,EAAG2iB,GAAU3iB,CAAG,CAAC,EACvD8uB,EAAY3D,EAAkBE,EAAcrrB,CAAG,EAAI,EAAIuuB,EAAWM,GAAWF,GAAkBT,EAA4B,SAAWM,GAASK,GAAWF,GAAkBT,EAA4B,SACxMa,EAAY5D,EAAkB,CAACE,EAAcrrB,CAAG,EAAI,EAAIuuB,EAAWM,GAAWD,GAAkBV,EAA4B,SAAWO,GAASI,GAAWD,GAAkBV,EAA4B,SACzMlL,EAAoBte,EAAM,SAAS,OAAS2c,GAAgB3c,EAAM,SAAS,KAAK,EAChFsqB,EAAehM,EAAoB8F,IAAa,IAAM9F,EAAkB,WAAa,EAAIA,EAAkB,YAAc,EAAI,EAC7HiM,IAAuBb,EAA+DD,IAAoBrF,CAAQ,IAAM,KAAOsF,EAAwB,EACvJc,EAAY9L,EAAS0L,EAAYG,GAAsBD,EACvDG,EAAY/L,EAAS2L,EAAYE,GACjCG,EAAkB3N,GAAOoM,EAASlM,GAAQnC,EAAK0P,CAAS,EAAI1P,EAAK4D,EAAQyK,EAASnM,GAAQnC,EAAK4P,CAAS,EAAI5P,CAAG,EACnHgD,EAAcuG,CAAQ,EAAIsG,EAC1Bnb,EAAK6U,CAAQ,EAAIsG,EAAkBhM,CACvC,CAEE,GAAI2H,EAAc,CAChB,IAAIsE,GAEAC,GAAYxG,IAAa,IAAMtgB,GAAM0U,GAErCqS,GAAWzG,IAAa,IAAM9L,GAASC,GAEvCuS,GAAUjN,EAAcyL,CAAO,EAE/ByB,GAAOzB,IAAY,IAAM,SAAW,QAEpC0B,GAAOF,GAAUnI,EAASiI,EAAS,EAEnCK,GAAOH,GAAUnI,EAASkI,EAAQ,EAElCK,GAAe,CAACpnB,GAAK0U,EAAI,EAAE,QAAQsF,CAAa,IAAM,GAEtDqN,IAAwBR,GAAgElB,IAAoBH,CAAO,IAAM,KAAOqB,GAAyB,EAEzJS,GAAaF,GAAeF,GAAOF,GAAUnE,EAAcoE,EAAI,EAAI1L,EAAW0L,EAAI,EAAII,GAAuB3B,EAA4B,QAEzI6B,GAAaH,GAAeJ,GAAUnE,EAAcoE,EAAI,EAAI1L,EAAW0L,EAAI,EAAII,GAAuB3B,EAA4B,QAAUyB,GAE5IK,GAAmBnC,GAAU+B,GAAehO,GAAekO,GAAYN,GAASO,EAAU,EAAItO,GAAOoM,EAASiC,GAAaJ,GAAMF,GAAS3B,EAASkC,GAAaJ,EAAI,EAExKpN,EAAcyL,CAAO,EAAIgC,GACzB/b,EAAK+Z,CAAO,EAAIgC,GAAmBR,EACvC,CAEE9qB,EAAM,cAAcmI,CAAI,EAAIoH,EAC9B,CAGA,MAAegc,GAAA,CACb,KAAM,kBACN,QAAS,GACT,MAAO,OACP,GAAItC,GACJ,iBAAkB,CAAC,QAAQ,CAC7B,EC7Ie,SAASuC,GAAqB9f,EAAS,CACpD,MAAO,CACL,WAAYA,EAAQ,WACpB,UAAWA,EAAQ,SACpB,CACH,CCDe,SAAS+f,GAActoB,EAAM,CAC1C,OAAIA,IAAS0W,GAAU1W,CAAI,GAAK,CAAC8W,GAAc9W,CAAI,EAC1C2e,GAAgB3e,CAAI,EAEpBqoB,GAAqBroB,CAAI,CAEpC,CCDA,SAASuoB,GAAgBhgB,EAAS,CAChC,IAAIyX,EAAOzX,EAAQ,sBAAuB,EACtC6P,EAASR,GAAMoI,EAAK,KAAK,EAAIzX,EAAQ,aAAe,EACpD8P,EAAST,GAAMoI,EAAK,MAAM,EAAIzX,EAAQ,cAAgB,EAC1D,OAAO6P,IAAW,GAAKC,IAAW,CACpC,CAIe,SAASmQ,GAAiBC,EAAyB/O,EAAc+C,EAAS,CACnFA,IAAY,SACdA,EAAU,IAGZ,IAAIiM,EAA0B5R,GAAc4C,CAAY,EACpDiP,EAAuB7R,GAAc4C,CAAY,GAAK6O,GAAgB7O,CAAY,EAClFkP,EAAkB7P,GAAmBW,CAAY,EACjDsG,EAAOhI,GAAsByQ,EAAyBE,EAAsBlM,CAAO,EACnFwB,EAAS,CACX,WAAY,EACZ,UAAW,CACZ,EACG7B,EAAU,CACZ,EAAG,EACH,EAAG,CACJ,EAED,OAAIsM,GAA2B,CAACA,GAA2B,CAACjM,MACtDhG,GAAYiD,CAAY,IAAM,QAClC4F,GAAesJ,CAAe,KAC5B3K,EAASqK,GAAc5O,CAAY,GAGjC5C,GAAc4C,CAAY,GAC5B0C,EAAUpE,GAAsB0B,EAAc,EAAI,EAClD0C,EAAQ,GAAK1C,EAAa,WAC1B0C,EAAQ,GAAK1C,EAAa,WACjBkP,IACTxM,EAAQ,EAAI0C,GAAoB8J,CAAe,IAI5C,CACL,EAAG5I,EAAK,KAAO/B,EAAO,WAAa7B,EAAQ,EAC3C,EAAG4D,EAAK,IAAM/B,EAAO,UAAY7B,EAAQ,EACzC,MAAO4D,EAAK,MACZ,OAAQA,EAAK,MACd,CACH,CCvDA,SAAS6I,GAAMC,EAAW,CACxB,IAAI5gB,EAAM,IAAI,IACV6gB,EAAU,IAAI,IACd5qB,EAAS,CAAE,EACf2qB,EAAU,QAAQ,SAAUE,EAAU,CACpC9gB,EAAI,IAAI8gB,EAAS,KAAMA,CAAQ,CACnC,CAAG,EAED,SAASC,EAAKD,EAAU,CACtBD,EAAQ,IAAIC,EAAS,IAAI,EACzB,IAAIE,EAAW,GAAG,OAAOF,EAAS,UAAY,GAAIA,EAAS,kBAAoB,EAAE,EACjFE,EAAS,QAAQ,SAAUC,EAAK,CAC9B,GAAI,CAACJ,EAAQ,IAAII,CAAG,EAAG,CACrB,IAAIC,EAAclhB,EAAI,IAAIihB,CAAG,EAEzBC,GACFH,EAAKG,CAAW,CAE1B,CACA,CAAK,EACDjrB,EAAO,KAAK6qB,CAAQ,CACxB,CAEE,OAAAF,EAAU,QAAQ,SAAUE,EAAU,CAC/BD,EAAQ,IAAIC,EAAS,IAAI,GAE5BC,EAAKD,CAAQ,CAEnB,CAAG,EACM7qB,CACT,CAEe,SAASkrB,GAAeP,EAAW,CAEhD,IAAIQ,EAAmBT,GAAMC,CAAS,EAEtC,OAAOtS,GAAe,OAAO,SAAUX,EAAK0T,EAAO,CACjD,OAAO1T,EAAI,OAAOyT,EAAiB,OAAO,SAAUN,EAAU,CAC5D,OAAOA,EAAS,QAAUO,CAChC,CAAK,CAAC,CACH,EAAE,EAAE,CACP,CC3Ce,SAASC,GAAS5vB,EAAI,CACnC,IAAI6vB,EACJ,OAAO,UAAY,CACjB,OAAKA,IACHA,EAAU,IAAI,QAAQ,SAAUC,EAAS,CACvC,QAAQ,UAAU,KAAK,UAAY,CACjCD,EAAU,OACVC,EAAQ9vB,EAAE,CAAE,CACtB,CAAS,CACT,CAAO,GAGI6vB,CACR,CACH,CCde,SAASE,GAAYb,EAAW,CAC7C,IAAIc,EAASd,EAAU,OAAO,SAAUc,EAAQ3vB,EAAS,CACvD,IAAI4vB,EAAWD,EAAO3vB,EAAQ,IAAI,EAClC,OAAA2vB,EAAO3vB,EAAQ,IAAI,EAAI4vB,EAAW,OAAO,OAAO,CAAA,EAAIA,EAAU5vB,EAAS,CACrE,QAAS,OAAO,OAAO,CAAA,EAAI4vB,EAAS,QAAS5vB,EAAQ,OAAO,EAC5D,KAAM,OAAO,OAAO,CAAA,EAAI4vB,EAAS,KAAM5vB,EAAQ,IAAI,CACpD,CAAA,EAAIA,EACE2vB,CACR,EAAE,CAAE,CAAA,EAEL,OAAO,OAAO,KAAKA,CAAM,EAAE,IAAI,SAAU3sB,EAAK,CAC5C,OAAO2sB,EAAO3sB,CAAG,CACrB,CAAG,CACH,CCJA,IAAI6sB,GAAkB,CACpB,UAAW,SACX,UAAW,CAAE,EACb,SAAU,UACZ,EAEA,SAASC,IAAmB,CAC1B,QAASnC,EAAO,UAAU,OAAQ3T,EAAO,IAAI,MAAM2T,CAAI,EAAGoC,EAAO,EAAGA,EAAOpC,EAAMoC,IAC/E/V,EAAK+V,CAAI,EAAI,UAAUA,CAAI,EAG7B,MAAO,CAAC/V,EAAK,KAAK,SAAU1L,EAAS,CACnC,MAAO,EAAEA,GAAW,OAAOA,EAAQ,uBAA0B,WACjE,CAAG,CACH,CAEO,SAAS0hB,GAAgBC,EAAkB,CAC5CA,IAAqB,SACvBA,EAAmB,CAAE,GAGvB,IAAIC,EAAoBD,EACpBE,EAAwBD,EAAkB,iBAC1CE,EAAmBD,IAA0B,OAAS,CAAE,EAAGA,EAC3DE,EAAyBH,EAAkB,eAC3C5a,EAAiB+a,IAA2B,OAASR,GAAkBQ,EAC3E,OAAO,SAAsB3U,EAAWD,EAAQjb,EAAS,CACnDA,IAAY,SACdA,EAAU8U,GAGZ,IAAI1S,EAAQ,CACV,UAAW,SACX,iBAAkB,CAAE,EACpB,QAAS,OAAO,OAAO,CAAA,EAAIitB,GAAiBva,CAAc,EAC1D,cAAe,CAAE,EACjB,SAAU,CACR,UAAWoG,EACX,OAAQD,CACT,EACD,WAAY,CAAE,EACd,OAAQ,CAAA,CACT,EACG6U,EAAmB,CAAE,EACrBC,EAAc,GACdzM,EAAW,CACb,MAAOlhB,EACP,WAAY,SAAoB4tB,EAAkB,CAChD,IAAIhwB,EAAU,OAAOgwB,GAAqB,WAAaA,EAAiB5tB,EAAM,OAAO,EAAI4tB,EACzFC,EAAwB,EACxB7tB,EAAM,QAAU,OAAO,OAAO,CAAE,EAAE0S,EAAgB1S,EAAM,QAASpC,CAAO,EACxEoC,EAAM,cAAgB,CACpB,UAAW+Z,GAAUjB,CAAS,EAAIiK,GAAkBjK,CAAS,EAAIA,EAAU,eAAiBiK,GAAkBjK,EAAU,cAAc,EAAI,CAAE,EAC5I,OAAQiK,GAAkBlK,CAAM,CAC1C,EAGQ,IAAI4T,EAAmBD,GAAeM,GAAY,GAAG,OAAOU,EAAkBxtB,EAAM,QAAQ,SAAS,CAAC,CAAC,EAEvG,OAAAA,EAAM,iBAAmBysB,EAAiB,OAAO,SAAUqB,EAAG,CAC5D,OAAOA,EAAE,OACnB,CAAS,EACDC,EAAoB,EACb7M,EAAS,OAAQ,CACzB,EAMD,YAAa,UAAuB,CAClC,GAAI,CAAAyM,EAIJ,KAAIK,EAAkBhuB,EAAM,SACxB8Y,EAAYkV,EAAgB,UAC5BnV,EAASmV,EAAgB,OAG7B,GAAKd,GAAiBpU,EAAWD,CAAM,EAKvC,CAAA7Y,EAAM,MAAQ,CACZ,UAAW2rB,GAAiB7S,EAAW6D,GAAgB9D,CAAM,EAAG7Y,EAAM,QAAQ,WAAa,OAAO,EAClG,OAAQ6b,GAAchD,CAAM,CACtC,EAMQ7Y,EAAM,MAAQ,GACdA,EAAM,UAAYA,EAAM,QAAQ,UAKhCA,EAAM,iBAAiB,QAAQ,SAAUmsB,EAAU,CACjD,OAAOnsB,EAAM,cAAcmsB,EAAS,IAAI,EAAI,OAAO,OAAO,CAAA,EAAIA,EAAS,IAAI,CACrF,CAAS,EAED,QAAS5nB,EAAQ,EAAGA,EAAQvE,EAAM,iBAAiB,OAAQuE,IAAS,CAClE,GAAIvE,EAAM,QAAU,GAAM,CACxBA,EAAM,MAAQ,GACduE,EAAQ,GACR,QACZ,CAEU,IAAI0pB,EAAwBjuB,EAAM,iBAAiBuE,CAAK,EACpDxH,EAAKkxB,EAAsB,GAC3BC,EAAyBD,EAAsB,QAC/C3J,EAAW4J,IAA2B,OAAS,CAAE,EAAGA,EACpD/lB,EAAO8lB,EAAsB,KAE7B,OAAOlxB,GAAO,aAChBiD,EAAQjD,EAAG,CACT,MAAOiD,EACP,QAASskB,EACT,KAAMnc,EACN,SAAU+Y,CACX,CAAA,GAAKlhB,EAElB,GACO,EAGD,OAAQ2sB,GAAS,UAAY,CAC3B,OAAO,IAAI,QAAQ,SAAUE,EAAS,CACpC3L,EAAS,YAAa,EACtB2L,EAAQ7sB,CAAK,CACvB,CAAS,CACT,CAAO,EACD,QAAS,UAAmB,CAC1B6tB,EAAwB,EACxBF,EAAc,EACtB,CACK,EAED,GAAI,CAACT,GAAiBpU,EAAWD,CAAM,EACrC,OAAOqI,EAGTA,EAAS,WAAWtjB,CAAO,EAAE,KAAK,SAAUoC,EAAO,CAC7C,CAAC2tB,GAAe/vB,EAAQ,eAC1BA,EAAQ,cAAcoC,CAAK,CAEnC,CAAK,EAMD,SAAS+tB,GAAqB,CAC5B/tB,EAAM,iBAAiB,QAAQ,SAAUoa,EAAM,CAC7C,IAAIjS,EAAOiS,EAAK,KACZ+T,EAAe/T,EAAK,QACpBxc,EAAUuwB,IAAiB,OAAS,CAAE,EAAGA,EACzC7T,EAASF,EAAK,OAElB,GAAI,OAAOE,GAAW,WAAY,CAChC,IAAI8T,EAAY9T,EAAO,CACrB,MAAOta,EACP,KAAMmI,EACN,SAAU+Y,EACV,QAAStjB,CACrB,CAAW,EAEGywB,EAAS,UAAkB,CAAE,EAEjCX,EAAiB,KAAKU,GAAaC,CAAM,CACnD,CACA,CAAO,CACP,CAEI,SAASR,GAAyB,CAChCH,EAAiB,QAAQ,SAAU3wB,EAAI,CACrC,OAAOA,EAAI,CACnB,CAAO,EACD2wB,EAAmB,CAAE,CAC3B,CAEI,OAAOxM,CACR,CACH,CACO,IAAIoN,GAA4BlB,GAAe,EC/LlDI,GAAmB,CAAC/L,GAAgB5D,GAAe8C,GAAexG,EAAW,EAC7EmU,GAA4BlB,GAAgB,CAC9C,iBAAkBI,EACpB,CAAC,ECEGA,GAAmB,CAAC/L,GAAgB5D,GAAe8C,GAAexG,GAAauE,GAAQuH,GAAMgD,GAAiBvL,GAAOqK,EAAI,EACzHuG,GAA4BlB,GAAgB,CAC9C,iBAAkBI,EACpB,CAAC,imBCZYc,GAAelB,GAAgB,CACxC,iBAAkB,CACdrF,GACAlK,GACA8C,GACAc,GACA/C,GACAuH,GACAgD,GACAvL,EACH,CACL,CAAC,ECTK6Q,GAA8B,CAChC,KAAM,cACN,QAAS,GACT,MAAO,aACP,GAAI,IAAA,EACR,EACMC,GAA0B,CAC5B,KAAM,kBACN,QAAS,GACT,MAAO,aACP,OAAQ,CAAC,CAAE,MAAAxuB,CAAK,IAAO,IAAM,CACzB,KAAM,CAAE,UAAA8Y,EAAW,OAAAD,GAAW7Y,EAAM,SACpC,GAAI,oBAAqB8Y,EAAW,CAChC,MAAM2V,GAAO3V,EAAU,aAAa,kBAAkB,GAAK,IACtD,MAAM,GAAG,EACT,OAAQzZ,GAAOA,EAAG,KAAI,IAAOwZ,EAAO,EAAE,EACtC4V,EAAI,OAGL3V,EAAU,aAAa,mBAAoB2V,EAAI,KAAK,GAAG,CAAC,EAFxD3V,EAAU,gBAAgB,kBAAkB,CAGnD,CACJ,EACD,GAAI,CAAC,CAAE,MAAA9Y,KAAY,CACf,KAAM,CAAE,OAAA6Y,EAAQ,UAAAC,GAAc9Y,EAAM,SAC9ByT,EAAOoF,EAAO,aAAa,MAAM,GAAG,YAAW,EACrD,GAAIA,EAAO,IAAMpF,IAAS,WAAa,iBAAkBqF,EAAW,CAChE,MAAM2V,EAAM3V,EAAU,aAAa,kBAAkB,EACrD,GAAI2V,GAAOA,EAAI,MAAM,GAAG,EAAE,QAAQ5V,EAAO,EAAE,IAAM,GAC7C,OAEJC,EAAU,aAAa,mBAAoB2V,EAAM,GAAGA,CAAG,IAAI5V,EAAO,EAAE,GAAKA,EAAO,EAAE,CACrF,CACJ,CACL,EACM6V,GAAkB,CAAA,EAgBjB,SAASC,GAAUC,EAAkBC,EAAejxB,EAAS,CAChE,KAAM,CAACkxB,EAAgBC,CAAiB,EAAIrxB,EAAY,EAClDsxB,EAAUtwB,EAAW,IAAMd,EAAQ,SAAW,EAAI,EAClDqxB,EAASvwB,EAAWoC,GAAGguB,EAAiBjW,GAAW,IAAM,CAC3DA,GAAQ,OAAM,CACjB,CAAA,CAAC,EACIqW,EAAcxwB,EAAWoC,GAAGguB,EAAiBjW,GAAW,IAAM,CAChEA,GAAQ,YAAW,CACtB,CAAA,CAAC,EACI,CAACsW,EAAaC,CAAc,EAAIpY,GAAY,CAC9C,UAAWpZ,EAAQ,WAAa,SAChC,IAAI,QAAS,CACT,OAAOqxB,EAAM,CAChB,EACD,IAAI,aAAc,CACd,OAAOC,EAAW,CACrB,EACD,WAAY,CAAE,EACd,OAAQ,CACJ,OAAQ,CAAE,EACV,MAAO,CAAE,CACZ,CACT,CAAK,EACKG,EAAiB,CACnB,KAAM,sBACN,QAAS,GACT,MAAO,QACP,SAAU,CAAC,eAAe,EAC1B,GAAI,CAAC,CAAE,MAAArvB,KAAY,CACf,MAAMsvB,EAAS,CAAA,EACTjV,EAAa,CAAA,EACnB,OAAO,KAAKra,EAAM,QAAQ,EAAE,QAAS0L,GAAY,CAC7C4jB,EAAO5jB,CAAO,EAAI1L,EAAM,OAAO0L,CAAO,EACtC2O,EAAW3O,CAAO,EAAI1L,EAAM,WAAW0L,CAAO,CAC9D,CAAa,EACD0jB,EAAe/W,GAAU,CACrB,GAAG8W,EACH,MAAAnvB,EACA,OAAAsvB,EACA,WAAAjV,EACA,UAAWra,EAAM,SACpB,EAAE,CAAE,MAAO,EAAM,CAAA,CAAC,CACtB,CACT,EACI,OAAA1B,GAAa,IAAM,CACf,MAAM4iB,EAAW4N,IACb,CAAC5N,GAAY,CAAC8N,EAAS,IAE3B9N,EAAS,WAAW,CAChB,cAAetjB,EAAQ,cACvB,UAAWA,EAAQ,WAAa,SAChC,UAAW,CACP,GAAIA,EAAQ,WAAa8wB,GACzBF,GACAa,EACAd,EACH,EACD,SAAU3wB,EAAQ,UAAY,UAC1C,CAAS,EAED,eAAe,IAAM,CACjBqxB,EAAQ,EAAA,CACpB,CAAS,EACT,CAAK,EACD3wB,GAAa,IAAM,CACf,MAAMgJ,EAASsnB,IACT/V,EAASgW,IACf,GAAIvnB,GAAUuR,GAAUmW,IAAW,CAC/B,IAAI9N,EACJA,EAAWoN,GAAahnB,EAAQuR,EAAQ,CAAE,CAAA,EAC1CkW,EAAkB7N,CAAQ,CAC7B,MAEO4N,EAAc,IACdA,EAAc,EAAG,UACjBC,EAAkB,MAAS,EAC3BK,EAAe/W,GAAU,CACrB,GAAG8W,EACH,WAAY,CAAE,EACd,OAAQ,CAAE,OAAQ,EAAI,CACzB,EAAE,CAAE,MAAO,EAAM,CAAA,CAAC,EAGnC,CAAK,EACM,IAAMA,CACjB,CClIe,SAASrT,GAAStgB,EAAS2H,EAAM,CAG9C,GAAI3H,EAAQ,SAAU,OAAOA,EAAQ,SAAS2H,CAAI,EAClD,GAAI3H,EAAQ,wBAAyB,OAAOA,IAAY2H,GAAQ,CAAC,EAAE3H,EAAQ,wBAAwB2H,CAAI,EAAI,GAC7G,CCLA,SAASosB,GAAoBpsB,EAAM0R,EAAWhI,EAASjP,EAAS,CAC9D,IAAImX,EAAUnX,GAAW,OAAOA,GAAY,UAAYA,EAAQ,QAAUA,EAC1EuF,EAAK,oBAAoB0R,EAAWhI,EAASkI,CAAO,EAEhDlI,EAAQ,QACV1J,EAAK,oBAAoB0R,EAAWhI,EAAQ,OAAQkI,CAAO,CAE/D,CCZA,SAASya,GAAOrsB,EAAM0R,EAAWhI,EAASjP,EAAS,CACjD,OAAAgP,GAAiBzJ,EAAM0R,EAAWhI,EAASjP,CAAO,EAC3C,UAAY,CACjB2xB,GAAoBpsB,EAAM0R,EAAWhI,EAASjP,CAAO,CACtD,CACH,CCHe,SAASkc,GAAc3W,EAAM,CAC1C,OAAOA,GAAQA,EAAK,eAAiB,QACvC,CCHA,MAAMssB,GAAO,IAAM,CAAA,EACnB,SAASC,GAAiBxc,EAAO,CAC7B,OAAOA,EAAM,SAAW,CAC5B,CACA,SAASyc,GAAgBzc,EAAO,CAC5B,MAAO,CAAC,EAAEA,EAAM,SAAWA,EAAM,QAAUA,EAAM,SAAWA,EAAM,SACtE,CACO,MAAM0c,GAAgB/lB,GAAQA,EAW9B,SAASgmB,GAAgBhmB,EAAKimB,EAAiBL,GAAM,CAAE,SAAAzc,EAAU,aAAA+c,EAAe,OAAS,EAAG,GAAI,CACnG,KAAM,CAACC,EAA6BC,CAA8B,EAAIvyB,EAAa,EAAK,EAClFwyB,EAAsBtvB,GAAM,CAC9B,MAAMuvB,EAAgBP,GAAa/lB,EAAG,CAAE,EACxComB,EAA+B,CAACE,GAC5BR,GAAgB/uB,CAAC,GACjB,CAAC8uB,GAAiB9uB,CAAC,GACnB,CAAC,CAACkb,GAASqU,EAAevvB,EAAE,MAAM,CAAC,CAC/C,EACUwvB,EAAexvB,GAAM,CAClBovB,EAA2B,GAC5BF,EAAelvB,CAAC,CAE5B,EACItC,GAAa,IAAM,CACf,GAAI0U,GAAYnJ,EAAG,GAAM,KACrB,OACJ,MAAMwmB,EAAMvW,GAAc8V,GAAa/lB,EAAG,CAAE,CAAC,EAG7C,IAAIymB,GAAgBD,EAAI,aAAe,QAAQ,MAI/C,MAAME,EAA6Bf,GAAOa,EAAKN,EAAcG,EAAoB,EAAI,EAC/EM,EAAsBhB,GAAOa,EAAKN,EAAenvB,GAAM,CAEzD,GAAIA,IAAM0vB,EAAc,CACpBA,EAAe,OACf,MACH,CACDF,EAAYxvB,CAAC,CACzB,CAAS,EACD,IAAI6vB,EAA4B,CAAA,EAC5B,iBAAkBJ,EAAI,kBACtBI,EAA4B,CAAE,EAAC,MAC1B,KAAKJ,EAAI,KAAK,QAAQ,EACtB,IAAKphB,GAAOugB,GAAOvgB,EAAI,YAAawgB,EAAI,CAAC,GAElDjuB,GAAU,IAAM,CACZ+uB,IACAC,IACAC,EAA0B,QAASC,GAAWA,EAAQ,CAAA,CAClE,CAAS,CACT,CAAK,CACL,CCnEO,SAASC,GAAc1E,EAAW,CACrC,MAAM3qB,EAAS,CAAA,EACf,OAAK,MAAM,QAAQ2qB,CAAS,GAI5BA,GAAW,QAAS6B,GAAM,CACtBxsB,EAAOwsB,EAAE,IAAI,EAAIA,CACzB,CAAK,EACMxsB,GANI2qB,GAAa3qB,CAO5B,CACO,SAASsvB,GAAgBvlB,EAAM,GAAI,CACtC,OAAI,MAAM,QAAQA,CAAG,EACVA,EACJ,OAAO,KAAKA,CAAG,EAAE,IAAK3D,IACzB2D,EAAI3D,CAAC,EAAE,KAAOA,EACP2D,EAAI3D,CAAC,EACf,CACL,CACO,SAASmpB,GAA6B,CAAE,QAAA7B,EAAS,aAAA8B,EAAc,UAAA7X,EAAW,KAAAgN,EAAM,OAAAvH,EAAQ,MAAAqS,EAAO,iBAAAC,EAAkB,aAAApT,EAAc,aAAAqT,EAAe,CAAE,CAAA,EAAK,CACxJ,MAAMhF,EAAY0E,GAAcM,EAAa,SAAS,EACtD,MAAO,CACH,GAAGA,EACH,UAAAhY,EACA,QAAA+V,EACA,SAAU+B,EAAQ,QAAUE,EAAa,SACzC,UAAWL,GAAgB,CACvB,GAAG3E,EACH,eAAgB,CACZ,QAAS6E,CACZ,EACD,gBAAiB,CACb,GAAG7E,EAAU,gBACb,QAAS+E,EACH,CACE,QAASA,EACT,GAAG/E,EAAU,iBAAiB,OACjC,EACCA,EAAU,iBAAiB,OACpC,EACD,OAAQ,CACJ,QAAS,CACL,OAAAvN,EACA,GAAGuN,EAAU,QAAQ,OACxB,CACJ,EACD,MAAO,CACH,GAAGA,EAAU,MACb,QAAS,CAAC,CAACrO,EACX,QAAS,CACL,GAAGqO,EAAU,OAAO,QACpB,QAASrO,CACZ,CACJ,EACD,KAAM,CACF,QAAS,CAAC,CAACqI,EACX,GAAGgG,EAAU,IAChB,CACb,CAAS,CACT,CACA,CCtDA,MAAMwD,GAAOA,IAAM,CAAE,EAWLyB,SAAAA,GAAgBtvB,EAAI,GAAI,CAC9BpG,MAAAA,EAAUiD,GAAWyW,EAAe,EACpC,CAAC0I,EAAcuT,CAAc,EAAIzzB,EAAa,EAC9C,CAAC0zB,EAAaC,CAAc,EAAI3zB,EAAa,EAAK,EAClD,CAAC4zB,EAAeC,CAAgB,EAAIva,GAAY,CAAA,CAAE,EAElDpZ,EAAUmJ,EAAW,CACvBgqB,MAAO,GACPE,aAAc,CAAC,EACftC,UAAW,CAAC,CAACnzB,GACdoG,CAAC,EACE2H,EAAO7K,EAAW,IACblD,GAAS+N,MAAQ,KAAO,CAAC,CAAC3L,EAAQ2L,KAAO/N,EAAQ+N,IAC3D,EACDjL,GAAa,IAAM,CACXiL,EAAK,GAAK,CAAC6nB,KACXC,EAAe,EAAI,CACvB,CACH,EAEDpzB,GAAe,IAAM,CACjBszB,EAAiBlZ,GAAUwY,GAA6B,CACpD5X,UAAWrb,EAAQqb,WAAazd,GAASyd,WAAa,eACtD+V,QAASpxB,EAAQ+wB,WAAa,CAAC,CAACnzB,EAChCs1B,aAAclzB,EAAQ4zB,sBAAwB,KAAOjoB,EAAAA,EAAS3L,EAAQ4zB,qBACtE9S,OAAQ9gB,EAAQ8gB,OAChBuH,KAAMroB,EAAQqoB,KACd8K,MAAOnzB,EAAQmzB,MACfnT,aAAcA,EAAa,EAC3BqT,aAAcrzB,EAAQqzB,YACzB,CAAA,CAAC,CAAC,CAAA,CACN,EACD,MAAMQ,EAAqB7wB,GAAA,CACd8wB,GAAAA,OAAO,GAAO9wB,CAAC,CAC5B,EACMiY,EAAS8V,GAAU,IAAMnzB,GAASm2B,cAAe,IAAMn2B,GAASo2B,YAAaN,CAAa,EAChGhzB,OAAAA,GAAa,IAAM,CACX9C,GAASo2B,aACO/B,GAAA,IAAMr0B,EAAQo2B,YAAaH,EAAa,CACpD,IAAI1B,cAAe,CACf,OAAOnyB,EAAQi0B,cACnB,EACA,IAAI7e,UAAW,CACX,MAAO,CAACzJ,EAAK,CAAA,CACjB,CACH,CACL,CACH,EAsCM,CArCWxC,EAAW,CACzB,IAAI8C,KAAM,CACN,OAAOrO,GAASs2B,SAAWrC,EAC/B,EACA,IAAIpiB,OAAQ,CACDwL,OAAAA,EAAAA,GAAUyW,OAAOzW,MAC5B,EACA,GAAI,mBAAoB,CACpB,OAAOrd,GAASm2B,eAAetyB,EAAAA,GAEpCwZ,EAAO,GAAGwB,WAAWxB,QAAU,CAAA,CAAE,EACnB,CACb,IAAItP,MAAO,CACP,OAAOA,EAAK,CAChB,EACA,IAAI0P,WAAY,CACZ,OAAOzd,GAASyd,SACpB,EACA,IAAI8Y,UAAW,CACX,OAAOX,EAAY,CACvB,EACA,IAAIM,QAAS,CACT,OAAOl2B,GAASk2B,MACpB,EACA,IAAI7Y,QAAS,CACFjb,OAAAA,EAAQ+wB,UAAY9V,EAAAA,EAAW,IAC1C,EACA,IAAImZ,YAAa,CACb,OAAOp0B,EAAQ+wB,UACT,CACE9kB,IAAKsnB,EACL,GAAGtY,EAAO,GAAGwB,WAAWqD,MACxBrQ,MAAOwL,EAAO,GAAGyW,OAAO5R,KAAAA,EAE1B,CAAC,CAAA,CAEf,CAC2B,CAC/B,CAOO,SAASuU,GAAa9xB,EAAG,CACtB,KAAA,CAACyT,EAAOhW,CAAO,EAAI4J,GAAWrH,EAAG,CAAC,UAAU,CAAC,EAC7C,CAACyE,EAAOkO,CAAI,EAAIoe,GAAgBtzB,CAAO,EAC7C,OAAAs0B,MAAUte,EAAMjR,SAASiC,EAAOkO,CAAI,CAAC,CACzC,CCzGA,IAAIqf,GAAY,EACT,SAASC,GAAaC,EAAW,CAC7BA,OAAAA,GAAc,cAAa,EAAEF,EAAU,EAClD,CCTO,MAAMG,GAAqBrjB,GAAAA,EAAGsjB,aAAa,MAAM,GAAGC,gBAAkB,OACvE/C,GAAOA,IAAM,CAAE,EAOd,SAASgD,IAAoB,CAChC,MAAMpzB,EAAK+yB,GAAa,EAClB52B,EAAUiD,GAAWyW,EAAe,EAI1C,MAAO,CACH,CACI7V,GAAAA,EACA,IAAIwK,KAAM,CACN,OAAOrO,EAAQk3B,WAAajD,EAChC,EACApc,QATmBzS,GAAA,CACvBpF,EAAQk2B,OAAO,CAACl2B,EAAQ+N,KAAM3I,CAAC,CACnC,EAQQ,GAAI,iBAAkB,CACX,MAAA,CAAC,CAACpF,EAAQ+N,IACrB,EACA,GAAI,iBAAkB,CAClB,OAAQ/N,EAAQo2B,aAAeU,GAAW92B,EAAQo2B,WAAW,EAAI,GAAOpe,MAAAA,CAC5E,EAEJ,CACI,IAAIjK,MAAO,CACP,OAAO/N,EAAQ+N,IACnB,EACA,IAAImoB,QAAS,CACT,OAAOl2B,EAAQk2B,MAAAA,CACnB,CACH,CAET,CAOO,SAASiB,GAAe,CAAEhwB,SAAAA,CAAS,EAAG,CACzC,KAAM,CAACiC,EAAOkO,CAAI,EAAI2f,GAAkB,EACxC,OAAAP,EAAUvvB,IAAAA,EAASiC,EAAOkO,CAAI,CAAC,CACnC,CCjDa8f,MAAAA,GAAoBpwB,GAAc,IAAI,EACtCqwB,GAAeA,CAACC,EAAUtgB,EAAO,OACtCsgB,GAAY,KACLC,OAAOD,CAAQ,EACnBtgB,GAAQ,KCJNwgB,GAAaxwB,GAAc,IAAI,ECD/BywB,GAAmB,cACnBC,GAAkB,OACxB,SAASC,GAASzsB,EAAU,CAC/B,MAAO,GAAGusB,EAAgB,GAAGvsB,CAAQ,EACzC,CACO,SAAS0sB,GAAS1sB,EAAU,CAC/B,MAAO,GAAGwsB,EAAe,GAAGxsB,CAAQ,EACxC,CCIO,SAAS2sB,GAAgBz1B,EAAS,CAC/B01B,MAAAA,EAAc70B,GAAWm0B,EAAiB,EAC1CW,EAAa90B,GAAWu0B,EAAU,EAClC,CAAEQ,UAAAA,CAAU,EAAID,GAAc,CAAC,EAC/BT,EAAWD,GAAaj1B,EAAQwC,IAAKxC,EAAQ4U,IAAI,EACjDihB,EAAW/0B,EAAW,IAAMd,EAAQ81B,QAAU,MAAQ91B,EAAQwC,KAAO,KACrEyyB,GAAaW,CAAS,IAAMV,EAC5Bl1B,EAAQ81B,MAAM,EASpB,MAAO,CACH,CACIrgB,QAVuBH,GAAA,CAC3B,GAAItV,EAAQoV,SACR,OACJ,IAAI1R,EAAS4Q,GAAiBtU,EAAQyV,QAASH,CAAK,EAChDogB,GAAe,CAAChyB,EAAO6Q,sBACvBmhB,EAAYR,EAAU5f,CAAK,CAEnC,EAIQ,GAAI,iBAAkB,CAClB,OAAOtV,EAAQoV,UAAYQ,MAC/B,EACA,GAAI,iBAAkB,CAClB,OAAOigB,EAAS,CACpB,EACA,CAACN,GAAS,eAAe,CAAC,EAAG,EAAA,EAEjC,CACI,IAAIM,UAAW,CACX,OAAOA,EAAS,CAAA,CACpB,CACH,CAET,CACO,MAAME,GAAsBxzB,GAAA,CACzB,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAEvBT,EAAW,CAAEgN,GAAIJ,IAAUxT,CAAC,EAE5B,CAAC,WAAY,WAAY,UAAW,SAAU,IAAI,CAAC,EAC7C,CAACyzB,CAAiB,EAAIP,GAAgB,CACxC,IAAIjzB,KAAM,CACN,OAAOwT,EAAMkf,QACjB,EACA,IAAItgB,MAAO,CACP,OAAO5N,EAAM4N,IACjB,EACA,IAAIQ,UAAW,CACX,OAAOY,EAAMZ,QACjB,EACA,IAAIK,SAAU,CACV,OAAOO,EAAMP,OACjB,EACA,IAAIqgB,QAAS,CACT,OAAO9f,EAAM8f,MAAAA,CACjB,CACH,EACD1f,OAAAA,EAAQvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,CAAE,EAAMnP,EAAWgvB,CAAiB,CAAA,CACzE,ECnEMC,GAAUrxB,GAAckS,GAAY,OAAS,MAAS,EAC9Bmf,GAAQ,SAO/B,SAASC,IAAY,CACxB,OAAOr1B,GAAWo1B,EAAO,CAC7B,CCHO,SAASE,GAAqBC,EAAWvxB,EAAcoK,EAAS,CACnE,KAAM,CAAConB,EAAYh0B,CAAQ,EAAIvC,EAAa+E,EAAc,CAAA,EACpDyxB,EAAex1B,EAAW,IAAMs1B,EAAW,IAAK,MAAS,EAK/D,OAAA/1B,GAAe6C,GAAGozB,EAAc,CAACC,EAAIC,IAAQ,CACrC,CAACD,GAAMC,GAAOH,EAAY,IAAKxxB,EAAY,GAC3CxC,EAAS,IAAMwC,EAAY,CAAE,CAEpC,CAAA,CAAC,EAOK,CANU,IAAOyxB,EAAY,EAAKF,EAAW,EAAGC,EAAU,EAC/C,CAACt2B,KAAUyZ,IAAS,CAC9BvK,GACAA,EAAQlP,EAAO,GAAGyZ,CAAI,EAC1BnX,EAAS,IAAMtC,CAAK,CAC5B,CAC8B,CAC9B,CCXO,SAAS02B,GAASl0B,EAAG,CAExB,MAAMyE,EAAQmC,EAAW,CACrButB,aAAe,MAAKnB,GAAS,eAAe,CAAE,IAC9Cla,UAAW,gBACZ9Y,CAAC,EACEyc,EAASkX,GAAU,EACnB,CAACvqB,EAAMgrB,CAAQ,EAAIR,GAAqB,IAAMnvB,EAAM2E,KAAM,IAAM3E,EAAM4vB,YAAa5vB,EAAM2vB,QAAQ,EACjG,CAACE,EAAS3C,CAAO,EAAIp0B,EAAa,EAClC,CAACg3B,EAAWhC,CAAS,EAAIh1B,EAAa,EACtC,CAACi3B,EAAiBC,CAAkB,EAAIl3B,EAAa,IAAI,EACzD41B,EAAc70B,GAAWm0B,EAAiB,EAC1CiC,EAAkBA,IAAMJ,EAAQ,GAAG3Y,SAAS2Y,EAAQ,EAAE3a,cAAcgb,aAAa,EACjFpD,EAASA,CAACqD,EAAU7hB,EAAOjU,EAASiU,GAAOH,OAAS,CACtDwhB,EAASQ,EAAU,CAAEC,cAAe9hB,EAAOjU,OAAAA,CAAAA,CAAQ,CACvD,EACMg2B,EAAeA,CAAC70B,EAAK8S,IAAU,CACpBhB,GAAkBgB,GAAU,CAC/BgiB,EAAAA,WAAW90B,EAAK8S,CAAK,EACpBwe,EAAA,GAAOxe,EAAO,QAAQ,GAC9BA,CAAK,EACIf,sBACRmhB,IAAclzB,EAAK8S,CAAK,CAEhC,EACM1X,EAAU,CACZk2B,OAAAA,EACAI,QAAAA,EACAY,UAAAA,EACA,IAAIzZ,WAAY,CACZ,OAAOrU,EAAMqU,SACjB,EACA,IAAI1P,MAAO,CACP,OAAOA,EAAK,CAChB,EACA,IAAIqoB,aAAc,CACd,OAAO6C,EAAQ,CACnB,EACA,IAAI9C,eAAgB,CAChB,OAAO+C,EAAU,CAAA,CAEzB,EACMS,EAAcA,IAAM,CACtB,MAAMtrB,EAAM6qB,EAAU,EAClB7qB,GAAOA,EAAIurB,OACXvrB,EAAIurB,MAAM,CAElB,EACMC,EAAkBA,IAAM,CAC1B,MAAMtiB,EAAO4hB,EAAgB,EAC7BC,EAAmB,IAAI,EACvB,IAAIU,EAAY1wB,EAAM2wB,qBAIlBD,GAHAA,GAAa,OACbA,EAAYb,KAAanC,GAAWmC,EAAS,CAAA,EAAI,WAAa,IAE9Da,IAAc,IAAUA,IAAc,YAAc,CAAC,UAAUE,KAAKziB,CAAI,EACxE,OAEJ,MAAM0iB,EAAQjhB,GAAIigB,EAAAA,EAAW7vB,EAAM0vB,YAAY,EAAE,CAAC,EAC9CmB,GAASA,EAAML,OACfK,EAAML,MAAM,CACpB,EACA92B,GAAa,IAAM,CACXiL,IACgB8rB,EAAA,EAEXR,KACOM,EAAA,CAChB,CACH,EACKO,MAAAA,EAAsBA,CAACt4B,EAASshB,IAAW,CACzC,GAAA,CAAC+V,EAAQ,EACF,OAAA,KACX,MAAMvvB,EAAQsP,GAAIigB,EAAQ,EAAG7vB,EAAM0vB,YAAY,EAC/C,IAAI/vB,EAAQW,EAAMywB,QAAQv4B,CAAO,EAAIshB,EAC7BkX,OAAAA,EAAAA,KAAK/a,IAAI,EAAG+a,KAAK9a,IAAIvW,EAAOW,EAAM4B,MAAM,CAAC,EAC1C5B,EAAMX,CAAK,CACtB,EACMsxB,EAA4B3iB,GAAA,CACxB,KAAA,CAAE9S,IAAAA,CAAAA,EAAQ8S,EACV5L,EAAS4L,EAAM5L,OACfwuB,EAAWrB,KAAW3Y,SAASxU,CAAM,EACrCyuB,EAAarB,KAAa5Y,SAASxU,CAAM,EAa/C,GAVgB,kBAAkBkuB,KAAKluB,EAAOmD,OAAO,IAEhDrK,IAAQ,KACJA,IAAQ,UAAY01B,GACpB11B,IAAQ,UAAYkH,EAAOyL,OAAS,WAGzC,CAAC+iB,GAAY,CAACC,GAGd31B,IAAQ,QAAU,CAACq0B,EAAQ,GAAK,CAAClrB,GACjC,OAEJqrB,EAAmB1hB,EAAMH,IAAI,EAC7B,MAAMD,EAAO,CAAEkiB,cAAe9hB,EAAOjU,OAAQiU,EAAMH,IAAK,EACxD,OAAQ3S,EAAG,CACP,IAAK,UAAW,CACNoW,MAAAA,EAAOkf,EAAoBpuB,EAAQ,EAAE,EACvCkP,GAAQA,EAAK4e,OACb5e,EAAK4e,MAAM,EACfliB,EAAMC,eAAe,EACrB,MAAA,CAEJ,IAAK,YAED,GADAD,EAAMC,eAAe,EACjB,CAAC5J,EACDgrB,EAAS,GAAMzhB,CAAI,MAElB,CACK0D,MAAAA,EAAOkf,EAAoBpuB,EAAQ,CAAC,EACtCkP,GAAQA,EAAK4e,OACb5e,EAAK4e,MAAM,CAAA,CAEnB,OACJ,IAAK,MAMoB9tB,GAAAA,EAAOwS,cAAe,QAAgBlZ,GAAA,EAC9CA,EAAER,MAAQ,OAAS,CAACQ,EAAE0G,QAAW,CAACmtB,KAAW3Y,SAASlb,EAAE0G,MAAM,IAC/DitB,EAAS,GAAOzhB,CAAI,CACxB,EACD,CAAEgC,KAAM,EAAA,CAAM,EAErB,MACJ,IAAK,SACG1U,IAAQ,WACR8S,EAAMC,eAAe,EACrBD,EAAME,gBAAgB,GAE1BmhB,EAAS,GAAOzhB,CAAI,EACRqiB,EAAA,EACZ,KACJ,CAER,EAEW/oB,OAAAA,EAAAA,SAASQ,iBAAiB,UAAWipB,CAAc,EAC1Dr0B,GAAU,IAAMob,EAAOxQ,SAASmjB,oBAAoB,UAAWsG,CAAc,CAAC,EAElF7hB,EAAS4e,GAAkBoD,SAAQ,CAACr4B,MAAOs3B,EAAY,IAAAtyB,UAAA,CAAAqR,OAAAA,EACpDkB,GAAgB8gB,SAAQ,CAACr4B,MAAOnC,EAAO,IAAAmH,UAAA,CAAA,OAAGiC,EAAMjC,QAAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAE/D,CACA0xB,GAAS4B,KAAOhE,GAChBoC,GAAS6B,OAASvD,GAClB0B,GAAS8B,KAAOxC,GCnKD,SAASmB,GAAczE,EAAK,CACrCA,IAAQ,SACVA,EAAMvW,GAAe,GAKvB,GAAI,CACF,IAAI4Z,EAASrD,EAAI,cAGjB,MAAI,CAACqD,GAAU,CAACA,EAAO,SAAiB,KACjCA,CACR,MAAW,CAEV,OAAOrD,EAAI,IACf,CACA,CCjBe,SAAS+F,GAAYjzB,EAAM,CACxC,IAAIktB,EAAMvW,GAAc3W,CAAI,EAC5B,OAAOktB,GAAOA,EAAI,aAAe,MACnC,CCFe,SAASrU,GAAiB7Y,EAAMkzB,EAAe,CAC5D,OAAOD,GAAYjzB,CAAI,EAAE,iBAAiBA,EAAMkzB,CAAa,CAC/D,CCVA,IAAIC,GAAS,WACE,SAASC,GAAUC,EAAQ,CACxC,OAAOA,EAAO,QAAQF,GAAQ,KAAK,EAAE,YAAa,CACpD,CCGA,IAAIG,GAAY,OACD,SAASC,GAAmBF,EAAQ,CACjD,OAAOD,GAAUC,CAAM,EAAE,QAAQC,GAAW,MAAM,CACpD,CCTA,IAAIE,GAAsB,8EACX,SAASC,GAAYj5B,EAAO,CACzC,MAAO,CAAC,EAAEA,GAASg5B,GAAoB,KAAKh5B,CAAK,EACnD,CCCA,SAAS0P,GAAMlK,EAAMuD,EAAU,CAC7B,IAAIgW,EAAM,GACNma,EAAa,GAEjB,GAAI,OAAOnwB,GAAa,SACtB,OAAOvD,EAAK,MAAM,iBAAiBozB,GAAU7vB,CAAQ,CAAC,GAAKsV,GAAiB7Y,CAAI,EAAE,iBAAiBozB,GAAU7vB,CAAQ,CAAC,EAGxH,OAAO,KAAKA,CAAQ,EAAE,QAAQ,SAAUtG,EAAK,CAC3C,IAAIzC,EAAQ+I,EAAStG,CAAG,EAEpB,CAACzC,GAASA,IAAU,EACtBwF,EAAK,MAAM,eAAeozB,GAAUn2B,CAAG,CAAC,EAC/Bw2B,GAAYx2B,CAAG,EACxBy2B,GAAcz2B,EAAM,IAAMzC,EAAQ,KAElC+e,GAAO6Z,GAAUn2B,CAAG,EAAI,KAAOzC,EAAQ,GAE7C,CAAG,EAEGk5B,IACFna,GAAO,cAAgBma,EAAa,KAGtC1zB,EAAK,MAAM,SAAW,IAAMuZ,CAC9B,CC1BO,SAASoa,GAAsBhd,EAAgB,SAAU,CAC5D,MAAM8C,EAAS9C,EAAc,YAC7B,OAAO,KAAK,IAAI8C,EAAO,WAAa9C,EAAc,gBAAgB,WAAW,CACjF,CCHO,MAAMid,GAAsB5D,GAAS,YAAY,EAKjD,MAAM6D,EAAa,CACtB,wBACA,MACA,OACA,MACA,cACA,YAAY,CAAE,cAAAld,EAAe,wBAAAmd,EAA0B,GAAM,MAAAC,EAAQ,EAAQ,EAAG,GAAI,CAChF,KAAK,wBAA0BD,EAC/B,KAAK,MAAQC,EACb,KAAK,OAAS,GACd,KAAK,cAAgBpd,CACxB,CACD,mBAAoB,CAChB,OAAOgd,GAAsB,KAAK,aAAa,CAClD,CACD,YAAa,CACT,OAAQ,KAAK,eAAiB,UAAU,IAC3C,CACD,mBAAmBK,EAAQ,CAE1B,CACD,sBAAsBA,EAAQ,CAE7B,CACD,kBAAkBC,EAAgB,CAC9B,MAAM/pB,EAAQ,CAAE,SAAU,UAGpBgqB,EAAc,KAAK,MAAQ,cAAgB,eAC3ClmB,EAAY,KAAK,aACvBimB,EAAe,MAAQ,CACnB,SAAUjmB,EAAU,MAAM,SAC1B,CAACkmB,CAAW,EAAGlmB,EAAU,MAAMkmB,CAAW,CACtD,EACYD,EAAe,iBAGf/pB,EAAMgqB,CAAW,EAAI,GAAG,SAAS3a,GAAIvL,EAAWkmB,CAAW,GAAK,IAAK,EAAE,EAAID,EAAe,cAAc,MAE5GjmB,EAAU,aAAa4lB,GAAqB,EAAE,EAC9Cra,GAAIvL,EAAW9D,CAAK,CACvB,CACD,OAAQ,CACJ,CAAC,GAAG,KAAK,MAAM,EAAE,QAASygB,GAAM,KAAK,OAAOA,CAAC,CAAC,CACjD,CACD,qBAAqBsJ,EAAgB,CACjC,MAAMjmB,EAAY,KAAK,aACvBA,EAAU,gBAAgB4lB,EAAmB,EAC7C,OAAO,OAAO5lB,EAAU,MAAOimB,EAAe,KAAK,CACtD,CACD,IAAIE,EAAO,CACP,IAAIC,EAAW,KAAK,OAAO,QAAQD,CAAK,EAOxC,OANIC,IAAa,KAGjBA,EAAW,KAAK,OAAO,OACvB,KAAK,OAAO,KAAKD,CAAK,EACtB,KAAK,mBAAmBA,CAAK,EACzBC,IAAa,KAGjB,KAAK,MAAQ,CACT,eAAgB,KAAK,kBAAmB,EACxC,MAAO,CAAE,CACrB,EACY,KAAK,yBACL,KAAK,kBAAkB,KAAK,KAAK,GAE9BA,CACV,CACD,OAAOD,EAAO,CACV,MAAMC,EAAW,KAAK,OAAO,QAAQD,CAAK,EACtCC,IAAa,KAGjB,KAAK,OAAO,OAAOA,EAAU,CAAC,EAG1B,CAAC,KAAK,OAAO,QAAU,KAAK,yBAC5B,KAAK,qBAAqB,KAAK,KAAK,EAExC,KAAK,sBAAsBD,CAAK,EACnC,CACD,WAAWA,EAAO,CACd,MAAO,CAAC,CAAC,KAAK,OAAO,QAAU,KAAK,OAAO,KAAK,OAAO,OAAS,CAAC,IAAMA,CAC1E,CACL,CC1FO,MAAME,GAAsB,CAAC3tB,EAAKuC,IAChCsI,GAED7K,GAAO,MACCuC,GAAY0N,GAAe,GAAE,MACrC,OAAOjQ,GAAQ,aACfA,EAAMA,EAAG,GACTA,GAAK,UACEA,GAAO,MANP,KASR,SAAS4tB,GAAiB7yB,EAAO,CACpC,MAAMgY,EAASkX,KACT,CAAC4D,EAAaC,CAAM,EAAIj6B,EAAa85B,GAAoB5yB,EAAM,IAAKgY,GAAQ,QAAQ,CAAC,EAC3F,OAAAte,GAAa,IAAM,CACXsG,EAAM,YAAc8yB,KACpB9yB,EAAM,WAAW8yB,EAAW,CAAE,CAE1C,CAAK,EACDp5B,GAAa,IAAM,CACf,MAAMs5B,EAAUJ,GAAoB5yB,EAAM,GAAG,EACzCgzB,IAAYF,KACZC,EAAOC,CAAO,CAE1B,CAAK,EACMF,CACX,mBCpBA,IAAIG,GACJ,SAASC,GAAWlb,EAAQ,CACxB,OAAKib,KACSA,GAAA,IAAIb,GAAa,CAAEld,cAAe8C,GAAQxQ,QAAAA,CAAU,GAC3DyrB,EACX,CACA,SAASE,GAAgBC,EAAU,CAC/B,MAAMpb,EAASkX,GAAU,EACnBmE,EAAeD,GAAYF,GAAWlb,CAAM,EAC5C0a,EAAQ,CACVY,OAAQ,KACRC,SAAU,IACd,EACOC,OAAAA,OAAOxqB,OAAO0pB,EAAO,CACxBe,IAAKA,IAAMJ,EAAaI,IAAIf,CAAK,EACjC5G,OAAQA,IAAMuH,EAAavH,OAAO4G,CAAK,EACvCgB,WAAYA,IAAML,EAAaK,WAAWhB,CAAK,EAC/CiB,aAAuB1uB,GAAA,CACnBytB,EAAMY,OAASruB,CACnB,EACA2uB,eAAyB3uB,GAAA,CACrBytB,EAAMa,SAAWtuB,CAAAA,CACrB,CACH,CACL,CACA,MAAM4uB,GAAe,CACjBlvB,KAAM,GACNkK,KAAM,SACN0kB,SAAU,GACVO,SAAU,GACVC,UAAW,GACXC,aAAc,GACdC,aAAc,GACdC,mBAAsB,IAAA,CAAA,IAAA1kB,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAcxP,EAAK,GAAA,EAAA,EAAAwP,CAAAA,GAAG,EAC5C2kB,OAAQA,IAAM,CAAA,CAClB,EACaC,GAAe74B,GAAA,CAClB,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAE5D,CACI,OACA,OACA,QACA,QACA,WACA,WACA,WACA,kBACA,kBACA,aACA,qBACA,YACA,eACA,eACA,sBACA,eACA,iBACA,UACA,YACA,SACA,SACA,SACA,WACA,YACA,UACA,aACA,YACA,KAAK,CACR,EACKgR,EAAYsmB,GAAiB,CAC/B,IAAI5tB,KAAM,CACN,OAAO+J,EAAMzC,SAAAA,CACjB,CACH,EACKmmB,EAAQS,GAAgBnkB,EAAMikB,OAAO,EACrC36B,EAAQwE,GAAS,EACjB,CAACu3B,EAAWC,CAAY,EAAIx7B,EAAa,EAAK,EAC5C6D,GAAA,IAAM23B,EAAa,EAAI,CAAC,EACtB13B,GAAA,IAAM03B,EAAa,EAAK,CAAC,EACnC,KAAM,CAACC,EAAQC,CAAS,EAAI17B,EAAa,CAACkW,EAAMrK,IAAI,EACpD,IAAI8vB,EAAe,KACnBzlB,EAAM/J,MAAMytB,CAAK,EACjBr5B,GAAe6C,GAAG,IAAM8S,EAAMrK,KAAM,CAACA,EAAM+vB,IAAa,CAChD5kB,IAAa,CAAC4kB,GAAY/vB,IAC1B8vB,EAAevE,GAAc,EACjC,CACH,CAAC,EACF72B,GAAe,IAAM,CACb,CAAC2V,EAAM2lB,YAAc,CAAC3lB,EAAMrK,MAAQ,CAAC4vB,IACrCC,EAAU,EAAI,EAETxlB,EAAMrK,MAAQ4vB,KACnBC,EAAU,EAAK,CACnB,CACH,EACD,MAAMI,EAAaA,IAAM,CAYrB,GAXAlC,EAAMe,IAAI,EACiB7I,EAAAA,GAAOpjB,SAAU,UAAWqtB,CAAqB,EACnDjK,EAAAA,GAAOpjB,SAAU,QAG1C,IAAMstB,WAAWC,CAAkB,EAAG,EAAI,EACtC/lB,EAAMgmB,QACNhmB,EAAMgmB,OAAO,EAIbhmB,EAAM+kB,UAAW,CACXkB,MAAAA,EAAuB/E,GAAc1oB,QAAQ,EAC/CkrB,EAAMY,QAAU2B,GAAwB,CAAC/d,GAASwb,EAAMY,OAAQ2B,CAAoB,IACrEA,EAAAA,EACfvC,EAAMY,OAAO9C,MAAM,EACvB,CAER,EACM0E,EAAaA,IAAM,CACrBxC,EAAM5G,OAAO,EACcqJ,IAAA,EACFC,IAAA,EACrBpmB,EAAMilB,eAEQzD,GAAAA,QAAQxhB,EAAMqmB,mBAAmB,EAChCZ,EAAA,KAEvB,EAIA/6B,GAAa,IAAM,CACX,CAACsV,EAAMrK,MAAQ,CAAC4H,OAETqoB,EAAA,CAAA,CACd,EAIDl7B,GAAawC,GAAGq4B,EAAQ,CAACA,EAAQt3B,IAAS,CAClCs3B,GAAU,EAAEt3B,GAAQs3B,IACTW,EAAA,CACf,CACH,CAAC,EACFt4B,GAAU,IAAM,CACDs4B,EAAA,CAAA,CACd,EAED,MAAMH,EAAqBA,IAAM,CACzB,GAAA,CAAC/lB,EAAMglB,cAAgB,CAACK,KAAe,CAAC3B,EAAMgB,aAC9C,OAEJ,MAAMuB,EAAuB/E,GAAc,EACvCwC,EAAMY,QAAU2B,GAAwB,CAAC/d,GAASwb,EAAMY,OAAQ2B,CAAoB,GACpFvC,EAAMY,OAAO9C,MAAM,CAE3B,EACM8E,EAA6Bt5B,GAAA,CAC3BA,EAAE0G,SAAW1G,EAAEuvB,gBAGnBvc,EAAMumB,kBAAkBv5B,CAAC,EACrBgT,EAAMukB,WAAa,IACnBvkB,EAAMmlB,SAAS,EAEvB,EACMU,EAA+B74B,GAAA,CAC7BgT,EAAM8kB,UAAY93B,EAAEw5B,UAAY,IAAM9C,EAAMgB,eAC5C1kB,EAAMymB,kBAAkBz5B,CAAC,EACpBA,EAAE05B,kBACH1mB,EAAMmlB,SAAS,EAG3B,EACIiB,IAAAA,EACAD,EACEQ,MAAAA,EAAeA,IAAInjB,IAAS,CAC9BgiB,EAAU,EAAI,EACRoB,EAAAA,WAAW,GAAGpjB,CAAI,CAC5B,EACMqjB,EAAgB/7B,EAAW,IAAM,CAAC,EAAEkV,EAAMrK,MAASqK,EAAM2lB,YAAc,CAACJ,EAAAA,EAAU,EAClFuB,EAAc3zB,EAAW,CAC3B,IAAI0M,MAAO,CACP,OAAOG,EAAMH,IACjB,EACA,IAAI5J,KAAM,CACN,OAAOytB,EAAMiB,YACjB,EAEA,GAAI,cAAe,CACR3kB,OAAAA,EAAMH,OAAS,SAAW,GAAOD,MAAAA,GAE7C5O,EAAO,CACN,IAAIyI,OAAQ,CACR,OAAOuG,EAAMvG,KACjB,EACA,IAAIstB,OAAQ,CACR,OAAO/mB,EAAM+mB,KACjB,EACAhoB,SAAU,EAAA,CACb,EACKioB,EAAqBA,IAAM,CAC7B,MAAM18B,EAAIyE,GAAS,IAAMiR,EAAMjR,QAAQ,EACrC,OAAAzE,KAAGoO,eAAe,OAAQ,UAAU,EAC/BpO,CACX,EACI28B,IAAAA,EAAcA,IAAMl5B,GAAazE,EAAO,IAAM0W,EAAMknB,aAAgBlnB,EAAMknB,aAAaJ,CAAW,GAAC,IAAA,CAAA,IAAApmB,EAAAD,GAAA,EAAAC,OAAAA,GAAAA,EAAcomB,EAAW,GAAA,EAAA,EAAAK,EAAAzmB,EAAGsmB,CAAkB,EAAAtmB,CAAAA,IAAQ,EAC7J,MAAM0mB,EAASA,IAAM,CACjB,MAAMx+B,EAAaoX,EAAM2lB,WACzB,OAAQ/8B,EAAyBwX,EAAMxX,EAAU,CAACy+B,OAAM,GAACC,cAAa,GAAA,IAAA,IAAA,CAAK,MAAA,CAAC,CAACtnB,EAAMrK,IAAI,EAAA,IAAE4xB,QAAM,CAAA,OAAEvnB,EAAMunB,MAAM,EAAA,IAAEC,WAAS,CAAA,OAAExnB,EAAMwnB,SAAS,EAAEZ,SAAUD,EAAY,IAAEc,SAAO,CAAA,OAAEznB,EAAMynB,OAAO,EAAA,IAAEC,YAAU,CAAA,OAAE1nB,EAAM0nB,UAAU,EAAA,IAAEC,WAAS,CAAA,OAAE3nB,EAAM2nB,SAAS,EAAA54B,SAClPk4B,CAAAA,CACW,EAFUA,CAG1B,EACMW,EAAWA,IAAM,CACnB,IAAIC,EAAkB,KACtB,GAAI7nB,EAAMukB,SAAU,CAChB,MAAMuD,EAAqB9nB,EAAM+nB,mBACjCF,EAAkB7nB,EAAMklB,eAAe,CACnCjvB,IAAKytB,EAAMkB,eACXnlB,QAAS6mB,CAAAA,CACZ,EACGwB,IACAD,EAAeznB,EAAK0nB,EAAkB,CAACT,OAAM,GAAA,IAAA,IAAA,CAAK,MAAA,CAAC,CAACrnB,EAAMrK,IAAI,EAAA5G,SACjE84B,CAAAA,CACmB,EACpB,CAEGA,OAAAA,CACX,EACA,OAAAznB,EAAS1L,EAAI,CAAA,IAACszB,MAAI,CAAE1J,OAAAA,QAAA/gB,GAAW,EAAA,GAAIspB,EAAc,CAAC,EAAA,IAAA93B,UAAA,CAAA,OAAAqR,EAC/CpD,GAAM,CAAA,IAACE,OAAK,CAAA,OAAEK,EAAU,CAAC,EAAA,IAAAxO,UAAA,CAAA,MAAA,CAAAqR,EACvBwnB,EAAQxnB,CAAAA,CAAAA,EAAAA,EACRgnB,EAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAGf,EACAa,GAAezD,OAAOxqB,OAAOorB,GAAO,CAChC8C,QAAS9E,EACb,CAAC,ECpPY+E,GAAav5B,GAAc,IAAI,ECOrC,SAASw5B,GAAWp+B,EAAS,CAC1Bq+B,MAAAA,EAAiBx9B,GAAWm0B,EAAiB,EAC7CW,EAAa90B,GAAWu0B,EAAU,EAClCkJ,EAAaz9B,GAAWs9B,EAAU,EAClCtI,EAAW/0B,EAAW,IAAMd,EAAQ81B,QAAU,MAAQ91B,EAAQwC,KAAO,KACrEmzB,GAAYC,YAAc51B,EAAQwC,IAClCxC,EAAQ81B,MAAM,EACdjgB,EAAO/U,EAAW,IAAM60B,GAAc,CAAC31B,EAAQ6V,MAAQ8f,EAAW9f,OAAS,UAAY,MAAQ7V,EAAQ6V,IAAI,EAC3GJ,EAAU3U,EAAW,IAAakC,GAAA,CACpC,GAAIhD,EAAQoV,SACR,OACJ,IAAI1R,EAAS4Q,GAAiBtU,EAAQyV,QAASzS,CAAC,EAC5ChD,EAAQwC,KAAO,MAGf67B,GAAkB,CAAC36B,EAAO6Q,sBACXvU,EAAAA,EAAQwC,IAAKQ,CAAC,CACjC,CACH,EA6CM,MAAA,CA5CO,CACV,IAAI6S,MAAO,CACP,OAAOA,EAAK,CAChB,EACA,IAAK0f,GAAS,WAAW,CAAC,GAAI,CACnBI,OAAAA,EAAa31B,EAAQwC,IAAMoT,MACtC,EACA,IAAInU,IAAK,CACL,OAAOk0B,EAAaA,EAAW4I,gBAAgBv+B,EAAQwC,GAAG,EAAIoT,MAClE,EACA,IAAIb,UAAW,CACJc,OAAAA,EAAAA,IAAW,QAAU7V,EAAQoV,UAAY,CAACygB,KAAc,GAAKjgB,MACxE,EACA,GAAK,iBAAmB,CAUpB,OAAOigB,EAAS,GAAM,CAACyI,GAAYhB,eAAiB,CAACgB,GAAYE,eAC3D7I,EACIA,EAAW8I,gBAAgBz+B,EAAQwC,GAAG,EAE1CoT,MACV,EACA,GAAK,iBAAmB,CACpB,OAAOC,EAAK,IAAM,OAAS7V,EAAQoV,SAAW,GAAOQ,MACzD,EACA,GAAK,iBAAmB,CACpB,OAAOC,EAAK,IAAM,OAASggB,EAAAA,EAAa,GAAOjgB,MACnD,EACA,IAAIH,SAAU,CACV,OAAOA,EAAQ,CAAA,CAEvB,EACa,CACT,IAAIogB,UAAW,CACX,OAAOA,EAAS,CAAA,CAExB,CACmB,CACvB,CACA,MAAMgF,GAAe,CACjB1kB,GAAIJ,EACR,EACa2oB,GAAiBn8B,GAAA,CAC1B,KAAM,CAACyT,EAAOhW,CAAO,EAAI4J,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,KAAM,SAAU,UAAU,CAAC,EACvF,CAACyE,EAAOkO,CAAI,EAAIkpB,GAAWj1B,EAAW,CACxC,IAAI2sB,QAAS,CACT,OAAOvzB,EAAEuzB,MACb,EACA,IAAItzB,KAAM,CACN,OAAOyyB,GAAa1yB,EAAE2yB,SAAU3yB,EAAEqS,IAAI,CAAA,CAE9C,EAAG5U,CAAO,CAAC,EAEXgH,OAAAA,EAAMuuB,GAAS,QAAQ,CAAC,EAAIrgB,EAAK2gB,SACjCzf,EAAQvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,CAAE,EAAMnW,EAAagH,CAAK,CAAA,CAC/D,EC/EM6qB,GAAc,GAAA,GACd8M,GAAiBpJ,GAAS,WAAW,EACrCsF,GAAe,CACjB1kB,GAAI,KACR,EACayoB,GAAar8B,GAAA,CACtB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,YACA,OACA,WAAW,CACd,EAEK,CAACs8B,EAAiBC,CAAkB,EAAIh/B,EAAa,EAAK,EAC1D,CAACi/B,EAAUC,CAAW,EAAIl/B,EAAa,IAAI,EAC3Cu+B,EAAiBx9B,GAAWm0B,EAAiB,EAC7CsJ,EAAaz9B,GAAWs9B,EAAU,EAClCc,EAA+Bne,GAAA,CACjC,MAAMoe,EAAkBH,EAAS,EAC7B,GAAA,CAACG,EACM,OAAA,KACX,MAAM53B,EAAQsP,GAAIsoB,EAAkB,IAAGP,EAAe,6BAA4B,EAC5EQ,EAAcD,EAAgBE,cAAc,sBAAsB,EACxE,GAAI,CAACD,GAAeA,IAAgB3wB,SAAS0oB,cAClC,OAAA,KACLvwB,MAAAA,EAAQW,EAAMywB,QAAQoH,CAAW,EACnCx4B,GAAAA,IAAU,GACH,OAAA,KACX,IAAI04B,EAAY14B,EAAQma,EACpBue,OAAAA,GAAa/3B,EAAM4B,SACPm2B,EAAA,GACZA,EAAY,IACA/3B,EAAAA,EAAM4B,OAAS,GACxB5B,EAAM+3B,CAAS,CAC1B,EACMhI,EAAeA,CAAC70B,EAAK8S,IAAU,CAC7B9S,GAAO,OAEL80B,EAAAA,WAAW90B,EAAK8S,CAAK,EAC3B+oB,IAAiB77B,EAAK8S,CAAK,EAC/B,EACMiB,EAA2BjB,GAAA,CAE7B,GADiBU,GAAAA,EAAMF,UAAWR,CAAK,EACnC,CAACgpB,EACD,OAEAgB,IAAAA,EACJ,OAAQhqB,EAAM9S,IAAG,CACb,IAAK,YACL,IAAK,UACD88B,EAAkBL,EAAiB,EAAE,EACrC,MACJ,IAAK,aACL,IAAK,YACDK,EAAkBL,EAAiB,CAAC,EACpC,MACJ,QACI,MAAA,CAEHK,IAELhqB,EAAMC,eAAe,EACrB8hB,EAAaiI,EAAgBC,QAAQ/J,GAAS,UAAU,CAAC,GAAK,KAAMlgB,CAAK,EACzEwpB,EAAmB,EAAI,EAC3B,EACAp+B,GAAa,IAAM,CACXq+B,EAAAA,GAAcF,KACME,IAAWK,cAAe,IAAGT,EAAe,uBAAsB,GACzEnH,MAAM,EAEvBsH,EAAmB,EAAK,CAAA,CAC3B,EACD,MAAMU,EAAmBC,GAAA,CACrBT,EAAYS,CAAC,EACT,OAAOz4B,EAAMiF,KAAQ,YACrBjF,EAAMiF,IAAIwzB,CAAC,CAEnB,EACM7J,EAAYA,IAAMX,GAAaqJ,GAAY1I,WAAa5f,EAAM4f,SAAS,EACvE8J,EAAUA,IACL1pB,EAAMH,OAASyoB,EAAa,UAAY1oB,QAEnDQ,OAAAA,EAAS4e,GAAkBoD,SAAQ,CAACr4B,MAAOs3B,EAAY,IAAAtyB,UAAA,CAAAqR,OAAAA,EACpDgf,GAAWgD,SAAQ,CAACr4B,MAAO,CACtB,IAAI8V,MAAO,CACP,OAAO6pB,EAAQ,CACnB,EACA,IAAI9J,WAAY,CACZ,OAAOA,EAAU,CACrB,EACA,IAAI6I,iBAAkB,CAClB,OAAOH,GAAYG,iBAAmB5M,EAC1C,EACA,IAAI0M,iBAAkB,CAClB,OAAOD,GAAYC,iBAAmB1M,EAAAA,CAE9C,EAAC,IAAA9sB,UAAA,CAAAqR,OAAAA,EACAvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAE,EAAA,GAAA,mBAAA,CAAA,OAAmByf,EAAU,CAAA,GAAO5uB,EAAK,CAAE8O,UAAWS,EAAatK,IAAOuzB,EAAS,IAAE3pB,MAAI,CAAA,OAAE6pB,EAAQ,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAGxI,EACAC,GAAenF,OAAOxqB,OAAO4uB,GAAK,CAAErG,KAAMmG,EAAQ,CAAC,EC/GtCkB,GAAyBh7B,GAAc,IAAI,ECDjD,SAASi7B,GAAU1gC,EAAI,CAC1B,sBAAsB,IAAM,CACxB,sBAAsBA,CAAE,CAChC,CAAK,CACL,CC2FO,MAAM2gC,GAAY,YACZC,GAAS,SACTC,GAAW,WACXC,GAAU,UACVC,GAAU,UACvB,SAASrO,IAAO,CAAE,CAClB,MAAMgJ,GAAe,CACjBsF,GAAI,GACJ3B,aAAc,GACdlB,cAAe,GACfD,OAAQ,GACR+C,MAAO,GACPC,KAAM,GACN5C,QAAS5L,GACT6L,WAAY7L,GACZ8L,UAAW9L,GACX0L,OAAQ1L,GACR2L,UAAW3L,GACX+K,SAAU/K,EACd,EACajzB,GAAoB2D,GAAA,CACvB,KAAA,CAACyT,EAAOsqB,CAAU,EAAI12B,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAChE,KACA,WACA,eACA,gBACA,SACA,QACA,OACA,UACA,iBACA,UACA,aACA,YACA,SACA,YACA,WACA,SAAS,CACZ,EACG3E,IAAAA,EAAUiD,GAAW++B,EAAsB,EAC3CW,EAEAlD,EAASz/B,GAAW,CAACA,EAAQ4iC,WAAaxqB,EAAMoqB,MAAQpqB,EAAMqnB,OAC9DoD,EACAC,EAAe,KACf1qB,EAAMmqB,GACF9C,GACgB0C,EAAAA,GACDC,EAAAA,IAGCC,EAAAA,GAIhBjqB,EAAMsnB,eAAiBtnB,EAAMwoB,aACbsB,EAAAA,GAGAC,EAAAA,GAGxB,KAAM,CAACY,EAAQC,CAAS,EAAI9gC,EAAa2gC,CAAa,EACtD,IAAII,EAAe,KACnB,KAAM,CAACC,EAASC,CAAU,EAAIjhC,EAAa,EAAK,EAC1CkhC,EAAelgC,EAAW,IAAM6/B,EAAAA,IAAab,EAAS,EAC5Dn8B,GAAQ,IAAM,CAEVs9B,EAAa,GAAMP,CAAY,EAC/BK,EAAW,EAAI,CAAA,CAClB,EAED,MAAMG,EAASpgC,EAAW,IAAMkV,EAAMmqB,EAAE,EACzBj9B,GAAAA,GAAGg+B,EAAQ,IAAM,CAExB,GAAA,CAACJ,IACD,OACJ,MAAMK,EAAaR,EAAO,EACtBO,EAAAA,GAAYC,IAAerB,IAE3Bc,EAAUb,EAAM,EAEpB,IAAIqB,EAAa,KACbF,IACIC,IAAenB,IAAYmB,IAAelB,KAC7BD,EAAAA,KAIbmB,IAAenB,IAAYmB,IAAelB,MAC7BC,EAAAA,IAGRe,EAAA,GAAOG,GAAcrB,EAAM,CAAA,CAC3C,CAAC,EACFn8B,GAAU,IAAM,CACOy9B,EAAA,CAAA,CACtB,EACD,SAASC,GAAc,CACb,KAAA,CAAEC,QAAAA,CAAAA,EAAYvrB,EACpB,IAAIqqB,EAAMD,EAAO/C,EACb,OAAA,OAAOkE,GAAY,SACnBlB,EAAOD,EAAQ/C,EAASkE,EAEnBA,GAAW,OAChBlB,EAAOkB,EAAQlB,KACfD,EAAQmB,EAAQnB,MAEhB/C,EAASkE,EAAQlE,SAAWznB,OAAY2rB,EAAQlE,OAAS+C,GAEtD,CAAEC,KAAAA,EAAMD,MAAAA,EAAO/C,OAAAA,CAAO,CAAA,CAExB4D,SAAAA,EAAaO,EAAW,GAAOJ,EAAY,CAC5CA,IAAe,MAEIC,EAAA,EACfD,IAAepB,GACfyB,EAAaD,CAAQ,EAGTE,EAAA,GAGX1rB,EAAMsnB,eAAiBqD,EAAAA,IAAaZ,IACzCa,EAAUd,EAAS,CACvB,CAEJ,SAAS2B,EAAaD,EAAU,CACtB,KAAA,CAAEpB,MAAAA,CAAAA,EAAUpqB,EACZ2rB,EAAY/jC,EAAUA,EAAQ4iC,WAAagB,EAC3C,CAACI,EAAWC,CAAc,EAAI7rB,EAAM8rB,QAAU,CAACH,CAAS,EAAI,CAACpB,EAAUoB,CAAS,EAChFI,EAAWT,EAAY,EACvBU,EAAeL,EAAYI,EAAS1E,OAAS0E,EAAS3B,MAGxD,GAAA,CAACoB,GAAY,CAACpB,EAAO,CACrB6B,EAAahC,GAAS,IAAM,CACxBjqB,EAAM2nB,UAAUiE,CAAS,CAAA,CAC5B,EACD,MAAA,CAEEnE,EAAAA,QAAQmE,EAAWC,CAAc,EAC7BhC,GAAA,IAAMoC,EAAajC,GAAU,IAAM,CACnCtC,EAAAA,WAAWkE,EAAWC,CAAc,EAC1CK,EAAgBF,EAAc,IAAM,CAChCC,EAAahC,GAAS,IAAM,CAClBtC,EAAAA,UAAUiE,EAAWC,CAAc,CAAA,CAC5C,CAAA,CACJ,CAAA,CACJ,CAAC,CAAA,CAEN,SAASH,GAAc,CACb,KAAA,CAAErB,KAAAA,CAAAA,EAASrqB,EACX+rB,EAAWT,EAAY,EACvBM,EAAY5rB,EAAM8rB,QAAUlsB,OAAY2qB,EAE9C,GAAI,CAACF,EAAM,CACP4B,EAAalC,GAAQ,IAAM,CACvB/pB,EAAM4mB,SAASgF,CAAS,CAAA,CAC3B,EACD,MAAA,CAEJ5rB,EAAMunB,OAAOqE,CAAS,EACZ/B,GAAA,IAAMoC,EAAa/B,GAAS,IAAM,CACxClqB,EAAMwnB,UAAUoE,CAAS,EACTG,EAAAA,EAAS1B,KAAM,IAAM,CACjC4B,EAAalC,GAAQ,IAAM,CACvB/pB,EAAM4mB,SAASgF,CAAS,CAAA,CAC3B,EACG5rB,EAAMsnB,eACNuC,GAAU,IAAM,CACZe,EAAUd,EAAS,CAAA,CACtB,CACL,CACH,CAAA,CACJ,CAAC,CAAA,CAEN,SAASuB,GAAqB,CACtBR,IAAiB,OACjBA,GAAcsB,OAAO,EACNtB,EAAA,KACnB,CAEKoB,SAAAA,EAAaG,EAAWC,EAAU,CAIvCA,EAAWC,EAAgBD,CAAQ,EACnCzB,EAAUwB,CAAS,EACVC,EAAA,CAAA,CAEb,SAASC,EAAgBD,EAAU,CAC/B,IAAIvM,EAAS,GACb+K,OAAAA,EAAgBA,IAAIrnB,IAAS,CACrBsc,IACSA,EAAA,GACM+K,EAAA,KACfwB,EAAS,GAAG7oB,CAAI,EAExB,EACAqnB,EAAasB,OAAS,IAAM,CACfrM,EAAA,EACb,EACO+K,CAAAA,CAEFqB,SAAAA,EAAgBX,EAAStyB,EAAS,CACvCqzB,EAAgBrzB,CAAO,EACvB,MAAM1J,EAAOyQ,EAAM8rB,QAAU9rB,EAAM8rB,QAAUvB,EACvCgC,EAA+BhB,GAAW,MAAQ,CAACvrB,EAAMwsB,eAC3D,GAAA,CAACj9B,GAAQg9B,EAA8B,CACvBzG,GAAAA,WAAW+E,EAAc,CAAC,EAC1C,MAAA,CAEJ,GAAI7qB,EAAMwsB,eAAgB,CAChB,KAAA,CAACZ,EAAWa,CAAiB,EAAIzsB,EAAM8rB,QAAU,CAACjB,CAAY,EAAI,CAACt7B,EAAMs7B,CAAY,EACrF2B,EAAAA,eAAeZ,EAAWa,CAAiB,CAAA,CAEjDlB,GAAW,MAAQV,GACnB/E,WAAW+E,EAAcU,CAAO,CACpC,CAEAmB,IAAAA,EACJ,SAASC,GAAc,CAEdD,IACDA,EAAmB39B,GAAS,IAAMiR,EAAMjR,QAAQ,GACpD,MAAMzE,EAAIoiC,EAAiB,EAC3B,OAAO,OAAOpiC,GAAM,WAAaA,EAAEqgC,EAAO,EAAGL,CAAU,EAAIhgC,CAAAA,CAE/D8V,OAAAA,EAASwpB,GAAuBxH,SAAQ,CAACr4B,MAAO,KAAI,IAAAgF,UAAA,CAAA,OAAAqR,EACjD1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEgD,EAAa,CAAC,EAAA,IAAAj8B,UAAA,CAAA,OAAG49B,EAAY,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAEhD,ECrUaC,GAA4B57B,GAAA,CACrC,MAAM07B,EAAmB39B,GAAS,IAAMiC,EAAMjC,QAAQ,EAKtD,OAAAuvB,EAJkBuO,IAAM,CACpB,MAAMviC,EAAIoiC,EAAiB,EAC3B,OAAO,OAAOpiC,GAAM,WAAaA,EAAE2/B,GAAS,CAAE,CAAA,EAAI3/B,CACtD,CACmB,CACvB,ECJMu6B,GAAe,CACjBhlB,KAAM,UACV,EACO,SAASitB,GAAYvgC,EAAG,CAC3B,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,SACA,WACA,eACA,aACA,eAAe,CAClB,EACK3E,EAAUiD,GAAWs9B,EAAU,EACrC,GAAI,CAACvgC,EACM,MAAA,CACHoJ,EACA,CACI,IAAIkuB,UAAW,CACX,OAAOlf,EAAMkf,QACjB,EACA,IAAIW,UAAW,CACX,OAAO7f,EAAM8f,MACjB,EACA,IAAI0I,cAAe,CACf,OAAOxoB,EAAMwoB,YACjB,EACA,IAAI7C,YAAa,CACb,OAAO3lB,EAAM2lB,UACjB,EACA,IAAI2B,eAAgB,CAChB,OAAOtnB,EAAMsnB,aAAAA,CACjB,CACH,EAEH96B,MAAAA,EAAMyyB,GAAajf,EAAMkf,QAAQ,EASvC,MAAO,CARa/rB,EAAWnC,EAAO,CAClC,IAAIvF,IAAK,CACE7D,OAAAA,GAAS6gC,gBAAgBzoB,EAAMkf,QAAQ,CAClD,EACA,GAAI,mBAAoB,CACbt3B,OAAAA,GAAS2gC,gBAAgBvoB,EAAMkf,QAAQ,CAAA,CAClD,CACH,EAGG,CACI,IAAIA,UAAW,CACX,OAAOlf,EAAMkf,QACjB,EACA,IAAIW,UAAW,CACJ7f,OAAAA,EAAM8f,QAAU,MAAQtzB,GAAO,KAChCyyB,GAAar3B,GAASg4B,SAAS,IAAMpzB,EACrCwT,EAAM8f,MAChB,EACA,IAAI6F,YAAa,CACN3lB,OAAAA,EAAM2lB,YAAc/9B,GAAS+9B,YAAciH,EACtD,EACA,IAAIpE,cAAe,CACf,OAAOxoB,EAAMwoB,cAAgB,KAAOxoB,EAAMwoB,aAAe5gC,GAAS4gC,YACtE,EACA,IAAIlB,eAAgB,CAChB,OAAOtnB,EAAMsnB,eAAiB,KAAOtnB,EAAMsnB,cAAgB1/B,GAAS0/B,aAAAA,CACxE,CACH,CAET,CACO,MAAMyF,GAAsB/7B,GAAA,CAC/B,KAAM,CAACg8B,EAAeC,CAAK,EAAIH,GAAY97B,CAAK,EAC7Bi8B,OAAAA,EAAMtH,WAGzBvlB,EAAS+nB,GAAW/F,SAAQ,CAACr4B,MAAO,KAAI,IAAAgF,UAAA,CAAAqR,OAAAA,EACrC4e,GAAkBoD,SAAQ,CAACr4B,MAAO,KAAI,IAAAgF,UAAA,CAAAqR,OAAAA,EAUpCvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAG1M,EAAMmP,IAAM,KAAA,GAAY6sB,EAAa,CAAEntB,KAAI,WAAA,IAAYqtB,QAAM,CAAA,MAAE,CAACD,EAAMpN,QAAQ,EAAA,GAAA,eAAA,CAAA,MAAe,CAACoN,EAAMpN,QAAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAIzI,ECpFasN,GAAkBn8B,GAAA,CAC3B,KAAM,CAAC4uB,EAAW0B,CAAQ,EAAInB,GAAqB,IAAMnvB,EAAM4uB,UAAW,IAAM5uB,EAAMo8B,iBAAkBp8B,EAAMswB,QAAQ,EAChH71B,EAAK+yB,GAAaxtB,EAAMvF,EAAE,EAC1B4hC,EAAkBviC,EAAW,IAAMkG,EAAMq8B,kBAC1C,CAAC7gC,EAAK2S,IAAU1T,EAAM,GAAEA,CAAG,IAAG0T,CAAK,IAAG3S,CAAI,GAAI,KAAM,EACnD87B,EAAa,CACf,IAAIhH,UAAW,CACJA,OAAAA,CACX,EACA,IAAI1B,WAAY,CACZ,OAAOA,EAAU,CACrB,EACA,IAAI+F,YAAa,CACb,OAAO30B,EAAM20B,UACjB,EACA,IAAI6C,cAAe,CACf,OAAOx3B,EAAMw3B,cAAgB,EACjC,EACA,IAAIlB,eAAgB,CAChB,OAAOt2B,EAAMs2B,eAAiB,EAClC,EACA,IAAImB,iBAAkB,CAClB,OAAgB4E,GAAAA,IAAkB7gC,EAAK,MAAM,CACjD,EACA,IAAI+7B,iBAAkB,CAClB,OAAgB8E,GAAAA,IAAkB7gC,EAAK,KAAK,CAAA,CAEpD,EACA4T,OAAAA,EAAS+nB,GAAW/F,SAAQ,CAACr4B,MAAOu+B,EAAU,IAAAv5B,UAAA,CAAAqR,OAAAA,EAC3C4e,GAAkBoD,SAAQ,CAACr4B,MAAOu3B,GAAY,KAAI,IAAAvyB,UAAA,CAAA,OAChDiC,EAAMjC,QAAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAGvB,EACAo+B,GAAKG,MAAQP,GCtCN,MAAMQ,GAAsB,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,IAAI,EACjEC,GAAe5+B,GAAc,CAC/B6+B,SAAU,CAAC,EACXC,YAAaH,EACjB,CAAC,EASeI,SAAAA,GAAmBC,EAAQC,EAAe,CAChDC,MAAAA,EAAejjC,GAAW2iC,EAAY,EAC5C,OAAOI,GAAUE,EAAaL,SAASI,CAAa,GAAKA,CAC7D,CACO,SAASE,IAA0B,CAChCn4B,MAAAA,EAAM/K,GAAW2iC,EAAY,EACnC,MAAO,IAAM53B,EAAI83B,WACrB,CACO,SAASM,IAAW,CACjBp4B,MAAAA,EAAM/K,GAAW2iC,EAAY,EAC5B,MAAA,IAAM53B,EAAIq4B,MAAQ,KAC7B,CCvBA,SAAwBC,GAAqB3+B,EAAM,CAE1C4+B,EAAAA,YACT,CCEe,SAASC,GAAa7+B,EAAM0R,EAAWotB,EAASC,EAAY,CASzE,GAJIA,IAAe,SACjBA,EAAa,IAGX/+B,EAAM,CACR,IAAI+P,EAAQ,SAAS,YAAY,YAAY,EAC7CA,EAAM,UAAU2B,EAAWotB,EAASC,CAAU,EAC9C/+B,EAAK,cAAc+P,CAAK,CAC5B,CACA,CClBA,SAASivB,GAAch/B,EAAM,CAC3B,IAAI2O,EAAM4K,GAAIvZ,EAAM,oBAAoB,GAAK,GACzCi/B,EAAOtwB,EAAI,QAAQ,IAAI,IAAM,GAAK,IAAO,EAC7C,OAAO,WAAWA,CAAG,EAAIswB,CAC3B,CAEA,SAASC,GAAqB32B,EAAS42B,EAAU7kB,EAAS,CACpDA,IAAY,SACdA,EAAU,GAGZ,IAAI8kB,EAAS,GACTC,EAAS,WAAW,UAAY,CAC7BD,GAAQP,GAAat2B,EAAS,gBAAiB,EAAI,CAC5D,EAAK42B,EAAW7kB,CAAO,EACjBiT,EAASlB,GAAO9jB,EAAS,gBAAiB,UAAY,CACxD62B,EAAS,EACb,EAAK,CACD,KAAM,EACV,CAAG,EACD,OAAO,UAAY,CACjB,aAAaC,CAAM,EACnB9R,EAAQ,CACT,CACH,CAEe,SAAS+R,GAAc/2B,EAASmB,EAASy1B,EAAU7kB,EAAS,CACrE6kB,GAAY,OAAMA,EAAWH,GAAcz2B,CAAO,GAAK,GAC3D,IAAIg3B,EAAgBL,GAAqB32B,EAAS42B,EAAU7kB,CAAO,EAC/DiT,EAASlB,GAAO9jB,EAAS,gBAAiBmB,CAAO,EACrD,OAAO,UAAY,CACjB61B,EAAe,EACfhS,EAAQ,CACT,CACH,CCnCA,SAASyR,GAAch/B,EAAMuD,EAAU,CACnC,MAAMoL,EAAM4K,GAAIvZ,EAAMuD,CAAQ,GAAK,GAC7B07B,EAAOtwB,EAAI,QAAQ,IAAI,IAAM,GAAK,IAAO,EAC/C,OAAO,WAAWA,CAAG,EAAIswB,CAC7B,CACe,SAASO,GAAsBj3B,EAASmB,EAAS,CAC5D,MAAMy1B,EAAWH,GAAcz2B,EAAS,oBAAoB,EACtDk3B,EAAQT,GAAcz2B,EAAS,iBAAiB,EAChDglB,EAAS+R,GAAc/2B,EAAU9K,GAAM,CACrCA,EAAE,SAAW8K,IACbglB,IACA7jB,EAAQjM,CAAC,EAErB,EAAO0hC,EAAWM,CAAK,CACvB,CCfA,MAAMnK,GAAe,CAAC,EAEhBoK,GAA2B1iC,GAAA,CAC7B,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,UACA,aACA,YACA,SACA,YACA,WACA,iBACA,WACA,UAAU,CACb,EACD,GAAI,CAACu/B,EAASoD,CAAU,EAAIplC,EAAa,EACzC,MAAM0/B,EAAqBvzB,GAAA,CACvBi5B,EAAWj5B,CAAG,EACd+J,EAAMuqB,WAAWt0B,CAAG,CACxB,EACA,SAASk5B,EAAU9C,EAAU,CACzB,OAAkB+C,GAAA,CACV/C,GAAYP,KACHA,EAAAA,IAAWsD,CAAK,CAEjC,CAAA,CAEJ,MAAMC,EAAW,CACb,IAAI5H,SAAU,CACH0H,OAAAA,EAAUnvB,EAAMynB,OAAO,CAClC,EACA,IAAIC,YAAa,CACNyH,OAAAA,EAAUnvB,EAAM0nB,UAAU,CACrC,EACA,IAAIC,WAAY,CACLwH,OAAAA,EAAUnvB,EAAM2nB,SAAS,CACpC,EACA,IAAIJ,QAAS,CACF4H,OAAAA,EAAUnvB,EAAMunB,MAAM,CACjC,EACA,IAAIC,WAAY,CACL2H,OAAAA,EAAUnvB,EAAMwnB,SAAS,CACpC,EACA,IAAIZ,UAAW,CACJuI,OAAAA,EAAUnvB,EAAM4mB,QAAQ,CACnC,EACA,IAAI4F,gBAAiB,CACV2C,OAAAA,EAAUnvB,EAAMwsB,cAAc,CAAA,CAE7C,EACME,EAAmB39B,GAAS,IAAMiR,EAAMjR,QAAQ,EACtD,SAAS49B,GAAc,CACnB,MAAM73B,EAAQ43B,EAAiB,EAC3B,OAAA,OAAO53B,GAAU,WAEV,CAAC61B,EAAQ2E,IAAex6B,EAAM61B,EAAQ,CACzC,GAAG2E,EACHr5B,IAAKuzB,CAAAA,CACR,GAIDA,EAAU10B,CAAK,EACRA,EACX,CAEJ,OAAAsL,EAASxX,GAAUyX,EAAKrP,EAAWq+B,EAAQ,CAAA,IAAEvD,SAAO,CAAA,OAAEA,EAAQ,CAAC,EAAA,IAAA/8B,UAAA,CAAA,OAC5D49B,EAAY,CAAA,CAAC,CAAA,CAAA,CAEpB,EC7DM4C,GAAU,CACZvnB,OAAQ,CAAC,YAAa,cAAc,EACpCD,MAAO,CAAC,aAAc,aAAa,CACvC,EACA,SAASynB,GAAyBC,EAAWC,EAAM,CACzC5kB,MAAAA,EAAU,SAAQ2kB,EAAU,CAAC,EAAEE,YAAc,CAAA,GAAEF,EAAUG,MAAM,CAAC,CAAE,GAClE7lC,EAAQ2lC,EAAK5kB,CAAM,EACnB+kB,EAAUN,GAAQE,CAAS,EACzB1lC,OAAAA,EAEJ+lC,SAAShnB,GAAI4mB,EAAMG,EAAQ,CAAC,CAAC,EAAG,EAAE,EAElCC,SAAShnB,GAAI4mB,EAAMG,EAAQ,CAAC,CAAC,EAAG,EAAE,CAC1C,CACA,MAAME,GAAiB,CACnB,CAAChG,EAAM,EAAG,WACV,CAACG,EAAO,EAAG,aACX,CAACF,EAAQ,EAAG,aACZ,CAACC,EAAO,EAAG,gBACX,CAACH,EAAS,EAAG,EACjB,EACMjF,GAAe,CACjBsF,GAAI,GACJsF,UAAW,SACXlE,QAAS,IACT/C,aAAc,GACdlB,cAAe,GACfD,OAAQ,GACR2I,kBAAmBR,EACvB,EACMS,GAAkB1jC,GAAA,CACpB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,UACA,aACA,YACA,SACA,YACA,QACA,WACA,YACA,mBAAmB,CACtB,EAEK2jC,EAAoBA,IAAM,OAAOlwB,EAAMyvB,WAAc,WAAazvB,EAAMyvB,YAAczvB,EAAMyvB,UAE5FU,EAAwBT,GAAA,CACrBj2B,EAAAA,MAAMy2B,EAAmB,CAAA,EAAI,IAClClwB,EAAMynB,UAAUiI,CAAI,CACxB,EACMU,EAA2BV,GAAA,CAC7B,MAAMliB,EAAU,SAAQ0iB,EAAkB,EAAE,CAAC,EAAEP,YAAc,CAAA,GAAEO,EAAoBN,EAAAA,MAAM,CAAC,CAAE,GAC5FF,EAAKj2B,MAAMy2B,GAAmB,EAAK,GAAER,EAAKliB,CAAM,CAAE,KAClDxN,EAAM0nB,aAAagI,CAAI,CAC3B,EACMW,EAA0BX,GAAA,CAEvBj2B,EAAAA,MAAMy2B,EAAmB,CAAA,EAAI,KAClClwB,EAAM2nB,YAAY+H,CAAI,CAC1B,EAEMY,EAAuBZ,GAAA,CACpBj2B,EAAAA,MAAMy2B,EAAmB,CAAA,EAAK,GAAElwB,EAAMgwB,kBAAkBE,EAAAA,EAAqBR,CAAI,CAAE,KAExFxB,GAAqBwB,CAAI,EACzB1vB,EAAMunB,SAASmI,CAAI,CACvB,EACMa,EAA0Bb,GAAA,CAEvBj2B,EAAAA,MAAMy2B,EAAmB,CAAA,EAAI,KAClClwB,EAAMwnB,YAAYkI,CAAI,CAC1B,EACMhD,EAAmB39B,GAAS,IAAMiR,EAAMjR,QAAQ,EAClDyhC,IAAAA,EACJpwB,OAAAA,EAAS6uB,GAAiB5uB,EAAA,CAACmsB,eAAgBuC,IAA2B/9B,EAAK,CAAA,GAAA,iBAAA,CAAiBA,OAAAA,EAAM6O,KAAO7O,EAAMm5B,GAAK,IAAI,EAAE1C,QAAS0I,EAAazI,WAAY0I,EAAgBzI,UAAW0I,EAAe9I,OAAQ+I,EAAY9I,UAAW+I,EAAaxhC,SAC9OA,CAAC3C,EAAOkjC,IAAe,CACnB,MAAMj0B,EAAKqxB,EAAiB,EAC5B4C,EAAWr5B,IAAIoF,CAAE,EACXo1B,MAAAA,EAAa71B,GAAWoF,EAAM+mB,MAAOgJ,GAAe3jC,CAAK,EAAG8jC,EAAAA,IAAwB,SAAW,qBAAqB,EAC3G70B,OAAAA,GAAAA,EAAIm1B,EAAaC,CAAU,EAC5BA,EAAAA,EACPp1B,CAAAA,CACX,CAAC,CAAA,CAET,ECpFMwpB,GAAe,CACjBsF,GAAI,GACJoB,QAAS,IACT/C,aAAc,GACdlB,cAAe,GACfD,OAAQ,EACZ,EACMqJ,GAAa,CACf,CAAC1G,EAAQ,EAAG,OACZ,CAACC,EAAO,EAAG,MACf,EACM0G,GAAcpkC,GAAA,CAChB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,QACA,WACA,mBAAmB,CACtB,EACK4jC,EAAcA,CAAC5gC,EAAMqhC,IAAgB,CACvC1C,GAAqB3+B,CAAI,EACnBk4B,EAAAA,UAAUl4B,EAAMqhC,CAAW,CACrC,EACIlE,IAAAA,EACA8D,EACJpwB,OAAAA,EAAS6uB,GAAiB5uB,EAAA,CAACmsB,eAAgBuC,GAAuBtH,QAAS0I,GAAiBn/B,EAAK,CAAAjC,SAC7FA,CAAC47B,EAAQ2E,IAAe,CAEf5C,IACDA,EAAmB39B,GAAS,IAAMiR,EAAMjR,QAAQ,GACpD,IAAIsM,EAAKqxB,EAAiB,EAC1B,KAAO,OAAOrxB,GAAO,YACjBA,EAAKA,EAAG,EACZi0B,EAAWr5B,IAAIoF,CAAE,EACjB,MAAMo1B,EAAa71B,GAAW,OAAQoF,EAAM+mB,MAE5C2J,KAAa/F,CAAM,EAAG3qB,EAAM6wB,oBAAoBlG,CAAM,CAAC,EACxCtvB,OAAAA,GAAAA,EAAIm1B,EAAaC,CAAU,EAC5BA,EAAAA,EACPp1B,CAAAA,CACX,CAAC,CAAA,CAET,mCC7CA,MAAMwpB,GAAe,CACjB,aAAc,OAClB,EACMiM,GAAqBvkC,GAAA,CACvB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,QAAS,SAAS,CAAC,EACnF,OAAA,IAAA,CAAA,IAAAiU,EAAAC,GAAA,EAAAswB,OAAAA,GAAAvwB,EAAAH,EAAA,CAAA,IAAA,OAAA,CAAqCzF,OAAAA,GAAW,YAAaoF,EAAMgxB,SAAY,aAAYhxB,EAAMgxB,OAAQ,GAAGhxB,EAAM+mB,KAAK,CAAA,CAAC,EAAM/1B,CAAK,EAAA,GAAA,EAAA,EAAAwP,CAAAA,GAAA,CACvI,oBCPaywB,MAAAA,MAA6B1kC,IACtC,IAAA,CAAA,IAAAiU,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAAH,EAAgB9T,EAAC,CAAA,IAAA,OAAA,CAASqO,OAAAA,GAAWrO,EAAEw6B,MAAOz8B,CAAC,CAAA,CAAC,CAAA,EAAA,GAAA,EAAA,EAAAkW,CAAAA,GAAA,ECG7C,SAAS0wB,GAAmBtD,EAAQ,CAAEuD,UAAAA,EAAWtM,aAAAA,EAAe,CAAA,CAAG,EAAI,GAAI,CAUvEuM,OAToB7kC,GAAA,CACvB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW,CAAEgN,GAAIgxB,CAAAA,EAAatM,EAAct4B,CAAC,EAAG,CAC9E,QACA,WACA,IAAI,CACP,EACK8kC,EAAiB1D,GAAmB3tB,EAAMsxB,SAAU1D,CAAM,EAChExtB,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,IAAM,KAAK,EAAA,IAAA,OAAA,CAASvF,OAAAA,GAAWoF,EAAM+mB,MAAOsK,CAAc,CAAA,CAAC,EAAMrgC,CAAK,CAAA,CAC5G,CAEJ,8BCRA,MAAMugC,GAAgBN,GAAa,IAAI,EACjCO,GAAeN,GAAmB,gBAAiB,CACrDC,UAAWI,EACf,CAAC,EACKE,GAAYP,GAAmB,aAAc,CAC/CC,UAAW7wB,EACf,CAAC,EACKukB,GAAe,CACjBmM,QAAS,UACTpQ,YAAa,GACb+E,WAAYgL,GACZe,WAAY,aAChB,EACMC,GAA+BC,GAAA,CAC3B,KAAA,CAAC5xB,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAc+M,CAAiB,EAAG,CAC3E,WACA,WACA,cACA,OACA,aACA,eACA,QACA,WACA,UACA,UACA,cACA,YAAY,CACf,EACK,CAACj8B,EAAMk8B,CAAO,EAAI1R,GAAqB,IAAMngB,EAAMrK,KAAM,IAAMqK,EAAM4gB,YAAa5gB,EAAM6xB,OAAO,EAC/FjE,EAASD,GAAmB3tB,EAAMsxB,SAAU,OAAO,EACnDzT,EAAqB7wB,GAAA,CACnB6kC,GACAA,EAAQ,GAAO7kC,CAAC,CAExB,EACMpE,EAAcoX,EAAM2lB,aAAe,GAAOgL,GAAO3wB,EAAM2lB,WACvDmM,EAAQA,KAAA,IAAA,CAAA,IAAAtxB,EAAAC,GAAA,EAAAswB,OAAAA,GAAAvwB,EAAAH,EAA+BzX,EAAqB,CAAA,EAARoI,EAAU,CAAA,IAAA,OAAA,CAAA,OAAU4J,GAAWoF,EAAM+mB,MAAO6G,EAAQ5tB,EAAMgxB,SAAY,GAAEpD,CAAO,IAAG5tB,EAAMgxB,OAAQ,GAAGhxB,EAAM+xB,aAAgB,GAAEnE,CAAO,cAAa,CAAA,CAAC,CAAA,EAAA,GAAA,EAAA,EAAAzG,EAAA3mB,GAAA,IAAA,CAAA,IAAAwxB,EAAA1T,EACvMte,IAAAA,CAAAA,CAAAA,EAAM+xB,WAAW,EAAA,MAAA,IAAjBC,EAAAA,GAAA5xB,EAAuB0wB,GAAW,CAACrxB,QAASoe,EAAW,GAAA,cAAA,CAAA,OAAc7d,EAAM0xB,UAAU,EAAA,IAAEV,SAAO,CAAA,OAAEhxB,EAAMiyB,YAAAA,CAAY,CAAI,CAAA,GAAA,EAAA,IAAA,EAAA9K,EAAA3mB,EACtHR,IAAAA,EAAMjR,SAAQ,IAAA,EAAAyR,CAAAA,GACV,EACP,OAAAJ,EAAS1L,EAAI,CAACszB,KAAM,CAAC,CAACp/B,EAAU,IAAE6L,UAAQ,CAAEuL,OAAAA,EAAMrK,KAAOm8B,EAAQ,IAAI,EAAA,IAAA/iC,UAAA,CAAAqR,OAAAA,EAClExX,EAAUyX,EAAA,CAACinB,cAAa,IAAKt2B,EAAK,CAAAiF,IAAAi8B,EAAA,CAAOtyB,UAASsyB,CAAA,EAAA,IAAA,IAAA,CAAA,OAAMv8B,EAAK,CAAC,EAAA5G,SAC5D+iC,CAAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAGd,EACAK,GAAe3N,OAAOxqB,OAAO23B,GAAO,CAChCS,KAAMX,GACNY,QAASb,EACb,CAAC,ECtDK3M,GAAe,CACjB1kB,GAAI,OACJmyB,GAAI,UACJC,KAAM,EACV,EACMC,GAAejmC,GAAA,CACjB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,KACA,OACA,OACA,OAAO,CACV,EACKqhC,EAASD,GAAmB3tB,EAAMsxB,SAAU,OAAO,EACzDlxB,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAA,OAAA,CAAA,OAAS4J,GAAWoF,EAAM+mB,MAAO6G,EAAQ5tB,EAAMuyB,MAAS,eAAevyB,EAAMyyB,MAAS,QAAOzyB,EAAMyyB,IAAK,GAAGzyB,EAAMsyB,IAAO,MAAKtyB,EAAMsyB,EAAG,EAAC,CAAA,CAAC,CAAA,CAAA,CAC3L,ECde,SAASI,GAAS56B,EAASiB,EAAW,CACnD,OAAIjB,EAAQ,UAAiCA,EAAQ,UAAU,SAASiB,CAAS,GACzE,KAAOjB,EAAQ,UAAU,SAAWA,EAAQ,WAAa,KAAK,QAAQ,IAAMiB,EAAY,GAAG,IAAM,EAC3G,CCDe,SAAS45B,GAAS76B,EAASiB,EAAW,CAC/CjB,EAAQ,UAAWA,EAAQ,UAAU,IAAIiB,CAAS,EAAY25B,GAAS56B,EAASiB,CAAS,IAAO,OAAOjB,EAAQ,WAAc,SAAUA,EAAQ,UAAYA,EAAQ,UAAY,IAAMiB,EAAejB,EAAQ,aAAa,SAAUA,EAAQ,WAAaA,EAAQ,UAAU,SAAW,IAAM,IAAMiB,CAAS,EAChT,CCVA,SAAS65B,GAAiBC,EAAWC,EAAe,CAClD,OAAOD,EAAU,QAAQ,IAAI,OAAO,UAAYC,EAAgB,YAAa,GAAG,EAAG,IAAI,EAAE,QAAQ,OAAQ,GAAG,EAAE,QAAQ,aAAc,EAAE,CACxI,CASe,SAASC,GAAYj7B,EAASiB,EAAW,CAClDjB,EAAQ,UACVA,EAAQ,UAAU,OAAOiB,CAAS,EACzB,OAAOjB,EAAQ,WAAc,SACtCA,EAAQ,UAAY86B,GAAiB96B,EAAQ,UAAWiB,CAAS,EAEjEjB,EAAQ,aAAa,QAAS86B,GAAiB96B,EAAQ,WAAaA,EAAQ,UAAU,SAAW,GAAIiB,CAAS,CAAC,CAEnH,CCdA,MAAMi6B,GAAW,CACbC,cAAe,oDACfC,eAAgB,cAChBC,eAAgB,iBACpB,EACO,MAAMC,WAA8BhQ,EAAa,CACpDiQ,eAAez8B,EAAMkB,EAASw7B,EAAQ,CAC5BC,MAAAA,EAASz7B,EAAQ2B,MAAM7C,CAAI,EAGzB2yB,EAAAA,QAAQ3yB,CAAI,EAAI28B,EACxBzqB,GAAIhR,EAAS,CACT,CAAClB,CAAI,EAAI,GAAE48B,WAAW1qB,GAAIhR,EAASlB,CAAI,CAAC,EAAI08B,CAAO,IAAA,CACtD,CAAA,CAELG,QAAQ78B,EAAMkB,EAAS,CAEb/N,MAAAA,EAAQ+N,EAAQyxB,QAAQ3yB,CAAI,EAC9B7M,IAAU6V,SAEH9H,OAAAA,EAAQyxB,QAAQ3yB,CAAI,EAC3BkS,GAAIhR,EAAS,CAAE,CAAClB,CAAI,EAAG7M,CAAAA,CAAO,EAClC,CAEJ2pC,kBAAkBlQ,EAAgB,CAC9B,MAAMkQ,kBAAkBlQ,CAAc,EAChCjmB,MAAAA,EAAY,KAAKo2B,WAAW,EAE9B,GADJhB,GAASp1B,EAAW,YAAY,EAC5B,CAACimB,EAAeoQ,eAChB,OACEnQ,MAAAA,EAAc,KAAKH,MAAQ,cAAgB,eAC3CuQ,EAAa,KAAKvQ,MAAQ,aAAe,cAC/C1iB,GAAIrD,EAAWy1B,GAASC,aAAa,EAAEa,QAASz4B,GAAO,KAAKg4B,eAAe5P,EAAapoB,EAAImoB,EAAeoQ,cAAc,CAAC,EAC1HhzB,GAAIrD,EAAWy1B,GAASE,cAAc,EAAEY,QAASz4B,GAAO,KAAKg4B,eAAeQ,EAAYx4B,EAAI,CAACmoB,EAAeoQ,cAAc,CAAC,EAC3HhzB,GAAIrD,EAAWy1B,GAASG,cAAc,EAAEW,QAASz4B,GAAO,KAAKg4B,eAAeQ,EAAYx4B,EAAImoB,EAAeoQ,cAAc,CAAC,CAAA,CAE9HG,qBAAqBvQ,EAAgB,CACjC,MAAMuQ,qBAAqBvQ,CAAc,EACnCjmB,MAAAA,EAAY,KAAKo2B,WAAW,EAClCZ,GAAYx1B,EAAW,YAAY,EAC7BkmB,MAAAA,EAAc,KAAKH,MAAQ,cAAgB,eAC3CuQ,EAAa,KAAKvQ,MAAQ,aAAe,cAC3C/lB,GAAAA,EAAWy1B,GAASC,aAAa,EAAEa,WAAgB,KAAKL,QAAQhQ,EAAapoB,CAAE,CAAC,EAChFkC,GAAAA,EAAWy1B,GAASE,cAAc,EAAEY,WAAgB,KAAKL,QAAQI,EAAYx4B,CAAE,CAAC,EAChFkC,GAAAA,EAAWy1B,GAASG,cAAc,EAAEW,WAAgB,KAAKL,QAAQI,EAAYx4B,CAAE,CAAC,CAAA,CAE5F,CACA,IAAI24B,GACG,SAASC,GAAiBjqC,EAAS,CACtC,OAAKgqC,KACeA,GAAA,IAAIZ,GAAsBppC,CAAO,GAC9CgqC,EACX,CCpDA,MAAMnP,GAAe,CACjBmM,QAAS,UACTlR,OAAQ,GACR1gB,SAAU,EACd,EACMW,GAAgBxT,GAAA,CAClB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,WACA,UACA,OACA,SACA,OAAO,CACV,EACKqhC,EAASD,GAAmB3tB,EAAMsxB,SAAU,KAAK,EACjD,CAACpxB,EAAa,CAAErJ,QAAAA,CAAS,CAAA,EAAImI,GAAe,CAC9CnI,QAASmJ,EAAMG,GACf,GAAGnP,CAAAA,CACN,EACDoP,OAAAA,EAASvC,GAAOwC,EAAA,CAAC3C,UAAW7G,CAAAA,EAAaqJ,EAAiBlP,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAWoF,EAAM+mB,MAAO6G,EAAQ5tB,EAAM8f,QAAU,SAAU9f,EAAMgxB,SAAY,GAAEpD,CAAO,IAAG5tB,EAAMgxB,OAAQ,GAAGhxB,EAAMk0B,MAAS,GAAEtG,CAAO,IAAG5tB,EAAMk0B,IAAK,GAAGljC,EAAM4N,MAAQ5N,EAAMoO,UAAY,UAAU,CAAC,EAAA,IAAArQ,UAAA,CAAA,OAClQiR,EAAMjR,QAAAA,CAAQ,CAAA,CAAA,CAErB,ECxBM81B,GAAe,CACjB1kB,GAAI,KACR,EACMg0B,GAAiB5nC,GAAA,CACnB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,QACA,SAAS,CACZ,EACKqhC,EAASD,GAAmB3tB,EAAMsxB,SAAU,UAAU,EAC5DlxB,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAE,EAAA,IAAA,OAAA,CAASvF,OAAAA,GAAWoF,EAAMgxB,QAAW,GAAEpD,CAAO,IAAG5tB,EAAMgxB,OAAQ,GAAIpD,EAAQ5tB,EAAM+mB,KAAK,CAAA,CAAC,EAAM/1B,CAAK,CAAA,CAC1I,ECfMpJ,GAAUgH,GAAc,IAAI,ECI5Bi2B,GAAe,CACjB1kB,GAAI,KACR,EACMi0B,GAAoB7nC,GAAA,CACtB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,KAAM,WAAY,OAAO,CAAC,EACpFqhC,EAASD,GAAmB3tB,EAAMsxB,SAAU,aAAa,EACzD+C,EAAe,CACjB,IAAIC,oBAAqB,CACd1G,OAAAA,CAAAA,CAEf,EACAxtB,OAAAA,EAASm0B,GAAkBnS,SAAQ,CAACr4B,MAAOsqC,EAAY,IAAAtlC,UAAA,CAAAqR,OAAAA,EACpDvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAWoF,EAAM+mB,MAAO6G,CAAM,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAErF,ECXM4G,GAAgBvD,GAAa,IAAI,EACjCwD,GAAgBxD,GAAa,IAAI,EACjCyD,GAAWxD,GAAmB,WAAW,EACzCyD,GAAYzD,GAAmB,aAAc,CAC/CC,UAAWqD,EACf,CAAC,EACKI,GAAe1D,GAAmB,gBAAiB,CACrDC,UAAWsD,EACf,CAAC,EACKI,GAAW3D,GAAmB,YAAa,CAAEC,UAAW,GAAI,CAAC,EAC7D2D,GAAW5D,GAAmB,YAAa,CAAEC,UAAW,GAAI,CAAC,EAC7D4D,GAAa7D,GAAmB,aAAa,EAC7C8D,GAAiB9D,GAAmB,kBAAkB,EACtDrM,GAAe,CACjB1kB,GAAI,MACJyO,KAAM,EACV,EACMqmB,GAAc1oC,GAAA,CAChB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,QACA,KACA,OACA,SACA,OACA,UAAU,CACb,EACKqhC,EAASD,GAAmB3tB,EAAMsxB,SAAU,MAAM,EACxDlxB,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAWoF,EAAM+mB,MAAO6G,EAAQ5tB,EAAMsyB,IAAO,MAAKtyB,EAAMsyB,EAAG,GAAGtyB,EAAMyyB,MAAS,QAAOzyB,EAAMyyB,IAAK,GAAGzyB,EAAMk1B,QAAW,UAASl1B,EAAMk1B,MAAO,EAAC,CAAC,EAAA,IAAAnmC,UAAA,CAChMuvB,OAAAA,QAAAte,EAAM4O,IAAI,EAAAxO,EAAAA,EAAIs0B,GAAQ,CAAA,IAAA3lC,UAAA,CAAA,OAAEiR,EAAMjR,QAAAA,CAAQ,CAAeiR,EAAAA,EAAMjR,QAAAA,CAAQ,CAAA,CAAA,CAE1E,EACAomC,GAAe3Q,OAAOxqB,OAAOi7B,GAAM,CAC/BG,IAAKjB,GACLkB,MAAOV,GACPW,SAAUV,GACVW,KAAMb,GACNtC,KAAMyC,GACNW,KAAMV,GACNW,OAAQrB,GACRsB,OAAQX,GACRY,WAAYX,EAChB,CAAC,EC/CKY,GAAe,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,IAAI,EAClD,SAASC,GAAO7nC,EAAG,CAChB,KAAA,CAACgS,EAAOhP,CAAK,EAAI4C,GAAW5F,EAAG,CAAC,KAAM,WAAY,OAAO,CAAC,EAC1DsjC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,KAAK,EACnD5D,EAAcK,GAAwB,EACtC+H,EAAQ,CAAE,EACV33B,EAAU,CAAE,EACNuvB,EAAA,EAAEoG,QAAsBiC,GAAA,CAC1B3V,MAAAA,EAAYpvB,EAAM+kC,CAAQ,EAC5BC,IAAAA,EACAlrB,EACAsN,EACA,OAAOgI,GAAc,UAAYA,GAAa,KAC7C,CAAE4V,KAAAA,EAAMlrB,OAAAA,EAAQsN,MAAAA,CAAAA,EAAUgI,EAGpBA,EAAAA,EAEX,MAAM6V,EAAQF,IAAa,KAAQ,IAAGA,CAAS,GAAI,GAC/CC,GACME,EAAAA,KAAKF,IAAS,GAAQ,GAAE1E,CAAS,GAAE2E,CAAM,GAAK,GAAE3E,CAAS,GAAE2E,CAAM,IAAGD,CAAK,EAAC,EAChF5d,GAAS,MACD8d,EAAAA,KAAM,QAAOD,CAAM,IAAG7d,CAAM,EAAC,EACrCtN,GAAU,MACForB,EAAAA,KAAM,SAAQD,CAAM,IAAGnrB,CAAO,EAAC,CAAA,CAC9C,EACD,KAAM,CAACjY,EAAGsjC,CAAY,EAAIviC,GAAW5C,EAAO4kC,EAAY,EACjD,MAAA,CACHziC,EAAWgjC,EAAc,CACrB,IAAIpP,OAAQ,CACR,OAAOnsB,GAAWoF,EAAM+mB,MAAO,GAAG+O,EAAO,GAAG33B,CAAO,CAAA,CACvD,CACH,EACD,CACI,IAAIgC,IAAK,CACL,OAAOH,EAAMG,EACjB,EACA,IAAImxB,UAAW,CACJA,OAAAA,CACX,EACA,IAAIwE,OAAQ,CACDA,OAAAA,CAAAA,CACX,CACH,CAET,CACA,MAAMM,GAAa7pC,GAAA,CACf,KAAM,CAAC8pC,EAAUn3B,CAAI,EAAI22B,GAAOtpC,CAAC,EAC3B,CAACyT,EAAOs2B,CAAQ,EAAI1iC,GAAWyiC,EAAU,CAAC,OAAO,CAAC,EACxDj2B,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEwB,EAAKiB,IAAM,KAAA,GAAWm2B,EAAQ,CAAA,IAAA,OAAA,CAAS17B,OAAAA,GAAWoF,EAAM+mB,MAAO,CAAC7nB,EAAK42B,MAAM5iC,QAAUgM,EAAKoyB,QAAQ,CAAA,CAAC,CAAA,CAAA,CACnI,EClDMzM,GAAe,CACjB1kB,GAAI,MACJo2B,MAAO,EACX,EACMC,GAAmBjqC,GAAA,CACrB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,QACA,OAAO,CACV,EACKqhC,EAASD,GAAmB3tB,EAAMsxB,SAAU,WAAW,EACvDmF,EAAS,OAAOz2B,EAAMu2B,OAAU,SAAY,IAAGv2B,EAAMu2B,KAAM,GAAI,SACrEn2B,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAWoF,EAAM+mB,MAAO/mB,EAAMu2B,MAAS,GAAE3I,CAAO,GAAE6I,CAAO,GAAI7I,CAAM,CAAA,CAAC,CAAA,CAAA,CAChI,ECjBMtsB,GAAkB1S,GAAc,EAAE,ECIlCi2B,GAAe,CACjB1kB,GAAIG,GACJlB,SAAU,EACd,EACM2gB,GAAsBxzB,GAAA,CACxB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,QACA,WACA,WACA,UACA,QAAQ,CACX,EACKqhC,EAASD,GAAmB3tB,EAAMsxB,SAAU,eAAe,EAC3D,CAACtR,EAAmB9gB,CAAI,EAAIugB,GAAgB,CAC9C,IAAIjzB,KAAM,CACN,OAAOwT,EAAMkf,QACjB,EACA,IAAItgB,MAAO,CACP,OAAO5N,EAAM4N,IACjB,EACA,IAAIQ,UAAW,CACX,OAAOY,EAAMZ,QACjB,EACA,IAAIK,SAAU,CACV,OAAOO,EAAMP,OACjB,EACA,IAAIqgB,QAAS,CACT,OAAO9f,EAAM8f,MAAAA,CACjB,CACH,EACD1f,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,CAAE,EAAMnP,EAAWgvB,EAAiB,CAAA,IAAA,OAAA,CAASplB,OAAAA,GAAWoF,EAAM+mB,MAAO6G,EAAQ1uB,EAAK2gB,UAAY,SAAU7f,EAAMZ,UAAY,UAAU,CAAA,CAAC,CAAA,CAAA,CAC3K,ECrCMxX,GAAUgH,GAAc,IAAI,ECA5BhH,GAAUgH,GAAc,IAAI,ECO5Bi2B,GAAe,CACjB1kB,GAAI,MACJkS,KAAM,EACV,EACgBqkB,SAAAA,GAAyBC,EAAUC,EAAetT,EAAO,CAC/DuT,MAAAA,EAAWvT,EAAQ,UAAY,YAC/BwT,EAASxT,EAAQ,YAAc,UAC/ByT,EAAczT,EAAQ,aAAe,eACrC0T,EAAY1T,EAAQ,eAAiB,aACrC2T,EAAY3T,EAAQ,cAAgB,aACpC4T,EAAU5T,EAAQ,YAAc,WAChC6T,EAAa7T,EAAQ,aAAe,cACpC8T,EAAW9T,EAAQ,WAAa,YAClCje,IAAAA,EAAYsxB,EAAWK,EAAYD,EACvC,OAAIH,IAAkB,KACND,EAAAA,EAAWG,EAASD,EAC3BD,IAAkB,MACXD,EAAAA,EAAWS,EAAWD,EAC7BP,IAAkB,UACXD,EAAAA,EAAWO,EAAUD,GAC9B5xB,CACX,CACA,MAAMgZ,GAAsB9xB,GAAA,CAClB,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,QACA,QACA,iBACA,OACA,OACA,gBACA,eACA,MACA,SAAS,CACZ,EACD,IAAIoqC,EAAW,GACTU,MAAAA,EAAWxsC,GAAWysC,EAAa,EACnC1J,EAASD,GAAmB3tB,EAAMsxB,SAAU,eAAe,EAC3DiG,EAAkB1sC,GAAWyW,EAAe,EAC5Ck2B,EAAQx3B,EAAMw3B,OAASD,EAAgBC,MACvCC,EAAe5sC,GAAW6sC,EAAiB,EAC3CC,EAAe,CAAE,EACvB,GAAIH,EACI,GAAA,OAAOA,GAAU,SAAU,CACrBnkC,MAAAA,EAAOmxB,OAAOnxB,KAAKmkC,CAAK,EAC9B,GAAInkC,EAAKH,OAAQ,CACP6iC,MAAAA,EAAW1iC,EAAK,CAAC,EAEjBukC,EAAYJ,EAAMzB,CAAQ,EAGhCY,EAAWiB,IAAc,QACzBD,EAAazB,KAAM,GAAEtI,CAAO,IAAGmI,CAAS,IAAG6B,CAAU,EAAC,CAAA,CAC1D,MAEKJ,IAAU,QACJb,EAAA,IAGnB,KAAM,CAACkB,EAAWC,CAAQ,EAAIxa,GAAgB,CAC1C,IAAIjL,MAAO,CACP,OAAOrS,EAAMqS,IACjB,EACA,IAAI4L,gBAAiB,CACjB,OAAOje,EAAMie,cACjB,EACA,IAAItoB,MAAO,CACP,OAAOqK,EAAMrK,IACjB,EACA,IAAIolB,WAAY,CACL,MAAA,CAACsc,GAAYM,EAAazkC,SAAW,CAChD,EACA,IAAI4X,QAAS,CACF,MAAA,CAAC,EAAG,CAAC,CAChB,EACA,IAAIuS,cAAe,CACf,OAAOrd,EAAMqd,YACjB,EACA,IAAIhY,WAAY,CACZ,OAAOqxB,GAAyBC,EAAUY,EAAgBQ,KAAMR,EAAgBjU,KAAK,CAAA,CACzF,CACH,EACKkG,EAAqBvzB,GAAA,CACvB4hC,EAAU5hC,MAAMA,CAAG,EACnB+J,EAAM/J,MAAMA,CAAG,CACnB,EAMM+hC,EAAoB7kC,EAAW0kC,EAErC,OAAO73B,EAAMG,IAAO,SACd,CACE,IAAIxK,MAAO,CACP,OAAOmiC,EAASniC,IACpB,EACA,IAAIsiC,OAAQ,CACD,MAAA,IAAMH,EAASha,SAAS,EAAK,CACxC,EACA,IAAI0Z,OAAQ,CACDA,OAAAA,CAAAA,CACX,EAEF,CAAA,CAAE,EAGF/9B,EAAQA,IAAMq+B,EAAS7yB,QAAQI,UAC/B,CAAE,GAAGrU,EAAMyI,MAAO,GAAGo+B,EAAUp+B,OAC/BzI,EAAMyI,MACZ,OAAA2G,EAAS1L,EAAI,CAAA,IAACszB,MAAI,CAAE8P,OAAAA,EAAS3Z,UAAYne,EAAMk4B,eAAiBT,CAAY,EAAA,IAAA1oC,UAAA,CAAAqR,OAAAA,EACzEvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,CAAE,EAAMnP,EAAWgnC,EAAiB,CAAA/hC,IAAOuzB,EAAS,IAAE/vB,OAAK,CAAA,OAAEA,EAAM,CAAA,CAAC,EAAA,IAAOk+B,EAAazkC,QAAUmkC,EACxH,CACE,iBAAkB,QACtB,EACE,GAAE,CAAA,IAAA,OAAA,CAAUz8B,OAAAA,GAAWoF,EAAM+mB,MAAO6G,EAAQkK,EAASniC,MAAQ,OAAQghC,GAAa,GAAE/I,CAAO,OAAO5tB,EAAMgxB,SAAY,GAAEpD,CAAO,IAAG5tB,EAAMgxB,OAAQ,GAAG,GAAG2G,CAAY,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAE3K,ECxHM9S,GAAe,CACjB1kB,GAAIJ,EACR,EACMgf,GAAwBxyB,GAAA,CAC1B,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,QACA,QACA,gBACA,KAAK,CACR,EACKqhC,EAASD,GAAmB3tB,EAAMsxB,SAAU,iBAAiB,EAC7DiG,EAAkB1sC,GAAWyW,EAAe,EAC5Cm2B,EAAe5sC,GAAW6sC,EAAiB,EAC7C13B,EAAMm4B,gBAAkBv4B,SACxB5O,EAAMsgC,SAAWtxB,EAAMm4B,eAErB,KAAA,CAACC,CAAW,EAAIvZ,GAAkB,EAClC,CAACwZ,EAAaC,CAAW,EAAI1kC,GAAWwkC,EAAa,CAAC,KAAK,CAAC,EAOlEh4B,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAE,EAAA,IAAA,OAAA,CAAA,OAASvF,GAAWoF,EAAM+mB,MAAO6G,EAAQ5tB,EAAMu4B,OAAU,GAAE3K,CAAO,SAAS,CAAC,CAAC6J,GAAgBF,GAAiB5hC,MAAQ,MAAM,CAAA,CAAC,EAAM2iC,EAAiBtnC,EAAK,CAAAiF,IANlKA,GAAA,CACvBoiC,EAAYpiC,MAAMA,CAAG,EACrB+J,EAAM/J,MAAMA,CAAG,CACnB,CAGoMuzB,CAAS,CAAA,CACjN,ECvBMgP,GAAiBtH,GAAmB,kBAAmB,CACzDrM,aAAc,CAAEhlB,KAAM,SAAA,CAC1B,CAAC,EACK44B,GAAkBvH,GAAmB,mBAAoB,CAC3DC,UAAW,KACXtM,aAAc,CAAEhlB,KAAM,WAAA,CAC1B,CAAC,EACK64B,GAAmBxH,GAAmB,qBAAsB,CAC9DC,UAAW,MACf,CAAC,EACKtM,GAAe,CACjB1kB,GAAI,MACJw4B,OAAQ,GACRnB,MAAO,QACPoB,UAAW,EACf,EACMnY,GAAkBl0B,GAAA,CACd,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,OACA,OACA,cACA,QACA,QACA,WACA,WACA,uBACA,SACA,WAAW,CACd,EACK,CAACoJ,EAAMgrB,CAAQ,EAAIR,GAAqB,IAAMngB,EAAMrK,KAAM,IAAMqK,EAAM4gB,YAAa5gB,EAAM2gB,QAAQ,EACjG8W,EAAe5sC,GAAW6sC,EAAiB,EAC3C9J,EAASD,GAAmB3tB,EAAMsxB,SAAU,UAAU,EACtDhO,EAAQ0K,GAAS,EACjB6K,EAAiCxtC,GAE/B2U,EAAM44B,YAAc,GACbvtC,IAAW,QAElB2U,EAAM44B,YAAc,SACbvtC,IAAW,YAElB2U,EAAM44B,YAAc,UACbvtC,IAAW,SACf,GAELytC,EAAeA,CAAC3X,EAAUjiB,IAAS,EAGpCA,EAAKkiB,cAAc7E,gBAAkB/jB,UAClC0G,EAAKkiB,cAAc7E,gBAAkB,QACpCrd,EAAK7T,SAAW,WAAa6T,EAAKkiB,cAAc50B,MAAQ,YACzD0S,EAAK7T,OAAS,aAEdwtC,EAAmB35B,EAAK7T,MAAM,GAC9Bs1B,IAAWQ,EAAUjiB,CAAI,CACjC,EACMy3B,EAAW32B,EAAMw3B,QAAU,MAC3BnyB,EAAYqxB,GAAyBC,EAAU32B,EAAM+3B,KAAMzU,GAAO,EAClE+Q,EAAe,CACjB,IAAImD,OAAQ,CACR,OAAOx3B,EAAMw3B,KACjB,EACA,IAAIO,MAAO,CACP,OAAO/3B,EAAM+3B,IACjB,EACA,IAAIzU,OAAQ,CACR,OAAOA,EAAM,CAAA,CAErB,EACAljB,OAAAA,EAASkB,GAAgB8gB,SAAQ,CAACr4B,MAAOsqC,EAAY,IAAAtlC,UAAA,CAAA,OAAAqR,EAClD24B,GAAY,CAAC1zB,UAAAA,EAAoB,IAAE1P,MAAI,CAAA,OAAEA,EAAK,CAAC,EAAA,IAAE2rB,UAAQ,CAAA,OAAEthB,EAAMshB,QAAQ,EAAEX,SAAUmY,EAAY,IAAEnX,sBAAoB,CAAA,OAAE3hB,EAAM2hB,oBAAoB,EAAEjB,aAAe,IAAGkN,CAAO,sCAAoC,IAAA7+B,UAAA,CAAA,OAChN0oC,EAAgBzmC,EAAMjC,SAAQqR,EAAMvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAWoF,EAAM+mB,MAAOpxB,EAAK,GAAK,QAAS,CAACqK,EAAM+3B,MAAQ/3B,EAAM+3B,OAAS,SAAWnK,EAAQ5tB,EAAM+3B,OAAS,MAAQ,SAAU/3B,EAAM+3B,OAAS,OAAS,UAAW/3B,EAAM+3B,OAAS,SAAW,WAAW,CAAA,CAAC,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAGtS,EACAiB,GAAexU,OAAOxqB,OAAOymB,GAAU,CACnC6B,OAAQvD,GACRsD,KAAMhE,GACNkE,KAAMxC,GACNkZ,SAAUP,GACVQ,QAAST,GACThD,OAAQ+C,EACZ,CAAC,EC5FK3T,GAAe,CACjB1kB,GAAI,MACJhB,KAAM,QACNg6B,QAAS,EACb,EACMC,GAAkB7sC,GAAA,CACpB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,QACA,OACA,SAAS,CACZ,EACD6T,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAWoF,EAAM+mB,MAAQ,GAAE/mB,EAAMb,IAAK,IAAGa,EAAMm5B,QAAU,UAAY,UAAW,EAAC,CAAA,CAAC,CAAA,CAAA,CAC9I,ECfME,GAAczqC,GAAc,EAAE,ECE9Bi2B,GAAe,CACjB1kB,GAAI,KACR,EACMm5B,GAAmB/sC,GAAA,CACrB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,KAAM,WAAW,CAAC,EAC5E3E,EAAU,CACZ,IAAI2xC,WAAY,CACZ,OAAOv5B,EAAMu5B,SAAAA,CAErB,EACAn5B,OAAAA,EAASi5B,GAAYjX,SAAQ,CAACr4B,MAAOnC,EAAO,IAAAmH,UAAA,CAAAqR,OAAAA,EACzCvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,CAAE,EAAMnP,CAAK,CAAA,CAAA,CAAA,CAAA,CAE7C,sBCZA,MAAM6zB,GAAe,CAAC,EAChB2U,GAAuBjtC,GAAA,CACzB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,WACA,QACA,WACA,YACA,OAAO,CACV,EACK+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,eAAe,EACnElxB,OAAAA,EAASk5B,GAASj5B,EAAA,CAAA,IAAA,OAAA,CAAQzF,OAAAA,GAAWoF,EAAM+mB,MAAOuK,CAAQ,CAAC,EAAA,IAAEiI,WAAS,CAAA,OAAEv5B,EAAMu5B,SAAAA,GAAevoC,EAAK,CAAA,IAAAjC,UAAA,CAAA,MAAA,CAAAuvB,EAAA,IAC/Fte,EAAMjR,QAAQ,GAAA,IAAA,CAAA,IAAAyR,EAAAC,GAAA,EAAAD,OAAAA,EAAAA,EACeR,IAAAA,EAAMy5B,KAAK,EAAAC,OAAAC,GAAAn5B,EAA7BR,MAAAA,EAAMu5B,SAAS,CAAA,EAAA/4B,CAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAEjC,ECbMqkB,GAAe,CACjB1kB,GAAI,QACJhB,KAAM,WACNy6B,QAAS,GACTC,UAAW,EACf,EACMC,GAAwBvtC,GAAA,CAC1B,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,KACA,WACA,QACA,OACA,UACA,WAAW,CACd,EACKwtC,EAAclvC,GAAWwuC,EAAW,EACpC/H,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,kBAAkB,EACtElxB,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAEmO,MAAI,CAAA,OAAEa,EAAMb,IAAI,EAAA,IAAE1T,IAAE,CAAEuU,OAAAA,EAAMvU,IAAMsuC,EAAYR,SAAS,EAAA,IAAA,OAAA,CAAS3+B,OAAAA,GAAWoF,EAAM+mB,MAAOuK,EAAUtxB,EAAM45B,SAAW,WAAY55B,EAAM65B,WAAa,YAAY,CAAA,CAAC,CAAA,CAAA,CACpN,ECvBMG,GAAmBprC,GAAc,sBCIvC,MAAMi2B,GAAe,CAAC,EAChBoV,GAAwB1tC,GAAA,CAC1B,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,WAAY,QAAS,KAAK,CAAC,EACrF+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,kBAAkB,EAChEyI,EAAclvC,GAAWwuC,EAAW,EAE1Ca,OADyBrvC,GAAWmvC,EAAgB,GAClCG,uBAAuB,EAAI,GAC7C,IAAA,CAAA,IAAA35B,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAAH,EACKrP,EAAK,CAAA,IAAA,KAAA,CAAOgP,OAAAA,EAAMo6B,KAAOL,EAAYR,SAAS,EAAA,IAAA,OAAA,CAAS3+B,OAAAA,GAAWoF,EAAM+mB,MAAOuK,CAAQ,CAAA,CAAC,CAAA,EAAA,GAAA,EAAA,EAAA9wB,CAAAA,GAAA,CACjG,oBCNA,MAAMqkB,GAAe,CACjB1kB,GAAI,QACJk6B,MAAO,GACPl7B,KAAM,WACNm7B,OAAQ,GACRl7B,SAAU,GACVw6B,QAAS,GACTC,UAAW,GACXU,gBAAiB,EACrB,EACMC,GAAmBjuC,GAAA,CACf,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,KACA,WACA,iBACA,SACA,WACA,UACA,YACA,kBACA,WACA,eACA,QACA,QACA,QACA,OACA,QACA,UAAU,CACb,EACK+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,YAAY,EAC1DmJ,EAAiB9M,GAAmB3tB,EAAMy6B,eAAgB,aAAa,EACvE,CAACC,EAAmBP,CAAoB,EAAIrwC,EAAa,EAAK,EAC9DiwC,EAAclvC,GAAWwuC,EAAW,EACpCsB,EAAmB,CACrB,IAAIpB,WAAY,CACLv5B,OAAAA,EAAMvU,IAAMsuC,EAAYR,SAAAA,CAEvC,EACM7M,EAAmB39B,GAAS,IAAMiR,EAAMjR,QAAQ,EAChD6rC,EAAW9vC,EAAW,IAAOkV,EAAMy5B,OAAS,MAAQz5B,EAAMy5B,QAAU,IAAS,CAAC/M,EAAiB,GAAMgO,GAAmB,EAC9Ht6B,OAAAA,EAASi5B,GAAYjX,SAAQ,CAACr4B,MAAO4wC,EAAgB,IAAA5rC,UAAA,CAAAqR,OAAAA,EAClD45B,GAAiB5X,SAAQ,CAACr4B,MAAO,CAAEowC,qBAAAA,CAAqB,EAAC,IAAAprC,UAAA,CAAA,IAAAyR,EAAAC,GAAA,EAAAD,OAAAA,EAAAA,EAErDksB,IAAAA,EAAiB,GAACtsB,CAAAA,EACd05B,GAAcz5B,EAAKrP,EAAK,CAAA,IAAEmO,MAAI,CAAA,OAAEa,EAAMb,OAAS,SAAW,WAAaa,EAAMb,IAAI,EAAA,IAAEy6B,SAAO,CAAA,OAAE55B,EAAM45B,OAAO,EAAA,IAAEC,WAAS,CAAA,OAAE75B,EAAM65B,SAAS,EAAA,IAAEz6B,UAAQ,CAAA,OAAEY,EAAMZ,QAAQ,EAAA,IAAEe,IAAE,CAAA,OAAEH,EAAMG,EAAAA,CAAE,CAAA,CAAA,EAAAme,GAAA,IAAA,CAAA,IAAA0T,EAAA1T,EAC7Ksc,IAAAA,CAAAA,CAAAA,GAAU,EAAA,MAAA,IAAV5I,EAAAA,GAAA5xB,EAAe65B,GAAc,CAAA,IAACI,OAAK,CAAA,OAAEr6B,EAAMq6B,KAAK,EAAA,IAAAtrC,UAAA,CAAA,OAAGiR,EAAMy5B,KAAAA,CAAK,CAAkB,CAAA,IAAA,EAAAnb,GAAA,IAAA,CAAA,IAAAuc,EAAAvc,EAChFte,IAAAA,CAAAA,CAAAA,EAAM86B,QAAQ,EAAA,MAAA,IAAdD,EAAAA,GAAAz6B,EAAoBg5B,GAAQ,CAAA,IAACj6B,MAAI,CAAA,OAAEa,EAAM+6B,YAAY,EAAA,IAAE5B,SAAO,CAAA,OAAEn5B,EAAMu6B,eAAe,EAAA,IAAAxrC,UAAA,CAAA,OACjFiR,EAAM86B,QAAAA,CAAQ,CACL,CAAA,GAAA,CACZ,CAAA,CAAA,EAAApB,GAAAsB,GAAA,CAAA,IAAAC,EAPIj7B,EAAMvG,MAAKyhC,EAAStgC,GAAWoF,EAAM+mB,MAAO6T,KAActJ,EAAUtxB,EAAMs6B,QAAW,GAAEhJ,CAAS,UAAUtxB,EAAMb,OAAS,UAAYs7B,CAAc,EAACO,OAAAA,EAAAhuC,EAAAmuC,GAAA36B,EAAAy6B,EAAAD,EAAAhuC,CAAA,EAAAkuC,IAAAF,EAAA1sC,GAAA8sC,GAAA56B,EAAAw6B,EAAA1sC,EAAA4sC,CAAA,EAAAF,CAAAA,EAAA,CAAAhuC,EAAA4S,OAAAtR,EAAAsR,MAAAA,CAAA,EAAAY,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAWxK,EACA66B,GAAe7W,OAAOxqB,OAAOwgC,GAAW,CACpCc,MAAOxB,GACPyB,MAAOtB,EACX,CAAC,EC5DKpV,GAAe,CACjB1kB,GAAI,QACJy5B,QAAS,GACTC,UAAW,EACf,EACM2B,GAAqBjvC,GAAA,CACjB,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,OACA,OACA,WACA,KACA,QACA,UACA,YACA,YACA,UAAU,CACb,EACKwtC,EAAclvC,GAAWwuC,EAAW,EACpC/H,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,cAAc,EAC5DnzB,EAAUA,IAAM,CACdA,IAAAA,EACJ,OAAI6B,EAAMy7B,UACNt9B,EAAU,CAAE,CAAE,GAAEmzB,CAAS,YAAW,EAAG,EAAK,EAG5CnzB,EAAU,CACN,CAACmzB,CAAQ,EAAG,GACZ,CAAE,GAAEA,CAAS,IAAGtxB,EAAMk0B,IAAK,EAAC,EAAGl0B,EAAMk0B,IACzC,EAEG/1B,CACX,EACAiC,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAEmO,MAAI,CAAA,OAAEa,EAAMb,IAAI,EAAA,IAAE+0B,MAAI,CAAA,OAAEl0B,EAAM07B,QAAQ,EAAA,IAAEC,UAAQ,CAAA,OAAE37B,EAAM27B,QAAQ,EAAA,IAAElwC,IAAE,CAAEuU,OAAAA,EAAMvU,IAAMsuC,EAAYR,SAAS,EAAA,IAAA,OAAA,CAAA,OAAS3+B,GAAWuD,IAAW6B,EAAM45B,SAAY,WAAW55B,EAAM65B,WAAc,aAAa75B,EAAMb,OAAS,SAAY,GAAEmyB,CAAS,QAAO,CAAA,CAAC,CAAA,CAAA,CACvS,EACAsK,GAAepX,OAAOxqB,OAAOwhC,GAAa,CAAEpC,SAAAA,EAAS,CAAC,ECzCvClI,GAAAA,GAAmB,eAAe,ECK3CrM,GAAe,CACjB1kB,GAAI,QACJ07B,OAAQ,GACRC,eAAgB,EACpB,EACMC,GAAmBxvC,GAAA,CACrB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,SACA,iBACA,QACA,SAAS,CACZ,EACKwtC,EAAclvC,GAAWwuC,EAAW,EACpC/H,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,YAAY,EAChE,IAAI0K,EAAc,iBACd,OAAOh8B,EAAM67B,QAAW,WACxBG,EAAe,GAAEA,CAAY,IAAGA,CAAY,IAAGh8B,EAAM67B,MAAO,IAC1D19B,MAAAA,EAAUA,IAAMvD,GAAWoF,EAAM+mB,MAAOuK,EAAUtxB,EAAM87B,gBAAkB,kBAAmB97B,EAAM67B,QAAUG,CAAW,EAC9H,OAASh8B,EAAM67B,OAAMz7B,EAAKg2B,GAAG/1B,EAAA,CAACF,GAAE,QAAA,IAAA,OAAA,CAAA,OAAgBhC,EAAQ,CAAC,EAAA,IAAE89B,SAAO,CAAEj8B,OAAAA,EAAMi8B,SAAWlC,EAAYR,SAAAA,GAAevoC,CAAK,CAAAoP,EAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAE,EAAA,IAAA,OAAA,CAAA,OAAShC,EAAQ,CAAC,EAAA,IAAE89B,SAAO,CAAEj8B,OAAAA,EAAMi8B,SAAWlC,EAAYR,SAAAA,CAAS,EAAMvoC,CAAK,CAAI,CAC/O,sBCvBA,MAAM6zB,GAAe,CACjB1kB,GAAI,KACR,EACM+7B,GAAmB3vC,GAAA,CACrB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,WAAY,QAAS,IAAI,CAAC,EACpFwtC,EAAclvC,GAAWwuC,EAAW,EACpC/H,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,YAAY,EAChE,OAAA,IAAA,CAAA,IAAA9wB,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAAH,EAAmBrP,EAAK,CAAA,KAAO,QAAO,IAAA,OAAA,CAAQ4J,OAAAA,GAAWoF,EAAM+mB,MAAOuK,CAAQ,CAAC,EAAA,IAAE7lC,IAAE,CAAEuU,OAAAA,EAAMvU,IAAMsuC,EAAYR,SAAAA,CAAS,CAAA,EAAA,GAAA,EAAA,EAAA/4B,CAAAA,GAAA,CAC1H,uBCRA,MAAMqkB,GAAe,CACjB+U,QAAS,GACTC,UAAW,EACf,EACMsC,GAAoB5vC,GAAA,CACtB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,WACA,OACA,WACA,QACA,UACA,YACA,IAAI,CACP,EACKwtC,EAAclvC,GAAWwuC,EAAW,EACpC/H,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,aAAa,EACjE,OAAA,IAAA,CAAA,IAAA9wB,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAAH,EAAoBrP,EAAK,CAAA,IAAEkjC,MAAI,CAAA,OAAEl0B,EAAM07B,QAAQ,EAAA,IAAA,OAAA,CAAA,OAAS9gC,GAAWoF,EAAM+mB,MAAOuK,EAAUtxB,EAAMk0B,MAAS,GAAE5C,CAAS,IAAGtxB,EAAMk0B,IAAK,GAAGl0B,EAAM45B,SAAY,WAAW55B,EAAM65B,WAAc,YAAW,CAAC,EAAA,IAAEpuC,IAAE,CAAEuU,OAAAA,EAAMvU,IAAMsuC,EAAYR,SAAAA,CAAS,CAAA,EAAA,GAAA,EAAA,EAAA/4B,CAAAA,GAAA,CAC7O,ECjBMqkB,GAAe,CACjB1kB,GAAI,OACR,EACMi8B,GAAkB7vC,GAAA,CACpB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,QACA,OAAO,CACV,EACK+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,WAAW,EAC/DlxB,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAA,OAAA,CAAA,OAAS4J,GAAWoF,EAAM+mB,MAAOuK,EAAUtxB,EAAMq8B,OAAS,YAAY,CAAA,CAAC,CAAA,CAAA,CAC1H,ECfMtnC,GAAU/D,GAAKoP,EAAOo6B,GAASn6B,EAAKrP,EAAK,CAAEmO,KAAI,QAAA,CAAY,CAAA,EACjEm9B,GAAe9X,OAAOxqB,OAAOjF,GAAQ,CACjCumC,MAAOd,GAAUc,MACjBC,MAAOf,GAAUe,KACrB,CAAC,ECQK1W,GAAe,CACjB1kB,GAAI,MACR,EACMo8B,GAAchwC,GAAA,CAChB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,KAAM,QAAS,WAAW,CAAC,EAC3F6T,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAA,OAAA,CAAA,OAAS4J,GAAWoF,EAAM+mB,MAAO/mB,EAAMw8B,WAAa,eAAe,CAAA,CAAC,CAAA,CAAA,CACvH,EACAC,GAAejY,OAAOxqB,OAAOuiC,GAAM,CAC/BG,MAAOpD,GACPqD,QAASnB,GACToB,SAAUC,GACVC,MAAOtC,GAAAA,OACPzlC,GACAwmC,MAAOQ,GACPvG,KAAM4G,GACNW,MAAOb,GACPc,OAAQb,GACR3C,cAAAA,EACJ,CAAC,EC9BD,IAAItF,GACW,SAAS+I,GAAcC,EAAQ,CAC5C,IAAI,CAAChJ,IAAQA,KAAS,GAAKgJ,IACrBp8B,GAAW,CACb,IAAIq8B,EAAY,SAAS,cAAc,KAAK,EAC5CA,EAAU,MAAM,SAAW,WAC3BA,EAAU,MAAM,IAAM,UACtBA,EAAU,MAAM,MAAQ,OACxBA,EAAU,MAAM,OAAS,OACzBA,EAAU,MAAM,SAAW,SAC3B,SAAS,KAAK,YAAYA,CAAS,EACnCjJ,GAAOiJ,EAAU,YAAcA,EAAU,YACzC,SAAS,KAAK,YAAYA,CAAS,CACzC,CAGE,OAAOjJ,EACT,CCjBA,MAAehD,GAAAA,GAAmB,YAAY,ECAxCkM,GAAexuC,GAAc,CAE/Bu2B,QAAS,CAAA,CACb,CAAC,yBCDD,MAAMN,GAAe,CAAC,EAChBwY,GAAqB9wC,GAAA,CACvB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,WACA,QACA,eACA,WACA,OACA,aACA,WACA,YAAY,CACf,EACK+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,OAAO,EACrDgM,EAAe,GAAEhM,CAAS,UAC1BiM,EAAkB,OAAOv9B,EAAMw9B,YAAe,SAC7C,GAAElM,CAAS,eAActxB,EAAMw9B,UAAW,GAC1C,GAAElM,CAAS,cAClB,OAAA,IAAA,CAAA,IAAA9wB,EAAAC,GAAAA,EAAAC,EAAAF,EAAAi9B,WAAAj9B,OAAAA,GAAAA,EAAAH,EAAiBrP,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAW0iC,EAAat9B,EAAM+mB,MAAO/mB,EAAMk0B,MAAS,GAAE5C,CAAS,IAAGtxB,EAAMk0B,IAAK,GAAGl0B,EAAM09B,UAAa,GAAEJ,CAAY,YAAYt9B,EAAM29B,YAAe,GAAEL,CAAY,cAAct9B,EAAMw9B,YAAcD,CAAe,CAAA,CAAC,CAAA,EAAA,GAAA,EAAA,EAAA78B,EAAAA,EAE5OV,IAAAA,EAAMjR,QAAQ,EAAA2qC,OAAA0B,GAAA16B,EADL9F,GAAY,GAAE02B,CAAS,WAAWtxB,EAAM49B,aAAc59B,EAAM49B,YAAY,CAAC,CAAA,EAAAp9B,CAAAA,GAAA,CAI3F,ECxBe0wB,GAAAA,GAAmB,cAAc,oBCEhD,MAAMrM,GAAe,CACjB6M,WAAY,QACZmM,YAAa,EACjB,EACMC,GAA6BvxC,GAAA,CAC/B,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,aACA,eACA,cACA,SACA,UAAU,CACb,EACK3E,EAAUiD,GAAWuyC,EAAY,EACjCW,EAAcA,IAAM,CACtBn2C,GAASu9B,OAAO,EAChBnlB,EAAMmlB,SAAS,CACnB,EACA,OAAA,IAAA,CAAA,IAAA3kB,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAiBxP,EAAK,GAAA,EAAA,EAAAm2B,EAAA3mB,EACnBR,IAAAA,EAAMjR,SAAQ,IAAA,EAAAo4B,EAAA3mB,GAAA,IAAA,CAAA,IAAAwxB,EAAA1T,EAEdte,IAAAA,CAAAA,CAAAA,EAAM69B,WAAW,EAAA,MAAA,IAAjB7L,EAAAA,GAAA5xB,EAAuB0wB,GAAW,CAAA,GAAA,cAAA,CAAA,OAAa9wB,EAAM0xB,UAAU,EAAA,IAAEV,SAAO,CAAA,OAAEhxB,EAAMiyB,YAAY,EAAExyB,QAASs+B,CAAAA,CAAe,CAAA,GAAA,EAAA,IAAA,EAAAv9B,CAAAA,GAAA,CAE7H,ECrBMqkB,GAAe,CACjB6M,WAAY,QACZmM,YAAa,EACjB,EACMG,GAAqBzxC,GAAA,CACvB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,WAAY,OAAO,CAAC,EAC9E+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,cAAc,EAClElxB,OAAAA,EAAQ09B,GAAmBz9B,EAAKrP,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAWoF,EAAM+mB,MAAOuK,CAAQ,CAAA,CAAC,CAAA,CAAA,CACnF,ECVMC,GAAgBN,GAAa,IAAI,EACxBC,GAAAA,GAAmB,cAAe,CAAEC,UAAWI,EAAc,CAAC,8CCgB7E,MAAM1M,GAAe,CACjBlvB,KAAM,GACN4uB,SAAU,GACVO,SAAU,GACVC,UAAW,GACXC,aAAc,GACdC,aAAc,GACdgZ,UAAW,GACXC,SAAUb,EACd,EAEA,SAASc,GAAiBntC,EAAO,CAC7BoP,OAAAA,EAAQuwB,GAAItwB,EAAKrP,EAAK,CAAEu6B,QAAS3rB,MAAAA,CAAS,CAAA,CAC9C,CACA,SAASkoB,GAAmB92B,EAAO,CAC/BoP,OAAAA,EAAQuwB,GAAItwB,EAAKrP,EAAK,CAAEu6B,QAAS3rB,MAAAA,CAAS,CAAA,CAC9C,CAEA,MAAMwlB,GAAe74B,GAAA,CACX,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,WACA,QACA,QACA,cACA,eACA,WACA,WACA,kBAEA,OACA,YACA,WACA,WACA,kBACA,SACA,SACA,YACA,YACA,eACA,eACA,sBACA,YACA,SACA,YACA,UACA,aACA,WACA,gBACA,SAAA,CACH,EACK,CAAC6xC,EAAYC,CAAQ,EAAIv0C,EAAa,CAAA,CAAE,EACxC,CAACw0C,EAAoBC,CAAqB,EAAIz0C,EAAa,EAAK,EACtE,IAAI00C,EAAuB,GACvBC,EAAyB,GACzBC,EAAgC,KAChChb,EACJ,MAAMJ,EAAQ0K,GAAS,EACjBxE,EAAqBvzB,GAAA,CACfA,EAAAA,EACRjF,EAAMiF,MAAMA,CAAG,CACnB,EACMq7B,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,OAAO,EACrDqN,EAAe,CACjB,IAAIxZ,QAAS,CACT,OAAOnlB,EAAMmlB,MAAAA,CAErB,EACA,SAASyZ,GAAkB,CACnB5+B,OAAAA,EAAMikB,QACCjkB,EAAMikB,QACVgQ,GAAiB,CAAE3Q,MAAOA,EAAM,CAAA,CAAG,CAAA,CAE9C,SAASub,EAAkBtvC,EAAM,CAC7B,GAAI,CAACuR,GACD,OACJ,MAAMg+B,EAAyBF,IAAkBG,kBAAsB,EAAA,EACjEC,EAAqBzvC,EAAK0vC,aAAe/4B,GAAc3W,CAAI,EAAE4oB,gBAAgB+mB,aAC1Eb,EAAA,CACLc,aAAcL,GAA0B,CAACE,EAAqBI,KAAqBx/B,OACnFy/B,YAAa,CAACP,GAA0BE,EAAqBI,GAAqBx/B,EAAAA,MAAAA,CACrF,CAAA,CAEL,MAAM0/B,EAAqBA,IAAM,CACzB5b,GACAmb,EAAkBnb,EAAMY,MAAM,CAEtC,EACA12B,GAAU,IAAM,CAEYob,GAAAA,OAAQ,SAAUs2B,CAAkB,EAE5BZ,IAAA,CAAA,CACnC,EAID,MAAMa,EAAwBA,IAAM,CACTf,EAAA,EAC3B,EACMgB,EAAuBxyC,GAAA,CACrBwxC,GAAwB9a,GAAS12B,EAAE0G,SAAWgwB,EAAMY,SAC3Bma,EAAA,IAEND,EAAA,EAC3B,EACMiB,EAA6BA,IAAM,CACrClB,EAAsB,EAAI,EACM1P,EAAAA,GAAcnL,EAAMY,OAAQ,IAAM,CAC9Dia,EAAsB,EAAK,CAAA,CAC9B,CACL,EACMmB,EAAmC1yC,GAAA,CACjCA,EAAE0G,SAAW1G,EAAEuvB,eAGQkjB,EAAA,CAC/B,EACM1B,EAAqB/wC,GAAA,CACnBgT,GAAAA,EAAMukB,WAAa,SAAU,CAC7Bmb,EAA0B1yC,CAAC,EAC3B,MAAA,CAEJ,GAAIyxC,GAA0BzxC,EAAE0G,SAAW1G,EAAEuvB,cAAe,CAC/BkiB,EAAA,GACzB,MAAA,CAEJz+B,EAAMmlB,SAAS,CACnB,EACMwa,EAA6B3yC,GAAA,CAC3B,CAACgT,EAAM8kB,UAAY9kB,EAAMukB,WAAa,UAGtCv3B,EAAEuS,eAAe,EACUkgC,EAAA,GAEtBz/B,EAAM8kB,UAAY9kB,EAAMymB,iBAC7BzmB,EAAMymB,gBAAgBz5B,CAAC,CAE/B,EACMmjC,EAAcA,CAAC5gC,KAASiU,IAAS,CAC/BjU,IAEAA,EAAKkK,MAAMmmC,QAAU,QACrBf,EAAkBtvC,CAAI,GAEpBk4B,EAAAA,UAAUl4B,EAAM,GAAGiU,CAAI,CACjC,EACM8sB,EAAaA,IAAI9sB,IAAS,CACIk7B,IAAA,EAC1BnX,EAAAA,SAAS,GAAG/jB,CAAI,CAC1B,EACM4sB,EAAiBA,IAAI5sB,IAAS,CAC1BkkB,EAAAA,aAAa,GAAGlkB,CAAI,EAGLwF,GAAAA,OAAQ,SAAUs2B,CAAkB,CAE7D,EACMO,EAAyBtwC,GAAA,CACvBA,IACKkK,EAAAA,MAAMmmC,QAAU,IACzB5/B,EAAM4mB,WAAWr3B,CAAI,EAGGyZ,GAAAA,OAAQ,SAAUs2B,CAAkB,CAEhE,EACMpa,MAA+B,IAAA,CAAA,IAAA1kB,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAAH,EAAey/B,EAAa,CAAA,IAAA,OAAA,CAASllC,OAAAA,GAAY,GAAE02B,CAAS,YAAYtxB,EAAM+/B,cAAe,CAAC//B,EAAMi+B,WAAa,MAAM,CAAA,CAAC,CAAA,EAAA,GAAA,EAAA,EAAAz9B,CAAAA,GAAI,EAC3Jw/B,EAAiBA,IAAM,CACzB,IAAI/1C,EAAI,CAAE,GAAG+V,EAAMvG,MAAO,GAAG2kC,EAAW,CAAE,EAEtC,OAACp+B,EAAMi+B,YACPh0C,EAAE21C,QAAU,SAET31C,CACX,EACMi9B,MAA2B,IAAA,CAAA,IAAAxmB,EAAAu/B,GAAA,EAAAv/B,OAAAA,GAAAA,EAAAL,EAA6BymB,EAAW,CAAA,IAAErtB,OAAK,CAAA,OAAEumC,EAAe,CAAC,EAAA,IAAA,OAAA,CAASplC,OAAAA,GAAWoF,EAAM+mB,MAAOuK,EAAUgN,KAAyB,GAAEhN,CAAS,SAAQ,CAAC,EAAA,IAAE7xB,SAAO,CAAEO,OAAAA,EAAMukB,SAAWwZ,EAAcn+B,MAAS,EAAA,UAAa4/B,EAAa,GAAA,mBAAA,CAAA,OAAmBx/B,EAAM,iBAAiB,CAAA,CAAC,CAAA,EAAA,GAAA,EAAA,EAAAU,EAAAA,EAAAN,EAC/SvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMk+B,QAAAA,GAAcltC,EAAK,CAAEkvC,YAAaX,EAAqB,IAAA,OAAA,CAAA,OAASv/B,EAAMs9B,WAAW,EAAA,IAAEM,cAAY,CAAA,OAAE59B,EAAM49B,YAAY,EAAA,IAAA7uC,UAAA,CAAA,OAC1IiR,EAAMjR,QAAAA,CAAQ,CAAA,CAAA,CAAA,EAAA2R,CAAAA,GAEZ,EACPN,OAAAA,EAASg9B,GAAahb,SAAQ,CAACr4B,MAAO40C,EAAY,IAAA5vC,UAAA,CAAA,OAAAqR,EAC/C6nB,GAAS,CAAA,IAACtyB,MAAI,CAAA,OAAEqK,EAAMrK,IAAI,EAAAM,IAAOuzB,EAAS,IAAEjF,UAAQ,CAAA,OAAEvkB,EAAMukB,QAAQ,EAAA,IAAEhnB,WAAS,CAAA,OAAEyC,EAAMzC,SAAS,EAAEunB,SAAQ,GAAA,IAC5GC,WAAS,CAAA,OAAE/kB,EAAM+kB,SAAS,EAAA,IAAEC,cAAY,CAAA,OAAEhlB,EAAMglB,YAAY,EAAA,IAAEC,cAAY,CAAA,OAAEjlB,EAAMilB,YAAY,EAAA,IAAEoB,qBAAmB,CAAA,OAAErmB,EAAMqmB,mBAAmB,EAAEI,gBAAiBkZ,EAAmB,IAAE3Z,QAAM,CAAA,OAAEhmB,EAAMgmB,MAAM,EAAA,IAAEb,QAAM,CAAA,OAAEnlB,EAAMmlB,MAAM,EAAEsC,QAAS0I,EAAazI,WAAY0I,EAAc,IAAEzI,WAAS,CAAA,OAAE3nB,EAAM2nB,SAAS,EAAEJ,OAAQ+I,EAAU,IAAE9I,WAAS,CAAA,OAAExnB,EAAMwnB,SAAS,EAAEZ,SAAUiZ,EAAY,IAAE5b,SAAO,CAAA,OAAE2a,EAAgB,CAAC,EAAA,IAAEjZ,YAAU,CAAE3lB,OAAAA,EAAMi+B,UAAYE,GAAmBv+B,MAAS,EAAA,IAAEmoB,oBAAkB,CAAE/nB,OAAAA,EAAMi+B,UAAYnW,GAAqBloB,MAAS,EAAEslB,eAAAA,EAAgCgC,aAAAA,CAAAA,CAA0B,CAAA,CAAA,CAAA,CAErlB,EACAiZ,GAAe3b,OAAOxqB,OAAOorB,GAAO,CAChCmQ,KAAM6K,GACN3K,OAAQuI,GACR3I,MAAOgL,GACP3K,OAAQ4K,GACRlZ,OAAQiW,GACRkD,oBAAqB,IACrBC,6BAA8B,GAClC,CAAC,ECpNctP,GAAAA,GAAmB,UAAU,ECItCrM,GAAe,CACjB1kB,GAAIG,GACJlB,SAAU,EACd,EACMqhC,GAAiBl0C,GAAA,CACnB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,QACA,SACA,UAAU,CACb,EACK+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,UAAU,EACxD,CAACoP,EAAcxhC,CAAI,EAAIkpB,GAAWj1B,EAAW,CAC/C,IAAI3G,KAAM,CACN,OAAOyyB,GAAajf,EAAMkf,SAAUluB,EAAM4N,IAAI,CAClD,EACA,IAAIkhB,QAAS,CACT,OAAO9f,EAAM8f,MAAAA,CAErB,EAAG9uB,CAAK,CAAC,EACToP,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,CAAE,EAAMnP,EAAW0vC,EAAY,CAAA,IAAA,OAAA,CAAS9lC,OAAAA,GAAWoF,EAAM+mB,MAAOuK,EAAUtgC,EAAMoO,UAAY,WAAYF,EAAK2gB,UAAY,QAAQ,CAAA,CAAC,CAAA,CAAA,CACxK,ECnBMgF,GAAe,CACjB1kB,GAAI,MACJwgC,QAAS,GACTC,KAAM,EACV,EACMhY,GAAar8B,GAAA,CACT,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,YACA,mBACA,WACA,UACA,OACA,UACA,SACA,eACA,QACA,UAAU,CACb,EACK,CAACqzB,EAAW0B,CAAQ,EAAInB,GAAqB,IAAMngB,EAAM4f,UAAW,IAAM5f,EAAMotB,iBAAkBptB,EAAMshB,QAAQ,EAChHgQ,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,KAAK,EACrDuP,IAAAA,EACAvM,EACA+C,EAAW,GACTyJ,MAAAA,EAAgBj2C,GAAWysC,EAAa,EACxCyJ,EAAoBl2C,GAAW0pC,EAAiB,EACtD,OAAIuM,GACAD,EAAiBC,EAAcxP,SAC/B+F,EAAWr3B,EAAM24B,QAAU,KAAO,GAAO34B,EAAM24B,QAE1CoI,IACJ,CAAEzM,mBAAAA,CAAAA,EAAuByM,GAE9B3gC,EAASupB,GAAOtpB,EAAA,CAAA,IAACF,IAAE,CAAA,OAAEH,EAAMG,EAAE,EAAA,IAAEyf,WAAS,CAAA,OAAEA,EAAU,CAAC,EAAE0B,SAAAA,EAAkB,IAAA,OAAA,CAAS1mB,OAAAA,GAAWoF,EAAM+mB,MAAO,CAClG,CAACuK,CAAQ,EAAG,CAAC+F,EACb,CAAE,GAAEwJ,CAAe,MAAK,EAAGxJ,EAC3B,CAAE,GAAEwJ,CAAe,aAAY,EAAGxJ,GAAYr3B,EAAMghC,aACpD,CAAE,GAAE1M,CAAmB,IAAGt0B,EAAMgxB,OAAQ,EAAC,EAAG,CAAC,CAACsD,EAC9C,CAAE,GAAEhD,CAAS,IAAGtxB,EAAMgxB,OAAQ,EAAC,EAAG,CAAC,CAAChxB,EAAMgxB,QAC1C,CAAE,GAAEM,CAAS,OAAM,EAAGtxB,EAAM4gC,KAC5B,CAAE,GAAEtP,CAAS,YAAW,EAAGtxB,EAAM2gC,OAAAA,CACpC,CAAA,CAAC,EAAM3vC,CAAK,CAAA,CACrB,EACAiwC,GAAezc,OAAOxqB,OAAO4uB,GAAK,CAC9BrG,KAAMmG,GACN0J,KAAMqO,EACV,CAAC,EClDK5b,GAAe,CAAC,EAChBqc,GAAqB30C,GAAA,CACvB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,KAAM,WAAY,OAAO,CAAC,EACpF+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,cAAc,EAClElxB,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,KAAOnP,EAAM4N,KAAO,IAAM,OAAA,GAAa5N,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAWoF,EAAM+mB,MAAOuK,CAAQ,CAAA,CAAC,CAAA,CAAA,CAC5H,oBCJA,MAAMzM,GAAe,CAAC,EAChBsc,GAAwB50C,GAAA,CAC1B,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,WACA,QACA,WACA,KAAK,CACR,EACK+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,iBAAiB,EAC/D1pC,EAAUiD,GAAWysC,EAAa,EACxCl3B,OAAAA,EAAS6vB,GAAQ5vB,EAAA,CAAA,IAAA,IAAA,CAAK,MAAA,CAAC,CAACzY,GAASw5C,QAAAA,GAAcpwC,EAAK,CAAA,IAAAjC,UAAA,CAAA,IAAAyR,EAAAC,GAAA,EAAA4gC,EACxCrhC,EAAM/J,IAAG,cAAAorC,GAAA,WAAAC,GAAAD,EAAA7gC,CAAA,EAATR,EAAM/J,IAAGuK,EAAAA,EAAAA,EAChBR,IAAAA,EAAMjR,QAAQ,EAAAqsC,GAAAA,IAAAA,GAAA56B,EADW+gC,GAAWjQ,EAAUtxB,EAAM+mB,KAAK,CAAC,CAAA,EAAAvmB,CAAAA,CAAA,CAAA,CAAA,CAInE,qBCdA,MAAMqkB,GAAe,CACjB1kB,GAAI,SACJs5B,MAAO,mBACX,EACM+H,GAAsBj1C,GAAA,CACxB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,QACA,WACA,QACA,SAAS,CACZ,EACK+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,gBAAgB,EAC9D1pC,EAAUiD,GAAWysC,EAAa,EAClCyG,EAAqB/wC,GAAA,CACNgT,GAAAA,EAAMP,QAASzS,CAAC,EACjCpF,GAAS+4B,WAAW,CACxB,EACI3gB,OAAAA,EAAMG,KAAO,WACbnP,EAAMmO,KAAO,UAEjBiB,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAEmO,MAAI,CAAEa,OAAAA,EAAMG,KAAO,SAAW,SAAWP,MAAS,EAAEH,QAASs+B,EAAW,GAAA,cAAA,CAAA,OAAc/9B,EAAMy5B,KAAK,EAAA,IAAA,OAAA,CAAA,OAAS7+B,GAAWoF,EAAM+mB,MAAOuK,EAAU,CAAC1pC,GAASw5C,UAAY,WAAW,CAAC,EAAA,IAAAryC,UAAA,CAC5NiR,OAAAA,EAAMjR,WAAQ,IAAA,CAAA,IAAAyR,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAkB,GAAE8wB,CAAS,OAAM,EAAA9wB,CAAAA,GAAG,CAAA,CAAA,CAAA,CAAA,CAE3D,EC9Be0wB,GAAAA,GAAmB,gBAAgB,ECM5CrM,GAAe,CACjBsF,GAAI,GACJ3B,aAAc,GACdlB,cAAe,GACfD,OAAQ,EACZ,EACMoa,GAAmB,CACrB,CAACzX,EAAQ,EAAG,OACZ,CAACC,EAAO,EAAG,MACf,EACMyX,GAA2Bn1C,GAAA,CAC7B,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,WAAY,QAAS,UAAU,CAAC,EAC1F+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,WAAW,EACzD5E,EAAmB39B,GAAS,IAAMiR,EAAMjR,QAAQ,EAClDyhC,IAAAA,EACJpwB,OAAAA,EAAS6uB,GAAiB5uB,EAAA,CAACmsB,eAAgBuC,IAA2B/9B,EAAK,CAAAjC,SACvEA,CAAC47B,EAAQ2E,IAAe,CACpB,MAAMj0B,EAAKqxB,EAAiB,EAC5B4C,EAAWr5B,IAAIoF,CAAE,EACjB,MAAMo1B,EAAa71B,GAAWoF,EAAM+mB,OAAQ4D,IAAWX,IAAYW,IAAWT,KAAa,GAAEoH,CAAS,YAEtGmQ,GAAiB9W,CAAM,CAAC,EACTtvB,OAAAA,GAAAA,EAAIm1B,EAAaC,CAAU,EAC5BA,EAAAA,EACPp1B,CAAAA,CACX,CAAC,CAAA,CAET,EC9BMwpB,GAAe,CACjB6M,WAAY,QACZmM,YAAa,EACjB,EACM8D,GAAyBp1C,GAAA,CAC3B,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,WAAY,OAAO,CAAC,EAC9E+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,kBAAkB,EACtElxB,OAAAA,EAAQ09B,GAAmBz9B,EAAKrP,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAWoF,EAAM+mB,MAAOuK,CAAQ,CAAA,CAAC,CAAA,CAAA,CACnF,ECVMkD,GAAgBvD,GAAa,IAAI,EACxBC,GAAAA,GAAmB,kBAAmB,CACjDC,UAAWqD,EACf,CAAC,8CCOD,MAAM3P,GAAe,CACjBlvB,KAAM,GACN4uB,SAAU,GACVO,SAAU,GACVtX,OAAQ,GACRuX,UAAW,GACXC,aAAc,GACdC,aAAc,GACd5f,UAAW,OACf,EACA,SAAS84B,GAAiBntC,EAAO,CAC7BoP,OAAAA,EAAQshC,GAAsB1wC,CAAK,CACvC,CACA,SAAS82B,GAAmB92B,EAAO,CAC/BoP,OAAAA,EAAQuwB,GAAS3/B,CAAK,CAC1B,CACA,MAAM4wC,GAAmBr1C,GAAA,CACf,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,WACA,QACA,WACA,kBACA,YAEA,OACA,WACA,WACA,SACA,kBACA,SACA,SACA,YACA,YACA,eACA,eACA,sBACA,YACA,SACA,YACA,UACA,aACA,WACA,gBACA,UACA,KAAA,CACH,EACG83B,IAAAA,EACJ,MAAMiN,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,WAAW,EACzDwP,EAAgBj2C,GAAWysC,EAAa,EACxCpR,EAAaA,IAAM,CACrB4a,GAAengB,WAAW,EAC1B3gB,EAAMmlB,SAAS,CACnB,EACMwZ,EAAe,CACjB,IAAIxZ,QAAS,CACFe,OAAAA,CAAAA,CAEf,EACA,SAAS0Y,GAAkB,CACnB5+B,OAAAA,EAAMikB,QACCjkB,EAAMikB,QACbjkB,EAAMwN,QAGD6W,IACcA,EAAA,IAAI+O,GAAsB,CACrC/P,wBAAyB,EAAA,CAC5B,GACEgB,GAEJ4P,GAAiB,CAAA,CAEtB9D,MAAAA,EAAcA,CAAC5gC,KAASiU,IAAS,CAC/BjU,IACKkK,EAAAA,MAAMooC,WAAa,WACtBpa,EAAAA,UAAUl4B,EAAM,GAAGiU,CAAI,CACjC,EACMq8B,EAAeA,CAACtwC,KAASiU,IAAS,CAChCjU,IACKkK,EAAAA,MAAMooC,WAAa,IACtBjb,EAAAA,WAAW,GAAGpjB,CAAI,CAC5B,EACM0hB,MAA+B,IAAA,CAAA,IAAA1kB,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAAH,EAAey/B,EAAa,CAAA,IAAA,OAAA,CAAA,OAASllC,GAAY,GAAE02B,CAAS,YAAYtxB,EAAM+/B,aAAa,CAAA,CAAC,CAAA,EAAA,GAAA,EAAA,EAAAv/B,EAAAA,EAC9HxP,IAAAA,EAAMjC,QAAQ,EAAAyR,CAAAA,GACV,EACD0mB,MAA2B,IAAA,CAAA,IAAAxmB,EAAAu/B,GAAA,EAAAv/B,OAAAA,GAAAA,EAAAL,EAEfymB,EAAiB91B,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAWoF,EAAM+mB,MAAOuK,EAAW,GAAEA,CAAS,IAAGtxB,EAAMqF,SAAU,EAAC,CAAC,EAAA,GAAA,mBAAA,CAAA,OAAmBrF,EAAM,iBAAiB,CAAA,CAAC,CAAA,EAAA,GAAA,EAAA,EAAAU,EAAAA,EAC5JV,IAAAA,EAAMjR,QAAQ,EAAA2R,CAAAA,GACV,EACPN,OAAAA,EAASg9B,GAAahb,SAAQ,CAACr4B,MAAO40C,EAAY,IAAA5vC,UAAA,CAAA,OAAAqR,EAC/C6nB,GAAS,CAAA,IAACtyB,MAAI,CAAA,OAAEqK,EAAMrK,IAAI,EAAAM,IAAAi8B,EAAA,CAAA,IAAAmP,EAAOrhC,EAAM/J,IAAG,OAAAorC,GAAAA,WAAAA,EAAAnP,CAAA,EAATlyB,EAAM/J,IAAGi8B,CAAA,EAAA,IAAE3N,UAAQ,CAAA,OAAEvkB,EAAMukB,QAAQ,EAAA,IAAEhnB,WAAS,CAAA,OAAEyC,EAAMzC,SAAS,EAAA,IAAEunB,UAAQ,CAAA,OAAE9kB,EAAM8kB,QAAQ,EAAA,IAAEC,WAAS,CAAA,OAAE/kB,EAAM+kB,SAAS,EAAA,IAAEC,cAAY,CAAEhlB,OAAAA,EAAMglB,cAAgB,CAACxX,MAAM,EAAA,IAAEyX,cAAY,CAAA,OAAEjlB,EAAMilB,YAAY,EAAA,IAAEoB,qBAAmB,CAAA,OAAErmB,EAAMqmB,mBAAmB,EAAA,IAAEI,iBAAe,CAAA,OAAEzmB,EAAMymB,eAAe,EAAA,IAAET,QAAM,CAAA,OAAEhmB,EAAMgmB,MAAM,EAAEb,OAAQe,EAAYuB,QAAS0I,EAAW,IAAEzI,YAAU,CAAA,OAAE1nB,EAAM0nB,UAAU,EAAA,IAAEC,WAAS,CAAA,OAAE3nB,EAAM2nB,SAAS,EAAA,IAAEJ,QAAM,CAAA,OAAEvnB,EAAMunB,MAAM,EAAA,IAAEC,WAAS,CAAA,OAAExnB,EAAMwnB,SAAS,EAAEZ,SAAUiZ,EAAY,IAAE5b,SAAO,CAAA,OAAE2a,EAAgB,CAAC,EAAEjZ,WAAYwY,GAAkBpW,mBAAoBD,GAAoB5C,eAAAA,EAAgCgC,aAAAA,CAAAA,CAA0B,CAAA,CAAA,CAAA,CAEtqB,EACA4a,GAAetd,OAAOxqB,OAAO4nC,GAAW,CACpCrM,KAAMwM,GACNtM,OAAQkM,GACRtM,MAAO2M,EACX,CAAC,EC3GKC,GAA6BjxC,GAAA,CACzBpJ,MAAAA,EAAUiD,GAAWysC,EAAa,EACxCl3B,OAAAA,EAASwhC,GAASvhC,EAAA,CAAA,IAAC1K,MAAI,CAAE,MAAA,CAAC,CAAC/N,GAASw5C,QAAAA,CAAQ,EAAMpwC,CAAK,CAAA,CAC3D,ECKMkxC,GAAahR,GAAmB,cAAe,CACjDC,UAAW,MACf,CAAC,EACKtM,GAAe,CACjB1kB,GAAI,MACJgiC,OAAQ,GACRnR,QAAS,QACToR,iBAAkB,EACtB,EACMC,GAAgB91C,GAAA,CACZ,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,SACA,UACA,KACA,QACA,SACA,QACA,WACA,kBACA,WACA,WACA,kBAAkB,CACrB,EACK+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,QAAQ,EACtD,CAAC8P,EAAUzgB,CAAQ,EAAIR,GAAqB,IAAMngB,EAAMohC,SAAU,IAAMphC,EAAMsiC,gBAAiBtiC,EAAM2gB,QAAQ,EAC7G4hB,EAAiBA,IAAI/+B,IAAS,CAC1B8d,EAAAA,WAAW,GAAG9d,CAAI,EACpBxD,EAAMoiC,kBAAoBhB,KAC1BzgB,IAAW,EAAK,CAExB,EACM6hB,EAAcA,IAAM,CAClBA,IAAAA,EAAe,GAAElR,CAAS,UAC1B,OAAA,OAAOtxB,EAAMmiC,QAAW,WACxBK,EAAe,GAAEA,CAAY,IAAGxiC,EAAMmiC,MAAO,IAC1CK,CACX,EACM1B,EAAgB,CAClB,IAAIngB,UAAW,CACX,MAAO,IAAMA,IAAW,CAACygB,GAAU,CACvC,EACA9P,SAAAA,EACA,IAAI8P,UAAW,CACJ,MAAA,CAAC,CAACA,EAAS,CAAA,CAE1B,EACAhhC,OAAAA,EAASk3B,GAAclV,SAAQ,CAACr4B,MAAO+2C,EAAa,IAAA/xC,UAAA,CAAAqR,OAAAA,EACjD4e,GAAkBoD,SAAQ,CAACr4B,MAAOw4C,EAAc,IAAAxzC,UAAA,CAAAqR,OAAAA,EAC9CvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAE6O,MAAI,CAAA,OAI7C7O,EAAM6O,OAASD,QAAaI,EAAMG,KAAO,MAAQ,aAAenP,EAAM6O,IAAI,EAAA,IAAA,OAAA,CAAA,OAASjF,GAAWoF,EAAM+mB,MAAOuK,EAAUtxB,EAAMmiC,QAAUK,EAAexiC,EAAAA,EAAMgxB,SAAY,GAAEM,CAAS,IAAGtxB,EAAMgxB,OAAQ,GAAGhxB,EAAMsyB,IAAO,MAAKtyB,EAAMsyB,EAAG,GAAGtyB,EAAMyiC,QAAW,UAASziC,EAAMyiC,MAAO,GAAGziC,EAAMmd,OAAU,SAAQnd,EAAMmd,KAAM,EAAC,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAG3T,EACAulB,GAAele,OAAOxqB,OAAOqoC,GAAQ,CACjCM,MAAOzB,GACPjR,SAAUkR,GACVS,UAAWK,GACXzM,KAAM0M,GACN5f,OAAQkf,EACZ,CAAC,ECtEK3c,GAAe,CAAC,EAChB+d,GAAqBr2C,GAAA,CAEjB,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,QACA,WACA,WACA,QACA,iBACA,WACA,WACA,SACA,oBACA,aAAa,CAChB,EACKs2C,EAAgBlV,GAAmB/tB,OAAW,UAAU,EAC9DQ,OAAAA,EAASqgB,GAAQpgB,EAAKrP,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAWoF,EAAM+mB,MAAO8b,CAAa,CAAC,EAAA,IAAA9zC,UAAA,CAAA,MAAA,CAAAqR,EACvEqgB,GAAS6B,OAAM,CAAA,IAAC72B,IAAE,CAAA,OAAEuU,EAAMvU,EAAE,EAAEyzB,SAAU,KAAI,IAAEY,QAAM,CAAA,OAAE9f,EAAM8f,MAAM,EAAA,IAAE1gB,UAAQ,CAAA,OAAEY,EAAMZ,QAAQ,EAAA,IAAE+4B,eAAa,CAAA,OAAEn4B,EAAMsxB,QAAQ,EAAEnxB,GAAIsgC,GAAO,IAAA1xC,UAAA,CAAA,OACtIiR,EAAMq6B,KAAAA,CAAK,CAAA,EAAAj6B,EAGbqgB,GAAS4B,KAAI,CAAA,IAACxiB,MAAI,CAAA,OAAEG,EAAM8iC,QAAQ,EAAA,IAAE5K,eAAa,CAAA,OAAEl4B,EAAM+iC,iBAAiB,EAAA,IAAE9kB,gBAAc,CAAA,OAAEje,EAAMie,cAAc,EAAA,IAAE+S,SAAO,CAAA,OAAEhxB,EAAMgjC,WAAW,EAAA,IAAAj0C,UAAA,CAAA,OAC1IiR,EAAMjR,QAAAA,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAGvB,EACAk0C,GAAeze,OAAOxqB,OAAO4oC,GAAa,CACtCrgB,KAAM9B,GAAS8B,KACf0W,SAAUxY,GAASwY,SACnBC,QAASzY,GAASyY,QAClBzD,OAAQhV,GAASgV,MACrB,CAAC,ECjCK5Q,GAAe,CACjB1kB,GAAI,KACR,EACM+iC,GAAa32C,GAAA,CACf,MAAMmhC,EAAcK,GAAwB,EACtC,CAAC/tB,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,QACA,GAAGmhC,EAAa,CAAA,CACnB,EACKyV,EAAoBxV,GAAmB3tB,EAAMsxB,SAAU,KAAK,EAC5D8R,EAAc,GAAED,CAAkB,QAClChlC,EAAU,CAAE,EACN,OAAAuvB,EAAA,EAAEoG,QAAsBiC,GAAA,CAC1B3V,MAAAA,EAAYpgB,EAAM+1B,CAAQ,EAC5BsN,IAAAA,EACAjjB,GAAa,MAAQ,OAAOA,GAAc,SACzC,CAAEijB,KAAAA,CAAAA,EAASjjB,EAGLA,EAAAA,EAEX,MAAM6V,EAAQF,IAAa,KAAQ,IAAGA,CAAS,GAAI,GAC/CsN,GAAQ,MACRllC,EAAQ+3B,KAAM,GAAEkN,CAAW,GAAEnN,CAAM,IAAGoN,CAAK,EAAC,CAAA,CACnD,EACDjjC,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAA,OAAA,CAAA,OAAS4J,GAAWoF,EAAM+mB,MAAOoc,EAAmB,GAAGhlC,CAAO,CAAA,CAAC,CAAA,CAAA,CAClH,EC5BM0mB,GAAe,CACjB1kB,GAAI,KACR,EACMmjC,GAAiB/2C,GAAA,CACnB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,KACA,WACA,UACA,YACA,OACA,OAAO,CACV,EAEKg3C,EAAmB,GADR5V,GAAmB3tB,EAAMsxB,SAAU,SAAS,CACzB,IAAGtxB,EAAMi+B,SAAU,GACvD79B,OAAAA,EAASvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEsC,EAAMG,EAAAA,GAAQnP,EAAK,CAAA,IAAA,OAAA,CAAA,OAAS4J,GAAWoF,EAAM+mB,MAAOwc,EAAiBvjC,EAAMk0B,MAAS,GAAEqP,CAAgB,IAAGvjC,EAAMk0B,IAAK,GAAGl0B,EAAMgxB,SAAY,QAAOhxB,EAAMgxB,OAAQ,EAAC,CAAA,CAAC,CAAA,CAAA,CAChM,EClBO,SAASwS,GAA0B7d,EAAY,CAClD,OAAI,OAAOA,GAAe,UACfA,EAAagL,GAAO,OAExBhL,CACX,CCHA,MAAMd,GAAe,CAAC,EAChB4e,GAAsBl3C,GAAA,CAClB,KAAA,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,YAAY,CAAC,EAC7E6T,OAAAA,EAAS+sB,GAAI9sB,EAAKrP,EAAK,CAAA,IAAE20B,YAAU,CAAE6d,OAAAA,GAA0BxjC,EAAM2lB,UAAU,CAAA,CAAC,CAAA,CAAA,CACpF,ECNeuL,GAAAA,GAAmB,aAAa,ECMzCrM,GAAe,CAAC,EAChB6e,GAAiBn3C,GAAA,CACnB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAAC,WAAY,YAAY,CAAC,EACnF,CAACo3C,EAAYzkC,CAAI,EAAI4tB,GAAY35B,EAAWnC,EAAO,CACrD,IAAI20B,YAAa,CACN6d,OAAAA,GAA0BxjC,EAAM2lB,UAAU,CAAA,CACrD,CACH,CAAC,EACI,CAACie,EAAYC,CAAI,EAAIjwC,GAAW+vC,EAAY,CAC9C,KACA,QACA,eACA,eAAe,CAClB,EACK/V,EAASD,GAAmB3tB,EAAMsxB,SAAU,UAAU,EACtD1oC,EAAasW,EAAKymB,YAAcgL,GAGtCvwB,OAAAA,EAAS+nB,GAAW/F,SAAQ,CAACr4B,MAAO,KAAI,IAAAgF,UAAA,CAAAqR,OAAAA,EACrC4e,GAAkBoD,SAAQ,CAACr4B,MAAO,KAAI,IAAAgF,UAAA,CAAA,OAAAqR,EACpCxX,EAAU,CAAA,IAAA,IAAA,CAAA,OAAKsW,EAAK2gB,QAAQ,EAAA,IAAE4H,SAAO,CAAA,OAAEvoB,EAAKuoB,OAAO,EAAA,IAAEC,YAAU,CAAA,OAAExoB,EAAKwoB,UAAU,EAAA,IAAEC,WAAS,CAAA,OAAEzoB,EAAKyoB,SAAS,EAAA,IAAEJ,QAAM,CAAA,OAAEroB,EAAKqoB,MAAM,EAAA,IAAEC,WAAS,CAAA,OAAEtoB,EAAKsoB,SAAS,EAAA,IAAEZ,UAAQ,CAAA,OAAE1nB,EAAK0nB,QAAQ,EAAA,IAAE4B,cAAY,CAAA,OAAEtpB,EAAKspB,YAAY,EAAA,IAAElB,eAAa,CAAA,OAAEpoB,EAAKooB,aAAa,EAAA,IAAAv4B,UAAA,CAAAqR,OAAAA,EACtPvC,GAAOwC,EAAA,CAAA,IAAC3C,WAAS,CAAA,OAAEkmC,EAAWzjC,IAAM,KAAA,GAAW0jC,EAAI,CAAA5tC,IAAAi8B,EAAA,CAAA,IAAAmP,EAAOrwC,EAAMiF,IAAG,OAAAorC,GAAAA,WAAAA,EAAAnP,CAAA,EAATlhC,EAAMiF,IAAGi8B,CAAA,EAAA,IAAA,OAAA,CAAA,OAASt3B,GAAWgpC,EAAW7c,MAAO6G,EAAQ1uB,EAAK2gB,UAAY,QAAQ,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAItJ,EC7BMikB,GAAiB9yC,GAEZA,EAEX+yC,GAAevf,OAAOxqB,OAAO8pC,GAAK,CAC9BtN,UAAWiN,GACXO,QAASC,GACTC,KAAMR,EACV,CAAC,oCCRD,MAAM7e,GAAe,CAAC,EAChBsf,GAAe53C,GAAA,CACjB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,WACA,QACA,UACA,WACA,aACA,QACA,OACA,UACA,YAAY,CACf,EACK42C,EAAoBxV,GAAmB3tB,EAAMsxB,SAAU,OAAO,EAC9DnzB,EAAUA,IAAMvD,GAAWoF,EAAM+mB,MAAOoc,EAAmBnjC,EAAMgxB,SAAY,GAAEmS,CAAkB,IAAGnjC,EAAMgxB,OAAQ,GAAGhxB,EAAMk0B,MAAS,GAAEiP,CAAkB,IAAGnjC,EAAMk0B,IAAK,GAAGl0B,EAAMokC,SAAY,GAAEjB,CAAkB,WAAWnjC,EAAMqkC,UAAa,GAAElB,CAAkB,YAAYnjC,EAAMskC,YAAe,GAAEnB,CAAkB,cAAcnjC,EAAMukC,OAAU,GAAEpB,CAAkB,QAAO,EAC/WqB,EAAQA,KAAA,IAAA,CAAA,IAAAhkC,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAAH,EAAiBrP,EAAK,CAAA,IAAA,OAAA,CAAA,OAASmN,EAAQ,CAAA,CAAC,CAAA,EAAA,GAAA,EAAA,EAAAqC,CAAAA,GAAG,EACzD,GAAIR,EAAMykC,WAAY,CACdC,IAAAA,EAAmB,GAAEvB,CAAkB,cACvC,OAAA,OAAOnjC,EAAMykC,YAAe,WAC5BC,EAAmB,GAAEA,CAAgB,IAAG1kC,EAAMykC,UAAW,KAE7D,IAAA,CAAA,IAAA/jC,EAAAu/B,GAAA,EAAA7E,OAAAA,GAAA16B,EAAmBgkC,CAAe,EAAAvd,EAAAzmB,EAAG8jC,CAAK,EAAA9jC,CAAAA,GAAA,CAAA,CAEvC8jC,OAAAA,CACX,ECnBM3f,GAAe,CACjBmM,QAAS,OACTxI,aAAc,GACdlB,cAAe,EACnB,EACA,SAASqd,GAAoBC,EAAM,CAC/B,IAAIxX,EACJwX,OAAAA,EAAK9Q,QAAiB+Q,GAAA,CACdzX,GAAoB,OACpBA,EAAmByX,EAAI3lB,SAC3B,CACH,EACMkO,CACX,CACA,SAAS0X,GAAU9zC,EAAO,CAClBA,OAAAA,EAAMqpC,OAAS,KACR,KAEXj6B,EAASsoB,GAAO,CAACvoB,GAAE,KAAMN,KAAI,eAAA,IAAA9Q,UAAA,CAAAqR,OAAAA,EAC1BqgC,GAAOpgC,EAAA,CAACF,GAAE,SAAUhB,KAAI,SAAA,IAAU+f,UAAQ,CAAA,OAAEluB,EAAMkuB,QAAQ,EAAA,IAAE9f,UAAQ,CAAA,OAAEpO,EAAMoO,QAAQ,EAAA,IAAE3T,IAAE,CAAA,OAAEuF,EAAMvF,EAAE,EAAA,IAAA,OAAA,CAAA,OAASuF,EAAM+zC,QAAAA,CAAQ,EAAA,IAAO/zC,EAAMg0C,UAAY,GAAE,CAAA,IAAAj2C,UAAA,CAAA,OAClJiC,EAAMqpC,KAAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAGpB,CACA,MAAMlN,GAAc5gC,GAAA,CAChB,MAAM04C,EAAel2C,GAAS,IAAMxC,EAAEwC,QAAQ,EACxC61C,EAAO95C,EAAW,IAAM,CAC1B,MAAMwD,EAAI22C,EAAa,EACvB,OAAQC,MAAM93C,QAAQkB,CAAC,EAAIA,EAAI,CAACA,CAAC,CAAA,CACpC,EACK,CAAC0R,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW,CACzC,IAAIysB,WAAY,CACL+kB,OAAAA,GAAoBC,GAAM,CAAA,CAEtC/f,EAAAA,GAAct4B,CAAC,EAAG,CACjB,KACA,WACA,aACA,eACA,gBACA,WACA,YACA,mBACA,cAAc,CACjB,EACK,CAACqzB,EAAW0B,CAAQ,EAAInB,GAAqB,IAAM5zB,EAAEqzB,UAAW,IAAMrzB,EAAE6gC,kBAAoBptB,EAAMotB,iBAAkBptB,EAAMshB,QAAQ,EACxI,OAAAlhB,EAAS+kC,GAAQ,CAAA,IAAC15C,IAAE,CAAA,OAAEuU,EAAMvU,EAAE,EAAA,IAAEm0B,WAAS,CAAA,OAAEA,EAAU,CAAC,EAAE0B,SAAAA,EAAkB,IAAEqE,YAAU,CAAE6d,OAAAA,GAA0BxjC,EAAM2lB,UAAU,CAAC,EAAA,IAAE6C,cAAY,CAAA,OAAExoB,EAAMwoB,YAAY,EAAA,IAAElB,eAAa,CAAA,OAAEtnB,EAAMsnB,aAAa,EAAA,IAAAv4B,UAAA,CAAA,MAAA,CAAAqR,EACtMwoB,GAAGvoB,EAAKrP,EAAK,CAAE6O,KAAI,UAAWM,GAAE,KAAA,IAAApR,UAAA,CAAA,OAAAqR,EAC9B5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAER,EAAK,CAAC,EAAA71C,SAAIs2C,GAAQjlC,EAAM0kC,GAAcO,CAAQ,CAAA,CAAG,CAAA,CAAA,CAAAjlC,CAAAA,EAAAA,EAG7D6jC,GAAU,CAAA,IAAAl1C,UAAA,CAAA,OAAAqR,EACR5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAER,EAAK,CAAC,EAAA71C,SACAs2C,GAAA,CACP,KAAA,CAACxyC,EAAGy3B,CAAU,EAAI12B,GAAWyxC,EAAU,CACzC,QACA,WACA,WACA,UAAU,CACb,EACDjlC,OAAAA,EAAQsjC,GAAYpZ,CAAU,CAAA,CAClC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAIT,ECvEMoG,GAAa,CACf,CAAC1G,EAAQ,EAAG,UACZ,CAACE,EAAO,EAAG,cACf,EACMob,GAAat0C,GAAKoP,EAAMuwB,GAAItwB,EAAKrP,EAAK,CAAE6/B,kBAAmBH,EAAU,CAAG,CAAA,ECLxE6U,GAAe32C,GAAc,CAE/BijC,SAAU,CAAA,CACd,CAAC,oBCCD,MAAMhN,GAAe,CACjB6M,WAAY,QACZmM,YAAa,EACjB,EACM2H,GAAqBj5C,GAAA,CACvB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,WACA,aACA,eACA,cACA,QACA,UAAU,CACb,EACK+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,cAAc,EAC5D1pC,EAAUiD,GAAW06C,EAAY,EACjCxH,EAAqB/wC,GAAA,CACvBpF,GAASiqC,UAAU7kC,CAAC,CACxB,EACA,OAAA,IAAA,CAAA,IAAAwT,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAAH,EAAiBrP,EAAK,CAAA,IAAA,OAAA,CAAS4J,OAAAA,GAAW02B,EAAUtxB,EAAM+mB,KAAK,CAAA,CAAC,CAAA,EAAA,GAAA,EAAA,EAAAI,EAAA3mB,EAC7DR,IAAAA,EAAMjR,SAAQ,IAAA,EAAAo4B,EAAA3mB,GAAA,IAAA,CAAA,IAAAwxB,EAAA1T,EAEdte,IAAAA,CAAAA,CAAAA,EAAM69B,WAAW,EAAA,MAAA,IAAjB7L,EAAAA,GAAA5xB,EAAuB0wB,GAAW,CAAA,GAAA,cAAA,CAAA,OAAa9wB,EAAM0xB,UAAU,EAAA,IAAEV,SAAO,CAAA,OAAEhxB,EAAMiyB,YAAY,EAAExyB,QAASs+B,EAAW,eAAA,OAAA,CAAyB,CAAA,GAAA,EAAA,IAAA,EAAAv9B,CAAAA,GAAA,CAElJ,EC3Be0wB,GAAAA,GAAmB,YAAY,oBCM9C,MAAMrM,GAAe,CACjBc,WAAY2f,GACZ3vC,KAAM,GACNsoC,UAAW,GACXjP,MAAO,IACPyW,SAAU,EACd,EACMC,GAAen5C,GAAA,CACjB,KAAM,CAACyT,EAAOhP,CAAK,EAAI4C,GAAWT,EAAW0xB,GAAct4B,CAAC,EAAG,CAC3D,WACA,QACA,aACA,OACA,YACA,QACA,WACA,UACA,IAAI,CACP,EACK+kC,EAAW3D,GAAmB3tB,EAAMsxB,SAAU,OAAO,EACrDhoC,EAAQwE,GAAS,EAGvB,IAAI63C,EAAW3lC,EAAMgvB,MACjB4W,EAAa5lC,EAAM6xB,QACvBnnC,GAAa,IAAM,CACfi7C,EAAW3lC,EAAMgvB,MACjB4W,EAAa5lC,EAAM6xB,OAAAA,CACtB,EACGgU,IAAAA,EACEC,MAAAA,EAAgBh7C,EAAW,IAAM,CAAC,EAAEkV,EAAMylC,UAAYzlC,EAAMrK,KAAK,EACjEowC,EAAej7C,EAAW,IAAM,IAAM,CACpCg7C,KACaF,IAAA,CACjB,CACH,EACDl7C,GAAa,IAAM,CAEXo7C,MACA98B,OAAOg9B,aAAaH,CAAe,EACnCA,EAAkB78B,OAAO8c,WAAWigB,EAAa,EAAGJ,CAAQ,EAChE,CACH,EACD/3C,GAAU,IAAM,CACZob,OAAOg9B,aAAaH,CAAe,CAAA,CACtC,EACD,MAAMI,EAAe,CACjB,IAAIpU,SAAU,CACV,OAAO7xB,EAAM6xB,OAAAA,CAErB,EACMqU,EAAe,CAAC,EAAElmC,EAAM2lB,YAAc3lB,EAAMi+B,WAC5Cr1C,EAAaoX,EAAM2lB,WACnBwgB,EAAaA,IAAMp4C,GAAazE,EAAO,KAAA,IAAA,CAAA,IAAAkX,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAAH,EAAgBrP,EAAK,CAAA,IAAA,OAAA,CAAA,OAAS4J,GAAW02B,EAAUtxB,EAAM+mB,MAAO/mB,EAAMsyB,IAAO,MAAKtyB,EAAMsyB,EAAG,GAAG,CAAC4T,IAAiBlmC,EAAMrK,KAAO,OAAS,OAAO,CAAC,EAAA,KAAO,QAAO,YAAW,YAAW,cAAa,MAAA,CAAM,EAAA,GAAA,EAAA,EAAA6K,CAAAA,IAAG,EACrPJ,OAAAA,EAASmlC,GAAanjB,SAAQ,CAACr4B,MAAOk8C,EAAY,IAAAl3C,UAAA,CAC/CuvB,OAAAA,EAAA4nB,IAAAA,CAAAA,EAAAA,GAAgBlmC,EAAM2lB,WAAU,EAAA,EAAAvlB,EAAKxX,EAAU,CAACy+B,OAAM,GAAA,IAAA,IAAA,CAAA,OAAKrnB,EAAMrK,IAAI,EAAE2xB,cAAa,GAAA,IAAAv4B,UAAA,CAAAqR,OAAAA,EAChF+lC,EAAU,EAAA,CAAA,CAAA,CAAA/lC,EAAAA,EACM+lC,EAAc,EAAA,CAAA,CAAA,CAAA,CAEzC,EACAC,GAAe5hB,OAAOxqB,OAAO0rC,GAAO,CAChCnQ,KAAM8Q,GACN5Q,OAAQ+P,EACZ,CAAC,ECrEM,SAASc,IAAoB,CAChC,IAAIC,EAAY,IAAI,IACpB,SAASC,EAAUn9C,EAAU,CACzB,OAAAk9C,EAAU,IAAIl9C,CAAQ,EACf,IAAMk9C,EAAU,OAAOl9C,CAAQ,CAC9C,CACI,IAAIqH,EAAS,GACb,SAAS+1C,EAAQvjC,EAAIlZ,EAAS,CAC1B,GAAI0G,EACA,MAAO,EAAEA,EAAS,IACtB,MAAM1D,EAAI,CACN,GAAAkW,EACA,QAAAlZ,EACA,iBAAkB,GAClB,eAAgB,IAAOgD,EAAE,iBAAmB,EAC/C,EACD,UAAWqB,KAAKk4C,EACZl4C,EAAE,SAAS,CACP,GAAGrB,EACH,KAAMqB,EAAE,SACR,MAAQq4C,GAAU,CACdA,IAAUh2C,EAAS,IACnBrC,EAAE,SAAS6U,EAAI,CAAE,GAAGlZ,EAAS,QAAS,GAAO,CACjE,CACA,CAAa,EACL,MAAO,CAACgD,EAAE,gBAClB,CACI,MAAO,CACH,UAAAw5C,EACA,QAAAC,CACH,CACL,CAEA,IAAIE,GACG,SAASC,IAAmB,EAC3B,CAAC,OAAO,QAAQ,OAAS,OAAO,QAAQ,MAAM,QAAU,OACxD,OAAO,QAAQ,aAAa,CAAE,GAAG,OAAO,QAAQ,MAAO,OAAQ,OAAO,QAAQ,OAAS,CAAC,EAAI,EAAE,EAElGD,GAAQ,OAAO,QAAQ,MAAM,MACjC,CAEIC,GAAkB,EAEf,SAASC,GAAUz6C,EAAO,CAC7B,MAAO,CACH,GAAGA,EACH,OAAQ,OAAO,QAAQ,OAAS,OAAO,QAAQ,MAAM,MACxD,CACL,CACO,SAAS06C,GAAmBC,EAAQC,EAAO,CAC9C,IAAIt2C,EAAS,GACb,MAAO,IAAM,CACT,MAAMu2C,EAAYN,GAClBC,GAAkB,EAClB,MAAMM,EAAQD,GAAa,KAAO,KAAON,GAAQM,EACjD,GAAIv2C,EAAQ,CACRA,EAAS,GACT,MACZ,CACYw2C,GAASF,EAAME,CAAK,GACpBx2C,EAAS,GACT,OAAO,QAAQ,GAAG,CAACw2C,CAAK,GAGxBH,EAAQ,CAEf,CACL,CCnEA,MAAMI,GAAiB,wBACjBC,GAAgB,iBACTC,GAAW,YACjB,SAASC,GAAczrC,EAAM0rC,EAAY,GAAO,CACnD,MAAMt9C,EAAI4R,EAAK,QAAQurC,GAAe,IAAI,EAC1C,OAAOn9C,EAAKs9C,GAAa,QAAQ,KAAKt9C,CAAC,EAAIA,EAAI,IAAMA,EAAK,EAC9D,CACO,SAASu9C,GAAYC,EAAM5rC,EAAMoH,EAAM,CAC1C,GAAIkkC,GAAe,KAAKtrC,CAAI,EACxB,OAEJ,MAAM6rC,EAAWJ,GAAcG,CAAI,EAC7BE,EAAW1kC,GAAQqkC,GAAcrkC,CAAI,EAC3C,IAAIvV,EAAS,GACb,MAAI,CAACi6C,GAAY9rC,EAAK,WAAW,GAAG,EAChCnO,EAASg6C,EAEJC,EAAS,cAAc,QAAQD,EAAS,YAAW,CAAE,IAAM,EAChEh6C,EAASg6C,EAAWC,EAGpBj6C,EAASi6C,GAELj6C,GAAU,KAAO45C,GAAczrC,EAAM,CAACnO,CAAM,CACxD,CACO,SAASk6C,GAAU79C,EAAO89C,EAAS,CACtC,GAAI99C,GAAS,KACT,MAAM,IAAI,MAAM89C,CAAO,EAE3B,OAAO99C,CACX,CACO,SAAS+9C,GAAU7kC,EAAMC,EAAI,CAChC,OAAOokC,GAAcrkC,CAAI,EAAE,QAAQ,eAAgB,EAAE,EAAIqkC,GAAcpkC,CAAE,CAC7E,CACO,SAAS6kC,GAAoBC,EAAK,CACrC,MAAMC,EAAS,CAAE,EACjB,OAAAD,EAAI,aAAa,QAAQ,CAACj+C,EAAOyC,IAAQ,CACjCA,KAAOy7C,EACH,MAAM,QAAQA,EAAOz7C,CAAG,CAAC,EACzBy7C,EAAOz7C,CAAG,EAAE,KAAKzC,CAAK,EAEtBk+C,EAAOz7C,CAAG,EAAI,CAACy7C,EAAOz7C,CAAG,EAAGzC,CAAK,EAGrCk+C,EAAOz7C,CAAG,EAAIzC,CAC1B,CAAK,EACMk+C,CACX,CACO,SAASC,GAAcrsC,EAAMssC,EAASC,EAAc,CACvD,KAAM,CAACC,EAASC,CAAK,EAAIzsC,EAAK,MAAM,KAAM,CAAC,EACrC0sC,EAAWF,EAAQ,MAAM,GAAG,EAAE,OAAO,OAAO,EAC5C3gD,EAAM6gD,EAAS,OACrB,OAAQC,GAAa,CACjB,MAAMC,EAAcD,EAAS,MAAM,GAAG,EAAE,OAAO,OAAO,EAChDE,EAAUD,EAAY,OAAS/gD,EACrC,GAAIghD,EAAU,GAAMA,EAAU,GAAKJ,IAAU,QAAa,CAACH,EACvD,OAAO,KAEX,MAAMQ,EAAQ,CACV,KAAMjhD,EAAM,GAAK,IACjB,OAAQ,CAAA,CACX,EACKkhD,EAAe3+C,GAAMm+C,IAAiB,OAAY,OAAYA,EAAan+C,CAAC,EAClF,QAASwD,EAAI,EAAGA,EAAI/F,EAAK+F,IAAK,CAC1B,MAAMo7C,EAAUN,EAAS96C,CAAC,EACpB5B,EAAUg9C,EAAQ,CAAC,IAAM,IACzBC,EAAaj9C,EAAU48C,EAAYh7C,CAAC,EAAIg7C,EAAYh7C,CAAC,EAAE,YAAa,EACpEjB,EAAMX,EAAUg9C,EAAQ,MAAM,CAAC,EAAIA,EAAQ,YAAa,EAC9D,GAAIh9C,GAAWk9C,GAAaD,EAAYF,EAAYp8C,CAAG,CAAC,EACpDm8C,EAAM,OAAOn8C,CAAG,EAAIs8C,UAEfj9C,GAAW,CAACk9C,GAAaD,EAAYt8C,CAAG,EAC7C,OAAO,KAEXm8C,EAAM,MAAQ,IAAIG,CAAU,EACxC,CACQ,GAAIR,EAAO,CACP,MAAMU,EAAYN,EAAUD,EAAY,MAAM,CAACC,CAAO,EAAE,KAAK,GAAG,EAAI,GACpE,GAAIK,GAAaC,EAAWJ,EAAYN,CAAK,CAAC,EAC1CK,EAAM,OAAOL,CAAK,EAAIU,MAGtB,QAAO,IAEvB,CACQ,OAAOL,CACV,CACL,CACA,SAASI,GAAav7C,EAAOy7C,EAAQ,CACjC,MAAMC,EAAW,GAAM,IAAM17C,EAC7B,OAAIy7C,IAAW,OACJ,GAEF,OAAOA,GAAW,SAChBC,EAAQD,CAAM,EAEhB,OAAOA,GAAW,WAChBA,EAAOz7C,CAAK,EAEd,MAAM,QAAQy7C,CAAM,EAClBA,EAAO,KAAKC,CAAO,EAErBD,aAAkB,OAChBA,EAAO,KAAKz7C,CAAK,EAErB,EACX,CACO,SAAS27C,GAAWC,EAAO,CAC9B,KAAM,CAACf,EAASC,CAAK,EAAIc,EAAM,QAAQ,MAAM,KAAM,CAAC,EAC9Cb,EAAWF,EAAQ,MAAM,GAAG,EAAE,OAAO,OAAO,EAClD,OAAOE,EAAS,OAAO,CAACc,EAAOR,IAAYQ,GAASR,EAAQ,WAAW,GAAG,EAAI,EAAI,GAAIN,EAAS,QAAUD,IAAU,OAAY,EAAI,EAAE,CACzI,CACO,SAASgB,GAAiBngD,EAAI,CACjC,MAAMsO,EAAM,IAAI,IACVnO,EAAQwE,GAAU,EACxB,OAAO,IAAI,MAAM,GAAI,CACjB,IAAI+E,EAAGC,EAAU,CACb,OAAK2E,EAAI,IAAI3E,CAAQ,GACjB/E,GAAazE,EAAO,IAAMmO,EAAI,IAAI3E,EAAUhI,EAAW,IAAM3B,EAAE,EAAG2J,CAAQ,CAAC,CAAC,CAAC,EAE1E2E,EAAI,IAAI3E,CAAQ,EAAG,CAC7B,EACD,0BAA2B,CACvB,MAAO,CACH,WAAY,GACZ,aAAc,EACjB,CACJ,EACD,SAAU,CACN,OAAO,QAAQ,QAAQ3J,GAAI,CACvC,CACA,CAAK,CACL,CACO,SAASogD,GAAkBC,EAAQvB,EAAQ,CAC9C,MAAM9uB,EAAS,IAAI,gBAAgBqwB,CAAM,EACzC,OAAO,QAAQvB,CAAM,EAAE,QAAQ,CAAC,CAACz7C,EAAKzC,CAAK,IAAM,CACzCA,GAAS,MAAQA,IAAU,IAAOA,aAAiB,OAAS,CAACA,EAAM,OACnEovB,EAAO,OAAO3sB,CAAG,EAGbzC,aAAiB,OAEjBovB,EAAO,OAAO3sB,CAAG,EACjBzC,EAAM,QAAQiB,GAAK,CACfmuB,EAAO,OAAO3sB,EAAK,OAAOxB,CAAC,CAAC,CAChD,CAAiB,GAGDmuB,EAAO,IAAI3sB,EAAK,OAAOzC,CAAK,CAAC,CAG7C,CAAK,EACD,MAAM,EAAIovB,EAAO,SAAU,EAC3B,OAAO,EAAI,IAAI,CAAC,GAAK,EACzB,CACO,SAASswB,GAAgBpB,EAAS,CACrC,IAAIM,EAAQ,kBAAkB,KAAKN,CAAO,EAC1C,GAAI,CAACM,EACD,MAAO,CAACN,CAAO,EACnB,IAAIza,EAASya,EAAQ,MAAM,EAAGM,EAAM,KAAK,EACrClS,EAAS4R,EAAQ,MAAMM,EAAM,MAAQA,EAAM,CAAC,EAAE,MAAM,EACxD,MAAMlb,EAAW,CAACG,EAASA,GAAU+a,EAAM,CAAC,CAAG,EAM/C,KAAQA,EAAQ,kBAAkB,KAAKlS,CAAM,GACzChJ,EAAS,KAAMG,GAAU+a,EAAM,CAAC,CAAG,EACnClS,EAASA,EAAO,MAAMkS,EAAM,CAAC,EAAE,MAAM,EAEzC,OAAOc,GAAgBhT,CAAM,EAAE,OAAO,CAAC1lC,EAAS24C,IAAc,CAAC,GAAG34C,EAAS,GAAG08B,EAAS,IAAIlhC,GAAKA,EAAIm9C,CAAS,CAAC,EAAG,EAAE,CACvH,CCxKA,MAAMC,GAAgB,IACTC,GAAmBh7C,GAAe,EAClCi7C,GAAkBj7C,GAAe,EACjCk7C,GAAY,IAAMlC,GAAU/8C,GAAW++C,EAAgB,EAAG,kEAAkE,EAE5HG,GAAW,IAAmBl/C,GAAWg/C,EAAe,GAAKC,GAAW,EAAC,KACzEE,GAAmBnuC,GAAS,CACrC,MAAMutC,EAAQW,GAAU,EACxB,OAAOj/C,EAAW,IAAMs+C,EAAM,YAAYvtC,EAAM,CAAA,CAAC,CACrD,EACaouC,GAAW/mC,GAAO,CAC3B,MAAMgnC,EAASJ,GAAW,EAC1B,OAAOh/C,EAAW,IAAM,CACpB,MAAMq/C,EAAMjnC,EAAI,EAChB,OAAOinC,IAAQ,OAAYD,EAAO,WAAWC,CAAG,EAAIA,CAC5D,CAAK,CACL,EACaC,GAAc,IAAMN,GAAW,EAAC,iBAAkB,EAClDO,GAAc,IAAMP,GAAS,EAAG,SAkBhCQ,GAAY,IAAMR,GAAS,EAAG,OAC9BS,GAAkB,IAAM,CACjC,MAAM/B,EAAW6B,GAAa,EACxBG,EAAWJ,GAAa,EACxBK,EAAkB,CAACxC,EAAQj+C,IAAY,CACzC,MAAM0gD,EAAe/gD,GAAQ,IAAM4/C,GAAkBf,EAAS,OAAQP,CAAM,EAAIO,EAAS,IAAI,EAC7FgC,EAASE,EAAc,CACnB,OAAQ,GACR,QAAS,GACT,GAAG1gD,CACf,CAAS,CACJ,EACD,MAAO,CAACw+C,EAAS,MAAOiC,CAAe,CAC3C,EASO,SAASE,GAAaC,EAAUnD,EAAO,GAAI,CAC9C,KAAM,CAAE,UAAA/pC,EAAW,QAAAmtC,EAAS,KAAAj+C,EAAM,SAAAmC,EAAU,KAAA+7C,CAAI,EAAKF,EAC/CG,EAAS,CAACh8C,GAAa,MAAM,QAAQA,CAAQ,GAAK,CAACA,EAAS,OAC5Di8C,EAAS,CACX,IAAKJ,EACL,UAAAltC,EACA,QAASmtC,GAAWj+C,EACpB,KAAAk+C,CACH,EACD,OAAOG,GAAQL,EAAS,IAAI,EAAE,OAAO,CAACxlC,EAAK8lC,IAAiB,CACxD,UAAWC,KAAgB1B,GAAgByB,CAAY,EAAG,CACtD,MAAMrvC,EAAOisC,GAAUL,EAAM0D,CAAY,EACzC,IAAI9C,EAAU0C,EAASlvC,EAAOA,EAAK,MAAM,KAAM,CAAC,EAAE,CAAC,EACnDwsC,EAAUA,EACL,MAAM,GAAG,EACT,IAAKp+C,GACCA,EAAE,WAAW,GAAG,GAAKA,EAAE,WAAW,GAAG,EAAIA,EAAI,mBAAmBA,CAAC,CAC3E,EACI,KAAK,GAAG,EACbmb,EAAI,KAAK,CACL,GAAG4lC,EACH,aAAAE,EACA,QAAA7C,EACA,QAASH,GAAcG,EAAS,CAAC0C,EAAQH,EAAS,YAAY,CAC9E,CAAa,CACb,CACQ,OAAOxlC,CACV,EAAE,EAAE,CACT,CACO,SAASgmC,GAAaC,EAAQ16C,EAAQ,EAAG,CAC5C,MAAO,CACH,OAAA06C,EACA,MAAOlC,GAAWkC,EAAOA,EAAO,OAAS,CAAC,CAAC,EAAI,IAAQ16C,EACvD,QAAQ63C,EAAU,CACd,MAAM8C,EAAU,CAAE,EAClB,QAAS,EAAID,EAAO,OAAS,EAAG,GAAK,EAAG,IAAK,CACzC,MAAMjC,EAAQiC,EAAO,CAAC,EAChB1C,EAAQS,EAAM,QAAQZ,CAAQ,EACpC,GAAI,CAACG,EACD,OAAO,KAEX2C,EAAQ,QAAQ,CACZ,GAAG3C,EACH,MAAAS,CACpB,CAAiB,CACjB,CACY,OAAOkC,CACnB,CACK,CACL,CACA,SAASL,GAAQlhD,EAAO,CACpB,OAAO,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAChD,CACO,SAASwhD,GAAeX,EAAUnD,EAAO,GAAI+D,EAAQ,CAAE,EAAEC,EAAW,GAAI,CAC3E,MAAMC,EAAYT,GAAQL,CAAQ,EAClC,QAASn9C,EAAI,EAAG/F,EAAMgkD,EAAU,OAAQj+C,EAAI/F,EAAK+F,IAAK,CAClD,MAAMk+C,EAAMD,EAAUj+C,CAAC,EACvB,GAAIk+C,GAAO,OAAOA,GAAQ,SAAU,CAC3BA,EAAI,eAAe,MAAM,IAC1BA,EAAI,KAAO,IACf,MAAMN,EAASV,GAAagB,EAAKlE,CAAI,EACrC,UAAW2B,KAASiC,EAAQ,CACxBG,EAAM,KAAKpC,CAAK,EAChB,MAAMwC,EAAe,MAAM,QAAQD,EAAI,QAAQ,GAAKA,EAAI,SAAS,SAAW,EAC5E,GAAIA,EAAI,UAAY,CAACC,EACjBL,GAAeI,EAAI,SAAUvC,EAAM,QAASoC,EAAOC,CAAQ,MAE1D,CACD,MAAMI,EAAST,GAAa,CAAC,GAAGI,CAAK,EAAGC,EAAS,MAAM,EACvDA,EAAS,KAAKI,CAAM,CACxC,CACgBL,EAAM,IAAK,CAC3B,CACA,CACA,CAEI,OAAOA,EAAM,OAASC,EAAWA,EAAS,KAAK,CAAC1jD,EAAGC,IAAMA,EAAE,MAAQD,EAAE,KAAK,CAC9E,CACO,SAAS+jD,GAAgBL,EAAUjD,EAAU,CAChD,QAAS/6C,EAAI,EAAG/F,EAAM+jD,EAAS,OAAQh+C,EAAI/F,EAAK+F,IAAK,CACjD,MAAMk7C,EAAQ8C,EAASh+C,CAAC,EAAE,QAAQ+6C,CAAQ,EAC1C,GAAIG,EACA,OAAOA,CAEnB,CACI,MAAO,CAAE,CACb,CACA,SAASoD,GAAelwC,EAAMzP,EAAO4/C,EAAc,CAC/C,MAAMC,EAAS,IAAI,IAAI5E,EAAQ,EACzBW,EAAMl9C,EAAWmD,GAAQ,CAC3B,MAAMi+C,EAAQrwC,EAAM,EACpB,GAAI,CACA,OAAO,IAAI,IAAIqwC,EAAOD,CAAM,CACxC,MACoB,CACR,eAAQ,MAAM,gBAAgBC,CAAK,EAAE,EAC9Bj+C,CACnB,CACK,EAAEg+C,EAAQ,CACP,OAAQ,CAAClkD,EAAGC,IAAMD,EAAE,OAASC,EAAE,IACvC,CAAK,EACKmkD,EAAWrhD,EAAW,IAAMk9C,EAAG,EAAG,QAAQ,EAC1CwB,EAAS1+C,EAAW,IAAMk9C,EAAG,EAAG,OAAQ,EAAI,EAC5Cl6B,EAAOhjB,EAAW,IAAMk9C,EAAG,EAAG,IAAI,EAClCx7C,EAAM,IAAM,GACZ4/C,EAAUl/C,GAAGs8C,EAAQ,IAAMzB,GAAoBC,EAAG,CAAE,CAAC,EAC3D,MAAO,CACH,IAAI,UAAW,CACX,OAAOmE,EAAU,CACpB,EACD,IAAI,QAAS,CACT,OAAO3C,EAAQ,CAClB,EACD,IAAI,MAAO,CACP,OAAO17B,EAAM,CAChB,EACD,IAAI,OAAQ,CACR,OAAO1hB,EAAO,CACjB,EACD,IAAI,KAAM,CACN,OAAOI,EAAK,CACf,EACD,MAAOw/C,EAAeA,EAAaI,CAAO,EAAI9C,GAAiB8C,CAAO,CACzE,CACL,CACA,IAAIC,GACG,SAASC,IAAY,CACxB,OAAOD,EACX,CAQO,SAASE,GAAoBC,EAAaf,EAAUgB,EAAYziD,EAAU,CAAA,EAAI,CACjF,KAAM,CAAE,OAAQ,CAACqB,EAAQqhD,CAAS,EAAG,MAAAC,EAAQ,CAAE,CAAA,EAAKH,EAC9CI,EAAYD,EAAM,YAAcpgD,GAAKA,GACrCsgD,EAAaF,EAAM,aAAepgD,GAAKA,GACvCugD,EAAcH,EAAM,aAAerG,GAAmB,EACtDoB,EAAWF,GAAY,GAAIx9C,EAAQ,MAAQ,EAAE,EACnD,GAAI09C,IAAa,OACb,MAAM,IAAI,MAAM,GAAGA,CAAQ,2BAA2B,EAEjDA,GAAY,CAACr8C,EAAQ,EAAC,OAC3BqhD,EAAU,CAAE,MAAOhF,EAAU,QAAS,GAAM,OAAQ,GAAO,EAE/D,KAAM,CAACqF,EAAWC,CAAY,EAAIljD,EAAa,EAAK,EAEpD,IAAImjD,EAEJ,MAAMtnB,EAAa,CAACunB,EAAWC,IAAc,CACrCA,EAAU,QAAUjoC,EAAW,GAAIioC,EAAU,QAAU/gD,EAAO,IAE9D6gD,IAAyB,QACzBD,EAAa,EAAI,EACrBX,GAASa,EACTD,EAAuBE,EACvB/+C,GAAgB,IAAM,CACd6+C,IAAyBE,IAE7BC,EAAaH,EAAqB,KAAK,EACvC5gD,EAAS4gD,EAAqB,KAAK,EAG/BI,EAAY,CAAC,EAAE,EAAE,EACjC,CAAS,EAAE,QAAQ,IAAM,CACTJ,IAAyBE,GAG7BlgD,GAAM,IAAM,CACRo/C,GAAS,OACLa,IAAc,YACdI,EAAYL,CAAoB,EACpCD,EAAa,EAAK,EAClBC,EAAuB,MACvC,CAAa,CACb,CAAS,EACJ,EACK,CAAC/nC,EAAWkoC,CAAY,EAAItjD,EAAauB,EAAQ,EAAC,KAAK,EACvD,CAACe,EAAOC,CAAQ,EAAIvC,EAAauB,EAAQ,EAAC,KAAK,EAC/Cm9C,EAAWuD,GAAe7mC,EAAW9Y,EAAOugD,EAAM,YAAY,EAC9DY,EAAY,CAAE,EACdF,EAAcvjD,EAA0C,EAAE,EAC1DwhD,EAAUxgD,EAAW,IACnB,OAAOd,EAAQ,cAAiB,WACzB8hD,GAAgBL,IAAYzhD,EAAQ,aAAaw+C,EAAS,QAAQ,CAAC,EAEvEsD,GAAgBL,IAAYjD,EAAS,QAAQ,CACvD,EACKgF,EAAc,IAAM,CACtB,MAAMtzB,EAAIoxB,EAAS,EACbrD,EAAS,CAAE,EACjB,QAASx6C,EAAI,EAAGA,EAAIysB,EAAE,OAAQzsB,IAC1B,OAAO,OAAOw6C,EAAQ/tB,EAAEzsB,CAAC,EAAE,MAAM,EAErC,OAAOw6C,CACV,EACKA,EAAS0E,EAAM,cACfA,EAAM,cAAca,EAAa/B,CAAQ,EACzCnC,GAAiBkE,CAAW,EAC5BC,EAAY,CACd,QAAS/F,EACT,KAAM,IAAMA,EACZ,OAAQ,IAAM,KACd,YAAYxkC,EAAI,CACZ,OAAOskC,GAAYE,EAAUxkC,CAAE,CAC3C,CACK,EAED,OAAAzY,GAAmByC,GAAG7B,EAAQA,GAAUs6B,EAAW,SAAUt6B,CAAM,EAAG,CAAE,MAAO,EAAM,CAAA,CAAC,EAC/E,CACH,KAAMoiD,EACN,SAAAjF,EACA,OAAAP,EACA,UAAA8E,EACA,WAAAF,EACA,UAAAD,EACA,iBAAAc,EACA,QAAApC,EACA,YAAAwB,EACA,aAAAa,EACA,aAAc3jD,EAAQ,eAAiB,OAAY,GAAOA,EAAQ,aAClE,YAAAqjD,CACH,EACD,SAASO,EAAkBxE,EAAOlmC,EAAIlZ,EAAS,CAE3CL,GAAQ,IAAM,CACV,GAAI,OAAOuZ,GAAO,SAAU,CACnBA,IAGIypC,EAAM,GACXA,EAAM,GAAGzpC,CAAE,EAGX,QAAQ,KAAK,sDAAsD,GAEvE,MAChB,CACY,MAAM2qC,EAAY,CAAC3qC,GAAMA,EAAG,CAAC,IAAM,IAC7B,CAAE,QAAA4qC,EAAS,QAAA70B,EAAS,OAAAzL,EAAQ,MAAO4e,EAAS,EAAK,CACnD,QAAS,GACT,QAAS,CAACyhB,EACV,OAAQ,GACR,GAAG7jD,CACN,EACK+jD,GAAa90B,EACbmwB,EAAM,YAAYlmC,CAAE,EACpBskC,GAAaqG,GAAarF,EAAS,UAAa,GAAItlC,CAAE,EAC5D,GAAI6qC,KAAe,OACf,MAAM,IAAI,MAAM,SAAS7qC,CAAE,0BAA0B,EAEpD,GAAIqqC,EAAU,QAAU5D,GACzB,MAAM,IAAI,MAAM,oBAAoB,EAExC,MAAMngD,GAAU0b,EAAW,GACvB6oC,KAAevkD,IAAW4iC,KAAchgC,EAAK,KACzCyQ,IAKKiwC,EAAY,QAAQiB,GAAY/jD,CAAO,IAC5CujD,EAAU,KAAK,CAAE,MAAO/jD,GAAS,QAAAskD,EAAS,OAAAtgC,EAAQ,MAAOphB,EAAK,EAAI,EAClEu5B,EAAW,WAAY,CACnB,MAAOooB,GACP,MAAO3hB,EAC/B,CAAqB,GAGrB,CAAS,CACT,CACI,SAASshB,EAAiBtE,EAAO,CAE7B,OAAAA,EAAQA,GAASv+C,GAAWg/C,EAAe,GAAK4D,EACzC,CAACvqC,EAAIlZ,IAAY4jD,EAAkBxE,EAAOlmC,EAAIlZ,CAAO,CACpE,CACI,SAASsjD,EAAY1qC,EAAM,CACvB,MAAMif,EAAQ0rB,EAAU,CAAC,EACrB1rB,IACA6qB,EAAU,CACN,GAAG9pC,EACH,QAASif,EAAM,QACf,OAAQA,EAAM,MAC9B,CAAa,EACD0rB,EAAU,OAAS,EAE/B,CACI,SAASI,EAAa3F,EAAKgG,EAAa,CACpC,MAAM1C,EAAUQ,GAAgBL,EAAQ,EAAIzD,EAAI,QAAQ,EAClDiG,EAAa5B,GACnBA,GAAS,UACT,QAAS1D,KAAS2C,EAAS,CACvB,KAAM,CAAE,MAAAlC,EAAO,OAAAnB,GAAWqD,EAAQ3C,CAAK,EACvCS,EAAM,WACFA,EAAM,UAAU,SAChBA,EAAM,UAAU,QAAS,EAC7B,KAAM,CAAE,QAAAyB,EAAO,EAAKzB,EAEpB4E,GACInD,IACA98C,GAAa0+C,IAAc,IAAM5B,GAAQ,CACrC,OAAA5C,EACA,SAAU,CACN,SAAUD,EAAI,SACd,OAAQA,EAAI,OACZ,KAAMA,EAAI,KACV,MAAOD,GAAoBC,CAAG,EAC9B,MAAO,KACP,IAAK,EACR,EACD,OAAQ,SAC5B,CAAiB,CAAC,CAElB,CACQqE,GAAS4B,CACjB,CAKA,CACO,SAASC,GAAmBhE,EAAQhwC,EAAQi0C,EAAQxF,EAAO,CAC9D,KAAM,CAAE,KAAAlB,EAAM,SAAAe,EAAU,OAAAP,CAAQ,EAAGiC,EAC7B,CAAE,QAAA7B,EAAS,UAAA3qC,EAAW,QAAAmtC,CAAO,EAAKlC,EAAO,EAAC,MAC1C9sC,EAAO/Q,EAAW,IAAM69C,EAAK,EAAG,IAAI,EAC1CjrC,GACIA,EAAU,SACVA,EAAU,QAAS,EAEvB,MAAM/B,EAAOkvC,EAAUA,EAAQ,CAAE,OAAA5C,EAAQ,SAAAO,EAAU,OAAQ6D,IAAU,SAAW,CAAA,EAAI,OAoBpF,MAlBc,CACV,OAAAnyC,EACA,QAAAmuC,EACA,KAAAxsC,EACA,OAAQ,IAAM6B,EACRjL,EAAgBiL,EAAW,CACzB,OAAAuqC,EACA,SAAAO,EACA,KAAA7sC,EACA,IAAI,UAAW,CACX,OAAOwyC,EAAQ,CACnC,CACa,CAAA,EACCA,EAAQ,EACd,YAAYjrC,EAAI,CACZ,OAAOskC,GAAYC,EAAK,KAAM,EAAEvkC,EAAIrH,EAAI,CAAE,CACtD,CACK,CAEL,CC5ZauyC,MAAAA,MAA+Cp9C,GAAA,CAClD,KAAA,CAAEy2C,KAAAA,CAAAA,EAASz2C,EACX06C,EAAY38C,GAAS,IAAMiC,EAAMjC,QAAQ,EACzC08C,EAAW3gD,EAAW,IAAMygD,GAAeG,IAAa16C,EAAMy2C,MAAQ,EAAE,CAAC,EAC3E7/C,IAAAA,EACJ,MAAMymD,EAAc9B,GAAoBrC,EAAQuB,EAAU,IAAM7jD,EAAS,CACrE6/C,KAAAA,EACA6G,aAAct9C,EAAMs9C,aACpBC,aAAcv9C,EAAMu9C,YAAAA,CACvB,EACMl2C,OAAAA,EAAAA,QAAU6xC,EAAO7xC,OAAOg2C,CAAW,EAC1CjuC,EAASwpC,GAAiBxnB,SAAQ,CAACr4B,MAAOskD,EAAW,IAAAt/C,UAAA,CAAA,OAAAqR,EAClDouC,GAAI,CAACH,YAAAA,EAAwB,IAAE5kD,MAAI,CAAA,OAAEuH,EAAMvH,IAAI,EAAA,IAAEohD,SAAO,CAAE75C,OAAAA,EAAMy9C,aAAez9C,EAAM09C,QAAQ,EAAA,IAAA3/C,UAAA,CAAA,MAAA,CAAAuvB,EAAA,KAC1F12B,EAAUkG,OAAe,IAAI,EAAAsS,EAC9BuuC,GAAM,CAACN,YAAAA,EAAwB,IAAE5C,UAAQ,CAAA,OAAEA,EAAS,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAG9D,EACA,SAAS+C,GAAKx9C,EAAO,CACXw3C,MAAAA,EAAWx3C,EAAMq9C,YAAY7F,SAC7BP,EAASj3C,EAAMq9C,YAAYpG,OAC3BtsC,EAAO7Q,EAAW,IAAMkG,EAAM65C,SAChClhD,GAAQ,IAAM,CAEVqH,EAAM65C,QAAQ,CAAE5C,OAAAA,EAAQO,SAAAA,EAAU6D,OAAQC,MAAe,SAAA,CAAW,CAChD,CACvB,CAAC,EACN,OAAAlsC,EAAS1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh3B,EAAMvH,IAAI,EAAEkL,MAAK,GAAA,IAACF,UAAQ,CAAA,OAAEzD,EAAMjC,QAAQ,EAAAA,SAC3Dy/C,GAAIpuC,EAAMouC,EAAI,CAACvG,OAAAA,EAAgBO,SAAAA,EAAkB,IAAE7sC,MAAI,CAAA,OAAEA,EAAK,CAAC,EAAA,IAAA5M,UAAA,CAAA,OAC3DiC,EAAMjC,QAAAA,CAAQ,CAAA,CAAA,CACT,CAEhB,CACA,SAAS4/C,GAAO39C,EAAO,CAiBnB,MAAMQ,EAAY,CAAE,EAChB/H,IAAAA,EACEmlD,MAAAA,EAAc9jD,EAAWoC,GAAG8D,EAAMq9C,YAAY/C,QAAS,CAACuD,EAAaC,EAAa7gD,IAAS,CAC7F,IAAI8gD,EAAQD,GAAeD,EAAY37C,SAAW47C,EAAY57C,OAC9D,MAAM0P,EAAO,CAAE,EACf,QAASnV,EAAI,EAAG/F,EAAMmnD,EAAY37C,OAAQzF,EAAI/F,EAAK+F,IAAK,CAC9CuhD,MAAAA,EAAYF,GAAeA,EAAYrhD,CAAC,EACxCwhD,EAAYJ,EAAYphD,CAAC,EAC3BQ,GAAQ+gD,GAAaC,EAAU7F,MAAM58C,MAAQwiD,EAAU5F,MAAM58C,IACxDiB,EAAAA,CAAC,EAAIQ,EAAKR,CAAC,GAGRshD,EAAA,GACJv9C,EAAU/D,CAAC,GACX+D,EAAU/D,CAAC,EAAE,EAEjBvE,GAAsBgI,GAAA,CAClBM,EAAU/D,CAAC,EAAIyD,EACVzD,EAAAA,CAAC,EAAIygD,GAAmBl9C,EAAMq9C,YAAazrC,EAAKnV,EAAI,CAAC,GAAKuD,EAAMq9C,YAAY5G,KAAMyH,GAAa,IAAMN,EAAY,EAAEnhD,EAAI,CAAC,CAAC,EAAG,IAAMuD,EAAMq9C,YAAY/C,QAAU79C,EAAAA,CAAC,CAAC,CAAA,CACxK,EACL,CAGJ,OADA+D,EAAU29C,OAAON,EAAY37C,MAAM,EAAE4gC,QAAQ5iC,GAAWA,GAAS,EAC7DjD,GAAQ8gD,EACD9gD,GAEXxE,EAAOmZ,EAAK,CAAC,EACNA,EAAAA,CACV,CAAC,EACF,OAAOssC,GAAa,IAAMN,EAAY,GAAKnlD,CAAI,EAAE,CACrD,CACA,MAAMylD,GAA0Bp6C,GACrB,IAAAsL,EAAQ1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAElzB,EAAM,CAAC,EAAEH,MAAK,GAAA5F,SACrC+F,GAAKsL,EAAKypC,GAAgBznB,SAAQ,CAACr4B,MAAO+K,EAAK,IAAA/F,UAAA,CAAA,OAAG+F,EAAMq5C,OAAO,CAAA,CAAC,CAAA,CAAA,CAC3D,EAECiB,GAAmBp+C,GAAA,CAC5B,MAAMq+C,EAActgD,GAAS,IAAMiC,EAAMjC,QAAQ,EACjD,OAAOoE,EAAWnC,EAAO,CACrB,IAAIjC,UAAW,CACX,OAAOsgD,EAAY,CAAA,CACvB,CACH,CACL,EC/FA,SAASC,GAAU,CAACvlD,EAAOgC,CAAQ,EAAGgY,EAAKvR,EAAK,CAC5C,MAAO,CAA4BzI,EAAOyI,EAAOxH,GAAMe,EAASyG,EAAIxH,CAAC,CAAC,EAAIe,CAAQ,CACtF,CACO,SAASwjD,GAAaC,EAAQ,CACjC,IAAI9+C,EAAS,GACb,MAAMkT,EAAQ7Z,GAAW,OAAOA,GAAU,SAAW,CAAE,MAAAA,CAAO,EAAGA,EAC3D0lD,EAASH,GAAUxlD,EAAa8Z,EAAK4rC,EAAO,IAAG,CAAE,EAAG,CACtD,OAAQ,CAACznD,EAAGC,IAAMD,EAAE,QAAUC,EAAE,OAASD,EAAE,QAAUC,EAAE,KAC/D,CAAK,EAAG,OAAW4a,IACX,CAAClS,GAAU8+C,EAAO,IAAI5sC,CAAI,EACtBtb,GAAa,UAAY,CAACA,GAAa,OACvCA,GAAa,KAAO,IACjBsb,EACV,EACD,OAAA4sC,EAAO,MACH5hD,GAAU4hD,EAAO,KAAK,CAACzlD,EAAQylD,EAAO,QAAU,CAC5C9+C,EAAS,GACT++C,EAAO,CAAC,EAAE7rC,EAAK7Z,CAAK,CAAC,EACrB2G,EAAS,EACrB,CAAS,CAAC,EACC09C,GAAsB,CACzB,OAAAqB,EACA,OAAQD,EAAO,OACf,MAAOA,EAAO,KACtB,CAAK,CACL,CACO,SAASE,GAAUh8C,EAAQyL,EAAMlG,EAAS,CAC7C,OAAAvF,EAAO,iBAAiByL,EAAMlG,CAAO,EAC9B,IAAMvF,EAAO,oBAAoByL,EAAMlG,CAAO,CACzD,CACO,SAAS02C,GAAa7hC,EAAM8hC,EAAa,CAC5C,MAAMv0C,EAAKyS,GAAQ,SAAS,eAAeA,CAAI,EAC3CzS,EACAA,EAAG,eAAgB,EAEdu0C,GACL,OAAO,SAAS,EAAG,CAAC,CAE5B,CCnCO,MAAMC,GAA0B,IAAI,ICDpC,SAASC,GAAkBjF,EAAU,GAAMkF,EAAgB,GAAOC,EAAa,WAAYzB,EAAc,CAC5G,OAAQrE,GAAW,CACf,MAAMxC,EAAWwC,EAAO,KAAK,KAAM,EAC7B0D,EAAoB1D,EAAO,iBAAiBA,EAAO,IAAI,EAC7D,IAAI+F,EACAC,EACJ,SAAStyC,EAAMvC,EAAI,CACf,OAAOA,EAAG,eAAiB,4BACvC,CACQ,SAAS80C,EAAaC,EAAK,CACvB,GAAIA,EAAI,kBACJA,EAAI,SAAW,GACfA,EAAI,SACJA,EAAI,QACJA,EAAI,SACJA,EAAI,SACJ,OACJ,MAAMroD,EAAIqoD,EACL,aAAY,EACZ,KAAK/0C,GAAMA,aAAc,MAAQA,EAAG,SAAS,YAAa,IAAK,GAAG,EACvE,GAAI,CAACtT,GAAMgoD,GAAiB,CAAChoD,EAAE,aAAa,MAAM,EAC9C,OACJ,MAAMsoD,EAAMzyC,EAAM7V,CAAC,EACb6W,EAAOyxC,EAAMtoD,EAAE,KAAK,QAAUA,EAAE,KAEtC,IADesoD,EAAMtoD,EAAE,OAAO,QAAUA,EAAE,SAC3B,CAAC6W,GAAQ,CAAC7W,EAAE,aAAa,OAAO,EAC3C,OACJ,MAAMkX,GAAOlX,EAAE,aAAa,KAAK,GAAK,IAAI,MAAM,KAAK,EACrD,GAAIA,EAAE,aAAa,UAAU,GAAMkX,GAAOA,EAAI,SAAS,UAAU,EAC7D,OACJ,MAAM+oC,EAAMqI,EAAM,IAAI,IAAIzxC,EAAM,SAAS,OAAO,EAAI,IAAI,IAAIA,CAAI,EAChE,GAAI,EAAAopC,EAAI,SAAW,OAAO,SAAS,QAC9BN,GAAYM,EAAI,UAAY,CAACA,EAAI,SAAS,YAAW,EAAG,WAAWN,EAAS,YAAa,CAAA,GAE9F,MAAO,CAAC3/C,EAAGigD,CAAG,CAC1B,CACQ,SAASsI,EAAkBF,EAAK,CAC5B,MAAM7hD,EAAM4hD,EAAaC,CAAG,EAC5B,GAAI,CAAC7hD,EACD,OACJ,KAAM,CAACxG,EAAGigD,CAAG,EAAIz5C,EACX2U,EAAKgnC,EAAO,UAAUlC,EAAI,SAAWA,EAAI,OAASA,EAAI,IAAI,EAC1D57C,EAAQrE,EAAE,aAAa,OAAO,EACpCqoD,EAAI,eAAgB,EACpBxC,EAAkB1qC,EAAI,CAClB,QAAS,GACT,QAASnb,EAAE,aAAa,SAAS,EACjC,OAAQ,CAACA,EAAE,aAAa,UAAU,EAClC,MAAOqE,EAAQ,KAAK,MAAMA,CAAK,EAAI,MACnD,CAAa,CACb,CACQ,SAASmkD,EAAoBH,EAAK,CAC9B,MAAM7hD,EAAM4hD,EAAaC,CAAG,EAC5B,GAAI,CAAC7hD,EACD,OACJ,KAAM,CAACxG,EAAGigD,CAAG,EAAIz5C,EAEjB27C,EAAO,aAAalC,EAAKjgD,EAAE,aAAa,SAAS,IAAM,OAAO,CAC1E,CACQ,SAASyoD,EAAiBJ,EAAK,CAC3B,aAAaH,CAAc,EAC3B,MAAM1hD,EAAM4hD,EAAaC,CAAG,EAC5B,GAAI,CAAC7hD,EACD,OAAO2hD,EAAc,KACzB,KAAM,CAACnoD,EAAGigD,CAAG,EAAIz5C,EACb2hD,IAAgBnoD,IAGpBkoD,EAAiB,WAAW,IAAM,CAC9B/F,EAAO,aAAalC,EAAKjgD,EAAE,aAAa,SAAS,IAAM,OAAO,EAC9DmoD,EAAcnoD,CACjB,EAAE,EAAE,EACjB,CACQ,SAAS0oD,EAAiBL,EAAK,CAC3B,GAAIA,EAAI,iBACJ,OACJ,IAAIM,EAAYN,EAAI,WAAaA,EAAI,UAAU,aAAa,YAAY,EAClEA,EAAI,UAAU,aAAa,YAAY,EACvCA,EAAI,OAAO,aAAa,QAAQ,EACtC,GAAI,CAACM,EACD,OACJ,GAAI,CAACA,EAAU,WAAW,iBAAiB,EAAG,CAE1C,MAAM1I,EAAM,IAAI,IAAI0I,EAAWrJ,EAAQ,EAEvC,GADAqJ,EAAYxG,EAAO,UAAUlC,EAAI,SAAWA,EAAI,MAAM,EAClD,CAAC0I,EAAU,WAAWV,CAAU,EAChC,MACpB,CACY,GAAII,EAAI,OAAO,OAAO,YAAa,IAAK,OACpC,MAAM,IAAI,MAAM,2CAA2C,EAC/D,MAAMn3C,EAAU42C,GAAQ,IAAIa,CAAS,EACrC,GAAIz3C,EAAS,CACTm3C,EAAI,eAAgB,EACpB,MAAMz0C,EAAO,IAAI,SAASy0C,EAAI,OAAQA,EAAI,SAAS,EACnDn3C,EAAQ,KAAK,CAAE,EAAGixC,EAAQ,EAAGkG,EAAI,MAAQ,EAAEA,EAAI,OAAO,UAAY,sBAC5Dz0C,EACA,IAAI,gBAAgBA,CAAI,CAAC,CAC/C,CACA,CAEQrD,GAAe,CAAC,QAAS,QAAQ,CAAC,EAClC,SAAS,iBAAiB,QAASg4C,CAAiB,EAChDzF,IACA,SAAS,iBAAiB,YAAa2F,EAAkB,CAAE,QAAS,GAAM,EAC1E,SAAS,iBAAiB,UAAWD,EAAqB,CAAE,QAAS,GAAM,EAC3E,SAAS,iBAAiB,aAAcA,EAAqB,CAAE,QAAS,GAAM,GAElF,SAAS,iBAAiB,SAAUE,CAAgB,EACpD7iD,GAAU,IAAM,CACZ,SAAS,oBAAoB,QAAS0iD,CAAiB,EACnDzF,IACA,SAAS,oBAAoB,YAAa2F,CAAgB,EAC1D,SAAS,oBAAoB,UAAWD,CAAmB,EAC3D,SAAS,oBAAoB,aAAcA,CAAmB,GAElE,SAAS,oBAAoB,SAAUE,CAAgB,CACnE,CAAS,CACJ,CACL,CCvHO,SAASE,GAAWzyC,EAAK,CAC5B,MAAMgF,EAAKhF,EAAI,QAAQ,QAAS,EAAE,EAIlC,GAAI,CAACgF,EAAG,WAAW,GAAG,EAAG,CACrB,KAAM,CAAG,CAAArH,EAAO,GAAG,EAAI,OAAO,SAAS,KAAK,MAAM,IAAK,CAAC,EACxD,MAAO,GAAGA,CAAI,IAAIqH,CAAE,EAC5B,CACI,OAAOA,CACX,CACO,SAAS0tC,GAAW5/C,EAAO,CAC9B,MAAM6/C,EAAY,IAAM,OAAO,SAAS,KAAK,MAAM,CAAC,EAC9C/D,EAAcxG,GAAmB,EACvC,OAAOiJ,GAAa,CAChB,IAAKsB,EACL,IAAI,CAAE,MAAA9mD,EAAO,QAAA+jD,EAAS,OAAAtgC,EAAQ,MAAAphB,CAAK,EAAI,CAC/B0hD,EACA,OAAO,QAAQ,aAAajH,GAAUz6C,CAAK,EAAG,GAAI,IAAMrC,CAAK,EAG7D,OAAO,QAAQ,UAAUqC,EAAO,GAAI,IAAMrC,CAAK,EAEnD,MAAM+mD,EAAY/mD,EAAM,QAAQ,GAAG,EAC7B+jB,EAAOgjC,GAAa,EAAI/mD,EAAM,MAAM+mD,EAAY,CAAC,EAAI,GAC3DnB,GAAa7hC,EAAMN,CAAM,EACzBo5B,GAAkB,CACrB,EACD,KAAMG,GAAU2I,GAAU,OAAQ,aAAc5I,GAAmBC,EAAQG,GAAS,CAAC4F,EAAY,QAAQ5F,GAASA,EAAQ,EAAIA,EAAQ2J,EAAW,CAAA,CAAC,CAAC,EACnJ,OAAQf,GAAkB9+C,EAAM,QAASA,EAAM,cAAeA,EAAM,UAAU,EAC9E,MAAO,CACH,GAAIk2C,GAAS,OAAO,QAAQ,GAAGA,CAAK,EACpC,WAAYrrC,GAAQ,IAAIA,CAAI,GAC5B,UAAW80C,GACX,YAAA7D,CACZ,CACK,CAAA,EAAE97C,CAAK,CACZ,iBCrCO,SAAS+/C,GAAE//C,EAAO,CACrBA,EAAQmC,EAAW,CAAE69C,cAAe,WAAYC,YAAa,UAAYjgD,CAAK,EAC9E,KAAM,EAAG6yC,CAAI,EAAIjwC,GAAW5C,EAAO,CAC/B,OACA,QACA,QACA,cACA,gBACA,KAAK,CACR,EACKkS,EAAK8mC,GAAgB,IAAMh5C,EAAM4N,IAAI,EACrCA,EAAOqrC,GAAQ/mC,CAAE,EACjBslC,EAAW6B,GAAY,EACvBxqB,EAAW/0B,EAAW,IAAM,CAC9B,MAAMq/C,EAAMjnC,EAAG,EACf,GAAIinC,IAAQvqC,OACD,MAAA,CAAC,GAAO,EAAK,EAClB/D,MAAAA,EAAOyrC,GAAc6C,EAAI5R,MAAM,OAAQ,CAAC,EAAE,CAAC,CAAC,EAAE3Z,YAAY,EAC1DsyB,EAAMC,UAAU7J,GAAckB,EAAS2D,QAAQ,EAAEvtB,aAAa,EACpE,MAAO,CAAC5tB,EAAMmB,IAAM0J,IAASq1C,EAAMA,EAAIE,WAAWv1C,EAAO,GAAG,GAAKq1C,IAAQr1C,EAAMA,IAASq1C,CAAG,CAAA,CAC9F,EACD,OAAA,IAAA,CAAA,IAAA1wC,EAAAC,GAAA,EAAAD,OAAAA,GAAAA,EAAAH,EAAewjC,EAAI,CAAA,IAAEjlC,MAAI,CAAEA,OAAAA,EAAAA,GAAU5N,EAAM4N,IAAI,EAAA,IAAExS,OAAK,CAAEilD,OAAAA,KAAKC,UAAUtgD,EAAM5E,KAAK,CAAC,EAAA,IAAEgN,WAAS,CAAE,MAAA,CACxF,GAAIpI,EAAM+1B,OAAS,CAAE,CAAC/1B,EAAM+1B,KAAK,EAAG,EAAK,EACzC,CAAC/1B,EAAMggD,aAAa,EAAG,CAACnxB,EAAAA,EAAW,CAAC,EACpC,CAAC7uB,EAAMigD,WAAW,EAAGpxB,EAAAA,EAAW,CAAC,EACjC,GAAGgkB,EAAKzqC,SACZ,CAAC,EAAA,KAAA,GAAA,GAAA,gBAAA,CAAA,OAAqBymB,EAAS,EAAE,CAAC,EAAI,OAASjgB,MAAAA,CAAS,CAAA,EAAA,GAAA,EAAA,EAAAY,CAAAA,GAAA,CAChE,CACO,SAAS+wC,GAASvgD,EAAO,CAC5B,MAAMw5C,EAAWJ,GAAY,EACvB5B,EAAW6B,GAAY,EACvB,CAAEzrC,KAAAA,EAAMxS,MAAAA,CAAAA,EAAU4E,EAClB6K,EAAO,OAAO+C,GAAS,WAAaA,EAAK,CAAE4rC,SAAAA,EAAUhC,SAAAA,CAAU,CAAA,EAAI5pC,EACzE4rC,OAAAA,EAAS3uC,EAAM,CAAEiyC,QAAS,GAAM1hD,MAAAA,CAAAA,CAAO,EAChC,IACX,CCtCA,IAAIkC,GAAE,CAAC,QAAQ,OAAO,MAAM,SAAS,EAAEtB,GAAY,OAAO,WAAjB,UAA4B,uBAAuB,KAAK,UAAU,QAAQ,EAAE,OAAO,UAAU,SAAS6D,GAAEvC,EAAEtB,EAAE,CAAC,OAAkB,OAAOsB,EAAE,kBAArB,YAAuCA,EAAE,iBAAiBtB,CAAC,CAAC,CAAC,SAASy8B,GAAEn7B,EAAE,CAAC,OAAOA,EAAE,KAAI,EAAG,MAAM,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,MAAM,EAAEm7B,EAAE,EAAE,IAAG,EAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAASn7B,EAAE,CAAC,OAAeA,IAAT,OAAWtB,GAAEsB,CAAC,CAAC,EAAEm7B,CAAC,CAAC,CAAC,CAAC,CAAC,SAASz7B,GAAE,EAAEA,EAAE,CAAC,IAAIP,EAAWO,IAAT,SAAaA,EAAE,CAAA,GAAI,IAAIwjD,GAAS/jD,EAAEO,EAAE,UAAX,KAAoBP,EAAE,IAAI1F,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,SAASuG,EAAE,CAAC,MAAM,CAACm7B,GAAEn7B,CAAC,EAAE,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEmjD,EAAE,IAAI,IAAInnD,EAAE,KAAK,OAAO,SAAS0C,EAAE,CAACA,aAAa,gBAAgBjF,EAAE,QAAQ,SAAS0hC,EAAE,CAAC,IAAIz7B,EAAEy7B,EAAE,CAAC,EAAEh8B,EAAEg8B,EAAE,CAAC,EAAE+nB,EAAEC,EAAE,IAAIzjD,CAAC,GAAGA,GAAG,SAAShB,EAAEy8B,EAAE,CAAC,MAAM,EAAEA,EAAE,CAAC,EAAE,YAAW,IAAKz8B,EAAE,IAAI,YAAW,GAAIy8B,EAAE,CAAC,IAAIz8B,EAAE,MAAMy8B,EAAE,CAAC,EAAE,KAAK,SAASn7B,EAAE,CAAC,MAAM,CAACuC,GAAE7D,EAAEsB,CAAC,CAAC,CAAC,GAAGA,GAAE,KAAK,SAASA,EAAE,CAAC,MAAM,CAACm7B,EAAE,CAAC,EAAE,SAASn7B,CAAC,GAAGm7B,EAAE,CAAC,IAAIn7B,GAAGuC,GAAE7D,EAAEsB,CAAC,CAAC,CAAC,EAAE,GAAEtB,EAAEwkD,EAAE,CAAC,CAAC,EAA0BA,EAAE,OAAO,EAAEC,EAAE,IAAIzjD,EAAEwjD,EAAE,MAAM,CAAC,CAAC,GAAGC,EAAE,OAAOzjD,CAAC,EAAEP,EAAET,CAAC,GAAvE6D,GAAE7D,EAAEA,EAAE,GAAG,GAAGykD,EAAE,OAAOzjD,CAAC,CAAmD,CAAC,EAAE1D,GAAG,aAAaA,CAAC,EAAEA,EAAE,WAAWmnD,EAAE,MAAM,KAAKA,CAAC,EAAED,CAAC,EAAE,CAAC,CAAC,SAAS/jD,GAAEa,EAAEtB,EAAE,EAAE,CAAC,IAAIy8B,EAAW,IAAT,SAAa,EAAE,CAAA,GAAI,IAAI,GAASA,EAAE,EAAE,QAAX,KAAkBA,EAAE,UAAU+nB,EAAExjD,GAAEhB,EAAE,CAAC,EAAE,OAAOsB,EAAE,iBAAiB,EAAEkjD,CAAC,EAAE,UAAU,CAACljD,EAAE,oBAAoB,EAAEkjD,CAAC,CAAC,CAAC,mwMCwBrjC,MAAME,GAASA,IACpBjxC,GAAA,EAeK,SAASkxC,IAAmB,CACjC,OAAA1R,GAAA,CAYF,CAEO,SAAS2R,IAAgB,CAC9B,OAAAC,GAAA,CAYF,CAEO,SAASC,IAAkB,CAChC,OAAAC,GAAA,CAYF,CAEO,SAASC,GAAOhhD,EAA2B,CAChD,OAAA,IAAA,CAAA,IAAAihD,EAAAC,GAAA,EAAAxY,OAAAA,MAAAyB,GAAA8W,EAQWjhD,EAAMyI,MAAK04C,CAAA,CAAA,EAAAF,CAAAA,GAAA,CAKxB,CAEO,SAASG,GAAWphD,EAA2B,CACpD,OAAA,IAAA,CAAA,IAAAqhD,EAAAC,GAAA,EAAA5Y,OAAAA,MAAAyB,GAAAkX,EAUWrhD,EAAMyI,MAAK04C,CAAA,CAAA,EAAAE,CAAAA,GAAA,CAKxB,CAEO,SAASE,IAAa,CAC3B,OAAAC,GAAA,CAYF,CAEO,SAASC,GAAazhD,EAA0B,CACrD,OAAA,IAAA,CAAA,IAAA0hD,EAAAC,GAAA,EAAAjZ,OAAAA,GAAA,IAAAC,GAAA+Y,UAMY,qBAAoB1hD,EAAM+1B,KAAM,EAAC,CAAA,EAAA2rB,CAAAA,GAAA,CAO/C,CAEO,SAASE,GAAU5hD,EAA2B,CACnD,OAAA,IAAA,CAAA,IAAA6hD,EAAAC,GAAA,EAAApZ,OAAAA,MAAAyB,GAAA0X,EAQW7hD,EAAMyI,MAAK04C,CAAA,CAAA,EAAAU,CAAAA,GAAA,CAKxB,CAkBO,SAASE,IAAe,CAC7B,OAAAC,GAAA,CAaF,CAEO,SAASC,IAAe,CAC7B,OAAAC,GAAA,CAaF,CAEO,SAASC,IAAW,CACzB,OAAAC,GAAA,CAYF,CAiBO,SAASC,IAAmB,CACjC,OAAAC,GAAA,CAaF,CChQe,SAASC,GAAKpqD,EAAIqqD,EAAS,CACxC,OAAO,UAAgB,CACrB,OAAOrqD,EAAG,MAAMqqD,EAAS,SAAS,CACnC,CACH,CCAA,KAAM,CAAC,SAAAC,EAAQ,EAAI,OAAO,UACpB,CAAC,eAAAC,EAAc,EAAI,OAEnBC,IAAUC,GAASC,GAAS,CAC9B,MAAM31C,EAAMu1C,GAAS,KAAKI,CAAK,EAC/B,OAAOD,EAAM11C,CAAG,IAAM01C,EAAM11C,CAAG,EAAIA,EAAI,MAAM,EAAG,EAAE,EAAE,YAAW,EACnE,GAAG,OAAO,OAAO,IAAI,CAAC,EAEhB41C,GAAc30C,IAClBA,EAAOA,EAAK,YAAa,EACjB00C,GAAUF,GAAOE,CAAK,IAAM10C,GAGhC40C,GAAa50C,GAAQ00C,GAAS,OAAOA,IAAU10C,EAS/C,CAAC/R,QAAAA,EAAO,EAAI,MASZ4mD,GAAcD,GAAW,WAAW,EAS1C,SAASE,GAASC,EAAK,CACrB,OAAOA,IAAQ,MAAQ,CAACF,GAAYE,CAAG,GAAKA,EAAI,cAAgB,MAAQ,CAACF,GAAYE,EAAI,WAAW,GAC/FvwC,GAAWuwC,EAAI,YAAY,QAAQ,GAAKA,EAAI,YAAY,SAASA,CAAG,CAC3E,CASA,MAAMC,GAAgBL,GAAW,aAAa,EAU9C,SAASM,GAAkBF,EAAK,CAC9B,IAAIxmD,EACJ,OAAK,OAAO,YAAgB,KAAiB,YAAY,OACvDA,EAAS,YAAY,OAAOwmD,CAAG,EAE/BxmD,EAAUwmD,GAASA,EAAI,QAAYC,GAAcD,EAAI,MAAM,EAEtDxmD,CACT,CASA,MAAM2mD,GAAWN,GAAW,QAAQ,EAQ9BpwC,GAAaowC,GAAW,UAAU,EASlCO,GAAWP,GAAW,QAAQ,EAS9BQ,GAAYV,GAAUA,IAAU,MAAQ,OAAOA,GAAU,SAQzDW,GAAYX,GAASA,IAAU,IAAQA,IAAU,GASjDY,GAAiBP,GAAQ,CAC7B,GAAIP,GAAOO,CAAG,IAAM,SAClB,MAAO,GAGT,MAAMQ,EAAYhB,GAAeQ,CAAG,EACpC,OAAQQ,IAAc,MAAQA,IAAc,OAAO,WAAa,OAAO,eAAeA,CAAS,IAAM,OAAS,EAAE,OAAO,eAAeR,IAAQ,EAAE,OAAO,YAAYA,EACrK,EASMS,GAASb,GAAW,MAAM,EAS1Bc,GAASd,GAAW,MAAM,EAS1Be,GAASf,GAAW,MAAM,EAS1BgB,GAAahB,GAAW,UAAU,EASlCiB,GAAYb,GAAQK,GAASL,CAAG,GAAKvwC,GAAWuwC,EAAI,IAAI,EASxDc,GAAcnB,GAAU,CAC5B,IAAIoB,EACJ,OAAOpB,IACJ,OAAO,UAAa,YAAcA,aAAiB,UAClDlwC,GAAWkwC,EAAM,MAAM,KACpBoB,EAAOtB,GAAOE,CAAK,KAAO,YAE1BoB,IAAS,UAAYtxC,GAAWkwC,EAAM,QAAQ,GAAKA,EAAM,SAAQ,IAAO,qBAIjF,EASMqB,GAAoBpB,GAAW,iBAAiB,EAEhD,CAACqB,GAAkBC,GAAWC,GAAYC,EAAS,EAAI,CAAC,iBAAkB,UAAW,WAAY,SAAS,EAAE,IAAIxB,EAAU,EAS1Hj1C,GAAQX,GAAQA,EAAI,KACxBA,EAAI,KAAI,EAAKA,EAAI,QAAQ,qCAAsC,EAAE,EAiBnE,SAAS41B,GAAQhyB,EAAK3Y,EAAI,CAAC,WAAAosD,EAAa,EAAK,EAAI,GAAI,CAEnD,GAAIzzC,IAAQ,MAAQ,OAAOA,EAAQ,IACjC,OAGF,IAAIrU,EACAY,EAQJ,GALI,OAAOyT,GAAQ,WAEjBA,EAAM,CAACA,CAAG,GAGR1U,GAAQ0U,CAAG,EAEb,IAAKrU,EAAI,EAAGY,EAAIyT,EAAI,OAAQrU,EAAIY,EAAGZ,IACjCtE,EAAG,KAAK,KAAM2Y,EAAIrU,CAAC,EAAGA,EAAGqU,CAAG,MAEzB,CAEL,MAAMzO,EAAOkiD,EAAa,OAAO,oBAAoBzzC,CAAG,EAAI,OAAO,KAAKA,CAAG,EACrEpa,EAAM2L,EAAK,OACjB,IAAI7G,EAEJ,IAAKiB,EAAI,EAAGA,EAAI/F,EAAK+F,IACnBjB,EAAM6G,EAAK5F,CAAC,EACZtE,EAAG,KAAK,KAAM2Y,EAAItV,CAAG,EAAGA,EAAKsV,CAAG,CAEtC,CACA,CAEA,SAAS0zC,GAAQ1zC,EAAKtV,EAAK,CACzBA,EAAMA,EAAI,YAAa,EACvB,MAAM6G,EAAO,OAAO,KAAKyO,CAAG,EAC5B,IAAIrU,EAAI4F,EAAK,OACTkmB,EACJ,KAAO9rB,KAAM,GAEX,GADA8rB,EAAOlmB,EAAK5F,CAAC,EACTjB,IAAQ+sB,EAAK,cACf,OAAOA,EAGX,OAAO,IACT,CAEA,MAAMk8B,GAEA,OAAO,WAAe,IAAoB,WACvC,OAAO,KAAS,IAAc,KAAQ,OAAO,OAAW,IAAc,OAAS,OAGlFC,GAAoB9tD,GAAY,CAACosD,GAAYpsD,CAAO,GAAKA,IAAY6tD,GAoB3E,SAASrxC,IAAmC,CAC1C,KAAM,CAAC,SAAAuxC,CAAQ,EAAID,GAAiB,IAAI,GAAK,MAAQ,CAAE,EACjDhoD,EAAS,CAAE,EACXkoD,EAAc,CAAC1B,EAAK1nD,IAAQ,CAChC,MAAMqpD,EAAYF,GAAYH,GAAQ9nD,EAAQlB,CAAG,GAAKA,EAClDioD,GAAc/mD,EAAOmoD,CAAS,CAAC,GAAKpB,GAAcP,CAAG,EACvDxmD,EAAOmoD,CAAS,EAAIzxC,GAAM1W,EAAOmoD,CAAS,EAAG3B,CAAG,EACvCO,GAAcP,CAAG,EAC1BxmD,EAAOmoD,CAAS,EAAIzxC,GAAM,CAAA,EAAI8vC,CAAG,EACxB9mD,GAAQ8mD,CAAG,EACpBxmD,EAAOmoD,CAAS,EAAI3B,EAAI,MAAO,EAE/BxmD,EAAOmoD,CAAS,EAAI3B,CAE1B,EAEE,QAASzmD,EAAI,EAAGY,EAAI,UAAU,OAAQZ,EAAIY,EAAGZ,IAC3C,UAAUA,CAAC,GAAKqmC,GAAQ,UAAUrmC,CAAC,EAAGmoD,CAAW,EAEnD,OAAOloD,CACT,CAYA,MAAMooD,GAAS,CAAC/tD,EAAGC,EAAGwrD,EAAS,CAAC,WAAA+B,CAAU,EAAG,MAC3CzhB,GAAQ9rC,EAAG,CAACksD,EAAK1nD,IAAQ,CACnBgnD,GAAW7vC,GAAWuwC,CAAG,EAC3BnsD,EAAEyE,CAAG,EAAI+mD,GAAKW,EAAKV,CAAO,EAE1BzrD,EAAEyE,CAAG,EAAI0nD,CAEf,EAAK,CAAC,WAAAqB,CAAU,CAAC,EACRxtD,GAUHguD,GAAY54C,IACZA,EAAQ,WAAW,CAAC,IAAM,QAC5BA,EAAUA,EAAQ,MAAM,CAAC,GAEpBA,GAYH64C,GAAW,CAACC,EAAaC,EAAkBllD,EAAO8S,IAAgB,CACtEmyC,EAAY,UAAY,OAAO,OAAOC,EAAiB,UAAWpyC,CAAW,EAC7EmyC,EAAY,UAAU,YAAcA,EACpC,OAAO,eAAeA,EAAa,QAAS,CAC1C,MAAOC,EAAiB,SAC5B,CAAG,EACDllD,GAAS,OAAO,OAAOilD,EAAY,UAAWjlD,CAAK,CACrD,EAWMmlD,GAAe,CAACC,EAAWC,EAASpN,EAAQqN,IAAe,CAC/D,IAAItlD,EACAvD,EACAmJ,EACJ,MAAMuiB,EAAS,CAAE,EAIjB,GAFAk9B,EAAUA,GAAW,CAAE,EAEnBD,GAAa,KAAM,OAAOC,EAE9B,EAAG,CAGD,IAFArlD,EAAQ,OAAO,oBAAoBolD,CAAS,EAC5C3oD,EAAIuD,EAAM,OACHvD,KAAM,GACXmJ,EAAO5F,EAAMvD,CAAC,GACT,CAAC6oD,GAAcA,EAAW1/C,EAAMw/C,EAAWC,CAAO,IAAM,CAACl9B,EAAOviB,CAAI,IACvEy/C,EAAQz/C,CAAI,EAAIw/C,EAAUx/C,CAAI,EAC9BuiB,EAAOviB,CAAI,EAAI,IAGnBw/C,EAAYnN,IAAW,IAASyK,GAAe0C,CAAS,CAC5D,OAAWA,IAAc,CAACnN,GAAUA,EAAOmN,EAAWC,CAAO,IAAMD,IAAc,OAAO,WAEtF,OAAOC,CACT,EAWME,GAAW,CAACr4C,EAAKwsC,EAAc9+B,IAAa,CAChD1N,EAAM,OAAOA,CAAG,GACZ0N,IAAa,QAAaA,EAAW1N,EAAI,UAC3C0N,EAAW1N,EAAI,QAEjB0N,GAAY8+B,EAAa,OACzB,MAAM8L,EAAYt4C,EAAI,QAAQwsC,EAAc9+B,CAAQ,EACpD,OAAO4qC,IAAc,IAAMA,IAAc5qC,CAC3C,EAUMjL,GAAWkzC,GAAU,CACzB,GAAI,CAACA,EAAO,OAAO,KACnB,GAAIzmD,GAAQymD,CAAK,EAAG,OAAOA,EAC3B,IAAIpmD,EAAIomD,EAAM,OACd,GAAI,CAACS,GAAS7mD,CAAC,EAAG,OAAO,KACzB,MAAMgpD,EAAM,IAAI,MAAMhpD,CAAC,EACvB,KAAOA,KAAM,GACXgpD,EAAIhpD,CAAC,EAAIomD,EAAMpmD,CAAC,EAElB,OAAOgpD,CACT,EAWMC,IAAgBC,GAEb9C,GACE8C,GAAc9C,aAAiB8C,GAEvC,OAAO,WAAe,KAAejD,GAAe,UAAU,CAAC,EAU5DkD,GAAe,CAAC90C,EAAK3Y,IAAO,CAGhC,MAAM0tD,GAFY/0C,GAAOA,EAAI,OAAO,QAAQ,GAEjB,KAAKA,CAAG,EAEnC,IAAIpU,EAEJ,MAAQA,EAASmpD,EAAS,KAAI,IAAO,CAACnpD,EAAO,MAAM,CACjD,MAAMopD,EAAOppD,EAAO,MACpBvE,EAAG,KAAK2Y,EAAKg1C,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CACjC,CACA,EAUMC,GAAW,CAACC,EAAQ94C,IAAQ,CAChC,IAAIotC,EACJ,MAAMmL,EAAM,CAAE,EAEd,MAAQnL,EAAU0L,EAAO,KAAK94C,CAAG,KAAO,MACtCu4C,EAAI,KAAKnL,CAAO,EAGlB,OAAOmL,CACT,EAGMQ,GAAanD,GAAW,iBAAiB,EAEzCoD,GAAch5C,GACXA,EAAI,cAAc,QAAQ,wBAC/B,SAAkBgc,EAAGi9B,EAAIC,EAAI,CAC3B,OAAOD,EAAG,YAAW,EAAKC,CAChC,CACG,EAIGC,IAAkB,CAAC,CAAC,eAAAA,CAAc,IAAM,CAACv1C,EAAKlL,IAASygD,EAAe,KAAKv1C,EAAKlL,CAAI,GAAG,OAAO,SAAS,EASvG0gD,GAAWxD,GAAW,QAAQ,EAE9ByD,GAAoB,CAACz1C,EAAK01C,IAAY,CAC1C,MAAM1zC,EAAc,OAAO,0BAA0BhC,CAAG,EAClD21C,EAAqB,CAAE,EAE7B3jB,GAAQhwB,EAAa,CAAC4zC,EAAYnjD,IAAS,CACzC,IAAIojD,GACCA,EAAMH,EAAQE,EAAYnjD,EAAMuN,CAAG,KAAO,KAC7C21C,EAAmBljD,CAAI,EAAIojD,GAAOD,EAExC,CAAG,EAED,OAAO,iBAAiB51C,EAAK21C,CAAkB,CACjD,EAOMG,GAAiB91C,GAAQ,CAC7By1C,GAAkBz1C,EAAK,CAAC41C,EAAYnjD,IAAS,CAE3C,GAAIoP,GAAW7B,CAAG,GAAK,CAAC,YAAa,SAAU,QAAQ,EAAE,QAAQvN,CAAI,IAAM,GACzE,MAAO,GAGT,MAAMxK,EAAQ+X,EAAIvN,CAAI,EAEtB,GAAKoP,GAAW5Z,CAAK,EAIrB,IAFA2tD,EAAW,WAAa,GAEpB,aAAcA,EAAY,CAC5BA,EAAW,SAAW,GACtB,MACN,CAESA,EAAW,MACdA,EAAW,IAAM,IAAM,CACrB,MAAM,MAAM,qCAAwCnjD,EAAO,GAAI,CAChE,GAEP,CAAG,CACH,EAEMsjD,GAAc,CAACC,EAAeC,IAAc,CAChD,MAAMj2C,EAAM,CAAE,EAERk2C,EAAUvB,GAAQ,CACtBA,EAAI,QAAQ1sD,GAAS,CACnB+X,EAAI/X,CAAK,EAAI,EACnB,CAAK,CACL,EAEEqD,OAAAA,GAAQ0qD,CAAa,EAAIE,EAAOF,CAAa,EAAIE,EAAO,OAAOF,CAAa,EAAE,MAAMC,CAAS,CAAC,EAEvFj2C,CACT,EAEM+Z,GAAO,IAAM,CAAA,EAEbo8B,GAAiB,CAACluD,EAAO8E,IACtB9E,GAAS,MAAQ,OAAO,SAASA,EAAQ,CAACA,CAAK,EAAIA,EAAQ8E,EAUpE,SAASqpD,GAAoBrE,EAAO,CAClC,MAAO,CAAC,EAAEA,GAASlwC,GAAWkwC,EAAM,MAAM,GAAKA,EAAM,OAAO,WAAW,IAAM,YAAcA,EAAM,OAAO,QAAQ,EAClH,CAEA,MAAMsE,GAAgBr2C,GAAQ,CAC5B,MAAM0pC,EAAQ,IAAI,MAAM,EAAE,EAEpB4M,EAAQ,CAAC/sD,EAAQ,IAAM,CAE3B,GAAIkpD,GAASlpD,CAAM,EAAG,CACpB,GAAImgD,EAAM,QAAQngD,CAAM,GAAK,EAC3B,OAGF,GAAG,EAAE,WAAYA,GAAS,CACxBmgD,EAAM,CAAC,EAAIngD,EACX,MAAMqI,EAAStG,GAAQ/B,CAAM,EAAI,CAAE,EAAG,CAAE,EAExC,OAAAyoC,GAAQzoC,EAAQ,CAACtB,EAAOyC,IAAQ,CAC9B,MAAM6rD,EAAeD,EAAMruD,EAAO,EAAI,CAAC,EACvC,CAACiqD,GAAYqE,CAAY,IAAM3kD,EAAOlH,CAAG,EAAI6rD,EACvD,CAAS,EAED7M,EAAM,CAAC,EAAI,OAEJ93C,CACf,CACA,CAEI,OAAOrI,CACX,EAEE,OAAO+sD,EAAMt2C,EAAK,CAAC,CACrB,EAEMw2C,GAAYxE,GAAW,eAAe,EAEtCyE,GAAc1E,GAClBA,IAAUU,GAASV,CAAK,GAAKlwC,GAAWkwC,CAAK,IAAMlwC,GAAWkwC,EAAM,IAAI,GAAKlwC,GAAWkwC,EAAM,KAAK,EAK/F2E,IAAiB,CAACC,EAAuBC,IACzCD,EACK,aAGFC,GAAwB,CAACC,EAAOC,KACrCnD,GAAQ,iBAAiB,UAAW,CAAC,CAAC,OAAApqD,EAAQ,KAAAsQ,CAAI,IAAM,CAClDtQ,IAAWoqD,IAAW95C,IAASg9C,GACjCC,EAAU,QAAUA,EAAU,QAAS,CAE1C,EAAE,EAAK,EAEAC,GAAO,CACbD,EAAU,KAAKC,CAAE,EACjBpD,GAAQ,YAAYkD,EAAO,GAAG,CACpC,IACK,SAAS,KAAK,QAAQ,GAAI,CAAE,CAAA,EAAKE,GAAO,WAAWA,CAAE,GAExD,OAAO,cAAiB,WACxBl1C,GAAW8xC,GAAQ,WAAW,CAChC,EAEMqD,GAAO,OAAO,eAAmB,IACrC,eAAe,KAAKrD,EAAO,EAAM,OAAO,QAAY,KAAe,QAAQ,UAAY+C,GAI1EO,EAAA,CACf,QAAE3rD,GACA,cAAA+mD,GACA,SAAAF,GACA,WAAAe,GACA,kBAAAZ,GACA,SAAAC,GACF,SAAEC,GACA,UAAAE,GACF,SAAED,GACA,cAAAE,GACA,iBAAAU,GACA,UAAAC,GACA,WAAAC,GACA,UAAAC,GACA,YAAAtB,GACA,OAAAW,GACA,OAAAC,GACA,OAAAC,GACA,SAAAyC,GACF,WAAE3zC,GACA,SAAAoxC,GACA,kBAAAG,GACA,aAAAwB,GACA,WAAA5B,GACA,QAAAhhB,GACF,MAAE1vB,GACA,OAAA0xC,GACA,KAAAj3C,GACA,SAAAk3C,GACF,SAAEC,GACA,aAAAG,GACA,OAAAxC,GACA,WAAAG,GACA,SAAAyC,GACA,QAAA51C,GACA,aAAAi2C,GACA,SAAAG,GACA,WAAAE,GACA,eAAAI,GACA,WAAYA,GACZ,kBAAAE,GACA,cAAAK,GACA,YAAAC,GACA,YAAAX,GACF,KAAEr7B,GACA,eAAAo8B,GACA,QAAAzC,GACA,OAAQC,GACR,iBAAAC,GACA,oBAAAwC,GACA,aAAAC,GACA,UAAAG,GACA,WAAAC,GACA,aAAcC,GACd,KAAAM,EACF,ECltBA,SAASE,GAAWnR,EAAShwC,EAAM23C,EAAQyJ,EAASC,EAAU,CAC5D,MAAM,KAAK,IAAI,EAEX,MAAM,kBACR,MAAM,kBAAkB,KAAM,KAAK,WAAW,EAE9C,KAAK,MAAS,IAAI,MAAO,EAAE,MAG7B,KAAK,QAAUrR,EACf,KAAK,KAAO,aACZhwC,IAAS,KAAK,KAAOA,GACrB23C,IAAW,KAAK,OAASA,GACzByJ,IAAY,KAAK,QAAUA,GACvBC,IACF,KAAK,SAAWA,EAChB,KAAK,OAASA,EAAS,OAASA,EAAS,OAAS,KAEtD,CAEAvM,EAAM,SAASqM,GAAY,MAAO,CAChC,OAAQ,UAAkB,CACxB,MAAO,CAEL,QAAS,KAAK,QACd,KAAM,KAAK,KAEX,YAAa,KAAK,YAClB,OAAQ,KAAK,OAEb,SAAU,KAAK,SACf,WAAY,KAAK,WACjB,aAAc,KAAK,aACnB,MAAO,KAAK,MAEZ,OAAQrM,EAAM,aAAa,KAAK,MAAM,EACtC,KAAM,KAAK,KACX,OAAQ,KAAK,MACd,CACL,CACA,CAAC,EAED,MAAM+H,GAAYsE,GAAW,UACvBl1C,GAAc,CAAE,EAEtB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,iBAEF,EAAE,QAAQjM,GAAQ,CAChBiM,GAAYjM,CAAI,EAAI,CAAC,MAAOA,CAAI,CAClC,CAAC,EAED,OAAO,iBAAiBmhD,GAAYl1C,EAAW,EAC/C,OAAO,eAAe4wC,GAAW,eAAgB,CAAC,MAAO,EAAI,CAAC,EAG9DsE,GAAW,KAAO,CAAChtD,EAAO6L,EAAM23C,EAAQyJ,EAASC,EAAUC,IAAgB,CACzE,MAAMC,EAAa,OAAO,OAAO1E,EAAS,EAE1C/H,OAAAA,EAAM,aAAa3gD,EAAOotD,EAAY,SAAgBt3C,EAAK,CACzD,OAAOA,IAAQ,MAAM,SACtB,EAAElL,GACMA,IAAS,cACjB,EAEDoiD,GAAW,KAAKI,EAAYptD,EAAM,QAAS6L,EAAM23C,EAAQyJ,EAASC,CAAQ,EAE1EE,EAAW,MAAQptD,EAEnBotD,EAAW,KAAOptD,EAAM,KAExBmtD,GAAe,OAAO,OAAOC,EAAYD,CAAW,EAE7CC,CACT,ECnGA,MAAAC,GAAe,KCaf,SAASC,GAAYzF,EAAO,CAC1B,OAAOlH,EAAM,cAAckH,CAAK,GAAKlH,EAAM,QAAQkH,CAAK,CAC1D,CASA,SAAS0F,GAAe/sD,EAAK,CAC3B,OAAOmgD,EAAM,SAASngD,EAAK,IAAI,EAAIA,EAAI,MAAM,EAAG,EAAE,EAAIA,CACxD,CAWA,SAASgtD,GAAU39C,EAAMrP,EAAKitD,EAAM,CAClC,OAAK59C,EACEA,EAAK,OAAOrP,CAAG,EAAE,IAAI,SAAcmsD,EAAOlrD,EAAG,CAElD,OAAAkrD,EAAQY,GAAeZ,CAAK,EACrB,CAACc,GAAQhsD,EAAI,IAAMkrD,EAAQ,IAAMA,CACzC,CAAA,EAAE,KAAKc,EAAO,IAAM,EAAE,EALLjtD,CAMpB,CASA,SAASktD,GAAYjD,EAAK,CACxB,OAAO9J,EAAM,QAAQ8J,CAAG,GAAK,CAACA,EAAI,KAAK6C,EAAW,CACpD,CAEA,MAAMK,GAAahN,EAAM,aAAaA,EAAO,CAAE,EAAE,KAAM,SAAgB/1C,EAAM,CAC3E,MAAO,WAAW,KAAKA,CAAI,CAC7B,CAAC,EAyBD,SAASgjD,GAAW93C,EAAK+3C,EAAU7vD,EAAS,CAC1C,GAAI,CAAC2iD,EAAM,SAAS7qC,CAAG,EACrB,MAAM,IAAI,UAAU,0BAA0B,EAIhD+3C,EAAWA,GAAY,IAAyB,SAGhD7vD,EAAU2iD,EAAM,aAAa3iD,EAAS,CACpC,WAAY,GACZ,KAAM,GACN,QAAS,EACV,EAAE,GAAO,SAAiB8vD,EAAQzuD,EAAQ,CAEzC,MAAO,CAACshD,EAAM,YAAYthD,EAAOyuD,CAAM,CAAC,CAC5C,CAAG,EAED,MAAMC,EAAa/vD,EAAQ,WAErBgwD,EAAUhwD,EAAQ,SAAWiwD,EAC7BR,EAAOzvD,EAAQ,KACfyH,EAAUzH,EAAQ,QAElBkwD,GADQlwD,EAAQ,MAAQ,OAAO,KAAS,KAAe,OACpC2iD,EAAM,oBAAoBkN,CAAQ,EAE3D,GAAI,CAAClN,EAAM,WAAWqN,CAAO,EAC3B,MAAM,IAAI,UAAU,4BAA4B,EAGlD,SAASG,EAAapwD,EAAO,CAC3B,GAAIA,IAAU,KAAM,MAAO,GAE3B,GAAI4iD,EAAM,OAAO5iD,CAAK,EACpB,OAAOA,EAAM,YAAa,EAG5B,GAAI,CAACmwD,GAAWvN,EAAM,OAAO5iD,CAAK,EAChC,MAAM,IAAIivD,GAAW,8CAA8C,EAGrE,OAAIrM,EAAM,cAAc5iD,CAAK,GAAK4iD,EAAM,aAAa5iD,CAAK,EACjDmwD,GAAW,OAAO,MAAS,WAAa,IAAI,KAAK,CAACnwD,CAAK,CAAC,EAAI,OAAO,KAAKA,CAAK,EAG/EA,CACX,CAYE,SAASkwD,EAAelwD,EAAOyC,EAAKqP,EAAM,CACxC,IAAI46C,EAAM1sD,EAEV,GAAIA,GAAS,CAAC8R,GAAQ,OAAO9R,GAAU,UACrC,GAAI4iD,EAAM,SAASngD,EAAK,IAAI,EAE1BA,EAAMutD,EAAavtD,EAAMA,EAAI,MAAM,EAAG,EAAE,EAExCzC,EAAQ,KAAK,UAAUA,CAAK,UAE3B4iD,EAAM,QAAQ5iD,CAAK,GAAK2vD,GAAY3vD,CAAK,IACxC4iD,EAAM,WAAW5iD,CAAK,GAAK4iD,EAAM,SAASngD,EAAK,IAAI,KAAOiqD,EAAM9J,EAAM,QAAQ5iD,CAAK,GAGrF,OAAAyC,EAAM+sD,GAAe/sD,CAAG,EAExBiqD,EAAI,QAAQ,SAAcp7C,EAAI1K,EAAO,CACnC,EAAEg8C,EAAM,YAAYtxC,CAAE,GAAKA,IAAO,OAASw+C,EAAS,OAElDpoD,IAAY,GAAO+nD,GAAU,CAAChtD,CAAG,EAAGmE,EAAO8oD,CAAI,EAAKhoD,IAAY,KAAOjF,EAAMA,EAAM,KACnF2tD,EAAa9+C,CAAE,CAChB,CACX,CAAS,EACM,GAIX,OAAIi+C,GAAYvvD,CAAK,EACZ,IAGT8vD,EAAS,OAAOL,GAAU39C,EAAMrP,EAAKitD,CAAI,EAAGU,EAAapwD,CAAK,CAAC,EAExD,GACX,CAEE,MAAMyhD,EAAQ,CAAE,EAEV4O,EAAiB,OAAO,OAAOT,GAAY,CAC/C,eAAAM,EACA,aAAAE,EACA,YAAAb,EACJ,CAAG,EAED,SAASe,EAAMtwD,EAAO8R,EAAM,CAC1B,GAAI8wC,CAAAA,EAAM,YAAY5iD,CAAK,EAE3B,IAAIyhD,EAAM,QAAQzhD,CAAK,IAAM,GAC3B,MAAM,MAAM,kCAAoC8R,EAAK,KAAK,GAAG,CAAC,EAGhE2vC,EAAM,KAAKzhD,CAAK,EAEhB4iD,EAAM,QAAQ5iD,EAAO,SAAcsR,EAAI7O,EAAK,EAC3B,EAAEmgD,EAAM,YAAYtxC,CAAE,GAAKA,IAAO,OAAS2+C,EAAQ,KAChEH,EAAUx+C,EAAIsxC,EAAM,SAASngD,CAAG,EAAIA,EAAI,KAAI,EAAKA,EAAKqP,EAAMu+C,CAC7D,KAEc,IACbC,EAAMh/C,EAAIQ,EAAOA,EAAK,OAAOrP,CAAG,EAAI,CAACA,CAAG,CAAC,CAEjD,CAAK,EAEDg/C,EAAM,IAAK,EACf,CAEE,GAAI,CAACmB,EAAM,SAAS7qC,CAAG,EACrB,MAAM,IAAI,UAAU,wBAAwB,EAG9C,OAAAu4C,EAAMv4C,CAAG,EAEF+3C,CACT,CC5MA,SAASS,GAAOp8C,EAAK,CACnB,MAAMq8C,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,IACR,EACD,OAAO,mBAAmBr8C,CAAG,EAAE,QAAQ,mBAAoB,SAAkByqC,EAAO,CAClF,OAAO4R,EAAQ5R,CAAK,CACxB,CAAG,CACH,CAUA,SAAS6R,GAAqBvS,EAAQj+C,EAAS,CAC7C,KAAK,OAAS,CAAE,EAEhBi+C,GAAU2R,GAAW3R,EAAQ,KAAMj+C,CAAO,CAC5C,CAEA,MAAM0qD,GAAY8F,GAAqB,UAEvC9F,GAAU,OAAS,SAAgBngD,EAAMxK,EAAO,CAC9C,KAAK,OAAO,KAAK,CAACwK,EAAMxK,CAAK,CAAC,CAChC,EAEA2qD,GAAU,SAAW,SAAkB+F,EAAS,CAC9C,MAAMC,EAAUD,EAAU,SAAS1wD,EAAO,CACxC,OAAO0wD,EAAQ,KAAK,KAAM1wD,EAAOuwD,EAAM,CAC3C,EAAMA,GAEJ,OAAO,KAAK,OAAO,IAAI,SAAcxD,EAAM,CACzC,OAAO4D,EAAQ5D,EAAK,CAAC,CAAC,EAAI,IAAM4D,EAAQ5D,EAAK,CAAC,CAAC,CACnD,EAAK,EAAE,EAAE,KAAK,GAAG,CACjB,EC1CA,SAASwD,GAAOpG,EAAK,CACnB,OAAO,mBAAmBA,CAAG,EAC3B,QAAQ,QAAS,GAAG,EACpB,QAAQ,OAAQ,GAAG,EACnB,QAAQ,QAAS,GAAG,EACpB,QAAQ,OAAQ,GAAG,EACnB,QAAQ,QAAS,GAAG,EACpB,QAAQ,QAAS,GAAG,CACxB,CAWe,SAASyG,GAAS3S,EAAKC,EAAQj+C,EAAS,CAErD,GAAI,CAACi+C,EACH,OAAOD,EAGT,MAAM0S,EAAU1wD,GAAWA,EAAQ,QAAUswD,GAEzC3N,EAAM,WAAW3iD,CAAO,IAC1BA,EAAU,CACR,UAAWA,CACZ,GAGH,MAAM4wD,EAAc5wD,GAAWA,EAAQ,UAEvC,IAAI6wD,EAUJ,GARID,EACFC,EAAmBD,EAAY3S,EAAQj+C,CAAO,EAE9C6wD,EAAmBlO,EAAM,kBAAkB1E,CAAM,EAC/CA,EAAO,SAAU,EACjB,IAAIuS,GAAqBvS,EAAQj+C,CAAO,EAAE,SAAS0wD,CAAO,EAG1DG,EAAkB,CACpB,MAAMC,EAAgB9S,EAAI,QAAQ,GAAG,EAEjC8S,IAAkB,KACpB9S,EAAMA,EAAI,MAAM,EAAG8S,CAAa,GAElC9S,IAAQA,EAAI,QAAQ,GAAG,IAAM,GAAK,IAAM,KAAO6S,CACnD,CAEE,OAAO7S,CACT,CChEA,MAAM+S,EAAmB,CACvB,aAAc,CACZ,KAAK,SAAW,CAAE,CACtB,CAUE,IAAIC,EAAWC,EAAUjxD,EAAS,CAChC,YAAK,SAAS,KAAK,CACjB,UAAAgxD,EACA,SAAAC,EACA,YAAajxD,EAAUA,EAAQ,YAAc,GAC7C,QAASA,EAAUA,EAAQ,QAAU,IAC3C,CAAK,EACM,KAAK,SAAS,OAAS,CAClC,CASE,MAAMyB,EAAI,CACJ,KAAK,SAASA,CAAE,IAClB,KAAK,SAASA,CAAE,EAAI,KAE1B,CAOE,OAAQ,CACF,KAAK,WACP,KAAK,SAAW,CAAE,EAExB,CAYE,QAAQtC,EAAI,CACVwjD,EAAM,QAAQ,KAAK,SAAU,SAAwBxxC,EAAG,CAClDA,IAAM,MACRhS,EAAGgS,CAAC,CAEZ,CAAK,CACL,CACA,CClEA,MAAe+/C,GAAA,CACb,kBAAmB,GACnB,kBAAmB,GACnB,oBAAqB,EACvB,ECHAC,GAAe,OAAO,gBAAoB,IAAc,gBAAkBX,GCD1EY,GAAe,OAAO,SAAa,IAAc,SAAW,KCA5DC,GAAe,OAAO,KAAS,IAAc,KAAO,KCErCC,GAAA,CACb,UAAW,GACX,QAAS,CACX,gBAAIC,GACJ,SAAIC,GACAC,KAAAA,EACD,EACD,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,MAAM,CAC5D,ECZMC,GAAgB,OAAO,OAAW,KAAe,OAAO,SAAa,IAErEC,GAAa,OAAO,WAAc,UAAY,WAAa,OAmB3DC,GAAwBF,KAC3B,CAACC,IAAc,CAAC,cAAe,eAAgB,IAAI,EAAE,QAAQA,GAAW,OAAO,EAAI,GAWhFE,GAEF,OAAO,kBAAsB,KAE7B,gBAAgB,mBAChB,OAAO,KAAK,eAAkB,WAI5B5P,GAASyP,IAAiB,OAAO,SAAS,MAAQ,oNCvCzCI,GAAA,CACb,GAAGnP,GACH,GAAGmP,EACL,ECAe,SAASC,GAAiBpgD,EAAM3R,EAAS,CACtD,OAAO4vD,GAAWj+C,EAAM,IAAImgD,GAAS,QAAQ,gBAAmB,OAAO,OAAO,CAC5E,QAAS,SAAS/xD,EAAOyC,EAAKqP,EAAMmgD,EAAS,CAC3C,OAAIF,GAAS,QAAUnP,EAAM,SAAS5iD,CAAK,GACzC,KAAK,OAAOyC,EAAKzC,EAAM,SAAS,QAAQ,CAAC,EAClC,IAGFiyD,EAAQ,eAAe,MAAM,KAAM,SAAS,CACzD,CACG,EAAEhyD,CAAO,CAAC,CACb,CCNA,SAASiyD,GAAc1nD,EAAM,CAK3B,OAAOo4C,EAAM,SAAS,gBAAiBp4C,CAAI,EAAE,IAAIo0C,GACxCA,EAAM,CAAC,IAAM,KAAO,GAAKA,EAAM,CAAC,GAAKA,EAAM,CAAC,CACpD,CACH,CASA,SAASuT,GAAczF,EAAK,CAC1B,MAAM30C,EAAM,CAAE,EACRzO,EAAO,OAAO,KAAKojD,CAAG,EAC5B,IAAIhpD,EACJ,MAAM/F,EAAM2L,EAAK,OACjB,IAAI7G,EACJ,IAAKiB,EAAI,EAAGA,EAAI/F,EAAK+F,IACnBjB,EAAM6G,EAAK5F,CAAC,EACZqU,EAAItV,CAAG,EAAIiqD,EAAIjqD,CAAG,EAEpB,OAAOsV,CACT,CASA,SAASq6C,GAAetC,EAAU,CAChC,SAASuC,EAAUvgD,EAAM9R,EAAO2J,EAAQ/C,EAAO,CAC7C,IAAI4D,EAAOsH,EAAKlL,GAAO,EAEvB,GAAI4D,IAAS,YAAa,MAAO,GAEjC,MAAM8nD,EAAe,OAAO,SAAS,CAAC9nD,CAAI,EACpC+nD,EAAS3rD,GAASkL,EAAK,OAG7B,OAFAtH,EAAO,CAACA,GAAQo4C,EAAM,QAAQj5C,CAAM,EAAIA,EAAO,OAASa,EAEpD+nD,GACE3P,EAAM,WAAWj5C,EAAQa,CAAI,EAC/Bb,EAAOa,CAAI,EAAI,CAACb,EAAOa,CAAI,EAAGxK,CAAK,EAEnC2J,EAAOa,CAAI,EAAIxK,EAGV,CAACsyD,KAGN,CAAC3oD,EAAOa,CAAI,GAAK,CAACo4C,EAAM,SAASj5C,EAAOa,CAAI,CAAC,KAC/Cb,EAAOa,CAAI,EAAI,CAAE,GAGJ6nD,EAAUvgD,EAAM9R,EAAO2J,EAAOa,CAAI,EAAG5D,CAAK,GAE3Cg8C,EAAM,QAAQj5C,EAAOa,CAAI,CAAC,IACtCb,EAAOa,CAAI,EAAI2nD,GAAcxoD,EAAOa,CAAI,CAAC,GAGpC,CAAC8nD,EACZ,CAEE,GAAI1P,EAAM,WAAWkN,CAAQ,GAAKlN,EAAM,WAAWkN,EAAS,OAAO,EAAG,CACpE,MAAM/3C,EAAM,CAAE,EAEd6qC,OAAAA,EAAM,aAAakN,EAAU,CAACtlD,EAAMxK,IAAU,CAC5CqyD,EAAUH,GAAc1nD,CAAI,EAAGxK,EAAO+X,EAAK,CAAC,CAClD,CAAK,EAEMA,CACX,CAEE,OAAO,IACT,CCxEA,SAASy6C,GAAgBC,EAAUC,EAAQhC,EAAS,CAClD,GAAI9N,EAAM,SAAS6P,CAAQ,EACzB,GAAI,CACF,OAACC,GAAU,KAAK,OAAOD,CAAQ,EACxB7P,EAAM,KAAK6P,CAAQ,CAC3B,OAAQxvD,EAAG,CACV,GAAIA,EAAE,OAAS,cACb,MAAMA,CAEd,CAGE,SAAmB,KAAK,WAAWwvD,CAAQ,CAC7C,CAEA,MAAME,GAAW,CAEf,aAAcxB,GAEd,QAAS,CAAC,MAAO,OAAQ,OAAO,EAEhC,iBAAkB,CAAC,SAA0Bv/C,EAAMghD,EAAS,CAC1D,MAAMC,EAAcD,EAAQ,eAAc,GAAM,GAC1CE,EAAqBD,EAAY,QAAQ,kBAAkB,EAAI,GAC/DE,EAAkBnQ,EAAM,SAAShxC,CAAI,EAQ3C,GANImhD,GAAmBnQ,EAAM,WAAWhxC,CAAI,IAC1CA,EAAO,IAAI,SAASA,CAAI,GAGPgxC,EAAM,WAAWhxC,CAAI,EAGtC,OAAOkhD,EAAqB,KAAK,UAAUV,GAAexgD,CAAI,CAAC,EAAIA,EAGrE,GAAIgxC,EAAM,cAAchxC,CAAI,GAC1BgxC,EAAM,SAAShxC,CAAI,GACnBgxC,EAAM,SAAShxC,CAAI,GACnBgxC,EAAM,OAAOhxC,CAAI,GACjBgxC,EAAM,OAAOhxC,CAAI,GACjBgxC,EAAM,iBAAiBhxC,CAAI,EAE3B,OAAOA,EAET,GAAIgxC,EAAM,kBAAkBhxC,CAAI,EAC9B,OAAOA,EAAK,OAEd,GAAIgxC,EAAM,kBAAkBhxC,CAAI,EAC9B,OAAAghD,EAAQ,eAAe,kDAAmD,EAAK,EACxEhhD,EAAK,SAAU,EAGxB,IAAIm5C,EAEJ,GAAIgI,EAAiB,CACnB,GAAIF,EAAY,QAAQ,mCAAmC,EAAI,GAC7D,OAAOb,GAAiBpgD,EAAM,KAAK,cAAc,EAAE,SAAU,EAG/D,IAAKm5C,EAAanI,EAAM,WAAWhxC,CAAI,IAAMihD,EAAY,QAAQ,qBAAqB,EAAI,GAAI,CAC5F,MAAMG,EAAY,KAAK,KAAO,KAAK,IAAI,SAEvC,OAAOnD,GACL9E,EAAa,CAAC,UAAWn5C,CAAI,EAAIA,EACjCohD,GAAa,IAAIA,EACjB,KAAK,cACN,CACT,CACA,CAEI,OAAID,GAAmBD,GACrBF,EAAQ,eAAe,mBAAoB,EAAK,EACzCJ,GAAgB5gD,CAAI,GAGtBA,CACX,CAAG,EAED,kBAAmB,CAAC,SAA2BA,EAAM,CACnD,MAAMqhD,EAAe,KAAK,cAAgBN,GAAS,aAC7CO,EAAoBD,GAAgBA,EAAa,kBACjDE,EAAgB,KAAK,eAAiB,OAE5C,GAAIvQ,EAAM,WAAWhxC,CAAI,GAAKgxC,EAAM,iBAAiBhxC,CAAI,EACvD,OAAOA,EAGT,GAAIA,GAAQgxC,EAAM,SAAShxC,CAAI,IAAOshD,GAAqB,CAAC,KAAK,cAAiBC,GAAgB,CAEhG,MAAMC,EAAoB,EADAH,GAAgBA,EAAa,oBACPE,EAEhD,GAAI,CACF,OAAO,KAAK,MAAMvhD,CAAI,CACvB,OAAQ3O,EAAG,CACV,GAAImwD,EACF,MAAInwD,EAAE,OAAS,cACPgsD,GAAW,KAAKhsD,EAAGgsD,GAAW,iBAAkB,KAAM,KAAM,KAAK,QAAQ,EAE3EhsD,CAEhB,CACA,CAEI,OAAO2O,CACX,CAAG,EAMD,QAAS,EAET,eAAgB,aAChB,eAAgB,eAEhB,iBAAkB,GAClB,cAAe,GAEf,IAAK,CACH,SAAUmgD,GAAS,QAAQ,SAC3B,KAAMA,GAAS,QAAQ,IACxB,EAED,eAAgB,SAAwBnxB,EAAQ,CAC9C,OAAOA,GAAU,KAAOA,EAAS,GAClC,EAED,QAAS,CACP,OAAQ,CACN,OAAU,oCACV,eAAgB,MACtB,CACA,CACA,EAEAgiB,EAAM,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,OAAO,EAAIyQ,GAAW,CAC3EV,GAAS,QAAQU,CAAM,EAAI,CAAE,CAC/B,CAAC,ECxJD,MAAMC,GAAoB1Q,EAAM,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,YAC5B,CAAC,EAgBD2Q,GAAeC,GAAc,CAC3B,MAAMC,EAAS,CAAE,EACjB,IAAIhxD,EACA0nD,EACA,EAEJ,OAAAqJ,GAAcA,EAAW,MAAM;AAAA,CAAI,EAAE,QAAQ,SAAgBE,EAAM,CACjE,EAAIA,EAAK,QAAQ,GAAG,EACpBjxD,EAAMixD,EAAK,UAAU,EAAG,CAAC,EAAE,KAAM,EAAC,YAAa,EAC/CvJ,EAAMuJ,EAAK,UAAU,EAAI,CAAC,EAAE,KAAM,EAE9B,GAACjxD,GAAQgxD,EAAOhxD,CAAG,GAAK6wD,GAAkB7wD,CAAG,KAI7CA,IAAQ,aACNgxD,EAAOhxD,CAAG,EACZgxD,EAAOhxD,CAAG,EAAE,KAAK0nD,CAAG,EAEpBsJ,EAAOhxD,CAAG,EAAI,CAAC0nD,CAAG,EAGpBsJ,EAAOhxD,CAAG,EAAIgxD,EAAOhxD,CAAG,EAAIgxD,EAAOhxD,CAAG,EAAI,KAAO0nD,EAAMA,EAE7D,CAAG,EAEMsJ,CACT,ECjDME,GAAa,OAAO,WAAW,EAErC,SAASC,GAAgBC,EAAQ,CAC/B,OAAOA,GAAU,OAAOA,CAAM,EAAE,KAAI,EAAG,YAAa,CACtD,CAEA,SAASC,GAAe9zD,EAAO,CAC7B,OAAIA,IAAU,IAASA,GAAS,KACvBA,EAGF4iD,EAAM,QAAQ5iD,CAAK,EAAIA,EAAM,IAAI8zD,EAAc,EAAI,OAAO9zD,CAAK,CACxE,CAEA,SAAS+zD,GAAY5/C,EAAK,CACxB,MAAM6/C,EAAS,OAAO,OAAO,IAAI,EAC3BC,EAAW,mCACjB,IAAIrV,EAEJ,KAAQA,EAAQqV,EAAS,KAAK9/C,CAAG,GAC/B6/C,EAAOpV,EAAM,CAAC,CAAC,EAAIA,EAAM,CAAC,EAG5B,OAAOoV,CACT,CAEA,MAAME,GAAqB//C,GAAQ,iCAAiC,KAAKA,EAAI,MAAM,EAEnF,SAASggD,GAAiBt2D,EAASmC,EAAO6zD,EAAQ3U,EAAQkV,EAAoB,CAC5E,GAAIxR,EAAM,WAAW1D,CAAM,EACzB,OAAOA,EAAO,KAAK,KAAMl/C,EAAO6zD,CAAM,EAOxC,GAJIO,IACFp0D,EAAQ6zD,GAGN,EAACjR,EAAM,SAAS5iD,CAAK,EAEzB,IAAI4iD,EAAM,SAAS1D,CAAM,EACvB,OAAOl/C,EAAM,QAAQk/C,CAAM,IAAM,GAGnC,GAAI0D,EAAM,SAAS1D,CAAM,EACvB,OAAOA,EAAO,KAAKl/C,CAAK,EAE5B,CAEA,SAASq0D,GAAaR,EAAQ,CAC5B,OAAOA,EAAO,KAAI,EACf,YAAW,EAAG,QAAQ,kBAAmB,CAACjjD,EAAG0jD,EAAMngD,IAC3CmgD,EAAK,YAAW,EAAKngD,CAC7B,CACL,CAEA,SAASogD,GAAex8C,EAAK87C,EAAQ,CACnC,MAAMW,EAAe5R,EAAM,YAAY,IAAMiR,CAAM,EAEnD,CAAC,MAAO,MAAO,KAAK,EAAE,QAAQY,GAAc,CAC1C,OAAO,eAAe18C,EAAK08C,EAAaD,EAAc,CACpD,MAAO,SAASE,EAAMC,EAAMC,EAAM,CAChC,OAAO,KAAKH,CAAU,EAAE,KAAK,KAAMZ,EAAQa,EAAMC,EAAMC,CAAI,CAC5D,EACD,aAAc,EACpB,CAAK,CACL,CAAG,CACH,CAEA,MAAMC,EAAa,CACjB,YAAYjC,EAAS,CACnBA,GAAW,KAAK,IAAIA,CAAO,CAC/B,CAEE,IAAIiB,EAAQiB,EAAgBC,EAAS,CACnC,MAAMC,EAAO,KAEb,SAASC,EAAUC,EAAQC,EAASC,EAAU,CAC5C,MAAMC,EAAUzB,GAAgBuB,CAAO,EAEvC,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,wCAAwC,EAG1D,MAAM5yD,EAAMmgD,EAAM,QAAQoS,EAAMK,CAAO,GAEpC,CAAC5yD,GAAOuyD,EAAKvyD,CAAG,IAAM,QAAa2yD,IAAa,IAASA,IAAa,QAAaJ,EAAKvyD,CAAG,IAAM,MAClGuyD,EAAKvyD,GAAO0yD,CAAO,EAAIrB,GAAeoB,CAAM,EAEpD,CAEI,MAAMI,EAAa,CAAC1C,EAASwC,IAC3BxS,EAAM,QAAQgQ,EAAS,CAACsC,EAAQC,IAAYF,EAAUC,EAAQC,EAASC,CAAQ,CAAC,EAElF,GAAIxS,EAAM,cAAciR,CAAM,GAAKA,aAAkB,KAAK,YACxDyB,EAAWzB,EAAQiB,CAAc,UACzBlS,EAAM,SAASiR,CAAM,IAAMA,EAASA,EAAO,SAAW,CAACK,GAAkBL,CAAM,EACvFyB,EAAW/B,GAAaM,CAAM,EAAGiB,CAAc,UACtClS,EAAM,UAAUiR,CAAM,EAC/B,SAAW,CAACpxD,EAAKzC,CAAK,IAAK6zD,EAAO,QAAO,EACvCoB,EAAUj1D,EAAOyC,EAAKsyD,CAAO,OAG/BlB,GAAU,MAAQoB,EAAUH,EAAgBjB,EAAQkB,CAAO,EAG7D,OAAO,IACX,CAEE,IAAIlB,EAAQnB,EAAQ,CAGlB,GAFAmB,EAASD,GAAgBC,CAAM,EAE3BA,EAAQ,CACV,MAAMpxD,EAAMmgD,EAAM,QAAQ,KAAMiR,CAAM,EAEtC,GAAIpxD,EAAK,CACP,MAAMzC,EAAQ,KAAKyC,CAAG,EAEtB,GAAI,CAACiwD,EACH,OAAO1yD,EAGT,GAAI0yD,IAAW,GACb,OAAOqB,GAAY/zD,CAAK,EAG1B,GAAI4iD,EAAM,WAAW8P,CAAM,EACzB,OAAOA,EAAO,KAAK,KAAM1yD,EAAOyC,CAAG,EAGrC,GAAImgD,EAAM,SAAS8P,CAAM,EACvB,OAAOA,EAAO,KAAK1yD,CAAK,EAG1B,MAAM,IAAI,UAAU,wCAAwC,CACpE,CACA,CACA,CAEE,IAAI6zD,EAAQ0B,EAAS,CAGnB,GAFA1B,EAASD,GAAgBC,CAAM,EAE3BA,EAAQ,CACV,MAAMpxD,EAAMmgD,EAAM,QAAQ,KAAMiR,CAAM,EAEtC,MAAO,CAAC,EAAEpxD,GAAO,KAAKA,CAAG,IAAM,SAAc,CAAC8yD,GAAWpB,GAAiB,KAAM,KAAK1xD,CAAG,EAAGA,EAAK8yD,CAAO,GAC7G,CAEI,MAAO,EACX,CAEE,OAAO1B,EAAQ0B,EAAS,CACtB,MAAMP,EAAO,KACb,IAAIQ,EAAU,GAEd,SAASC,EAAaN,EAAS,CAG7B,GAFAA,EAAUvB,GAAgBuB,CAAO,EAE7BA,EAAS,CACX,MAAM1yD,EAAMmgD,EAAM,QAAQoS,EAAMG,CAAO,EAEnC1yD,IAAQ,CAAC8yD,GAAWpB,GAAiBa,EAAMA,EAAKvyD,CAAG,EAAGA,EAAK8yD,CAAO,KACpE,OAAOP,EAAKvyD,CAAG,EAEf+yD,EAAU,GAEpB,CACA,CAEI,OAAI5S,EAAM,QAAQiR,CAAM,EACtBA,EAAO,QAAQ4B,CAAY,EAE3BA,EAAa5B,CAAM,EAGd2B,CACX,CAEE,MAAMD,EAAS,CACb,MAAMjsD,EAAO,OAAO,KAAK,IAAI,EAC7B,IAAI5F,EAAI4F,EAAK,OACTksD,EAAU,GAEd,KAAO9xD,KAAK,CACV,MAAMjB,EAAM6G,EAAK5F,CAAC,GACf,CAAC6xD,GAAWpB,GAAiB,KAAM,KAAK1xD,CAAG,EAAGA,EAAK8yD,EAAS,EAAI,KACjE,OAAO,KAAK9yD,CAAG,EACf+yD,EAAU,GAElB,CAEI,OAAOA,CACX,CAEE,UAAUE,EAAQ,CAChB,MAAMV,EAAO,KACPpC,EAAU,CAAE,EAElBhQ,OAAAA,EAAM,QAAQ,KAAM,CAAC5iD,EAAO6zD,IAAW,CACrC,MAAMpxD,EAAMmgD,EAAM,QAAQgQ,EAASiB,CAAM,EAEzC,GAAIpxD,EAAK,CACPuyD,EAAKvyD,CAAG,EAAIqxD,GAAe9zD,CAAK,EAChC,OAAOg1D,EAAKnB,CAAM,EAClB,MACR,CAEM,MAAMphD,EAAaijD,EAASrB,GAAaR,CAAM,EAAI,OAAOA,CAAM,EAAE,KAAM,EAEpEphD,IAAeohD,GACjB,OAAOmB,EAAKnB,CAAM,EAGpBmB,EAAKviD,CAAU,EAAIqhD,GAAe9zD,CAAK,EAEvC4yD,EAAQngD,CAAU,EAAI,EAC5B,CAAK,EAEM,IACX,CAEE,UAAUkjD,EAAS,CACjB,OAAO,KAAK,YAAY,OAAO,KAAM,GAAGA,CAAO,CACnD,CAEE,OAAOC,EAAW,CAChB,MAAM79C,EAAM,OAAO,OAAO,IAAI,EAE9B6qC,OAAAA,EAAM,QAAQ,KAAM,CAAC5iD,EAAO6zD,IAAW,CACrC7zD,GAAS,MAAQA,IAAU,KAAU+X,EAAI87C,CAAM,EAAI+B,GAAahT,EAAM,QAAQ5iD,CAAK,EAAIA,EAAM,KAAK,IAAI,EAAIA,EAChH,CAAK,EAEM+X,CACX,CAEE,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAO,OAAO,QAAQ,KAAK,OAAM,CAAE,EAAE,OAAO,QAAQ,EAAG,CAC3D,CAEE,UAAW,CACT,OAAO,OAAO,QAAQ,KAAK,OAAQ,CAAA,EAAE,IAAI,CAAC,CAAC87C,EAAQ7zD,CAAK,IAAM6zD,EAAS,KAAO7zD,CAAK,EAAE,KAAK;AAAA,CAAI,CAClG,CAEE,IAAK,OAAO,WAAW,GAAI,CACzB,MAAO,cACX,CAEE,OAAO,KAAK8pD,EAAO,CACjB,OAAOA,aAAiB,KAAOA,EAAQ,IAAI,KAAKA,CAAK,CACzD,CAEE,OAAO,OAAOhyB,KAAU69B,EAAS,CAC/B,MAAME,EAAW,IAAI,KAAK/9B,CAAK,EAE/B,OAAA69B,EAAQ,QAAShsD,GAAWksD,EAAS,IAAIlsD,CAAM,CAAC,EAEzCksD,CACX,CAEE,OAAO,SAAShC,EAAQ,CAKtB,MAAMiC,GAJY,KAAKnC,EAAU,EAAK,KAAKA,EAAU,EAAI,CACvD,UAAW,CAAA,CACjB,GAEgC,UACtBhJ,EAAY,KAAK,UAEvB,SAASoL,EAAeZ,EAAS,CAC/B,MAAME,EAAUzB,GAAgBuB,CAAO,EAElCW,EAAUT,CAAO,IACpBd,GAAe5J,EAAWwK,CAAO,EACjCW,EAAUT,CAAO,EAAI,GAE7B,CAEIzS,OAAAA,EAAM,QAAQiR,CAAM,EAAIA,EAAO,QAAQkC,CAAc,EAAIA,EAAelC,CAAM,EAEvE,IACX,CACA,CAEAgB,GAAa,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,eAAe,CAAC,EAGpHjS,EAAM,kBAAkBiS,GAAa,UAAW,CAAC,CAAC,MAAA70D,CAAK,EAAGyC,IAAQ,CAChE,IAAI+E,EAAS/E,EAAI,CAAC,EAAE,YAAW,EAAKA,EAAI,MAAM,CAAC,EAC/C,MAAO,CACL,IAAK,IAAMzC,EACX,IAAIg2D,EAAa,CACf,KAAKxuD,CAAM,EAAIwuD,CACrB,CACA,CACA,CAAC,EAEDpT,EAAM,cAAciS,EAAY,EC7RjB,SAASoB,GAAcC,EAAK/G,EAAU,CACnD,MAAM1J,EAAS,MAAQkN,GACjB90D,EAAUsxD,GAAY1J,EACtBmN,EAAUiC,GAAa,KAAKh3D,EAAQ,OAAO,EACjD,IAAI+T,EAAO/T,EAAQ,KAEnB+kD,OAAAA,EAAM,QAAQsT,EAAK,SAAmB92D,EAAI,CACxCwS,EAAOxS,EAAG,KAAKqmD,EAAQ7zC,EAAMghD,EAAQ,UAAS,EAAIzD,EAAWA,EAAS,OAAS,MAAS,CAC5F,CAAG,EAEDyD,EAAQ,UAAW,EAEZhhD,CACT,CCzBe,SAASukD,GAASn2D,EAAO,CACtC,MAAO,CAAC,EAAEA,GAASA,EAAM,WAC3B,CCUA,SAASo2D,GAActY,EAAS2H,EAAQyJ,EAAS,CAE/CD,GAAW,KAAK,KAAMnR,GAAkB,WAAsBmR,GAAW,aAAcxJ,EAAQyJ,CAAO,EACtG,KAAK,KAAO,eACd,CAEAtM,EAAM,SAASwT,GAAenH,GAAY,CACxC,WAAY,EACd,CAAC,ECTc,SAASoH,GAAOnnC,EAASonC,EAAQnH,EAAU,CACxD,MAAMoH,EAAiBpH,EAAS,OAAO,eACnC,CAACA,EAAS,QAAU,CAACoH,GAAkBA,EAAepH,EAAS,MAAM,EACvEjgC,EAAQigC,CAAQ,EAEhBmH,EAAO,IAAIrH,GACT,mCAAqCE,EAAS,OAC9C,CAACF,GAAW,gBAAiBA,GAAW,gBAAgB,EAAE,KAAK,MAAME,EAAS,OAAS,GAAG,EAAI,CAAC,EAC/FA,EAAS,OACTA,EAAS,QACTA,CACN,CAAK,CAEL,CCxBe,SAASqH,GAAcvY,EAAK,CACzC,MAAMW,EAAQ,4BAA4B,KAAKX,CAAG,EAClD,OAAOW,GAASA,EAAM,CAAC,GAAK,EAC9B,CCGA,SAAS6X,GAAYC,EAAcv5C,EAAK,CACtCu5C,EAAeA,GAAgB,GAC/B,MAAMC,EAAQ,IAAI,MAAMD,CAAY,EAC9BE,EAAa,IAAI,MAAMF,CAAY,EACzC,IAAIG,EAAO,EACPC,EAAO,EACPC,EAEJ,OAAA55C,EAAMA,IAAQ,OAAYA,EAAM,IAEzB,SAAc65C,EAAa,CAChC,MAAMriD,EAAM,KAAK,IAAK,EAEhBsiD,EAAYL,EAAWE,CAAI,EAE5BC,IACHA,EAAgBpiD,GAGlBgiD,EAAME,CAAI,EAAIG,EACdJ,EAAWC,CAAI,EAAIliD,EAEnB,IAAIjR,EAAIozD,EACJI,EAAa,EAEjB,KAAOxzD,IAAMmzD,GACXK,GAAcP,EAAMjzD,GAAG,EACvBA,EAAIA,EAAIgzD,EASV,GANAG,GAAQA,EAAO,GAAKH,EAEhBG,IAASC,IACXA,GAAQA,EAAO,GAAKJ,GAGlB/hD,EAAMoiD,EAAgB55C,EACxB,OAGF,MAAMg6C,EAASF,GAAatiD,EAAMsiD,EAElC,OAAOE,EAAS,KAAK,MAAMD,EAAa,IAAOC,CAAM,EAAI,MAC1D,CACH,CC9CA,SAASC,GAASh4D,EAAIi4D,EAAM,CAC1B,IAAIC,EAAY,EACZC,EAAY,IAAOF,EACnBG,EACAC,EAEJ,MAAMC,EAAS,CAACj+C,EAAM9E,EAAM,KAAK,IAAG,IAAO,CACzC2iD,EAAY3iD,EACZ6iD,EAAW,KACPC,IACF,aAAaA,CAAK,EAClBA,EAAQ,MAEVr4D,EAAG,MAAM,KAAMqa,CAAI,CACvB,EAoBE,MAAO,CAlBW,IAAIA,IAAS,CAC7B,MAAM9E,EAAM,KAAK,IAAK,EAChBwiD,EAASxiD,EAAM2iD,EAChBH,GAAUI,EACbG,EAAOj+C,EAAM9E,CAAG,GAEhB6iD,EAAW/9C,EACNg+C,IACHA,EAAQ,WAAW,IAAM,CACvBA,EAAQ,KACRC,EAAOF,CAAQ,CACzB,EAAWD,EAAYJ,CAAM,GAG7B,EAEgB,IAAMK,GAAYE,EAAOF,CAAQ,CAEvB,CAC1B,CCrCO,MAAMG,GAAuB,CAACr4D,EAAUs4D,EAAkBP,EAAO,IAAM,CAC5E,IAAIQ,EAAgB,EACpB,MAAMC,EAAerB,GAAY,GAAI,GAAG,EAExC,OAAOW,GAASn0D,GAAK,CACnB,MAAM80D,EAAS90D,EAAE,OACX+0D,EAAQ/0D,EAAE,iBAAmBA,EAAE,MAAQ,OACvCg1D,EAAgBF,EAASF,EACzBK,EAAOJ,EAAaG,CAAa,EACjCE,EAAUJ,GAAUC,EAE1BH,EAAgBE,EAEhB,MAAMnmD,EAAO,CACX,OAAAmmD,EACA,MAAAC,EACA,SAAUA,EAASD,EAASC,EAAS,OACrC,MAAOC,EACP,KAAMC,GAAc,OACpB,UAAWA,GAAQF,GAASG,GAAWH,EAAQD,GAAUG,EAAO,OAChE,MAAOj1D,EACP,iBAAkB+0D,GAAS,KAC3B,CAACJ,EAAmB,WAAa,QAAQ,EAAG,EAC7C,EAEDt4D,EAASsS,CAAI,CACd,EAAEylD,CAAI,CACT,EAEae,GAAyB,CAACJ,EAAOK,IAAc,CAC1D,MAAMC,EAAmBN,GAAS,KAElC,MAAO,CAAED,GAAWM,EAAU,CAAC,EAAE,CAC/B,iBAAAC,EACA,MAAAN,EACA,OAAAD,CACJ,CAAG,EAAGM,EAAU,CAAC,CAAC,CAClB,EAEaE,GAAkBn5D,GAAO,IAAIqa,IAASmpC,EAAM,KAAK,IAAMxjD,EAAG,GAAGqa,CAAI,CAAC,ECzC/E++C,GAAezG,GAAS,uBAAyB,CAAC7P,EAAQuW,IAAYxa,IACpEA,EAAM,IAAI,IAAIA,EAAK8T,GAAS,MAAM,EAGhC7P,EAAO,WAAajE,EAAI,UACxBiE,EAAO,OAASjE,EAAI,OACnBwa,GAAUvW,EAAO,OAASjE,EAAI,QAGjC,IAAI,IAAI8T,GAAS,MAAM,EACvBA,GAAS,WAAa,kBAAkB,KAAKA,GAAS,UAAU,SAAS,CAC3E,EAAI,IAAM,GCVK2G,GAAA3G,GAAS,sBAGtB,CACE,MAAMvnD,EAAMxK,EAAO24D,EAAS7mD,EAAM8mD,EAAQC,EAAQ,CAChD,MAAMC,EAAS,CAACtuD,EAAO,IAAM,mBAAmBxK,CAAK,CAAC,EAEtD4iD,EAAM,SAAS+V,CAAO,GAAKG,EAAO,KAAK,WAAa,IAAI,KAAKH,CAAO,EAAE,YAAW,CAAE,EAEnF/V,EAAM,SAAS9wC,CAAI,GAAKgnD,EAAO,KAAK,QAAUhnD,CAAI,EAElD8wC,EAAM,SAASgW,CAAM,GAAKE,EAAO,KAAK,UAAYF,CAAM,EAExDC,IAAW,IAAQC,EAAO,KAAK,QAAQ,EAEvC,SAAS,OAASA,EAAO,KAAK,IAAI,CACnC,EAED,KAAKtuD,EAAM,CACT,MAAMo0C,EAAQ,SAAS,OAAO,MAAM,IAAI,OAAO,aAAep0C,EAAO,WAAW,CAAC,EACjF,OAAQo0C,EAAQ,mBAAmBA,EAAM,CAAC,CAAC,EAAI,IAChD,EAED,OAAOp0C,EAAM,CACX,KAAK,MAAMA,EAAM,GAAI,KAAK,IAAK,EAAG,KAAQ,CAChD,CACA,EAKE,CACE,OAAQ,CAAE,EACV,MAAO,CACL,OAAO,IACR,EACD,QAAS,CAAA,CACV,EC/BY,SAASuuD,GAAc9a,EAAK,CAIzC,MAAO,8BAA8B,KAAKA,CAAG,CAC/C,CCJe,SAAS+a,GAAYC,EAASC,EAAa,CACxD,OAAOA,EACHD,EAAQ,QAAQ,SAAU,EAAE,EAAI,IAAMC,EAAY,QAAQ,OAAQ,EAAE,EACpED,CACN,CCCe,SAASE,GAAcF,EAASG,EAAcC,EAAmB,CAC9E,IAAIC,EAAgB,CAACP,GAAcK,CAAY,EAC/C,OAAIH,IAAYK,GAAiBD,GAAqB,IAC7CL,GAAYC,EAASG,CAAY,EAEnCA,CACT,CChBA,MAAMG,GAAmBzP,GAAUA,aAAiB+K,GAAe,CAAE,GAAG/K,CAAK,EAAKA,EAWnE,SAAS0P,GAAYC,EAASC,EAAS,CAEpDA,EAAUA,GAAW,CAAE,EACvB,MAAMjU,EAAS,CAAE,EAEjB,SAASkU,EAAehwD,EAAQrI,EAAQuL,EAAM++C,EAAU,CACtD,OAAIhJ,EAAM,cAAcj5C,CAAM,GAAKi5C,EAAM,cAActhD,CAAM,EACpDshD,EAAM,MAAM,KAAK,CAAC,SAAAgJ,CAAQ,EAAGjiD,EAAQrI,CAAM,EACzCshD,EAAM,cAActhD,CAAM,EAC5BshD,EAAM,MAAM,CAAE,EAAEthD,CAAM,EACpBshD,EAAM,QAAQthD,CAAM,EACtBA,EAAO,MAAO,EAEhBA,CACX,CAGE,SAASs4D,EAAoB57D,EAAGC,EAAG4O,EAAO++C,EAAU,CAClD,GAAKhJ,EAAM,YAAY3kD,CAAC,GAEjB,GAAI,CAAC2kD,EAAM,YAAY5kD,CAAC,EAC7B,OAAO27D,EAAe,OAAW37D,EAAG6O,EAAO++C,CAAQ,MAFnD,QAAO+N,EAAe37D,EAAGC,EAAG4O,EAAO++C,CAAQ,CAIjD,CAGE,SAASiO,EAAiB77D,EAAGC,EAAG,CAC9B,GAAI,CAAC2kD,EAAM,YAAY3kD,CAAC,EACtB,OAAO07D,EAAe,OAAW17D,CAAC,CAExC,CAGE,SAAS67D,EAAiB97D,EAAGC,EAAG,CAC9B,GAAK2kD,EAAM,YAAY3kD,CAAC,GAEjB,GAAI,CAAC2kD,EAAM,YAAY5kD,CAAC,EAC7B,OAAO27D,EAAe,OAAW37D,CAAC,MAFlC,QAAO27D,EAAe,OAAW17D,CAAC,CAIxC,CAGE,SAAS87D,EAAgB/7D,EAAGC,EAAG4O,EAAM,CACnC,GAAIA,KAAQ6sD,EACV,OAAOC,EAAe37D,EAAGC,CAAC,EACrB,GAAI4O,KAAQ4sD,EACjB,OAAOE,EAAe,OAAW37D,CAAC,CAExC,CAEE,MAAMg8D,EAAW,CACf,IAAKH,EACL,OAAQA,EACR,KAAMA,EACN,QAASC,EACT,iBAAkBA,EAClB,kBAAmBA,EACnB,iBAAkBA,EAClB,QAASA,EACT,eAAgBA,EAChB,gBAAiBA,EACjB,cAAeA,EACf,QAASA,EACT,aAAcA,EACd,eAAgBA,EAChB,eAAgBA,EAChB,iBAAkBA,EAClB,mBAAoBA,EACpB,WAAYA,EACZ,iBAAkBA,EAClB,cAAeA,EACf,eAAgBA,EAChB,UAAWA,EACX,UAAWA,EACX,WAAYA,EACZ,YAAaA,EACb,WAAYA,EACZ,iBAAkBA,EAClB,eAAgBC,EAChB,QAAS,CAAC/7D,EAAGC,EAAI4O,IAAS+sD,EAAoBL,GAAgBv7D,CAAC,EAAGu7D,GAAgBt7D,CAAC,EAAE4O,EAAM,EAAI,CAChG,EAED+1C,OAAAA,EAAM,QAAQ,OAAO,KAAK,OAAO,OAAO,GAAI6W,EAASC,CAAO,CAAC,EAAG,SAA4B7sD,EAAM,CAChG,MAAMwN,EAAQ2/C,EAASntD,CAAI,GAAK+sD,EAC1BK,EAAc5/C,EAAMo/C,EAAQ5sD,CAAI,EAAG6sD,EAAQ7sD,CAAI,EAAGA,CAAI,EAC3D+1C,EAAM,YAAYqX,CAAW,GAAK5/C,IAAU0/C,IAAqBtU,EAAO54C,CAAI,EAAIotD,EACrF,CAAG,EAEMxU,CACT,CChGA,MAAeyU,GAACzU,GAAW,CACzB,MAAM0U,EAAYX,GAAY,CAAE,EAAE/T,CAAM,EAExC,GAAI,CAAC,KAAA7zC,EAAM,cAAAwoD,EAAe,eAAAC,EAAgB,eAAAC,EAAgB,QAAA1H,EAAS,KAAA2H,CAAI,EAAIJ,EAE3EA,EAAU,QAAUvH,EAAUiC,GAAa,KAAKjC,CAAO,EAEvDuH,EAAU,IAAMvJ,GAASuI,GAAcgB,EAAU,QAASA,EAAU,IAAKA,EAAU,iBAAiB,EAAG1U,EAAO,OAAQA,EAAO,gBAAgB,EAGzI8U,GACF3H,EAAQ,IAAI,gBAAiB,SAC3B,MAAM2H,EAAK,UAAY,IAAM,KAAOA,EAAK,SAAW,SAAS,mBAAmBA,EAAK,QAAQ,CAAC,EAAI,GAAG,CACtG,EAGH,IAAI1H,EAEJ,GAAIjQ,EAAM,WAAWhxC,CAAI,GACvB,GAAImgD,GAAS,uBAAyBA,GAAS,+BAC7Ca,EAAQ,eAAe,MAAS,WACtBC,EAAcD,EAAQ,eAAc,KAAQ,GAAO,CAE7D,KAAM,CAACx9C,EAAM,GAAG4+C,CAAM,EAAInB,EAAcA,EAAY,MAAM,GAAG,EAAE,IAAIjE,GAASA,EAAM,KAAI,CAAE,EAAE,OAAO,OAAO,EAAI,CAAE,EAC9GgE,EAAQ,eAAe,CAACx9C,GAAQ,sBAAuB,GAAG4+C,CAAM,EAAE,KAAK,IAAI,CAAC,CAClF,EAOE,GAAIjC,GAAS,wBACXqI,GAAiBxX,EAAM,WAAWwX,CAAa,IAAMA,EAAgBA,EAAcD,CAAS,GAExFC,GAAkBA,IAAkB,IAAS5B,GAAgB2B,EAAU,GAAG,GAAI,CAEhF,MAAMK,EAAYH,GAAkBC,GAAkB5B,GAAQ,KAAK4B,CAAc,EAE7EE,GACF5H,EAAQ,IAAIyH,EAAgBG,CAAS,CAE7C,CAGE,OAAOL,CACT,EC5CMM,GAAwB,OAAO,eAAmB,IAExDC,GAAeD,IAAyB,SAAUhV,EAAQ,CACxD,OAAO,IAAI,QAAQ,SAA4Bv2B,EAASonC,EAAQ,CAC9D,MAAMqE,EAAUT,GAAczU,CAAM,EACpC,IAAImV,EAAcD,EAAQ,KAC1B,MAAME,EAAiBhG,GAAa,KAAK8F,EAAQ,OAAO,EAAE,UAAW,EACrE,GAAI,CAAC,aAAAG,EAAc,iBAAAC,EAAkB,mBAAAC,CAAkB,EAAIL,EACvDM,EACAC,EAAiBC,EACjBC,EAAaC,EAEjB,SAASC,GAAO,CACdF,GAAeA,EAAW,EAC1BC,GAAiBA,EAAa,EAE9BV,EAAQ,aAAeA,EAAQ,YAAY,YAAYM,CAAU,EAEjEN,EAAQ,QAAUA,EAAQ,OAAO,oBAAoB,QAASM,CAAU,CAC9E,CAEI,IAAI/L,EAAU,IAAI,eAElBA,EAAQ,KAAKyL,EAAQ,OAAO,YAAW,EAAIA,EAAQ,IAAK,EAAI,EAG5DzL,EAAQ,QAAUyL,EAAQ,QAE1B,SAASY,GAAY,CACnB,GAAI,CAACrM,EACH,OAGF,MAAMsM,EAAkB3G,GAAa,KACnC,0BAA2B3F,GAAWA,EAAQ,sBAAqB,CACpE,EAGKC,EAAW,CACf,KAHmB,CAAC2L,GAAgBA,IAAiB,QAAUA,IAAiB,OAChF5L,EAAQ,aAAeA,EAAQ,SAG/B,OAAQA,EAAQ,OAChB,WAAYA,EAAQ,WACpB,QAASsM,EACT,OAAA/V,EACA,QAAAyJ,CACD,EAEDmH,GAAO,SAAkBr2D,EAAO,CAC9BkvB,EAAQlvB,CAAK,EACbs7D,EAAM,CACd,EAAS,SAAiB34D,EAAK,CACvB2zD,EAAO3zD,CAAG,EACV24D,EAAM,CACP,EAAEnM,CAAQ,EAGXD,EAAU,IAChB,CAEQ,cAAeA,EAEjBA,EAAQ,UAAYqM,EAGpBrM,EAAQ,mBAAqB,UAAsB,CAC7C,CAACA,GAAWA,EAAQ,aAAe,GAQnCA,EAAQ,SAAW,GAAK,EAAEA,EAAQ,aAAeA,EAAQ,YAAY,QAAQ,OAAO,IAAM,IAK9F,WAAWqM,CAAS,CACrB,EAIHrM,EAAQ,QAAU,UAAuB,CAClCA,IAILoH,EAAO,IAAIrH,GAAW,kBAAmBA,GAAW,aAAcxJ,EAAQyJ,CAAO,CAAC,EAGlFA,EAAU,KACX,EAGDA,EAAQ,QAAU,UAAuB,CAGvCoH,EAAO,IAAIrH,GAAW,gBAAiBA,GAAW,YAAaxJ,EAAQyJ,CAAO,CAAC,EAG/EA,EAAU,IACX,EAGDA,EAAQ,UAAY,UAAyB,CAC3C,IAAIuM,EAAsBd,EAAQ,QAAU,cAAgBA,EAAQ,QAAU,cAAgB,mBAC9F,MAAM1H,EAAe0H,EAAQ,cAAgBxJ,GACzCwJ,EAAQ,sBACVc,EAAsBd,EAAQ,qBAEhCrE,EAAO,IAAIrH,GACTwM,EACAxI,EAAa,oBAAsBhE,GAAW,UAAYA,GAAW,aACrExJ,EACAyJ,CAAO,CAAC,EAGVA,EAAU,IACX,EAGD0L,IAAgB,QAAaC,EAAe,eAAe,IAAI,EAG3D,qBAAsB3L,GACxBtM,EAAM,QAAQiY,EAAe,OAAQ,EAAE,SAA0B1Q,EAAK1nD,EAAK,CACzEysD,EAAQ,iBAAiBzsD,EAAK0nD,CAAG,CACzC,CAAO,EAIEvH,EAAM,YAAY+X,EAAQ,eAAe,IAC5CzL,EAAQ,gBAAkB,CAAC,CAACyL,EAAQ,iBAIlCG,GAAgBA,IAAiB,SACnC5L,EAAQ,aAAeyL,EAAQ,cAI7BK,IACD,CAACG,EAAmBE,CAAa,EAAI1D,GAAqBqD,EAAoB,EAAI,EACnF9L,EAAQ,iBAAiB,WAAYiM,CAAiB,GAIpDJ,GAAoB7L,EAAQ,SAC7B,CAACgM,EAAiBE,CAAW,EAAIzD,GAAqBoD,CAAgB,EAEvE7L,EAAQ,OAAO,iBAAiB,WAAYgM,CAAe,EAE3DhM,EAAQ,OAAO,iBAAiB,UAAWkM,CAAW,IAGpDT,EAAQ,aAAeA,EAAQ,UAGjCM,EAAa74B,GAAU,CAChB8sB,IAGLoH,EAAO,CAACl0B,GAAUA,EAAO,KAAO,IAAIg0B,GAAc,KAAM3Q,EAAQyJ,CAAO,EAAI9sB,CAAM,EACjF8sB,EAAQ,MAAO,EACfA,EAAU,KACX,EAEDyL,EAAQ,aAAeA,EAAQ,YAAY,UAAUM,CAAU,EAC3DN,EAAQ,SACVA,EAAQ,OAAO,QAAUM,EAAY,EAAGN,EAAQ,OAAO,iBAAiB,QAASM,CAAU,IAI/F,MAAMS,EAAWlF,GAAcmE,EAAQ,GAAG,EAE1C,GAAIe,GAAY3J,GAAS,UAAU,QAAQ2J,CAAQ,IAAM,GAAI,CAC3DpF,EAAO,IAAIrH,GAAW,wBAA0ByM,EAAW,IAAKzM,GAAW,gBAAiBxJ,CAAM,CAAC,EACnG,MACN,CAIIyJ,EAAQ,KAAK0L,GAAe,IAAI,CACpC,CAAG,CACH,EChMMe,GAAiB,CAACC,EAASp6B,IAAY,CAC3C,KAAM,CAAC,OAAAr4B,CAAM,EAAKyyD,EAAUA,EAAUA,EAAQ,OAAO,OAAO,EAAI,GAEhE,GAAIp6B,GAAWr4B,EAAQ,CACrB,IAAI0yD,EAAa,IAAI,gBAEjBC,EAEJ,MAAMC,EAAU,SAAUC,EAAQ,CAChC,GAAI,CAACF,EAAS,CACZA,EAAU,GACVG,EAAa,EACb,MAAMt5D,EAAMq5D,aAAkB,MAAQA,EAAS,KAAK,OACpDH,EAAW,MAAMl5D,aAAessD,GAAatsD,EAAM,IAAIyzD,GAAczzD,aAAe,MAAQA,EAAI,QAAUA,CAAG,CAAC,CACtH,CACA,EAEI,IAAI80D,EAAQj2B,GAAW,WAAW,IAAM,CACtCi2B,EAAQ,KACRsE,EAAQ,IAAI9M,GAAW,WAAWztB,CAAO,kBAAmBytB,GAAW,SAAS,CAAC,CACvF,EAAOztB,CAAO,EAEV,MAAMy6B,EAAc,IAAM,CACpBL,IACFnE,GAAS,aAAaA,CAAK,EAC3BA,EAAQ,KACRmE,EAAQ,QAAQlW,GAAU,CACxBA,EAAO,YAAcA,EAAO,YAAYqW,CAAO,EAAIrW,EAAO,oBAAoB,QAASqW,CAAO,CACxG,CAAS,EACDH,EAAU,KAElB,EAEIA,EAAQ,QAASlW,GAAWA,EAAO,iBAAiB,QAASqW,CAAO,CAAC,EAErE,KAAM,CAAC,OAAArW,CAAM,EAAImW,EAEjB,OAAAnW,EAAO,YAAc,IAAM9C,EAAM,KAAKqZ,CAAW,EAE1CvW,CACX,CACA,EC5CawW,GAAc,UAAWC,EAAOC,EAAW,CACtD,IAAIz+D,EAAMw+D,EAAM,WAEhB,GAAkBx+D,EAAMy+D,EAAW,CACjC,MAAMD,EACN,MACJ,CAEE,IAAIE,EAAM,EACNj0D,EAEJ,KAAOi0D,EAAM1+D,GACXyK,EAAMi0D,EAAMD,EACZ,MAAMD,EAAM,MAAME,EAAKj0D,CAAG,EAC1Bi0D,EAAMj0D,CAEV,EAEak0D,GAAY,gBAAiBC,EAAUH,EAAW,CAC7D,gBAAiBD,KAASK,GAAWD,CAAQ,EAC3C,MAAOL,GAAYC,EAAOC,CAAS,CAEvC,EAEMI,GAAa,gBAAiBC,EAAQ,CAC1C,GAAIA,EAAO,OAAO,aAAa,EAAG,CAChC,MAAOA,EACP,MACJ,CAEE,MAAMC,EAASD,EAAO,UAAW,EACjC,GAAI,CACF,OAAS,CACP,KAAM,CAAC,KAAAnB,EAAM,MAAAt7D,CAAK,EAAI,MAAM08D,EAAO,KAAM,EACzC,GAAIpB,EACF,MAEF,MAAMt7D,CACZ,CACA,QAAY,CACR,MAAM08D,EAAO,OAAQ,CACzB,CACA,EAEaC,GAAc,CAACF,EAAQL,EAAWQ,EAAYC,IAAa,CACtE,MAAM/P,EAAWwP,GAAUG,EAAQL,CAAS,EAE5C,IAAIzF,EAAQ,EACR2E,EACAwB,EAAa75D,GAAM,CAChBq4D,IACHA,EAAO,GACPuB,GAAYA,EAAS55D,CAAC,EAE5B,EAEE,OAAO,IAAI,eAAe,CACxB,MAAM,KAAK44D,EAAY,CACrB,GAAI,CACF,KAAM,CAAC,KAAAP,EAAM,MAAAt7D,CAAK,EAAI,MAAM8sD,EAAS,KAAM,EAE3C,GAAIwO,EAAM,CACTwB,EAAW,EACVjB,EAAW,MAAO,EAClB,MACV,CAEQ,IAAIl+D,EAAMqC,EAAM,WAChB,GAAI48D,EAAY,CACd,IAAIG,EAAcpG,GAASh5D,EAC3Bi/D,EAAWG,CAAW,CAChC,CACQlB,EAAW,QAAQ,IAAI,WAAW77D,CAAK,CAAC,CACzC,OAAQ2C,EAAK,CACZ,MAAAm6D,EAAUn6D,CAAG,EACPA,CACd,CACK,EACD,OAAOq5D,EAAQ,CACb,OAAAc,EAAUd,CAAM,EACTlP,EAAS,OAAQ,CAC9B,CACA,EAAK,CACD,cAAe,CAChB,CAAA,CACH,EC5EMkQ,GAAmB,OAAO,OAAU,YAAc,OAAO,SAAY,YAAc,OAAO,UAAa,WACvGC,GAA4BD,IAAoB,OAAO,gBAAmB,WAG1EE,GAAaF,KAAqB,OAAO,aAAgB,YACzDtM,GAAav8C,GAAQu8C,EAAQ,OAAOv8C,CAAG,GAAG,IAAI,WAAa,EAC7D,MAAOA,GAAQ,IAAI,WAAW,MAAM,IAAI,SAASA,CAAG,EAAE,YAAa,CAAA,GAGjE0jB,GAAO,CAACz4B,KAAOqa,IAAS,CAC5B,GAAI,CACF,MAAO,CAAC,CAACra,EAAG,GAAGqa,CAAI,CACpB,MAAW,CACV,MAAO,EACX,CACA,EAEM0jD,GAAwBF,IAA6BplC,GAAK,IAAM,CACpE,IAAIulC,EAAiB,GAErB,MAAMC,EAAiB,IAAI,QAAQtL,GAAS,OAAQ,CAClD,KAAM,IAAI,eACV,OAAQ,OACR,IAAI,QAAS,CACX,OAAAqL,EAAiB,GACV,MACR,CACL,CAAG,EAAE,QAAQ,IAAI,cAAc,EAE7B,OAAOA,GAAkB,CAACC,CAC5B,CAAC,EAEKC,GAAqB,GAAK,KAE1BC,GAAyBN,IAC7BplC,GAAK,IAAM+qB,EAAM,iBAAiB,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,EAGpD4a,GAAY,CAChB,OAAQD,KAA4B/4D,GAAQA,EAAI,KAClD,EAEAw4D,KAAuBx4D,GAAQ,CAC7B,CAAC,OAAQ,cAAe,OAAQ,WAAY,QAAQ,EAAE,QAAQ4Q,GAAQ,CACpE,CAACooD,GAAUpoD,CAAI,IAAMooD,GAAUpoD,CAAI,EAAIwtC,EAAM,WAAWp+C,EAAI4Q,CAAI,CAAC,EAAK5Q,GAAQA,EAAI4Q,CAAI,EAAG,EACvF,CAACtM,EAAG28C,IAAW,CACb,MAAM,IAAIwJ,GAAW,kBAAkB75C,CAAI,qBAAsB65C,GAAW,gBAAiBxJ,CAAM,CACpG,EACP,CAAG,CACH,GAAG,IAAI,QAAQ,EAEf,MAAMgY,GAAgB,MAAO54C,GAAS,CACpC,GAAIA,GAAQ,KACV,MAAO,GAGT,GAAG+9B,EAAM,OAAO/9B,CAAI,EAClB,OAAOA,EAAK,KAGd,GAAG+9B,EAAM,oBAAoB/9B,CAAI,EAK/B,OAAQ,MAJS,IAAI,QAAQktC,GAAS,OAAQ,CAC5C,OAAQ,OACR,KAAAltC,CACN,CAAK,EACsB,YAAW,GAAI,WAGxC,GAAG+9B,EAAM,kBAAkB/9B,CAAI,GAAK+9B,EAAM,cAAc/9B,CAAI,EAC1D,OAAOA,EAAK,WAOd,GAJG+9B,EAAM,kBAAkB/9B,CAAI,IAC7BA,EAAOA,EAAO,IAGb+9B,EAAM,SAAS/9B,CAAI,EACpB,OAAQ,MAAMq4C,GAAWr4C,CAAI,GAAG,UAEpC,EAEM64C,GAAoB,MAAO9K,EAAS/tC,IAAS,CACjD,MAAM1b,EAASy5C,EAAM,eAAegQ,EAAQ,iBAAgB,CAAE,EAE9D,OAAOzpD,GAAiBs0D,GAAc54C,CAAI,CAC5C,EAEA84C,GAAeX,KAAqB,MAAOvX,GAAW,CACpD,GAAI,CACF,IAAAxH,EACA,OAAAoV,EACA,KAAAzhD,EACA,OAAA8zC,EACA,YAAAkY,EACA,QAAAp8B,EACA,mBAAAw5B,EACA,iBAAAD,EACA,aAAAD,EACA,QAAAlI,EACA,gBAAAiL,EAAkB,cAClB,aAAAC,CACJ,EAAM5D,GAAczU,CAAM,EAExBqV,EAAeA,GAAgBA,EAAe,IAAI,YAAa,EAAG,OAElE,IAAIiD,EAAiBpC,GAAe,CAACjW,EAAQkY,GAAeA,EAAY,eAAe,EAAGp8B,CAAO,EAE7F0tB,EAEJ,MAAM+M,EAAc8B,GAAkBA,EAAe,cAAgB,IAAM,CACvEA,EAAe,YAAa,CAClC,GAEE,IAAIC,EAEJ,GAAI,CACF,GACEjD,GAAoBoC,IAAyB9J,IAAW,OAASA,IAAW,SAC3E2K,EAAuB,MAAMN,GAAkB9K,EAAShhD,CAAI,KAAO,EACpE,CACA,IAAIqsD,EAAW,IAAI,QAAQhgB,EAAK,CAC9B,OAAQ,OACR,KAAMrsC,EACN,OAAQ,MAChB,CAAO,EAEGssD,EAMJ,GAJItb,EAAM,WAAWhxC,CAAI,IAAMssD,EAAoBD,EAAS,QAAQ,IAAI,cAAc,IACpFrL,EAAQ,eAAesL,CAAiB,EAGtCD,EAAS,KAAM,CACjB,KAAM,CAACrB,EAAYuB,CAAK,EAAI/F,GAC1B4F,EACArG,GAAqBY,GAAewC,CAAgB,CAAC,CACtD,EAEDnpD,EAAO+qD,GAAYsB,EAAS,KAAMX,GAAoBV,EAAYuB,CAAK,CAC/E,CACA,CAESvb,EAAM,SAASib,CAAe,IACjCA,EAAkBA,EAAkB,UAAY,QAKlD,MAAMO,EAAyB,gBAAiB,QAAQ,UACxDlP,EAAU,IAAI,QAAQjR,EAAK,CACzB,GAAG6f,EACH,OAAQC,EACR,OAAQ1K,EAAO,YAAa,EAC5B,QAAST,EAAQ,UAAW,EAAC,OAAQ,EACrC,KAAMhhD,EACN,OAAQ,OACR,YAAawsD,EAAyBP,EAAkB,MAC9D,CAAK,EAED,IAAI1O,EAAW,MAAM,MAAMD,CAAO,EAElC,MAAMmP,EAAmBd,KAA2BzC,IAAiB,UAAYA,IAAiB,YAElG,GAAIyC,KAA2BvC,GAAuBqD,GAAoBpC,GAAe,CACvF,MAAMh8D,EAAU,CAAE,EAElB,CAAC,SAAU,aAAc,SAAS,EAAE,QAAQ4M,GAAQ,CAClD5M,EAAQ4M,CAAI,EAAIsiD,EAAStiD,CAAI,CACrC,CAAO,EAED,MAAMyxD,EAAwB1b,EAAM,eAAeuM,EAAS,QAAQ,IAAI,gBAAgB,CAAC,EAEnF,CAACyN,EAAYuB,CAAK,EAAInD,GAAsB5C,GAChDkG,EACA3G,GAAqBY,GAAeyC,CAAkB,EAAG,EAAI,CACrE,GAAW,CAAE,EAEP7L,EAAW,IAAI,SACbwN,GAAYxN,EAAS,KAAMmO,GAAoBV,EAAY,IAAM,CAC/DuB,GAASA,EAAO,EAChBlC,GAAeA,EAAa,CACtC,CAAS,EACDh8D,CACD,CACP,CAEI66D,EAAeA,GAAgB,OAE/B,IAAIyD,EAAe,MAAMf,GAAU5a,EAAM,QAAQ4a,GAAW1C,CAAY,GAAK,MAAM,EAAE3L,EAAU1J,CAAM,EAErG,OAAC4Y,GAAoBpC,GAAeA,EAAa,EAE1C,MAAM,IAAI,QAAQ,CAAC/sC,EAASonC,IAAW,CAC5CD,GAAOnnC,EAASonC,EAAQ,CACtB,KAAMiI,EACN,QAAS1J,GAAa,KAAK1F,EAAS,OAAO,EAC3C,OAAQA,EAAS,OACjB,WAAYA,EAAS,WACrB,OAAA1J,EACA,QAAAyJ,CACD,CAAA,CACF,CAAA,CACF,OAAQvsD,EAAK,CAGZ,MAFAs5D,GAAeA,EAAa,EAExBt5D,GAAOA,EAAI,OAAS,aAAe,SAAS,KAAKA,EAAI,OAAO,EACxD,OAAO,OACX,IAAIssD,GAAW,gBAAiBA,GAAW,YAAaxJ,EAAQyJ,CAAO,EACvE,CACE,MAAOvsD,EAAI,OAASA,CAC9B,CACA,EAGUssD,GAAW,KAAKtsD,EAAKA,GAAOA,EAAI,KAAM8iD,EAAQyJ,CAAO,CAC/D,CACA,GC5NMsP,GAAgB,CACpB,KAAMlP,GACN,IAAKoL,GACL,MAAOiD,EACT,EAEA/a,EAAM,QAAQ4b,GAAe,CAACp/D,EAAIY,IAAU,CAC1C,GAAIZ,EAAI,CACN,GAAI,CACF,OAAO,eAAeA,EAAI,OAAQ,CAAC,MAAAY,CAAK,CAAC,CAC1C,MAAW,CAEhB,CACI,OAAO,eAAeZ,EAAI,cAAe,CAAC,MAAAY,CAAK,CAAC,CACpD,CACA,CAAC,EAED,MAAMy+D,GAAgBzC,GAAW,KAAKA,CAAM,GAEtC0C,GAAoBC,GAAY/b,EAAM,WAAW+b,CAAO,GAAKA,IAAY,MAAQA,IAAY,GAEpFC,GAAA,CACb,WAAaC,GAAa,CACxBA,EAAWjc,EAAM,QAAQic,CAAQ,EAAIA,EAAW,CAACA,CAAQ,EAEzD,KAAM,CAAC,OAAA11D,CAAM,EAAI01D,EACjB,IAAIC,EACAH,EAEJ,MAAMI,EAAkB,CAAE,EAE1B,QAASr7D,EAAI,EAAGA,EAAIyF,EAAQzF,IAAK,CAC/Bo7D,EAAgBD,EAASn7D,CAAC,EAC1B,IAAIhC,EAIJ,GAFAi9D,EAAUG,EAEN,CAACJ,GAAiBI,CAAa,IACjCH,EAAUH,IAAe98D,EAAK,OAAOo9D,CAAa,GAAG,aAAa,EAE9DH,IAAY,QACd,MAAM,IAAI1P,GAAW,oBAAoBvtD,CAAE,GAAG,EAIlD,GAAIi9D,EACF,MAGFI,EAAgBr9D,GAAM,IAAMgC,CAAC,EAAIi7D,CACvC,CAEI,GAAI,CAACA,EAAS,CAEZ,MAAMK,EAAU,OAAO,QAAQD,CAAe,EAC3C,IAAI,CAAC,CAACr9D,EAAIW,CAAK,IAAM,WAAWX,CAAE,KAChCW,IAAU,GAAQ,sCAAwC,gCAC5D,EAEH,IAAInC,EAAIiJ,EACL61D,EAAQ,OAAS,EAAI;AAAA,EAAcA,EAAQ,IAAIP,EAAY,EAAE,KAAK;AAAA,CAAI,EAAI,IAAMA,GAAaO,EAAQ,CAAC,CAAC,EACxG,0BAEF,MAAM,IAAI/P,GACR,wDAA0D/uD,EAC1D,iBACD,CACP,CAEI,OAAOy+D,CACR,EACD,SAAUH,EACZ,EC9DA,SAASS,GAA6BxZ,EAAQ,CAK5C,GAJIA,EAAO,aACTA,EAAO,YAAY,iBAAkB,EAGnCA,EAAO,QAAUA,EAAO,OAAO,QACjC,MAAM,IAAI2Q,GAAc,KAAM3Q,CAAM,CAExC,CASe,SAASyZ,GAAgBzZ,EAAQ,CAC9C,OAAAwZ,GAA6BxZ,CAAM,EAEnCA,EAAO,QAAUoP,GAAa,KAAKpP,EAAO,OAAO,EAGjDA,EAAO,KAAOwQ,GAAc,KAC1BxQ,EACAA,EAAO,gBACR,EAEG,CAAC,OAAQ,MAAO,OAAO,EAAE,QAAQA,EAAO,MAAM,IAAM,IACtDA,EAAO,QAAQ,eAAe,oCAAqC,EAAK,EAG1DoZ,GAAS,WAAWpZ,EAAO,SAAWkN,GAAS,OAAO,EAEvDlN,CAAM,EAAE,KAAK,SAA6B0J,EAAU,CACjE,OAAA8P,GAA6BxZ,CAAM,EAGnC0J,EAAS,KAAO8G,GAAc,KAC5BxQ,EACAA,EAAO,kBACP0J,CACD,EAEDA,EAAS,QAAU0F,GAAa,KAAK1F,EAAS,OAAO,EAE9CA,CACX,EAAK,SAA4B6M,EAAQ,CACrC,OAAK7F,GAAS6F,CAAM,IAClBiD,GAA6BxZ,CAAM,EAG/BuW,GAAUA,EAAO,WACnBA,EAAO,SAAS,KAAO/F,GAAc,KACnCxQ,EACAA,EAAO,kBACPuW,EAAO,QACR,EACDA,EAAO,SAAS,QAAUnH,GAAa,KAAKmH,EAAO,SAAS,OAAO,IAIhE,QAAQ,OAAOA,CAAM,CAChC,CAAG,CACH,CChFO,MAAMmD,GAAU,QCKjBC,GAAa,CAAE,EAGrB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,QAAQ,EAAE,QAAQ,CAAChqD,EAAM1R,IAAM,CACnF07D,GAAWhqD,CAAI,EAAI,SAAmB00C,EAAO,CAC3C,OAAO,OAAOA,IAAU10C,GAAQ,KAAO1R,EAAI,EAAI,KAAO,KAAO0R,CAC9D,CACH,CAAC,EAED,MAAMiqD,GAAqB,CAAE,EAW7BD,GAAW,aAAe,SAAsBE,EAAWC,EAASzhB,EAAS,CAC3E,SAAS0hB,EAAcC,EAAK/1D,EAAM,CAChC,MAAO,WAAay1D,GAAU,0BAA6BM,EAAM,IAAO/1D,GAAQo0C,EAAU,KAAOA,EAAU,GAC/G,CAGE,MAAO,CAAC99C,EAAOy/D,EAAKC,IAAS,CAC3B,GAAIJ,IAAc,GAChB,MAAM,IAAIrQ,GACRuQ,EAAcC,EAAK,qBAAuBF,EAAU,OAASA,EAAU,GAAG,EAC1EtQ,GAAW,cACZ,EAGH,OAAIsQ,GAAW,CAACF,GAAmBI,CAAG,IACpCJ,GAAmBI,CAAG,EAAI,GAE1B,QAAQ,KACND,EACEC,EACA,+BAAiCF,EAAU,yCACrD,CACO,GAGID,EAAYA,EAAUt/D,EAAOy/D,EAAKC,CAAI,EAAI,EAClD,CACH,EAEAN,GAAW,SAAW,SAAkBO,EAAiB,CACvD,MAAO,CAAC3/D,EAAOy/D,KAEb,QAAQ,KAAK,GAAGA,CAAG,+BAA+BE,CAAe,EAAE,EAC5D,GAEX,EAYA,SAASC,GAAc3/D,EAAS4/D,EAAQC,EAAc,CACpD,GAAI,OAAO7/D,GAAY,SACrB,MAAM,IAAIgvD,GAAW,4BAA6BA,GAAW,oBAAoB,EAEnF,MAAM3lD,EAAO,OAAO,KAAKrJ,CAAO,EAChC,IAAI,EAAIqJ,EAAK,OACb,KAAO,KAAM,GAAG,CACd,MAAMm2D,EAAMn2D,EAAK,CAAC,EACZg2D,EAAYO,EAAOJ,CAAG,EAC5B,GAAIH,EAAW,CACb,MAAMt/D,EAAQC,EAAQw/D,CAAG,EACnB97D,EAAS3D,IAAU,QAAas/D,EAAUt/D,EAAOy/D,EAAKx/D,CAAO,EACnE,GAAI0D,IAAW,GACb,MAAM,IAAIsrD,GAAW,UAAYwQ,EAAM,YAAc97D,EAAQsrD,GAAW,oBAAoB,EAE9F,QACN,CACI,GAAI6Q,IAAiB,GACnB,MAAM,IAAI7Q,GAAW,kBAAoBwQ,EAAKxQ,GAAW,cAAc,CAE7E,CACA,CAEA,MAAeqQ,GAAA,CACb,cAAAM,GACAR,WAAAA,EACF,ECvFMA,GAAaE,GAAU,WAS7B,MAAMS,EAAM,CACV,YAAYC,EAAgB,CAC1B,KAAK,SAAWA,EAChB,KAAK,aAAe,CAClB,QAAS,IAAIhP,GACb,SAAU,IAAIA,EACf,CACL,CAUE,MAAM,QAAQiP,EAAaxa,EAAQ,CACjC,GAAI,CACF,OAAO,MAAM,KAAK,SAASwa,EAAaxa,CAAM,CAC/C,OAAQ9iD,EAAK,CACZ,GAAIA,aAAe,MAAO,CACxB,IAAIu9D,EAAQ,CAAE,EAEd,MAAM,kBAAoB,MAAM,kBAAkBA,CAAK,EAAKA,EAAQ,IAAI,MAGxE,MAAMze,EAAQye,EAAM,MAAQA,EAAM,MAAM,QAAQ,QAAS,EAAE,EAAI,GAC/D,GAAI,CACGv9D,EAAI,MAGE8+C,GAAS,CAAC,OAAO9+C,EAAI,KAAK,EAAE,SAAS8+C,EAAM,QAAQ,YAAa,EAAE,CAAC,IAC5E9+C,EAAI,OAAS;AAAA,EAAO8+C,GAHpB9+C,EAAI,MAAQ8+C,CAKf,MAAW,CAEpB,CACA,CAEM,MAAM9+C,CACZ,CACA,CAEE,SAASs9D,EAAaxa,EAAQ,CAGxB,OAAOwa,GAAgB,UACzBxa,EAASA,GAAU,CAAE,EACrBA,EAAO,IAAMwa,GAEbxa,EAASwa,GAAe,CAAE,EAG5Bxa,EAAS+T,GAAY,KAAK,SAAU/T,CAAM,EAE1C,KAAM,CAAC,aAAAwN,EAAc,iBAAAkN,EAAkB,QAAAvN,CAAO,EAAInN,EAE9CwN,IAAiB,QACnBqM,GAAU,cAAcrM,EAAc,CACpC,kBAAmBmM,GAAW,aAAaA,GAAW,OAAO,EAC7D,kBAAmBA,GAAW,aAAaA,GAAW,OAAO,EAC7D,oBAAqBA,GAAW,aAAaA,GAAW,OAAO,CAChE,EAAE,EAAK,EAGNe,GAAoB,OAClBvd,EAAM,WAAWud,CAAgB,EACnC1a,EAAO,iBAAmB,CACxB,UAAW0a,CACrB,EAEQb,GAAU,cAAca,EAAkB,CACxC,OAAQf,GAAW,SACnB,UAAWA,GAAW,QACvB,EAAE,EAAI,GAKP3Z,EAAO,oBAAsB,SAEtB,KAAK,SAAS,oBAAsB,OAC7CA,EAAO,kBAAoB,KAAK,SAAS,kBAEzCA,EAAO,kBAAoB,IAG7B6Z,GAAU,cAAc7Z,EAAQ,CAC9B,QAAS2Z,GAAW,SAAS,SAAS,EACtC,cAAeA,GAAW,SAAS,eAAe,CACnD,EAAE,EAAI,EAGP3Z,EAAO,QAAUA,EAAO,QAAU,KAAK,SAAS,QAAU,OAAO,YAAa,EAG9E,IAAI2a,EAAiBxN,GAAWhQ,EAAM,MACpCgQ,EAAQ,OACRA,EAAQnN,EAAO,MAAM,CACtB,EAEDmN,GAAWhQ,EAAM,QACf,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,QAAQ,EACzDyQ,GAAW,CACV,OAAOT,EAAQS,CAAM,CAC7B,CACK,EAED5N,EAAO,QAAUoP,GAAa,OAAOuL,EAAgBxN,CAAO,EAG5D,MAAMyN,EAA0B,CAAE,EAClC,IAAIC,EAAiC,GACrC,KAAK,aAAa,QAAQ,QAAQ,SAAoCC,EAAa,CAC7E,OAAOA,EAAY,SAAY,YAAcA,EAAY,QAAQ9a,CAAM,IAAM,KAIjF6a,EAAiCA,GAAkCC,EAAY,YAE/EF,EAAwB,QAAQE,EAAY,UAAWA,EAAY,QAAQ,EACjF,CAAK,EAED,MAAMC,EAA2B,CAAE,EACnC,KAAK,aAAa,SAAS,QAAQ,SAAkCD,EAAa,CAChFC,EAAyB,KAAKD,EAAY,UAAWA,EAAY,QAAQ,CAC/E,CAAK,EAED,IAAIE,EACA/8D,EAAI,EACJ/F,EAEJ,GAAI,CAAC2iE,EAAgC,CACnC,MAAMI,EAAQ,CAACxB,GAAgB,KAAK,IAAI,EAAG,MAAS,EAOpD,IANAwB,EAAM,QAAQ,MAAMA,EAAOL,CAAuB,EAClDK,EAAM,KAAK,MAAMA,EAAOF,CAAwB,EAChD7iE,EAAM+iE,EAAM,OAEZD,EAAU,QAAQ,QAAQhb,CAAM,EAEzB/hD,EAAI/F,GACT8iE,EAAUA,EAAQ,KAAKC,EAAMh9D,GAAG,EAAGg9D,EAAMh9D,GAAG,CAAC,EAG/C,OAAO+8D,CACb,CAEI9iE,EAAM0iE,EAAwB,OAE9B,IAAIlG,EAAY1U,EAIhB,IAFA/hD,EAAI,EAEGA,EAAI/F,GAAK,CACd,MAAMgjE,EAAcN,EAAwB38D,GAAG,EACzCk9D,EAAaP,EAAwB38D,GAAG,EAC9C,GAAI,CACFy2D,EAAYwG,EAAYxG,CAAS,CAClC,OAAQl4D,EAAO,CACd2+D,EAAW,KAAK,KAAM3+D,CAAK,EAC3B,KACR,CACA,CAEI,GAAI,CACFw+D,EAAUvB,GAAgB,KAAK,KAAM/E,CAAS,CAC/C,OAAQl4D,EAAO,CACd,OAAO,QAAQ,OAAOA,CAAK,CACjC,CAKI,IAHAyB,EAAI,EACJ/F,EAAM6iE,EAAyB,OAExB98D,EAAI/F,GACT8iE,EAAUA,EAAQ,KAAKD,EAAyB98D,GAAG,EAAG88D,EAAyB98D,GAAG,CAAC,EAGrF,OAAO+8D,CACX,CAEE,OAAOhb,EAAQ,CACbA,EAAS+T,GAAY,KAAK,SAAU/T,CAAM,EAC1C,MAAMob,EAAW1H,GAAc1T,EAAO,QAASA,EAAO,IAAKA,EAAO,iBAAiB,EACnF,OAAOmL,GAASiQ,EAAUpb,EAAO,OAAQA,EAAO,gBAAgB,CACpE,CACA,CAGA7C,EAAM,QAAQ,CAAC,SAAU,MAAO,OAAQ,SAAS,EAAG,SAA6ByQ,EAAQ,CAEvF0M,GAAM,UAAU1M,CAAM,EAAI,SAASpV,EAAKwH,EAAQ,CAC9C,OAAO,KAAK,QAAQ+T,GAAY/T,GAAU,CAAA,EAAI,CAC5C,OAAA4N,EACA,IAAApV,EACA,MAAOwH,GAAU,IAAI,IAC3B,CAAK,CAAC,CACH,CACH,CAAC,EAED7C,EAAM,QAAQ,CAAC,OAAQ,MAAO,OAAO,EAAG,SAA+ByQ,EAAQ,CAG7E,SAASyN,EAAmBC,EAAQ,CAClC,OAAO,SAAoB9iB,EAAKrsC,EAAM6zC,EAAQ,CAC5C,OAAO,KAAK,QAAQ+T,GAAY/T,GAAU,CAAA,EAAI,CAC5C,OAAA4N,EACA,QAAS0N,EAAS,CAChB,eAAgB,qBAC1B,EAAY,CAAE,EACN,IAAA9iB,EACA,KAAArsC,CACR,CAAO,CAAC,CACH,CACL,CAEEmuD,GAAM,UAAU1M,CAAM,EAAIyN,EAAoB,EAE9Cf,GAAM,UAAU1M,EAAS,MAAM,EAAIyN,EAAmB,EAAI,CAC5D,CAAC,ECpOD,MAAME,EAAY,CAChB,YAAYC,EAAU,CACpB,GAAI,OAAOA,GAAa,WACtB,MAAM,IAAI,UAAU,8BAA8B,EAGpD,IAAIC,EAEJ,KAAK,QAAU,IAAI,QAAQ,SAAyBhyC,EAAS,CAC3DgyC,EAAiBhyC,CACvB,CAAK,EAED,MAAM0/B,EAAQ,KAGd,KAAK,QAAQ,KAAKxsB,GAAU,CAC1B,GAAI,CAACwsB,EAAM,WAAY,OAEvB,IAAIlrD,EAAIkrD,EAAM,WAAW,OAEzB,KAAOlrD,KAAM,GACXkrD,EAAM,WAAWlrD,CAAC,EAAE0+B,CAAM,EAE5BwsB,EAAM,WAAa,IACzB,CAAK,EAGD,KAAK,QAAQ,KAAOuS,GAAe,CACjC,IAAIC,EAEJ,MAAMX,EAAU,IAAI,QAAQvxC,GAAW,CACrC0/B,EAAM,UAAU1/B,CAAO,EACvBkyC,EAAWlyC,CACnB,CAAO,EAAE,KAAKiyC,CAAW,EAEnB,OAAAV,EAAQ,OAAS,UAAkB,CACjC7R,EAAM,YAAYwS,CAAQ,CAC3B,EAEMX,CACR,EAEDQ,EAAS,SAAgBnjB,EAAS2H,EAAQyJ,EAAS,CAC7CN,EAAM,SAKVA,EAAM,OAAS,IAAIwH,GAActY,EAAS2H,EAAQyJ,CAAO,EACzDgS,EAAetS,EAAM,MAAM,EACjC,CAAK,CACL,CAKE,kBAAmB,CACjB,GAAI,KAAK,OACP,MAAM,KAAK,MAEjB,CAME,UAAUtvD,EAAU,CAClB,GAAI,KAAK,OAAQ,CACfA,EAAS,KAAK,MAAM,EACpB,MACN,CAEQ,KAAK,WACP,KAAK,WAAW,KAAKA,CAAQ,EAE7B,KAAK,WAAa,CAACA,CAAQ,CAEjC,CAME,YAAYA,EAAU,CACpB,GAAI,CAAC,KAAK,WACR,OAEF,MAAMsH,EAAQ,KAAK,WAAW,QAAQtH,CAAQ,EAC1CsH,IAAU,IACZ,KAAK,WAAW,OAAOA,EAAO,CAAC,CAErC,CAEE,eAAgB,CACd,MAAMi1D,EAAa,IAAI,gBAEjBwF,EAAS1+D,GAAQ,CACrBk5D,EAAW,MAAMl5D,CAAG,CACrB,EAED,YAAK,UAAU0+D,CAAK,EAEpBxF,EAAW,OAAO,YAAc,IAAM,KAAK,YAAYwF,CAAK,EAErDxF,EAAW,MACtB,CAME,OAAO,QAAS,CACd,IAAIz5B,EAIJ,MAAO,CACL,MAJY,IAAI4+B,GAAY,SAAkBzgE,EAAG,CACjD6hC,EAAS7hC,CACf,CAAK,EAGC,OAAA6hC,CACD,CACL,CACA,CC7Ge,SAASxyB,GAAO0yB,EAAU,CACvC,OAAO,SAAcoqB,EAAK,CACxB,OAAOpqB,EAAS,MAAM,KAAMoqB,CAAG,CAChC,CACH,CChBe,SAAS4U,GAAaC,EAAS,CAC5C,OAAO3e,EAAM,SAAS2e,CAAO,GAAMA,EAAQ,eAAiB,EAC9D,CCbA,MAAMC,GAAiB,CACrB,SAAU,IACV,mBAAoB,IACpB,WAAY,IACZ,WAAY,IACZ,GAAI,IACJ,QAAS,IACT,SAAU,IACV,4BAA6B,IAC7B,UAAW,IACX,aAAc,IACd,eAAgB,IAChB,YAAa,IACb,gBAAiB,IACjB,OAAQ,IACR,gBAAiB,IACjB,iBAAkB,IAClB,MAAO,IACP,SAAU,IACV,YAAa,IACb,SAAU,IACV,OAAQ,IACR,kBAAmB,IACnB,kBAAmB,IACnB,WAAY,IACZ,aAAc,IACd,gBAAiB,IACjB,UAAW,IACX,SAAU,IACV,iBAAkB,IAClB,cAAe,IACf,4BAA6B,IAC7B,eAAgB,IAChB,SAAU,IACV,KAAM,IACN,eAAgB,IAChB,mBAAoB,IACpB,gBAAiB,IACjB,WAAY,IACZ,qBAAsB,IACtB,oBAAqB,IACrB,kBAAmB,IACnB,UAAW,IACX,mBAAoB,IACpB,oBAAqB,IACrB,OAAQ,IACR,iBAAkB,IAClB,SAAU,IACV,gBAAiB,IACjB,qBAAsB,IACtB,gBAAiB,IACjB,4BAA6B,IAC7B,2BAA4B,IAC5B,oBAAqB,IACrB,eAAgB,IAChB,WAAY,IACZ,mBAAoB,IACpB,eAAgB,IAChB,wBAAyB,IACzB,sBAAuB,IACvB,oBAAqB,IACrB,aAAc,IACd,YAAa,IACb,8BAA+B,GACjC,EAEA,OAAO,QAAQA,EAAc,EAAE,QAAQ,CAAC,CAAC/+D,EAAKzC,CAAK,IAAM,CACvDwhE,GAAexhE,CAAK,EAAIyC,CAC1B,CAAC,ECzCD,SAASg/D,GAAeC,EAAe,CACrC,MAAM7jE,EAAU,IAAIkiE,GAAM2B,CAAa,EACjCn+C,EAAWimC,GAAKuW,GAAM,UAAU,QAASliE,CAAO,EAGtD+kD,OAAAA,EAAM,OAAOr/B,EAAUw8C,GAAM,UAAWliE,EAAS,CAAC,WAAY,EAAI,CAAC,EAGnE+kD,EAAM,OAAOr/B,EAAU1lB,EAAS,KAAM,CAAC,WAAY,EAAI,CAAC,EAGxD0lB,EAAS,OAAS,SAAgBy8C,EAAgB,CAChD,OAAOyB,GAAejI,GAAYkI,EAAe1B,CAAc,CAAC,CACjE,EAEMz8C,CACT,CAGA,MAAMo+C,GAAQF,GAAe9O,EAAQ,EAGrCgP,GAAM,MAAQ5B,GAGd4B,GAAM,cAAgBvL,GACtBuL,GAAM,YAAcX,GACpBW,GAAM,SAAWxL,GACjBwL,GAAM,QAAUxC,GAChBwC,GAAM,WAAa9R,GAGnB8R,GAAM,WAAa1S,GAGnB0S,GAAM,OAASA,GAAM,cAGrBA,GAAM,IAAM,SAAaC,EAAU,CACjC,OAAO,QAAQ,IAAIA,CAAQ,CAC7B,EAEAD,GAAM,OAAS/xD,GAGf+xD,GAAM,aAAeL,GAGrBK,GAAM,YAAcnI,GAEpBmI,GAAM,aAAe9M,GAErB8M,GAAM,WAAa7X,GAASsI,GAAexP,EAAM,WAAWkH,CAAK,EAAI,IAAI,SAASA,CAAK,EAAIA,CAAK,EAEhG6X,GAAM,WAAa9C,GAAS,WAE5B8C,GAAM,eAAiBH,GAEvBG,GAAM,QAAUA,8PCrFZ,OAAO,OAAO,QAAW,WAE3BE,GAAA,QAAiB,SAAkBC,EAAMC,EAAW,CAC9CA,IACFD,EAAK,OAASC,EACdD,EAAK,UAAY,OAAO,OAAOC,EAAU,UAAW,CAClD,YAAa,CACX,MAAOD,EACP,WAAY,GACZ,SAAU,GACV,aAAc,EACxB,CACO,CAAA,EAEJ,EAGDD,GAAA,QAAiB,SAAkBC,EAAMC,EAAW,CAClD,GAAIA,EAAW,CACbD,EAAK,OAASC,EACd,IAAIC,EAAW,UAAY,CAAA,EAC3BA,EAAS,UAAYD,EAAU,UAC/BD,EAAK,UAAY,IAAIE,EACrBF,EAAK,UAAU,YAAcA,CACnC,CACA,oCCFIG,GAAI,OAAO,SAAY,SAAW,QAAU,KAC5CC,GAAeD,IAAK,OAAOA,GAAE,OAAU,WACvCA,GAAE,MACF,SAAsBt4D,EAAQX,EAAUyQ,EAAM,CAC9C,OAAO,SAAS,UAAU,MAAM,KAAK9P,EAAQX,EAAUyQ,CAAI,CAC/D,EAEI0oD,GACAF,IAAK,OAAOA,GAAE,SAAY,WAC5BE,GAAiBF,GAAE,QACV,OAAO,sBAChBE,GAAiB,SAAwBx4D,EAAQ,CAC/C,OAAO,OAAO,oBAAoBA,CAAM,EACrC,OAAO,OAAO,sBAAsBA,CAAM,CAAC,CAC/C,EAEDw4D,GAAiB,SAAwBx4D,EAAQ,CAC/C,OAAO,OAAO,oBAAoBA,CAAM,CACzC,EAGH,SAASy4D,GAAmBC,EAAS,CAC/B,SAAW,QAAQ,MAAM,QAAQ,KAAKA,CAAO,CACnD,CAEA,IAAIC,GAAc,OAAO,OAAS,SAAqBtiE,EAAO,CAC5D,OAAOA,IAAUA,CACnB,EAEA,SAASuiE,IAAe,CACtBA,GAAa,KAAK,KAAK,IAAI,CAC7B,CACAC,GAAc,QAAGD,GACEC,GAAA,QAAA,KAAGrrD,GAGtBorD,GAAa,aAAeA,GAE5BA,GAAa,UAAU,QAAU,OACjCA,GAAa,UAAU,aAAe,EACtCA,GAAa,UAAU,cAAgB,OAIvC,IAAIE,GAAsB,GAE1B,SAASC,GAAcpjE,EAAU,CAC/B,GAAI,OAAOA,GAAa,WACtB,MAAM,IAAI,UAAU,mEAAqE,OAAOA,CAAQ,CAE5G,CAEA,OAAO,eAAeijE,GAAc,sBAAuB,CACzD,WAAY,GACZ,IAAK,UAAW,CACd,OAAOE,EACR,EACD,IAAK,SAASvyD,EAAK,CACjB,GAAI,OAAOA,GAAQ,UAAYA,EAAM,GAAKoyD,GAAYpyD,CAAG,EACvD,MAAM,IAAI,WAAW,kGAAoGA,EAAM,GAAG,EAEpIuyD,GAAsBvyD,CAC1B,CACA,CAAC,EAEDqyD,GAAa,KAAO,UAAW,EAEzB,KAAK,UAAY,QACjB,KAAK,UAAY,OAAO,eAAe,IAAI,EAAE,WAC/C,KAAK,QAAU,OAAO,OAAO,IAAI,EACjC,KAAK,aAAe,GAGtB,KAAK,cAAgB,KAAK,eAAiB,MAC7C,EAIAA,GAAa,UAAU,gBAAkB,SAAyBz7D,EAAG,CACnE,GAAI,OAAOA,GAAM,UAAYA,EAAI,GAAKw7D,GAAYx7D,CAAC,EACjD,MAAM,IAAI,WAAW,gFAAkFA,EAAI,GAAG,EAEhH,YAAK,cAAgBA,EACd,IACT,EAEA,SAAS67D,GAAiBC,EAAM,CAC9B,OAAIA,EAAK,gBAAkB,OAClBL,GAAa,oBACfK,EAAK,aACd,CAEAL,GAAa,UAAU,gBAAkB,UAA2B,CAClE,OAAOI,GAAiB,IAAI,CAC9B,EAEAJ,GAAa,UAAU,KAAO,SAAcntD,EAAM,CAEhD,QADIqE,EAAO,CAAE,EACJ/V,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK+V,EAAK,KAAK,UAAU/V,CAAC,CAAC,EACjE,IAAIm/D,EAAWztD,IAAS,QAEpB0tD,EAAS,KAAK,QAClB,GAAIA,IAAW,OACbD,EAAWA,GAAWC,EAAO,QAAU,eAChC,CAACD,EACR,MAAO,GAGT,GAAIA,EAAS,CACX,IAAIE,EAGJ,GAFItpD,EAAK,OAAS,IAChBspD,EAAKtpD,EAAK,CAAC,GACTspD,aAAc,MAGhB,MAAMA,EAGR,IAAIpgE,EAAM,IAAI,MAAM,oBAAsBogE,EAAK,KAAOA,EAAG,QAAU,IAAM,GAAG,EAC5E,MAAApgE,EAAI,QAAUogE,EACRpgE,CACV,CAEE,IAAIuM,EAAU4zD,EAAO1tD,CAAI,EAEzB,GAAIlG,IAAY,OACd,MAAO,GAET,GAAI,OAAOA,GAAY,WACrBgzD,GAAahzD,EAAS,KAAMuK,CAAI,MAIhC,SAFI9b,EAAMuR,EAAQ,OACdstC,EAAYwmB,GAAW9zD,EAASvR,CAAG,EAC9B+F,EAAI,EAAGA,EAAI/F,EAAK,EAAE+F,EACzBw+D,GAAa1lB,EAAU94C,CAAC,EAAG,KAAM+V,CAAI,EAGzC,MAAO,EACT,EAEA,SAASwpD,GAAat5D,EAAQyL,EAAM9V,EAAU4jE,EAAS,CACrD,IAAI/yC,EACA2yC,EACAzzC,EAsBJ,GApBAqzC,GAAcpjE,CAAQ,EAEtBwjE,EAASn5D,EAAO,QACZm5D,IAAW,QACbA,EAASn5D,EAAO,QAAU,OAAO,OAAO,IAAI,EAC5CA,EAAO,aAAe,IAIlBm5D,EAAO,cAAgB,SACzBn5D,EAAO,KAAK,cAAeyL,EACf9V,EAAS,SAAWA,EAAS,SAAWA,CAAQ,EAI5DwjE,EAASn5D,EAAO,SAElB0lB,EAAWyzC,EAAO1tD,CAAI,GAGpBia,IAAa,OAEfA,EAAWyzC,EAAO1tD,CAAI,EAAI9V,EAC1B,EAAEqK,EAAO,qBAEL,OAAO0lB,GAAa,WAEtBA,EAAWyzC,EAAO1tD,CAAI,EACpB8tD,EAAU,CAAC5jE,EAAU+vB,CAAQ,EAAI,CAACA,EAAU/vB,CAAQ,EAE7C4jE,EACT7zC,EAAS,QAAQ/vB,CAAQ,EAEzB+vB,EAAS,KAAK/vB,CAAQ,EAIxB6wB,EAAIwyC,GAAiBh5D,CAAM,EACvBwmB,EAAI,GAAKd,EAAS,OAASc,GAAK,CAACd,EAAS,OAAQ,CACpDA,EAAS,OAAS,GAGlB,IAAIze,EAAI,IAAI,MAAM,+CACEye,EAAS,OAAS,IAAM,OAAOja,CAAI,EAAI,mEAEvB,EACpCxE,EAAE,KAAO,8BACTA,EAAE,QAAUjH,EACZiH,EAAE,KAAOwE,EACTxE,EAAE,MAAQye,EAAS,OACnB+yC,GAAmBxxD,CAAC,CAC1B,CAGE,OAAOjH,CACT,CAEA44D,GAAa,UAAU,YAAc,SAAqBntD,EAAM9V,EAAU,CACxE,OAAO2jE,GAAa,KAAM7tD,EAAM9V,EAAU,EAAK,CACjD,EAEAijE,GAAa,UAAU,GAAKA,GAAa,UAAU,YAEnDA,GAAa,UAAU,gBACnB,SAAyBntD,EAAM9V,EAAU,CACvC,OAAO2jE,GAAa,KAAM7tD,EAAM9V,EAAU,EAAI,CAC/C,EAEL,SAAS6jE,IAAc,CACrB,GAAI,CAAC,KAAK,MAGR,OAFA,KAAK,OAAO,eAAe,KAAK,KAAM,KAAK,MAAM,EACjD,KAAK,MAAQ,GACT,UAAU,SAAW,EAChB,KAAK,SAAS,KAAK,KAAK,MAAM,EAChC,KAAK,SAAS,MAAM,KAAK,OAAQ,SAAS,CAErD,CAEA,SAASC,GAAUz5D,EAAQyL,EAAM9V,EAAU,CACzC,IAAI+C,EAAQ,CAAE,MAAO,GAAO,OAAQ,OAAW,OAAQsH,EAAQ,KAAMyL,EAAM,SAAU9V,CAAU,EAC3F+jE,EAAUF,GAAY,KAAK9gE,CAAK,EACpC,OAAAghE,EAAQ,SAAW/jE,EACnB+C,EAAM,OAASghE,EACRA,CACT,CAEAd,GAAa,UAAU,KAAO,SAAcntD,EAAM9V,EAAU,CAC1D,OAAAojE,GAAcpjE,CAAQ,EACtB,KAAK,GAAG8V,EAAMguD,GAAU,KAAMhuD,EAAM9V,CAAQ,CAAC,EACtC,IACT,EAEAijE,GAAa,UAAU,oBACnB,SAA6BntD,EAAM9V,EAAU,CAC3C,OAAAojE,GAAcpjE,CAAQ,EACtB,KAAK,gBAAgB8V,EAAMguD,GAAU,KAAMhuD,EAAM9V,CAAQ,CAAC,EACnD,IACR,EAGLijE,GAAa,UAAU,eACnB,SAAwBntD,EAAM9V,EAAU,CACtC,IAAI+H,EAAMy7D,EAAQjhD,EAAUne,EAAG4/D,EAK/B,GAHAZ,GAAcpjE,CAAQ,EAEtBwjE,EAAS,KAAK,QACVA,IAAW,OACb,OAAO,KAGT,GADAz7D,EAAOy7D,EAAO1tD,CAAI,EACd/N,IAAS,OACX,OAAO,KAET,GAAIA,IAAS/H,GAAY+H,EAAK,WAAa/H,EACrC,EAAE,KAAK,eAAiB,EAC1B,KAAK,QAAU,OAAO,OAAO,IAAI,GAEjC,OAAOwjE,EAAO1tD,CAAI,EACd0tD,EAAO,gBACT,KAAK,KAAK,iBAAkB1tD,EAAM/N,EAAK,UAAY/H,CAAQ,WAEtD,OAAO+H,GAAS,WAAY,CAGrC,IAFAwa,EAAW,GAENne,EAAI2D,EAAK,OAAS,EAAG3D,GAAK,EAAGA,IAChC,GAAI2D,EAAK3D,CAAC,IAAMpE,GAAY+H,EAAK3D,CAAC,EAAE,WAAapE,EAAU,CACzDgkE,EAAmBj8D,EAAK3D,CAAC,EAAE,SAC3Bme,EAAWne,EACX,KACZ,CAGQ,GAAIme,EAAW,EACb,OAAO,KAELA,IAAa,EACfxa,EAAK,MAAO,EAEZk8D,GAAUl8D,EAAMwa,CAAQ,EAGtBxa,EAAK,SAAW,IAClBy7D,EAAO1tD,CAAI,EAAI/N,EAAK,CAAC,GAEnBy7D,EAAO,iBAAmB,QAC5B,KAAK,KAAK,iBAAkB1tD,EAAMkuD,GAAoBhkE,CAAQ,CACxE,CAEM,OAAO,IACR,EAELijE,GAAa,UAAU,IAAMA,GAAa,UAAU,eAEpDA,GAAa,UAAU,mBACnB,SAA4BntD,EAAM,CAChC,IAAIonC,EAAWsmB,EAAQ,EAGvB,GADAA,EAAS,KAAK,QACVA,IAAW,OACb,OAAO,KAGT,GAAIA,EAAO,iBAAmB,OAC5B,OAAI,UAAU,SAAW,GACvB,KAAK,QAAU,OAAO,OAAO,IAAI,EACjC,KAAK,aAAe,GACXA,EAAO1tD,CAAI,IAAM,SACtB,EAAE,KAAK,eAAiB,EAC1B,KAAK,QAAU,OAAO,OAAO,IAAI,EAEjC,OAAO0tD,EAAO1tD,CAAI,GAEf,KAIT,GAAI,UAAU,SAAW,EAAG,CAC1B,IAAI9L,EAAO,OAAO,KAAKw5D,CAAM,EACzBrgE,EACJ,IAAK,EAAI,EAAG,EAAI6G,EAAK,OAAQ,EAAE,EAC7B7G,EAAM6G,EAAK,CAAC,EACR7G,IAAQ,kBACZ,KAAK,mBAAmBA,CAAG,EAE7B,YAAK,mBAAmB,gBAAgB,EACxC,KAAK,QAAU,OAAO,OAAO,IAAI,EACjC,KAAK,aAAe,EACb,IACf,CAIM,GAFA+5C,EAAYsmB,EAAO1tD,CAAI,EAEnB,OAAOonC,GAAc,WACvB,KAAK,eAAepnC,EAAMonC,CAAS,UAC1BA,IAAc,OAEvB,IAAK,EAAIA,EAAU,OAAS,EAAG,GAAK,EAAG,IACrC,KAAK,eAAepnC,EAAMonC,EAAU,CAAC,CAAC,EAI1C,OAAO,IACR,EAEL,SAASgnB,GAAW75D,EAAQyL,EAAM1C,EAAQ,CACxC,IAAIowD,EAASn5D,EAAO,QAEpB,GAAIm5D,IAAW,OACb,MAAO,CAAE,EAEX,IAAIW,EAAaX,EAAO1tD,CAAI,EAC5B,OAAIquD,IAAe,OACV,CAAE,EAEP,OAAOA,GAAe,WACjB/wD,EAAS,CAAC+wD,EAAW,UAAYA,CAAU,EAAI,CAACA,CAAU,EAE5D/wD,EACLgxD,GAAgBD,CAAU,EAAIT,GAAWS,EAAYA,EAAW,MAAM,CAC1E,CAEAlB,GAAa,UAAU,UAAY,SAAmBntD,EAAM,CAC1D,OAAOouD,GAAW,KAAMpuD,EAAM,EAAI,CACpC,EAEAmtD,GAAa,UAAU,aAAe,SAAsBntD,EAAM,CAChE,OAAOouD,GAAW,KAAMpuD,EAAM,EAAK,CACrC,EAEAmtD,GAAa,cAAgB,SAASoB,EAASvuD,EAAM,CACnD,OAAI,OAAOuuD,EAAQ,eAAkB,WAC5BA,EAAQ,cAAcvuD,CAAI,EAE1BwuD,GAAc,KAAKD,EAASvuD,CAAI,CAE3C,EAEAmtD,GAAa,UAAU,cAAgBqB,GACvC,SAASA,GAAcxuD,EAAM,CAC3B,IAAI0tD,EAAS,KAAK,QAElB,GAAIA,IAAW,OAAW,CACxB,IAAIW,EAAaX,EAAO1tD,CAAI,EAE5B,GAAI,OAAOquD,GAAe,WACxB,MAAO,GACF,GAAIA,IAAe,OACxB,OAAOA,EAAW,MAExB,CAEE,MAAO,EACT,CAEAlB,GAAa,UAAU,WAAa,UAAsB,CACxD,OAAO,KAAK,aAAe,EAAIJ,GAAe,KAAK,OAAO,EAAI,CAAE,CAClE,EAEA,SAASa,GAAWtW,EAAK5lD,EAAG,CAE1B,QADI+8D,EAAO,IAAI,MAAM/8D,CAAC,EACbpD,EAAI,EAAGA,EAAIoD,EAAG,EAAEpD,EACvBmgE,EAAKngE,CAAC,EAAIgpD,EAAIhpD,CAAC,EACjB,OAAOmgE,CACT,CAEA,SAASN,GAAUl8D,EAAMT,EAAO,CAC9B,KAAOA,EAAQ,EAAIS,EAAK,OAAQT,IAC9BS,EAAKT,CAAK,EAAIS,EAAKT,EAAQ,CAAC,EAC9BS,EAAK,IAAK,CACZ,CAEA,SAASq8D,GAAgBhX,EAAK,CAE5B,QADIkB,EAAM,IAAI,MAAMlB,EAAI,MAAM,EACrBhpD,EAAI,EAAGA,EAAIkqD,EAAI,OAAQ,EAAElqD,EAChCkqD,EAAIlqD,CAAC,EAAIgpD,EAAIhpD,CAAC,EAAE,UAAYgpD,EAAIhpD,CAAC,EAEnC,OAAOkqD,CACT,CAEA,SAASz2C,GAAKwsD,EAASn5D,EAAM,CAC3B,OAAO,IAAI,QAAQ,SAAU0kB,EAASonC,EAAQ,CAC5C,SAASwN,EAAcnhE,EAAK,CAC1BghE,EAAQ,eAAen5D,EAAMu5D,CAAQ,EACrCzN,EAAO3zD,CAAG,CAChB,CAEI,SAASohE,GAAW,CACd,OAAOJ,EAAQ,gBAAmB,YACpCA,EAAQ,eAAe,QAASG,CAAa,EAE/C50C,EAAQ,CAAA,EAAG,MAAM,KAAK,SAAS,CAAC,CACtC,CAEI80C,GAA+BL,EAASn5D,EAAMu5D,EAAU,CAAE,KAAM,GAAM,EAClEv5D,IAAS,SACXy5D,GAA8BN,EAASG,EAAe,CAAE,KAAM,EAAI,CAAE,CAE1E,CAAG,CACH,CAEA,SAASG,GAA8BN,EAASz0D,EAASg1D,EAAO,CAC1D,OAAOP,EAAQ,IAAO,YACxBK,GAA+BL,EAAS,QAASz0D,EAASg1D,CAAK,CAEnE,CAEA,SAASF,GAA+BL,EAASn5D,EAAMlL,EAAU4kE,EAAO,CACtE,GAAI,OAAOP,EAAQ,IAAO,WACpBO,EAAM,KACRP,EAAQ,KAAKn5D,EAAMlL,CAAQ,EAE3BqkE,EAAQ,GAAGn5D,EAAMlL,CAAQ,UAElB,OAAOqkE,EAAQ,kBAAqB,WAG7CA,EAAQ,iBAAiBn5D,EAAM,SAAS25D,EAAaj0D,EAAK,CAGpDg0D,EAAM,MACRP,EAAQ,oBAAoBn5D,EAAM25D,CAAY,EAEhD7kE,EAAS4Q,CAAG,CAClB,CAAK,MAED,OAAM,IAAI,UAAU,sEAAwE,OAAOyzD,CAAO,CAE9G,mBChfI1X,GAAWmY,GACX7B,GAAe8B,GAAkB,aAErCC,GAAA,QAAiBC,GACjBD,GAAA,QAAA,QAAyBC,GAEzB,SAASA,GAAOtkE,EAAS,CACvB,GAAI,EAAE,gBAAgBskE,IACpB,OAAO,IAAIA,GAAMtkE,CAAO,EAG1BsiE,GAAa,KAAK,IAAI,EACtBtiE,EAAUA,GAAW,CAAA,EACrB,KAAK,YAAcA,EAAQ,aAAe,IAC1C,KAAK,QAAUA,EAAQ,SAAW,EAClC,KAAK,UAAYA,EAAQ,WAAa,GACtC,KAAK,QAAUA,EAAQ,SAAW,KAClC,KAAK,QAAU,EACf,KAAK,QAAU,EACf,KAAK,QAAU,GACf,KAAK,KAAO,CAAA,EACZ,KAAK,OAAS,CAAA,CAChB,CACAgsD,GAASsY,GAAOhC,EAAY,EAE5B,IAAIiC,GAAe,CACjB,MACA,QACA,UACA,aACF,EAEAA,GAAa,QAAQ,SAAUnR,EAAQ,CACrCkR,GAAM,UAAUlR,CAAM,EAAI,UAAY,CACpC,OAAO,MAAM,UAAUA,CAAM,EAAE,MAAM,KAAK,KAAM,SAAS,CAC7D,CACA,CAAC,EAEDkR,GAAM,UAAU,MAAQ,SAAUE,EAAOr8D,EAAK,CAC5C,YAAK,KAAO,KAAK,KAAK,MAAMq8D,EAAOr8D,CAAG,EAC/B,IACT,EAEAm8D,GAAM,UAAU,QAAU,UAAY,CACpC,YAAK,KAAK,QAAO,EACV,IACT,EAEA,IAAIG,GAAkB,CACpB,OACA,UACA,QACF,EAEAA,GAAgB,QAAQ,SAAUrR,EAAQ,CACxCkR,GAAM,UAAUlR,CAAM,EAAI,UAAY,CACpC,IAAIsR,EAAe,MAAM,UAAUtR,CAAM,EAAE,MAAM,KAAK,KAAM,SAAS,EACrE,OAAI,KAAK,WACP,KAAK,MAAK,EAELsR,CACX,CACA,CAAC,EAED,OAAO,eAAeJ,GAAM,UAAW,SAAU,CAC/C,IAAK,UAAY,CACf,OAAO,KAAK,QAAU,KAAK,KAAK,MACpC,CACA,CAAC,EAEDA,GAAM,UAAU,MAAQ,SAAUzV,EAAI,CAOpC,GANIA,GACF8V,GAAiB,KAAK,KAAM9V,CAAE,EAGhC,KAAK,QAAU,GAEX,KAAK,SAAW,KAAK,YACvB,OAGF,GAAI,KAAK,KAAK,SAAW,EAAG,CACtB,KAAK,UAAY,GACnBwM,GAAK,KAAK,IAAI,EAEhB,MACJ,CAEE,IAAItG,EAAO,KACP6P,EAAM,KAAK,KAAK,MAAK,EACrB1tD,EAAO,GACP2tD,EAAU,KAAK,QACfC,EAAY,KACZC,EAAa,GACbC,EAAc,KACdzjC,EAAUqjC,EAAI,eAAe,SAAS,EAAIA,EAAI,QAAU,KAAK,QAEjE,SAAShsD,EAAMlW,EAAKgB,EAAQ,CACtBwT,GAAQ69C,EAAK,UAAY8P,IAC3B3tD,EAAO,GACP69C,EAAK,UACD+P,IAAc,OAChB,OAAO/P,EAAK,OAAO+P,CAAS,EAC5B,aAAaA,CAAS,GAGpBpiE,EACFqyD,EAAK,KAAK,QAASryD,EAAKkiE,CAAG,EAClBG,IAAe,KACpBC,IAAgB,OAClBjQ,EAAK,QAAQiQ,CAAW,EAAI,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,GAErEjQ,EAAK,KAAK,UAAWrxD,EAAQkhE,CAAG,GAG9B7P,EAAK,UAAY8P,IACf9P,EAAK,UAAY,GAAKA,EAAK,KAAK,SAAW,EAC7CsG,GAAK,KAAKtG,CAAI,EACLA,EAAK,SACdA,EAAK,MAAK,GAIpB,CAEMxzB,IACFujC,EAAY,WAAW,UAAY,CACjCC,EAAa,GACThQ,EAAK,UAAU,SAAS,EAAE,OAAS,EACrCA,EAAK,KAAK,UAAWn8C,EAAMgsD,CAAG,EAE9BhsD,EAAI,CAEZ,EAAO2oB,CAAO,EACV,KAAK,OAAOujC,CAAS,EAAIA,GAGvB,KAAK,UACPE,EAAc,KAAK,QAAQ,OAC3B,KAAK,QAAQA,CAAW,EAAI,MAG9B,KAAK,UACLjQ,EAAK,KAAK,QAAS6P,CAAG,EACtB,IAAIpE,EAAUoE,EAAIhsD,CAAI,EAClB4nD,GAAWA,EAAQ,MAAQ,OAAOA,EAAQ,MAAS,YACrDA,EAAQ,KAAK,SAAU98D,EAAQ,CAC7B,OAAOkV,EAAK,KAAMlV,CAAM,CAC9B,CAAK,EAAE,MAAM,SAAUhB,EAAK,CACtB,OAAOkW,EAAKlW,GAAO,EAAI,CACxB,CAAA,EAGC,KAAK,SAAW,KAAK,KAAK,OAAS,GACrC,KAAK,MAAK,CAEd,EAEA4hE,GAAM,UAAU,KAAO,UAAY,CACjC,KAAK,QAAU,EACjB,EAEAA,GAAM,UAAU,IAAM,SAAU5hE,EAAK,CACnCuiE,GAAY,KAAK,IAAI,EACrB,KAAK,KAAK,OAAS,EACnB,KAAK,QAAU,EACf5J,GAAK,KAAK,KAAM34D,CAAG,CACrB,EAEA,SAASuiE,IAAe,CACtB,QAASziE,KAAO,KAAK,OAAQ,CAC3B,IAAIsiE,EAAY,KAAK,OAAOtiE,CAAG,EAC/B,OAAO,KAAK,OAAOA,CAAG,EACtB,aAAasiE,CAAS,CAC1B,CACA,CAEA,SAASH,GAAkB9V,EAAI,CAC7B,IAAIkG,EAAO,KACX,KAAK,GAAG,QAASmQ,CAAO,EACxB,KAAK,GAAG,MAAOC,CAAK,EAEpB,SAASD,EAASxiE,EAAK,CAAEqyD,EAAK,IAAIryD,CAAG,CAAC,CACtC,SAASyiE,EAAOziE,EAAK,CACnBqyD,EAAK,eAAe,QAASmQ,CAAO,EACpCnQ,EAAK,eAAe,MAAOoQ,CAAK,EAChCtW,EAAGnsD,EAAK,KAAK,OAAO,CACxB,CACA,CAEA,SAAS24D,GAAM34D,EAAK,CAClB,KAAK,UACL,KAAK,QAAU,GACf,KAAK,KAAK,MAAOA,CAAG,CACtB,uEClMC,SAAS+8B,EAAEz8B,EAAE,CAAsDoiE,EAAe,QAAApiE,EAAuI,CAAA,GAAEqiE,GAAM,UAAU,CAAc,OAAO,SAAS5lC,EAAEz8B,EAAEsB,EAAE,CAACm7B,EAAEA,GAAG,CAAE,EAAC,IAAI54B,EAAE7D,EAAE,UAAU,EAAE,CAAC,OAAO,QAAQ,KAAK,SAAS,EAAE,gBAAgB,EAAE,WAAW,GAAG,aAAa,EAAE,UAAU,GAAG,WAAW,EAAE,QAAQ,GAAG,UAAU,EAAE,UAAU,GAAG,YAAY,EAAE,SAAS,GAAG,UAAU,EAAE,SAASS,EAAEg8B,EAAEz8B,EAAEsB,EAAEN,EAAE,CAAC,OAAO6C,EAAE,WAAW44B,EAAEz8B,EAAEsB,EAAEN,CAAC,CAAC,CAACM,EAAE,GAAG,aAAa,EAAEuC,EAAE,WAAW,SAAS7D,EAAE6D,EAAEpD,EAAE8C,EAAEihD,EAAE,CAAC,QAAQC,EAAE1pD,EAAEkC,EAAEoE,EAAEZ,EAAE,QAAS,EAAC,cAAc,EAAE0N,EAAEsuB,EAAE,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAEvP,EAAE/e,EAAE,OAAO7Q,EAAE,EAAEA,EAAE4vB,EAAE5vB,GAAG,EAAE,CAAC,IAAI2T,EAAE9C,EAAE7Q,CAAC,EAAE2T,EAAE,IAAIwzC,EAAElhD,EAAEjC,EAAEtB,CAAC,EAAE,KAAKS,EAAEwQ,EAAE,EAAE,EAAE,EAAExQ,EAAE,KAAKT,EAAEiR,EAAE,EAAE,EAAE,GAAG,IAAI1R,GAAGk9B,EAAE,UAAU,KAAK,OAAO,KAAK,IAAIgoB,CAAC,CAAC,EAAE,GAAGxnD,EAAEwnD,EAAE,EAAEllD,GAAG0R,EAAE,GAAG,CAACA,EAAE,EAAE,CAAC1R,GAAG,GAAGjC,EAAE,IAAI2T,EAAE9C,EAAE7Q,EAAE,CAAC,GAAG,IAAIU,EAAEqD,EAAE4P,EAAE,CAAC,EAAEuzC,IAAIjlD,EAAEilD,EAAE,GAAGjlD,CAAC,GAAGxE,EAAY,OAAOiD,GAAjB,SAAmBA,EAAE,QAAQ,KAAKuB,CAAC,EAAEvB,EAAEuB,EAAEsE,EAAEoN,EAAE,EAAEhU,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG4G,EAAE,OAAO9I,EAAE,IAAIunE,EAAErlE,EAAEoE,EAAE,OAAOA,EAAE,KAAK,OAAkB,OAAOihE,GAAnB,WAAqBA,EAAEvnE,CAAC,EAAEunE,EAAE,QAAQ,KAAKvnE,CAAC,CAAC,EAAE8I,EAAE,GAAG,SAAS44B,EAAEz8B,EAAE,CAAC,OAAOS,EAAEg8B,EAAEz8B,EAAE,KAAK,EAAE,CAAC,EAAE6D,EAAE,KAAK,SAAS44B,EAAEz8B,EAAE,CAAC,OAAOS,EAAEg8B,EAAEz8B,EAAE,IAAI,CAAC,EAAE,IAAIuD,EAAE,SAASk5B,EAAE,CAAC,OAAOA,EAAE,GAAGn7B,EAAE,IAAG,EAAGA,EAAC,CAAE,EAAEuC,EAAE,MAAM,SAAS44B,EAAE,CAAC,OAAO,KAAK,GAAGl5B,EAAE,IAAI,EAAEk5B,CAAC,CAAC,EAAE54B,EAAE,QAAQ,SAAS44B,EAAE,CAAC,OAAO,KAAK,KAAKl5B,EAAE,IAAI,EAAEk5B,CAAC,CAAC,CAAC,CAAC,+ECAz4C,SAASn7B,EAAE,EAAE,CAAsD8gE,EAAA,QAAe,GAAmI,GAAEC,GAAM,UAAU,CAAc,IAAI/gE,EAAE,EAAEuC,EAAE,IAAIpD,EAAE,IAAIT,EAAE,KAAKy8B,EAAE,MAAMz7B,EAAE,sFAAsFwjD,EAAE,QAAQr2C,EAAE,OAAOpT,EAAE,sKAAsKwI,EAAE,CAAC,MAAMihD,EAAE,OAAOr2C,EAAE,KAAKsuB,EAAE,MAAMz8B,EAAE,QAAQS,EAAE,QAAQoD,EAAE,aAAa,EAAE,MAAM,MAAM,EAAEvG,EAAE,SAASgE,EAAE,CAAC,OAAOA,aAAa/B,CAAC,EAAEklD,EAAE,SAASnjD,EAAErE,EAAE4G,EAAE,CAAC,OAAO,IAAItE,EAAE+B,EAAEuC,EAAE5G,EAAE,EAAE,CAAC,EAAEiwB,EAAE,SAAS5rB,EAAE,CAAC,OAAO,EAAE,EAAEA,CAAC,EAAE,GAAG,EAAED,EAAE,SAASC,EAAE,CAAC,OAAOA,EAAE,CAAC,EAAEihE,EAAE,SAASjhE,EAAE,CAAC,OAAOD,EAAEC,CAAC,EAAE,KAAK,KAAKA,CAAC,EAAE,KAAK,MAAMA,CAAC,CAAC,EAAE2P,EAAE,SAAS3P,EAAE,CAAC,OAAO,KAAK,IAAIA,CAAC,CAAC,EAAEkhE,EAAE,SAASlhE,EAAErE,EAAE,CAAC,OAAOqE,EAAED,EAAEC,CAAC,EAAE,CAAC,SAAS,GAAG,OAAO,GAAG2P,EAAE3P,CAAC,EAAErE,CAAC,EAAE,CAAC,SAAS,GAAG,OAAO,GAAGqE,EAAErE,CAAC,EAAE,CAAC,SAAS,GAAG,OAAO,EAAE,CAAC,EAAEsC,EAAE,UAAU,CAAC,SAAS8B,EAAEC,EAAErE,EAAE4G,EAAE,CAAC,IAAIpD,EAAE,KAAK,GAAG,KAAK,GAAG,CAAE,EAAC,KAAK,GAAGoD,EAAWvC,IAAT,SAAa,KAAK,IAAI,EAAE,KAAK,sBAAqB,GAAIrE,EAAE,OAAOwnD,EAAEnjD,EAAEiC,EAAE2pB,EAAEjwB,CAAC,CAAC,EAAE,IAAI,EAAE,GAAa,OAAOqE,GAAjB,SAAmB,OAAO,KAAK,IAAIA,EAAE,KAAK,sBAAqB,EAAG,KAAK,GAAa,OAAOA,GAAjB,SAAmB,OAAO,OAAO,KAAKA,CAAC,EAAE,QAAS,SAASrE,EAAE,CAACwD,EAAE,GAAGysB,EAAEjwB,CAAC,CAAC,EAAEqE,EAAErE,CAAC,CAAC,CAAC,EAAG,KAAK,kBAAkB,KAAK,GAAa,OAAOqE,GAAjB,SAAmB,CAAC,IAAItB,EAAEsB,EAAE,MAAMvG,CAAC,EAAE,GAAGiF,EAAE,CAAC,IAAIy8B,EAAEz8B,EAAE,MAAM,CAAC,EAAE,IAAK,SAASsB,EAAE,CAAC,OAAaA,GAAN,KAAQ,OAAOA,CAAC,EAAE,CAAC,CAAC,EAAG,OAAO,KAAK,GAAG,MAAMm7B,EAAE,CAAC,EAAE,KAAK,GAAG,OAAOA,EAAE,CAAC,EAAE,KAAK,GAAG,MAAMA,EAAE,CAAC,EAAE,KAAK,GAAG,KAAKA,EAAE,CAAC,EAAE,KAAK,GAAG,MAAMA,EAAE,CAAC,EAAE,KAAK,GAAG,QAAQA,EAAE,CAAC,EAAE,KAAK,GAAG,QAAQA,EAAE,CAAC,EAAE,KAAK,gBAAe,EAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,IAAIxrB,EAAE5P,EAAE,UAAU,OAAO4P,EAAE,gBAAgB,UAAU,CAAC,IAAI3P,EAAE,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,EAAE,EAAE,OAAQ,SAASrE,EAAE4G,EAAE,CAAC,OAAO5G,GAAGqE,EAAE,GAAGuC,CAAC,GAAG,GAAGN,EAAEM,CAAC,CAAC,EAAG,CAAC,CAAC,EAAEoN,EAAE,sBAAsB,UAAU,CAAC,IAAI3P,EAAE,KAAK,IAAI,KAAK,GAAG,MAAMihE,EAAEjhE,EAAEkjD,CAAC,EAAEljD,GAAGkjD,EAAE,KAAK,GAAG,OAAO+d,EAAEjhE,EAAE6M,CAAC,EAAE7M,GAAG6M,EAAE,KAAK,GAAG,KAAKo0D,EAAEjhE,EAAEm7B,CAAC,EAAEn7B,GAAGm7B,EAAE,KAAK,GAAG,MAAM8lC,EAAEjhE,EAAEtB,CAAC,EAAEsB,GAAGtB,EAAE,KAAK,GAAG,QAAQuiE,EAAEjhE,EAAEb,CAAC,EAAEa,GAAGb,EAAE,KAAK,GAAG,QAAQ8hE,EAAEjhE,EAAEuC,CAAC,EAAEvC,GAAGuC,EAAE,KAAK,GAAG,aAAavC,CAAC,EAAE2P,EAAE,YAAY,UAAU,CAAC,IAAI3P,EAAEkhE,EAAE,KAAK,GAAG,MAAM,GAAG,EAAEvlE,EAAEulE,EAAE,KAAK,GAAG,OAAO,GAAG,EAAE3+D,EAAE,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK,GAAG,QAAQA,GAAG,EAAE,KAAK,GAAG,OAAO,IAAIpD,EAAE+hE,EAAE3+D,EAAE,GAAG,EAAE7D,EAAEwiE,EAAE,KAAK,GAAG,MAAM,GAAG,EAAE/lC,EAAE+lC,EAAE,KAAK,GAAG,QAAQ,GAAG,EAAExhE,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,GAAG,eAAeA,GAAG,KAAK,GAAG,aAAa,KAAK,IAAIwjD,EAAEge,EAAExhE,EAAE,GAAG,EAAEmN,EAAE7M,EAAE,UAAUrE,EAAE,UAAUwD,EAAE,UAAUT,EAAE,UAAUy8B,EAAE,UAAU+nB,EAAE,SAASzpD,EAAEiF,EAAE,QAAQy8B,EAAE,QAAQ+nB,EAAE,OAAO,IAAI,GAAGjhD,GAAG4K,EAAE,IAAI,IAAI,IAAI7M,EAAE,OAAOrE,EAAE,OAAOwD,EAAE,OAAO1F,EAAEiF,EAAE,OAAOy8B,EAAE,OAAO+nB,EAAE,OAAO,OAAYjhD,IAAN,KAAgBA,IAAP,KAAS,MAAMA,CAAC,EAAE0N,EAAE,OAAO,UAAU,CAAC,OAAO,KAAK,YAAW,CAAE,EAAEA,EAAE,OAAO,SAAS3P,EAAE,CAAC,IAAIuC,EAAEvC,GAAG,sBAAsBb,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,GAAG,OAAO,GAAG,EAAE,EAAE,KAAK,GAAG,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,GAAG,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,GAAG,QAAQ,GAAG,EAAE,EAAE,KAAK,GAAG,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,GAAG,QAAQ,GAAG,EAAE,EAAE,KAAK,GAAG,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,aAAa,EAAE,GAAG,CAAC,EAAE,OAAOoD,EAAE,QAAQ7C,EAAG,SAASM,EAAErE,EAAE,CAAC,OAAOA,GAAG,OAAOwD,EAAEa,CAAC,CAAC,CAAC,CAAG,CAAA,EAAE2P,EAAE,GAAG,SAAS3P,EAAE,CAAC,OAAO,KAAK,IAAIiC,EAAE2pB,EAAE5rB,CAAC,CAAC,CAAC,EAAE2P,EAAE,IAAI,SAAS3P,EAAE,CAAC,IAAIrE,EAAE,KAAK,IAAI4G,EAAEqpB,EAAE5rB,CAAC,EAAE,OAAuBuC,IAAjB,eAAmB5G,GAAG,IAAIA,EAAY4G,IAAV,QAAY0+D,EAAEtlE,EAAEsG,EAAEM,CAAC,CAAC,EAAE,KAAK,GAAGA,CAAC,EAAM5G,IAAJ,EAAM,EAAEA,CAAC,EAAEgU,EAAE,IAAI,SAAS3P,EAAErE,EAAE4G,EAAE,CAAC,IAAIpD,EAAE,OAAOA,EAAExD,EAAEqE,EAAEiC,EAAE2pB,EAAEjwB,CAAC,CAAC,EAAEK,EAAEgE,CAAC,EAAEA,EAAE,IAAImjD,EAAEnjD,EAAE,IAAI,EAAE,IAAImjD,EAAE,KAAK,IAAIhkD,GAAGoD,EAAE,GAAG,GAAG,IAAI,CAAC,EAAEoN,EAAE,SAAS,SAAS3P,EAAErE,EAAE,CAAC,OAAO,KAAK,IAAIqE,EAAErE,EAAE,EAAE,CAAC,EAAEgU,EAAE,OAAO,SAAS3P,EAAE,CAAC,IAAIrE,EAAE,KAAK,MAAO,EAAC,OAAOA,EAAE,GAAGqE,EAAErE,CAAC,EAAEgU,EAAE,MAAM,UAAU,CAAC,OAAOwzC,EAAE,KAAK,IAAI,IAAI,CAAC,EAAExzC,EAAE,SAAS,SAAShU,EAAE,CAAC,OAAOqE,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,OAAO,KAAK,EAAE,EAAE,QAAQ,CAACrE,CAAC,CAAC,EAAEgU,EAAE,aAAa,UAAU,CAAC,OAAO,KAAK,IAAI,cAAc,CAAC,EAAEA,EAAE,eAAe,UAAU,CAAC,OAAO,KAAK,GAAG,cAAc,CAAC,EAAEA,EAAE,QAAQ,UAAU,CAAC,OAAO,KAAK,IAAI,SAAS,CAAC,EAAEA,EAAE,UAAU,UAAU,CAAC,OAAO,KAAK,GAAG,SAAS,CAAC,EAAEA,EAAE,QAAQ,UAAU,CAAC,OAAO,KAAK,IAAI,SAAS,CAAC,EAAEA,EAAE,UAAU,UAAU,CAAC,OAAO,KAAK,GAAG,SAAS,CAAC,EAAEA,EAAE,MAAM,UAAU,CAAC,OAAO,KAAK,IAAI,OAAO,CAAC,EAAEA,EAAE,QAAQ,UAAU,CAAC,OAAO,KAAK,GAAG,OAAO,CAAC,EAAEA,EAAE,KAAK,UAAU,CAAC,OAAO,KAAK,IAAI,MAAM,CAAC,EAAEA,EAAE,OAAO,UAAU,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC,EAAEA,EAAE,MAAM,UAAU,CAAC,OAAO,KAAK,IAAI,OAAO,CAAC,EAAEA,EAAE,QAAQ,UAAU,CAAC,OAAO,KAAK,GAAG,OAAO,CAAC,EAAEA,EAAE,OAAO,UAAU,CAAC,OAAO,KAAK,IAAI,QAAQ,CAAC,EAAEA,EAAE,SAAS,UAAU,CAAC,OAAO,KAAK,GAAG,QAAQ,CAAC,EAAEA,EAAE,MAAM,UAAU,CAAC,OAAO,KAAK,IAAI,OAAO,CAAC,EAAEA,EAAE,QAAQ,UAAU,CAAC,OAAO,KAAK,GAAG,OAAO,CAAC,EAAE5P,CAAC,EAAC,EAAG,OAAO,SAASwC,EAAEpD,EAAET,EAAE,CAACsB,EAAEtB,EAAE,EAAEA,EAAC,EAAG,OAAQ,EAACA,EAAE,SAAS,SAASsB,EAAErE,EAAE,CAAC,IAAI4G,EAAE7D,EAAE,OAAQ,EAAC,OAAOykD,EAAEnjD,EAAE,CAAC,GAAGuC,CAAC,EAAE5G,CAAC,CAAC,EAAE+C,EAAE,WAAW1C,EAAE,IAAIm/B,EAAEh8B,EAAE,UAAU,IAAIO,EAAEP,EAAE,UAAU,SAASA,EAAE,UAAU,IAAI,SAASa,EAAErE,EAAE,CAAC,OAAOK,EAAEgE,CAAC,IAAIA,EAAEA,EAAE,eAAc,GAAIm7B,EAAE,KAAK,IAAI,EAAEn7B,EAAErE,CAAC,CAAC,EAAEwD,EAAE,UAAU,SAAS,SAASa,EAAErE,EAAE,CAAC,OAAOK,EAAEgE,CAAC,IAAIA,EAAEA,EAAE,eAAc,GAAIN,EAAE,KAAK,IAAI,EAAEM,EAAErE,CAAC,CAAC,CAAC,CAAC,CAAC,8ECA//I,SAASqE,EAAEb,EAAE,CAAsD2hE,EAAA,QAAe3hE,EAA8H,CAAA,GAAE4hE,GAAM,UAAU,CAAc,IAAI/gE,EAAE,SAASb,EAAE,uBAAuBT,EAAE,eAAe,OAAO,SAAS/C,EAAEwnD,EAAE5gD,EAAE,CAAC,IAAI2gD,EAAEC,EAAE,UAAU5gD,EAAE,IAAI,SAASvC,EAAE,CAAC,IAAIb,EAAE,CAAC,KAAKa,EAAE,IAAI,GAAG,KAAK,SAAS,EAAE,OAAO,IAAImjD,EAAEhkD,CAAC,CAAC,EAAE+jD,EAAE,IAAI,SAAS/jD,EAAE,CAAC,IAAIT,EAAE6D,EAAE,KAAK,OAAQ,EAAC,CAAC,OAAO,KAAK,GAAG,IAAI,EAAE,CAAC,EAAE,OAAOpD,EAAET,EAAE,IAAI,KAAK,UAAS,EAAGsB,CAAC,EAAEtB,CAAC,EAAEwkD,EAAE,MAAM,UAAU,CAAC,OAAO3gD,EAAE,KAAK,OAAQ,EAAC,CAAC,OAAO,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI7C,EAAEwjD,EAAE,MAAMA,EAAE,MAAM,SAASljD,EAAE,CAACA,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,OAAM,EAAG,EAAEA,EAAE,OAAO,IAAI,KAAK,QAAQA,EAAE,SAASN,EAAE,KAAK,KAAKM,CAAC,CAAC,EAAE,IAAIm7B,EAAE+nB,EAAE,KAAKA,EAAE,KAAK,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,IAAIljD,EAAE,KAAK,GAAG,KAAK,GAAGA,EAAE,eAAgB,EAAC,KAAK,GAAGA,EAAE,YAAa,EAAC,KAAK,GAAGA,EAAE,WAAY,EAAC,KAAK,GAAGA,EAAE,UAAW,EAAC,KAAK,GAAGA,EAAE,YAAa,EAAC,KAAK,GAAGA,EAAE,cAAe,EAAC,KAAK,GAAGA,EAAE,gBAAgB,KAAK,IAAIA,EAAE,mBAAkB,CAAE,MAAMm7B,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI1hC,EAAEypD,EAAE,UAAUA,EAAE,UAAU,SAASvnD,EAAEwnD,EAAE,CAAC,IAAI5gD,EAAE,KAAK,OAAM,EAAG,EAAE,GAAGA,EAAE5G,CAAC,EAAE,OAAO,KAAK,GAAG,EAAE4G,EAAE,KAAK,OAAO,EAAE9I,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,GAAa,OAAOkC,GAAjB,WAAqBA,EAAE,SAASqE,EAAE,CAAUA,IAAT,SAAaA,EAAE,IAAI,IAAIrE,EAAEqE,EAAE,MAAMb,CAAC,EAAE,GAAG,CAACxD,EAAE,OAAO,KAAK,IAAIwnD,GAAG,GAAGxnD,EAAE,CAAC,GAAG,MAAM+C,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE6D,EAAE4gD,EAAE,CAAC,EAAED,EAAE,GAAG,CAACC,EAAE,CAAC,GAAG,CAACA,EAAE,CAAC,EAAE,OAAWD,IAAJ,EAAM,EAAQ3gD,IAAN,IAAQ2gD,EAAE,CAACA,CAAC,EAAEvnD,CAAC,EAASA,IAAP,MAAU,OAAO,KAAK,IAAIunD,EAAE,KAAK,IAAIvnD,CAAC,GAAG,GAAG,GAAGA,EAAEA,EAAE+D,EAAE,KAAK,GAAGyjD,EAAE,OAAOzjD,EAAE,QAAQwjD,EAAExjD,EAAE,GAAO/D,IAAJ,EAAM+D,EAAE,GAAO/D,IAAJ,EAAM,CAAC,IAAIw/B,EAAE,KAAK,GAAG,KAAK,OAAM,EAAG,oBAAoB,GAAG,KAAK,UAAW,GAAEz7B,EAAE,KAAK,MAAK,EAAG,IAAIwjD,EAAE/nB,EAAEn7B,CAAC,GAAG,QAAQkjD,EAAExjD,EAAE,GAAG,aAAay7B,CAAC,MAAMz7B,EAAE,KAAK,MAAM,OAAOA,CAAC,EAAE,IAAImN,EAAEq2C,EAAE,OAAOA,EAAE,OAAO,SAASljD,EAAE,CAAC,IAAIb,EAAEa,IAAI,KAAK,GAAG,yBAAyB,IAAI,OAAO6M,EAAE,KAAK,KAAK1N,CAAC,CAAC,EAAE+jD,EAAE,QAAQ,UAAU,CAAC,IAAIljD,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,EAAE,KAAK,SAAS,KAAK,GAAG,cAAc,KAAK,GAAG,kBAAmB,GAAE,OAAO,KAAK,GAAG,UAAU,IAAIA,CAAC,EAAEkjD,EAAE,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAEA,EAAE,YAAY,UAAU,CAAC,OAAO,KAAK,OAAM,EAAG,aAAa,EAAEA,EAAE,SAAS,UAAU,CAAC,OAAO,KAAK,OAAM,EAAG,YAAW,CAAE,EAAE,IAAInjD,EAAEmjD,EAAE,OAAOA,EAAE,OAAO,SAASljD,EAAE,CAAC,OAAYA,IAAN,KAAS,KAAK,QAAQuC,EAAE,KAAK,OAAO,yBAAyB,CAAC,EAAE,OAAM,EAAGxC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI/D,EAAEknD,EAAE,KAAKA,EAAE,KAAK,SAASljD,EAAEb,EAAET,EAAE,CAAC,GAAGsB,GAAG,KAAK,KAAKA,EAAE,GAAG,OAAOhE,EAAE,KAAK,KAAKgE,EAAEb,EAAET,CAAC,EAAE,IAAI/C,EAAE,KAAK,MAAK,EAAGwnD,EAAE5gD,EAAEvC,CAAC,EAAE,QAAQ,OAAOhE,EAAE,KAAKL,EAAEwnD,EAAEhkD,EAAET,CAAC,CAAC,CAAC,CAAC,CAAC,8ECAzsE,SAASsB,EAAEtB,EAAE,CAAsDoiE,EAAe,QAAApiE,EAAC,CAAkH,GAAEqiE,GAAM,UAAU,CAAc,IAAI/gE,EAAE,IAAItB,EAAE,IAAI6D,EAAE,KAAK,EAAE,cAAcpD,EAAE,SAASxD,EAAE,SAASunD,EAAE,OAAOzpD,EAAE,MAAMiG,EAAE,OAAOyjD,EAAE,QAAQt2C,EAAE,UAAU7Q,EAAE,OAAOiG,EAAE,OAAOlC,EAAE,eAAekhE,EAAE,6FAA6FtxD,EAAE,sFAAsFqxD,EAAE,CAAC,KAAK,KAAK,SAAS,2DAA2D,MAAM,GAAG,EAAE,OAAO,wFAAwF,MAAM,GAAG,EAAE,QAAQ,SAAShhE,EAAE,CAAC,IAAItB,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE6D,EAAEvC,EAAE,IAAI,MAAM,IAAIA,GAAGtB,GAAG6D,EAAE,IAAI,EAAE,GAAG7D,EAAE6D,CAAC,GAAG7D,EAAE,CAAC,GAAG,GAAG,CAAC,EAAEktB,EAAE,SAAS5rB,EAAEtB,EAAE6D,EAAE,CAAC,IAAI44B,EAAE,OAAOn7B,CAAC,EAAE,MAAM,CAACm7B,GAAGA,EAAE,QAAQz8B,EAAEsB,EAAE,GAAG,MAAMtB,EAAE,EAAEy8B,EAAE,MAAM,EAAE,KAAK54B,CAAC,EAAEvC,CAAC,EAAEtD,EAAE,CAAC,EAAEkvB,EAAE,EAAE,SAAS5rB,EAAE,CAAC,IAAItB,EAAE,CAACsB,EAAE,YAAYuC,EAAE,KAAK,IAAI7D,CAAC,EAAEy8B,EAAE,KAAK,MAAM54B,EAAE,EAAE,EAAEpD,EAAEoD,EAAE,GAAG,OAAO7D,GAAG,EAAE,IAAI,KAAKktB,EAAEuP,EAAE,EAAE,GAAG,EAAE,IAAIvP,EAAEzsB,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,SAASa,EAAEtB,EAAE6D,EAAE,CAAC,GAAG7D,EAAE,OAAO6D,EAAE,KAAI,EAAG,MAAM,CAACvC,EAAEuC,EAAE7D,CAAC,EAAE,IAAIy8B,EAAE,IAAI54B,EAAE,KAAI,EAAG7D,EAAE,KAAI,IAAK6D,EAAE,QAAQ7D,EAAE,MAAK,GAAIS,EAAET,EAAE,QAAQ,IAAIy8B,EAAEgoB,CAAC,EAAExnD,EAAE4G,EAAEpD,EAAE,EAAE+jD,EAAExkD,EAAE,QAAQ,IAAIy8B,GAAGx/B,EAAE,GAAG,GAAGwnD,CAAC,EAAE,MAAM,EAAE,EAAEhoB,GAAG54B,EAAEpD,IAAIxD,EAAEwD,EAAE+jD,EAAEA,EAAE/jD,KAAK,EAAE,EAAE,EAAE,SAASa,EAAE,CAAC,OAAOA,EAAE,EAAE,KAAK,KAAKA,CAAC,GAAG,EAAE,KAAK,MAAMA,CAAC,CAAC,EAAE,EAAE,SAASA,EAAE,CAAC,MAAM,CAAC,EAAEmjD,EAAE,EAAEnnD,EAAE,EAAE0D,EAAE,EAAEjG,EAAE,EAAEwI,EAAE,EAAEihD,EAAE,EAAEvnD,EAAE,EAAEwD,EAAE,GAAG,EAAE,EAAE0N,CAAC,EAAE7M,CAAC,GAAG,OAAOA,GAAG,EAAE,EAAE,YAAa,EAAC,QAAQ,KAAK,EAAE,CAAC,EAAE,EAAE,SAASA,EAAE,CAAC,OAAgBA,IAAT,MAAU,CAAC,EAAEkhE,EAAE,KAAKC,EAAE,CAAE,EAACA,EAAED,CAAC,EAAEF,EAAE,IAAI/iE,EAAE,SAAS+B,EAAE,CAAC,OAAOA,aAAauE,CAAC,EAAE68D,EAAE,SAASphE,EAAEtB,EAAE6D,EAAE44B,EAAE,CAAC,IAAIh8B,EAAE,GAAG,CAACT,EAAE,OAAOwiE,EAAE,GAAa,OAAOxiE,GAAjB,SAAmB,CAAC,IAAI/C,EAAE+C,EAAE,YAAW,EAAGyiE,EAAExlE,CAAC,IAAIwD,EAAExD,GAAG4G,IAAI4+D,EAAExlE,CAAC,EAAE4G,EAAEpD,EAAExD,GAAG,IAAIunD,EAAExkD,EAAE,MAAM,GAAG,EAAE,GAAG,CAACS,GAAG+jD,EAAE,OAAO,EAAE,OAAOljD,EAAEkjD,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAIzpD,EAAEiF,EAAE,KAAKyiE,EAAE1nE,CAAC,EAAEiF,EAAES,EAAE1F,CAAC,CAAC,MAAM,CAAC0hC,GAAGh8B,IAAI+hE,EAAE/hE,GAAGA,GAAG,CAACg8B,GAAG+lC,CAAC,EAAE70D,EAAE,SAASrM,EAAEtB,EAAE,CAAC,GAAGT,EAAE+B,CAAC,EAAE,OAAOA,EAAE,MAAK,EAAG,IAAIuC,EAAY,OAAO7D,GAAjB,SAAmBA,EAAE,CAAA,EAAG,OAAO6D,EAAE,KAAKvC,EAAEuC,EAAE,KAAK,UAAU,IAAIgC,EAAEhC,CAAC,CAAC,EAAE8+D,EAAE3kE,EAAE2kE,EAAE,EAAED,EAAEC,EAAE,EAAEpjE,EAAEojE,EAAE,EAAE,SAASrhE,EAAEtB,EAAE,CAAC,OAAO2N,EAAErM,EAAE,CAAC,OAAOtB,EAAE,GAAG,IAAIA,EAAE,GAAG,EAAEA,EAAE,GAAG,QAAQA,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI6F,EAAE,UAAU,CAAC,SAASy8D,EAAEhhE,EAAE,CAAC,KAAK,GAAGohE,EAAEphE,EAAE,OAAO,KAAK,EAAE,EAAE,KAAK,MAAMA,CAAC,CAAC,CAAC,IAAI4rB,EAAEo1C,EAAE,UAAU,OAAOp1C,EAAE,MAAM,SAAS5rB,EAAE,CAAC,KAAK,GAAG,SAASA,EAAE,CAAC,IAAItB,EAAEsB,EAAE,KAAKuC,EAAEvC,EAAE,IAAI,GAAUtB,IAAP,KAAS,OAAO,IAAI,KAAK,GAAG,EAAE,GAAG2iE,EAAE,EAAE3iE,CAAC,EAAE,OAAO,IAAI,KAAK,GAAGA,aAAa,KAAK,OAAO,IAAI,KAAKA,CAAC,EAAE,GAAa,OAAOA,GAAjB,UAAoB,CAAC,MAAM,KAAKA,CAAC,EAAE,CAAC,IAAIy8B,EAAEz8B,EAAE,MAAMuiE,CAAC,EAAE,GAAG9lC,EAAE,CAAC,IAAIh8B,EAAEg8B,EAAE,CAAC,EAAE,GAAG,EAAEx/B,IAAGw/B,EAAE,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC,EAAE,OAAO54B,EAAE,IAAI,KAAK,KAAK,IAAI44B,EAAE,CAAC,EAAEh8B,EAAEg8B,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,GAAG,EAAEx/B,EAAC,CAAC,EAAE,IAAI,KAAKw/B,EAAE,CAAC,EAAEh8B,EAAEg8B,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,GAAG,EAAEA,EAAE,CAAC,GAAG,EAAEx/B,EAAC,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK+C,CAAC,CAAC,EAAEsB,CAAC,EAAE,KAAK,GAAGA,EAAE,GAAG,GAAG,KAAK,KAAI,CAAE,EAAE4rB,EAAE,KAAK,UAAU,CAAC,IAAI5rB,EAAE,KAAK,GAAG,KAAK,GAAGA,EAAE,YAAW,EAAG,KAAK,GAAGA,EAAE,SAAU,EAAC,KAAK,GAAGA,EAAE,QAAS,EAAC,KAAK,GAAGA,EAAE,OAAQ,EAAC,KAAK,GAAGA,EAAE,WAAW,KAAK,GAAGA,EAAE,WAAY,EAAC,KAAK,GAAGA,EAAE,WAAU,EAAG,KAAK,IAAIA,EAAE,gBAAiB,CAAA,EAAE4rB,EAAE,OAAO,UAAU,CAAC,OAAOy1C,CAAC,EAAEz1C,EAAE,QAAQ,UAAU,CAAC,OAAQ,KAAK,GAAG,SAAQ,IAAK7rB,CAAE,EAAE6rB,EAAE,OAAO,SAAS5rB,EAAEtB,EAAE,CAAC,IAAI6D,EAAE8J,EAAErM,CAAC,EAAE,OAAO,KAAK,QAAQtB,CAAC,GAAG6D,GAAGA,GAAG,KAAK,MAAM7D,CAAC,CAAC,EAAEktB,EAAE,QAAQ,SAAS5rB,EAAEtB,EAAE,CAAC,OAAO2N,EAAErM,CAAC,EAAE,KAAK,QAAQtB,CAAC,CAAC,EAAEktB,EAAE,SAAS,SAAS5rB,EAAEtB,EAAE,CAAC,OAAO,KAAK,MAAMA,CAAC,EAAE2N,EAAErM,CAAC,CAAC,EAAE4rB,EAAE,GAAG,SAAS5rB,EAAEtB,EAAE6D,EAAE,CAAC,OAAO8+D,EAAE,EAAErhE,CAAC,EAAE,KAAKtB,CAAC,EAAE,KAAK,IAAI6D,EAAEvC,CAAC,CAAC,EAAE4rB,EAAE,KAAK,UAAU,CAAC,OAAO,KAAK,MAAM,KAAK,QAAS,EAAC,GAAG,CAAC,EAAEA,EAAE,QAAQ,UAAU,CAAC,OAAO,KAAK,GAAG,QAAS,CAAA,EAAEA,EAAE,QAAQ,SAAS5rB,EAAEtB,EAAE,CAAC,IAAI6D,EAAE,KAAK44B,EAAE,CAAC,CAACkmC,EAAE,EAAE3iE,CAAC,GAAGA,EAAEmO,EAAEw0D,EAAE,EAAErhE,CAAC,EAAED,EAAE,SAASC,GAAEtB,EAAE,CAAC,IAAIS,EAAEkiE,EAAE,EAAE9+D,EAAE,GAAG,KAAK,IAAIA,EAAE,GAAG7D,EAAEsB,EAAC,EAAE,IAAI,KAAKuC,EAAE,GAAG7D,EAAEsB,EAAC,EAAEuC,CAAC,EAAE,OAAO44B,EAAEh8B,EAAEA,EAAE,MAAM1F,CAAC,CAAC,EAAEwnE,GAAE,SAASjhE,GAAEtB,EAAE,CAAC,OAAO2iE,EAAE,EAAE9+D,EAAE,OAAM,EAAGvC,EAAC,EAAE,MAAMuC,EAAE,OAAO,GAAG,GAAG44B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,MAAMz8B,CAAC,CAAC,EAAE6D,CAAC,CAAC,EAAEoN,GAAE,KAAK,GAAGqxD,GAAE,KAAK,GAAGp1C,GAAE,KAAK,GAAGlvB,GAAE,OAAO,KAAK,GAAG,MAAM,IAAI,OAAOmQ,EAAG,CAAA,KAAK7Q,EAAE,OAAOm/B,EAAEp7B,EAAE,EAAE,CAAC,EAAEA,EAAE,GAAG,EAAE,EAAE,KAAKojD,EAAE,OAAOhoB,EAAEp7B,EAAE,EAAEihE,EAAC,EAAEjhE,EAAE,EAAEihE,GAAE,CAAC,EAAE,KAAKthE,EAAE,IAAIwhE,GAAE,KAAK,QAAO,EAAG,WAAW,EAAEC,IAAGxxD,GAAEuxD,GAAEvxD,GAAE,EAAEA,IAAGuxD,GAAE,OAAOnhE,EAAEo7B,EAAEvP,GAAEu1C,GAAEv1C,IAAG,EAAEu1C,IAAGH,EAAC,EAAE,KAAKvnE,EAAE,KAAKwI,EAAE,OAAOg/D,GAAEvkE,GAAE,QAAQ,CAAC,EAAE,KAAKwmD,EAAE,OAAO+d,GAAEvkE,GAAE,UAAU,CAAC,EAAE,KAAKf,EAAE,OAAOslE,GAAEvkE,GAAE,UAAU,CAAC,EAAE,KAAKyC,EAAE,OAAO8hE,GAAEvkE,GAAE,eAAe,CAAC,EAAE,QAAQ,OAAO,KAAK,MAAO,CAAA,CAAC,EAAEkvB,EAAE,MAAM,SAAS5rB,EAAE,CAAC,OAAO,KAAK,QAAQA,EAAE,EAAE,CAAC,EAAE4rB,EAAE,KAAK,SAAS5rB,EAAEtB,EAAE,CAAC,IAAI6D,EAAE7C,EAAE2hE,EAAE,EAAErhE,CAAC,EAAE6M,EAAE,OAAO,KAAK,GAAG,MAAM,IAAI9M,GAAGwC,EAAE,CAAE,EAACA,EAAE9I,CAAC,EAAEoT,EAAE,OAAOtK,EAAEN,CAAC,EAAE4K,EAAE,OAAOtK,EAAE4gD,CAAC,EAAEt2C,EAAE,QAAQtK,EAAEvG,CAAC,EAAE6Q,EAAE,WAAWtK,EAAE2gD,CAAC,EAAEr2C,EAAE,QAAQtK,EAAE5G,CAAC,EAAEkR,EAAE,UAAUtK,EAAEpD,CAAC,EAAE0N,EAAE,UAAUtK,EAAE,CAAC,EAAEsK,EAAE,eAAetK,GAAG7C,CAAC,EAAEuhE,GAAEvhE,IAAIjG,EAAE,KAAK,IAAIiF,EAAE,KAAK,IAAIA,EAAE,GAAGgB,IAAIyjD,GAAGzjD,IAAI1D,EAAE,CAAC,IAAI2T,GAAE,KAAK,MAAO,EAAC,IAAI1N,EAAE,CAAC,EAAE0N,GAAE,GAAG5P,CAAC,EAAEkhE,EAAC,EAAEtxD,GAAE,KAAM,EAAC,KAAK,GAAGA,GAAE,IAAI1N,EAAE,KAAK,IAAI,KAAK,GAAG0N,GAAE,YAAW,CAAE,CAAC,EAAE,EAAE,MAAM5P,GAAG,KAAK,GAAGA,CAAC,EAAEkhE,EAAC,EAAE,OAAO,KAAK,OAAO,IAAI,EAAEr1C,EAAE,IAAI,SAAS5rB,EAAEtB,EAAE,CAAC,OAAO,KAAK,MAAK,EAAG,KAAKsB,EAAEtB,CAAC,CAAC,EAAEktB,EAAE,IAAI,SAAS5rB,EAAE,CAAC,OAAO,KAAKqhE,EAAE,EAAErhE,CAAC,CAAC,EAAC,CAAE,EAAE4rB,EAAE,IAAI,SAASuP,EAAEtuB,EAAE,CAAC,IAAI5K,EAAElC,EAAE,KAAKo7B,EAAE,OAAOA,CAAC,EAAE,IAAI8lC,EAAEI,EAAE,EAAEx0D,CAAC,EAAE8C,EAAE,SAAS3P,GAAE,CAAC,IAAItB,GAAE2N,EAAEtM,CAAC,EAAE,OAAOshE,EAAE,EAAE3iE,GAAE,KAAKA,GAAE,KAAM,EAAC,KAAK,MAAMsB,GAAEm7B,CAAC,CAAC,EAAEp7B,CAAC,CAAC,EAAE,GAAGkhE,IAAI9d,EAAE,OAAO,KAAK,IAAIA,EAAE,KAAK,GAAGhoB,CAAC,EAAE,GAAG8lC,IAAIjlE,EAAE,OAAO,KAAK,IAAIA,EAAE,KAAK,GAAGm/B,CAAC,EAAE,GAAG8lC,IAAIxnE,EAAE,OAAOkW,EAAE,CAAC,EAAE,GAAGsxD,IAAIvhE,EAAE,OAAOiQ,EAAE,CAAC,EAAE,IAAIqxD,IAAG/+D,EAAE,CAAE,EAACA,EAAEtG,CAAC,EAAE+C,EAAEuD,EAAEihD,CAAC,EAAE3gD,EAAEN,EAAE9C,CAAC,EAAEa,EAAEiC,GAAGg/D,CAAC,GAAG,EAAEr1C,GAAE,KAAK,GAAG,UAAUuP,EAAE6lC,GAAE,OAAOK,EAAE,EAAEz1C,GAAE,IAAI,CAAC,EAAEA,EAAE,SAAS,SAAS5rB,EAAEtB,EAAE,CAAC,OAAO,KAAK,IAAI,GAAGsB,EAAEtB,CAAC,CAAC,EAAEktB,EAAE,OAAO,SAAS5rB,EAAE,CAAC,IAAItB,EAAE,KAAK6D,EAAE,KAAK,QAAS,EAAC,GAAG,CAAC,KAAK,QAAO,EAAG,OAAOA,EAAE,aAAaxC,EAAE,IAAIo7B,EAAEn7B,GAAG,uBAAuBb,EAAEkiE,EAAE,EAAE,IAAI,EAAE1lE,EAAE,KAAK,GAAGunD,GAAE,KAAK,GAAGzpD,GAAE,KAAK,GAAGiG,GAAE6C,EAAE,SAAS4gD,GAAE5gD,EAAE,OAAOsK,GAAE,SAAS7M,EAAEuC,EAAEpD,EAAExD,EAAE,CAAC,OAAOqE,IAAIA,EAAEuC,CAAC,GAAGvC,EAAEtB,EAAEy8B,CAAC,IAAIh8B,EAAEoD,CAAC,EAAE,MAAM,EAAE5G,CAAC,CAAC,EAAEK,GAAE,SAASgE,EAAE,CAAC,OAAOqhE,EAAE,EAAE1lE,EAAE,IAAI,GAAGqE,EAAE,GAAG,CAAC,EAAEiC,GAAEM,EAAE,UAAU,SAASvC,EAAEtB,EAAE6D,EAAE,CAAC,IAAI44B,EAAEn7B,EAAE,GAAG,KAAK,KAAK,OAAOuC,EAAE44B,EAAE,YAAW,EAAGA,CAAC,EAAE8lC,GAAE,CAAC,GAAG,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,KAAK,GAAG,EAAExnE,GAAE,EAAE,GAAG4nE,EAAE,EAAE5nE,GAAE,EAAE,EAAE,GAAG,EAAE,IAAIoT,GAAEtK,EAAE,YAAY9I,GAAE0pD,GAAE,CAAC,EAAE,KAAKt2C,GAAEs2C,GAAE1pD,EAAC,EAAE,EAAE,KAAK,GAAG,GAAG4nE,EAAE,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,KAAK,EAAE,EAAE,GAAGx0D,GAAEtK,EAAE,YAAY,KAAK,GAAG7C,GAAE,CAAC,EAAE,IAAImN,GAAEtK,EAAE,cAAc,KAAK,GAAG7C,GAAE,CAAC,EAAE,KAAKA,GAAE,KAAK,EAAE,EAAE,EAAE,OAAO/D,CAAC,EAAE,GAAG0lE,EAAE,EAAE1lE,EAAE,EAAE,GAAG,EAAE,EAAEK,GAAE,CAAC,EAAE,GAAGA,GAAE,CAAC,EAAE,EAAEiG,GAAEtG,EAAEunD,GAAE,EAAE,EAAE,EAAEjhD,GAAEtG,EAAEunD,GAAE,EAAE,EAAE,EAAE,OAAOA,EAAC,EAAE,GAAGme,EAAE,EAAEne,GAAE,EAAE,GAAG,EAAE,EAAE,OAAO,KAAK,EAAE,EAAE,GAAGme,EAAE,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,IAAIA,EAAE,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,EAAEliE,CAAC,EAAE,OAAOg8B,EAAE,QAAQxrB,EAAG,SAAS3P,EAAEtB,EAAE,CAAC,OAAOA,GAAGuiE,GAAEjhE,CAAC,GAAGb,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAG,EAAEysB,EAAE,UAAU,UAAU,CAAC,MAAO,IAAG,CAAC,KAAK,MAAM,KAAK,GAAG,kBAAiB,EAAG,EAAE,CAAC,EAAEA,EAAE,KAAK,SAASuP,EAAEl5B,EAAElC,EAAE,CAAC,IAAIkhE,EAAEtxD,EAAE0xD,EAAE,EAAEp/D,CAAC,EAAE++D,EAAE30D,EAAE8uB,CAAC,EAAEvP,IAAGo1C,EAAE,UAAS,EAAG,KAAK,UAAW,GAAEtiE,EAAEhC,GAAE,KAAKskE,EAAEE,GAAEG,EAAE,EAAE,KAAKL,CAAC,EAAE,OAAOE,IAAGD,EAAE,CAAA,EAAGA,EAAEjlE,CAAC,EAAEklE,GAAE,GAAGD,EAAE9d,CAAC,EAAE+d,GAAED,EAAEp0D,CAAC,EAAEq0D,GAAE,EAAED,EAAEvhE,CAAC,GAAGhD,GAAEkvB,IAAG,OAAOq1C,EAAExnE,CAAC,GAAGiD,GAAEkvB,IAAG,MAAMq1C,EAAE/d,CAAC,EAAExmD,GAAE6F,EAAE0+D,EAAEtlE,CAAC,EAAEe,GAAEgC,EAAEuiE,EAAE9hE,CAAC,EAAEzC,GAAEsD,EAAEihE,GAAGtxD,CAAC,GAAGjT,GAAEqD,EAAEmhE,GAAEG,EAAE,EAAEH,EAAC,CAAC,EAAEt1C,EAAE,YAAY,UAAU,CAAC,OAAO,KAAK,MAAMu3B,CAAC,EAAE,EAAE,EAAEv3B,EAAE,QAAQ,UAAU,CAAC,OAAOu1C,EAAE,KAAK,EAAE,CAAC,EAAEv1C,EAAE,OAAO,SAAS5rB,EAAEtB,EAAE,CAAC,GAAG,CAACsB,EAAE,OAAO,KAAK,GAAG,IAAIuC,EAAE,KAAK,MAAK,EAAG44B,EAAEimC,EAAEphE,EAAEtB,EAAE,EAAE,EAAE,OAAOy8B,IAAI54B,EAAE,GAAG44B,GAAG54B,CAAC,EAAEqpB,EAAE,MAAM,UAAU,CAAC,OAAOy1C,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,EAAEz1C,EAAE,OAAO,UAAU,CAAC,OAAO,IAAI,KAAK,KAAK,QAAO,CAAE,CAAC,EAAEA,EAAE,OAAO,UAAU,CAAC,OAAO,KAAK,QAAS,EAAC,KAAK,YAAW,EAAG,IAAI,EAAEA,EAAE,YAAY,UAAU,CAAC,OAAO,KAAK,GAAG,aAAa,EAAEA,EAAE,SAAS,UAAU,CAAC,OAAO,KAAK,GAAG,YAAW,CAAE,EAAEo1C,CAAC,EAAG,EAACM,EAAE/8D,EAAE,UAAU,OAAO8H,EAAE,UAAUi1D,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAKniE,CAAC,EAAE,CAAC,KAAKxD,CAAC,EAAE,CAAC,KAAKunD,CAAC,EAAE,CAAC,KAAKzpD,CAAC,EAAE,CAAC,KAAK0pD,CAAC,EAAE,CAAC,KAAKnnD,CAAC,EAAE,CAAC,KAAKiG,CAAC,CAAC,EAAE,QAAS,SAASjC,EAAE,CAACshE,EAAEthE,EAAE,CAAC,CAAC,EAAE,SAAStB,EAAE,CAAC,OAAO,KAAK,GAAGA,EAAEsB,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAG,EAACqM,EAAE,OAAO,SAASrM,EAAEtB,EAAE,CAAC,OAAOsB,EAAE,KAAKA,EAAEtB,EAAE6F,EAAE8H,CAAC,EAAErM,EAAE,GAAG,IAAIqM,CAAC,EAAEA,EAAE,OAAO+0D,EAAE/0D,EAAE,QAAQpO,EAAEoO,EAAE,KAAK,SAASrM,EAAE,CAAC,OAAOqM,EAAE,IAAIrM,CAAC,CAAC,EAAEqM,EAAE,GAAG80D,EAAED,CAAC,EAAE70D,EAAE,GAAG80D,EAAE90D,EAAE,EAAE,GAAGA,CAAC,CAAC,0CCQ3gNk1D,GAAM,OAAOC,EAAY,EACzBD,GAAM,OAAOnhC,EAAQ,EACrBmhC,GAAM,OAAOE,EAAG,EAET,SAASC,GAAgB3O,EAAgC,CAC9D,OAAOwO,GAAMxO,CAAS,CACxB,CAEO,SAAS4O,GAAgBC,EAAuC,CAC/D,MAAAvnB,EAAQunB,EAAU,MAAM,WAAW,EACzC,GAAIvnB,GAASA,EAAM,CAAC,GAAKA,EAAM,CAAC,EAAG,CAC3B,MAAA5+C,EAAQ4+C,EAAM,CAAC,EACfwnB,EAAQxnB,EAAM,CAAC,EAEdja,OADUmhC,GAAM,SAAS,CAAC9lE,EAAOomE,CAAK,EAC7B,GAAG,GAAG,CAAA,CAE1B,CAEgB,SAAAC,GAAarmE,EAAesmE,EAAyB,IAAK,CACjE,OAAAR,GAAM,SAAS9lE,EAAOsmE,CAAI,CACnC,CAEO,SAASC,IAAkC,CACzC,OAAAT,GAAA,EAAQ,OAAO,IAAI,CAC5B,CC3BO,KAAM,CAACU,GAAkBC,EAAoB,EAAI1mE,EAAa,EAAK,ECK7D,CAAC2mE,GAAiBC,EAAmB,EAAI5mE,EAEpD,IAAI,EAEO,CAAC6mE,GAAYC,EAAc,EAAI9mE,EAAa,CAAC,EAEpD+mE,GAAQ,IAAIvC,GAAM,CAAE,YAAa,EAAG,EAE1C,SAASwC,GAAS17D,EAAyB,CACzC,MAAM7I,EAAI,IAAI,QAAa,CAAC0sB,EAASonC,IAAW,CACxCwQ,GAAA,KAAMhY,GAAY,CACjBzjD,EAAA,EACF,KAAK,IAAM,CACPyjD,EAAA,EACH5/B,EAAQ,IAAI,CAAA,CACb,EACA,MAAM,IAAM,CACR4/B,EAAA,EACIwH,EAAA,CAAA,CACR,EACA,QAAQ,IAAM,CACbuQ,GAAeC,GAAM,MAAM,CAAA,CAC5B,CAAA,CACJ,CAAA,CACF,EACD,OAAAD,GAAeC,GAAM,MAAM,EAC3BA,GAAM,MAAM,EACLtkE,CACT,CAEA,eAAewkE,GAAgB7X,EAAmC,CAC5D,GAAAA,GAAYA,EAAS,QAAS,CAC1B,MAAA8X,EAAa9X,EAAU,QAAQ,uBAAuB,EACxD8X,GACFN,GAAoBM,CAAU,CAChC,CAEK,OAAA9X,CACT,CAEA,eAAsBn1C,GAAIikC,EAAaC,EAAc,GAAkB,CAC9D,OAAAyjB,GACJ,IAAI1jB,EAAK,CACR,OAAAC,CACD,CAAA,EACA,KAAK8oB,EAAe,EACpB,MAAO/kE,GAAU,CAChB,MAAIA,GAASA,EAAM,SAAWA,EAAM,SAAS,SAAW,KACtDwkE,GAAqB,EAAK,EAEtBxkE,CAAA,CACP,CACL,CAEA,eAAsBilE,GAAKjpB,EAAaC,EAAc,GAAkB,CACtE,OAAOyjB,GAAM,KAAK1jB,EAAKC,EAAQ,CAAA,CAAE,CACnC,CAEA,eAAeipB,GAASlpB,EAAap5B,EAAY,GAAkB,CACjE,OAAO88C,GAAM,KAAK1jB,EAAKp5B,EAAM,CAAA,CAAE,CACjC,CAEsB,eAAAuiD,GACpBC,EACAC,EACc,CACd,IAAIziD,EAAO,CACT,QAAAyiD,CACF,EACA,OAAOH,GAAS,aAAaE,CAAO,WAAYxiD,CAAI,CACtD,CAEA,eAAsB0iD,IAAiC,CAErD,OADe,MAAMvtD,GAAI,YAAY,GACrB,IAClB,CAUA,eAAsBwtD,IAAqC,CACzD,OAAOxtD,GAAI,cAAc,EAAE,KAAMm1C,GAAaA,EAAS,IAAI,CAC7D,CAEsB,eAAAsY,GACpBC,EACAC,EACmC,CAC/B,IAAAzpB,EAAS,IAAI,gBAAgB,CAC/B,SAAAwpB,EACA,SAAAC,CAAA,CACD,EAGM,MAAA,CAAC,IADO,MAAMhG,GAAM,KAAoB,cAAezjB,CAAM,GAC7C,IAAI,CAC7B,CAEA,eAAsB0pB,IAAS,CACb,MAAMV,GAAK,cAAc,EACzCT,GAAqB,EAAK,CAC5B,CASA,eAAsBoB,GAAO5nE,EAWD,CAC1B,IAAIi+C,EAAc,CAChB,aAAcj+C,GAAS,YACzB,EACA,OAAIA,GAAS,aACJi+C,EAAA,WAAa,GAAGj+C,EAAQ,UAAU,KAEvCA,GAAS,OACXi+C,EAAO,KAAOj+C,EAAQ,KAAK,KAAK,GAAG,GAEjCA,GAAS,SACXi+C,EAAO,OAASj+C,EAAQ,QAEtBA,GAAS,UACXi+C,EAAO,QAAUj+C,EAAQ,SAEpB+Z,GAAI,eAAgBkkC,CAAM,EAAE,KAAMiR,GAAaA,EAAS,IAAI,CACrE,CAWA,eAAsB2Y,GACpB5pB,EACmD,CACnD,OAAKA,IACHA,EAAS,CAAC,GAEPA,GAAQ,YACXA,EAAO,UAAYqoB,GAAwB,GAEtCvsD,GAAI,eAAgBkkC,CAAM,EAAE,KAAMiR,GAAaA,EAAS,IAAI,CACrE,CAEA,eAAsB4Y,GAAsBhgC,EAAqB,CAC/D,MAAMmW,EAAS,CACb,aAAcnW,EAAM,QAAQ,MAAO,aACnC,OAAQA,EAAM,QAAQ,OACtB,QAASA,EAAM,QAAQ,QACvB,cAAeA,EAAM,WAAW,cAChC,cAAeA,EAAM,WAAW,aAClC,EACA,OAAOg/B,GAAS,IACPG,GAAK,4BAA6BhpB,CAAM,CAChD,CACH,CAEA,eAAsB8pB,GAAazyD,EAAmC,CACpE,OAAOwxD,GAAS,IACPG,GAAK,eAAe3xD,EAAM,GAAG,UAAU,CAC/C,CACH,CAEA,eAAsB0yD,GAAuBlgC,EAAqB,CAChE,MAAMmW,EAAS,CACb,aAAcnW,EAAM,QAAQ,MAAO,aACnC,OAAQA,EAAM,QAAQ,OACtB,QAASA,EAAM,QAAQ,QACvB,cAAeA,EAAM,WAAW,cAChC,cAAeA,EAAM,WAAW,aAClC,EACA,OAAOg/B,GAAS,IACPG,GAAK,yBAA0BhpB,CAAM,CAC7C,CACH,CAEA,eAAsBgqB,GAAyBngC,EAAqB,CAClE,MAAMmW,EAAS,CACb,aAAcnW,EAAM,QAAQ,MAAO,aACnC,OAAQA,EAAM,QAAQ,OACtB,QAASA,EAAM,QAAQ,QACvB,cAAeA,EAAM,WAAW,cAChC,cAAeA,EAAM,WAAW,aAClC,EACA,OAAOg/B,GAAS,IACPG,GAAK,2BAA4BhpB,CAAM,CAC/C,CACH,CAEA,eAAsBiqB,GAAazmE,EAAmC,CAC7D,OAAAsY,GAAI,eAAetY,CAAE,EAAE,EAAE,KAAMytD,GAAaA,EAAS,IAAI,CAClE,CAEA,eAAsBiZ,IAGnB,CACD,OAAOpuD,GAAI,eAAe,EAAE,KAAMm1C,GAAaA,EAAS,IAAI,CAC9D,CAoBA,eAAsBkZ,GACpBC,EACAC,EAAwB,GACxBC,EACAC,EAC2B,CACvB,IAAAxqB,EACJ,OAAIsqB,EACItqB,EAAA,uBAEAA,EAAA,kBAEDjkC,GAAIikC,EAAK,CACd,MAAAqqB,EACA,WAAAE,EACA,YAAAC,CACD,CAAA,EAAE,KAAMtZ,GAAaA,EAAS,IAAI,CACrC,CAuBA,eAAsBuZ,GAASxZ,EAA2C,CACjE,OAAAl1C,GAAI,UAAWk1C,CAAO,EAAE,KAAMC,GAAaA,EAAS,IAAI,CACjE,CAEA,eAAsBwZ,GAAQC,EAGb,CAEf,OADiB,MAAM5uD,GAAI,iBAAkB4uD,CAAK,GAClC,IAClB,CAEA,eAAsBC,GAAYD,EAGjB,CAEf,OADiB,MAAM5uD,GAAI,qBAAsB4uD,CAAK,GACtC,IAClB,CAEiB,IAAAE,IAAAA,GAAV,CACL,eAAsBC,EAAQ9qB,EAA2B,CAGhD,OAFQ,MAAM,MAAMA,CAAG,GACV,KAAK,CAClB,CAHT6qB,EAAsB,QAAAC,EAMA5B,eAAAA,EAASlpB,EAAap5B,EAA8B,CACjE,OAAA,MAAM,MAAMo5B,EAAK,CACtB,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAUp5B,CAAI,CAAA,CAC1B,CAAA,CAPHikD,EAAsB,SAAA3B,EAUtB,eAAsB6B,EAAc9Z,EAKqB,CAChD,OAAAl1C,GAAI,8BAA+Bk1C,CAAO,EAAE,KAChDC,GAAaA,EAAS,IACzB,CAAA,CARF2Z,EAAsB,cAAAE,EAWtB,eAAsBC,GAA0C,CAC9D,OAAOjvD,GAAI,eAAe,EAAE,KAAMm1C,GAAaA,EAAS,IAAI,CAAA,CAD9D2Z,EAAsB,WAAAG,EAItB,eAAsBC,EAAcha,EAEd,CACb,OAAAl1C,GAAI,kBAAmBk1C,CAAO,EAAE,KAAMC,GAAaA,EAAS,IAAI,CAAA,CAHzE2Z,EAAsB,cAAAI,EAMtB,eAAsBjB,EAAuBlgC,EAAqB,CAChE,MAAMmW,EAAS,CACb,aAAcnW,EAAM,QAAQ,MAAO,aACnC,OAAQA,EAAM,QAAQ,OACtB,QAASA,EAAM,QAAQ,QACvB,cAAeA,EAAM,WAAW,cAChC,cAAeA,EAAM,WAAW,aAClC,EACA,OAAOg/B,GAAS,IACPG,GAAK,yBAA0BhpB,CAAM,CAC7C,CAAA,CAVH4qB,EAAsB,uBAAAb,EAatB,eAAsBkB,EAAyBphC,EAAqB,CAClE,MAAMmW,EAAS,CACb,aAAcnW,EAAM,QAAQ,MAAO,aACnC,OAAQA,EAAM,QAAQ,OACtB,QAASA,EAAM,QAAQ,QACvB,cAAeA,EAAM,WAAW,cAChC,cAAeA,EAAM,WAAW,aAClC,EACA,OAAOg/B,GAAS,IACPG,GAAK,2BAA4BhpB,CAAM,CAC/C,CAAA,CAVH4qB,EAAsB,yBAAAK,EAatB,eAAsBC,EAAc7zD,EAAqB,CACvD,OAAO2xD,GAAK,eAAe3xD,EAAM,GAAG,WAAW,CAAA,CADjDuzD,EAAsB,cAAAM,EAItB,eAAsBC,EAAgB9zD,EAAqB,CACzD,OAAO2xD,GAAK,eAAe3xD,EAAM,GAAG,cAAc,CAAA,CADpDuzD,EAAsB,gBAAAO,EAIA,eAAAC,EACpB/zD,EACAg0D,EACA,CACM,MAAAC,EAAO,SAAS,cAAc,MAAM,EACrCA,EAAA,aAAa,SAAU,MAAM,EAC7BA,EAAA,aAAa,SAAU,gBAAgB,EAEtC,MAAAC,EAAY,SAAS,cAAc,OAAO,EACtCA,EAAA,aAAa,OAAQ,QAAQ,EAC7BA,EAAA,aAAa,OAAQ,MAAM,EAC3BA,EAAA,aAAa,QAASF,CAAI,EACpCC,EAAK,YAAYC,CAAS,EAEpB,MAAAC,EAAa,SAAS,cAAc,OAAO,EACtCA,EAAA,aAAa,OAAQ,QAAQ,EAC7BA,EAAA,aAAa,OAAQ,OAAO,EACvCA,EAAW,aAAa,QAAS,KAAK,UAAUn0D,EAAM,OAAO,CAAC,EAC9Di0D,EAAK,YAAYE,CAAU,EAElB,SAAA,KAAK,YAAYF,CAAI,EAC9BA,EAAK,OAAO,CAAA,CArBdV,EAAsB,YAAAQ,EAwBtB,IAAIK,EAA4B,CAAC,EAEjC,eAAsBC,GAAe,CAC5B,KAAAD,EAAW,OAAS,GAAG,CACtB,MAAAE,EAAKF,EAAW,IAAI,EACtBE,GACFA,EAAG,MAAM,CACX,CACF,CANFf,EAAsB,aAAAc,EASA,eAAAE,EACpB5rB,EACAqhB,EACAwK,EACe,CACf,OAAO,IAAI,QAAQ,CAAC76C,EAAS86C,IAAY,CACvC,MAAMC,EAAiB1K,EAAQ,EAE/B,IAAIthB,EAAM,eADY,IAAI,gBAAgB,OAAO,QAAQC,CAAM,CAAC,EACvB,SAAU,CAAA,GAC7C,MAAA2rB,EAAK,IAAI,YAAY5rB,CAAG,EAC9B0rB,EAAW,KAAKE,CAAE,EACfA,EAAA,UAAa5mE,GAAM,CAChB,GAAAgnE,GAAkB1K,IAAW,CAC/B,QAAQ,IAAI,kCAAkC,EAC9CsK,EAAG,MAAM,EACT,MAAA,CAEF,MAAMj4D,EAAO,KAAK,MAAM3O,EAAE,IAAI,EAC1B8mE,GACFA,EAAOn4D,CAAI,CAEf,EAEAi4D,EAAG,QAAU,IAAM,CACjBA,EAAG,MAAM,EACLI,GAAkB1K,KAChBwK,GACFA,EAAO,IAAI,EAIT,MAAAnjE,EAAQ+iE,EAAW,QAAQE,CAAE,EAC/BjjE,EAAQ,IACC+iE,EAAA,OAAO/iE,EAAO,CAAC,EAGpBsoB,EAAA,CACV,CAAA,CACD,CAAA,CAtCH45C,EAAsB,UAAAgB,EAiDtB,eAAsBI,EACpBhsB,EACc,CACd,IAAIisB,EAAkB,IAAI,gBAAgB,OAAO,QAAQjsB,CAAM,CAAC,EAChE,OAAO,MAAM,uBAAwB,CACnC,OAAQ,OACR,QAAS,CACP,eAAgB,oCAChB,OAAQ,kBACV,EACA,KAAMisB,EAAgB,SAAS,CAAA,CAChC,CAAA,CAXHrB,EAAsB,eAAAoB,EActB,eAAsBE,GAA6B,CAC7C,IAAAjb,EAAW,MAAM,MAAM,mBAAmB,EAC9C,GAAIA,EAAS,GAEJ,OADI,MAAMA,EAAS,KAAK,CAEjC,CALF2Z,EAAsB,aAAAsB,EAQtB,eAAsBC,EAASv4D,EAA4B,CACrD,IAAAq9C,EAAW,MAAM,MAAMr9C,EAAM,CAC/B,OAAQ,QAAA,CACT,EAEG,GAAA,CAACq9C,EAAS,GACZ,MAAM,IAAI,MACR,uBAAuBA,EAAS,MAAM,MAAMA,EAAS,UAAU,EACjE,EAGK,OAAAA,CAAA,CAXT2Z,EAAsB,SAAAuB,EActB,eAAsBC,EAAa5oE,EAA0B,CACpD,OAAA2oE,EAAS,oBAAoB3oE,CAAE,EAAE,CAAA,CAD1ConE,EAAsB,aAAAwB,CAAA,GAhMPxB,KAAAA,GAAA,CAAA,EAAA,ECrTV,MAAMyB,GAAU,wmBCWhB,SAASC,IAAY,CAC1B,KAAM,CAAC1vB,EAAK2vB,CAAM,EAAI1qE,EAAa,UAAU,EAC7C,OAAAsW,EACGglB,GAAK,CAAA,IAACzvB,MAAI,CAAA,OAAE8+D,GAAS,CAAC,EAAEtvC,OAAQuvC,GAAWxgC,KAAM,KAAI,IAAAnlC,UAAA,CAAA,MAAA,CAAAqR,EACnDglB,GAAMmQ,KAAI,CAAA,IAAAxmC,UAAA,CAAA,OAAAqR,EACR+sB,GAAI,CAAA,IAACvN,WAAS,CAAA,OAAEilB,EAAI,CAAC,EAAEvjB,SAAUkzC,EAAM,IAAAzlE,UAAA,CAAAqR,MAAAA,CAAAA,EACrC0jC,GAAG,CAAC5kB,SAAQ,WAAYmb,MAAK,qBAAA,IAAAtrC,UAAA,CAAAqR,OAAAA,EAC3Bu0D,GAAQ,EAAA,CAAA,CAAA,CAAAv0D,EAAAA,EAEV0jC,GAAG,CAAC5kB,SAAQ,QAASmb,MAAK,QAAA,IAAAtrC,UAAA,CAAAqR,OAAAA,EACxBw0D,GAAK,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAx0D,EAIXglB,GAAMsQ,OAAM,CAAA,IAAA3mC,UAAA,CAAA,OAAAqR,EACVL,GAAM,CAACixB,QAAO,YAAavxB,QAASi1D,GAAS3lE,SAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAMtD,CAEA,SAAS4lE,IAAW,CACdnoE,IAAAA,EAAOsH,IACT,IAAA,CAAA,IAAA0M,EAAAC,GAAA,EAAA0mB,OAAAA,EAAA3mB,EAAqC1M,CAAC,EAAA0M,CAAAA,GAAA,EAGpCq0D,EAAOA,CAAC9sE,EAAWC,IACrB,CAAAs2B,EAAA,IAEK9xB,EAAIzE,CAAC,CAAC,EAAA,IAAAk4C,GAAA,EAAA,IAAA3hB,EAAA,IAAwC9xB,EAAIxE,CAAC,CAAC,CAAA,EAKvD8sE,EAAOA,CAAC/sE,EAAWC,IACrB,CAAAs2B,EAAA,IAEK9xB,EAAIzE,CAAC,CAAC,EAAA,IAAA8pD,GAAA,EAAA,IAAAvzB,EAAA,IAAqC9xB,EAAIxE,CAAC,CAAC,CAAA,EAKxD,MAAM+sE,EAAY,CAChB,CAACvoE,EAAI,GAAG,EAAG,WAAW,EACtB,CAACqoE,EAAK,IAAK,GAAG,EAAG,YAAY,EAC7B,CAACA,EAAK,IAAK,GAAG,EAAG,gBAAgB,EACjC,CAACA,EAAK,IAAK,GAAG,EAAG,aAAa,EAC9B,CAACroE,EAAI,GAAG,EAAG,8DAA8D,EACzE,CAACA,EAAI,IAAI,EAAG,yBAAyB,EACrC,CAACsoE,EAAK,QAAS,GAAG,EAAG,sCAAsC,EAC3D,CAACtoE,EAAI,IAAI,EAAG,sCAAsC,EAClD,CAACA,EAAI,GAAG,EAAG,wBAAwB,EACnC,CAACA,EAAI,GAAG,EAAG,+DAA+D,EAC1E,CAACA,EAAI,GAAG,EAAG,2BAA2B,EACtC,CAACA,EAAI,GAAG,EAAG,+BAA+B,EAC1C,CAACA,EAAI,GAAG,EAAG,sCAAsC,EACjD,CAACsoE,EAAK,UAAW,IAAI,EAAG,8BAA8B,EACtD,CAACA,EAAK,QAAS,GAAG,EAAG,gBAAgB,EACrC,CAACA,EAAK,QAAS,GAAG,EAAG,eAAe,EACpC,CAACD,EAAK,IAAK,GAAG,EAAG,2BAA2B,EAC5C,CAACA,EAAK,IAAK,GAAG,EAAG,qBAAqB,EACtC,CAACA,EAAK,IAAK,GAAG,EAAG,oCAAoC,CAAC,EAGxD,MAAA,CAAA9iB,GAAA,GAAA,IAAA,CAAA,IAAAE,EAAAC,GAAAA,EAAAG,EAAAJ,EAAAxU,WAAA4U,OAAAA,EAAAA,EAAAjyC,EAKS5L,GAAG,CAAC4wC,KAAM2vB,EAAShmE,SACjBA,CAAC/B,EAAGS,KAAC,IAAA,CAAA,IAAAunE,EAAA1iB,GAAA,EAAAI,EAAAsiB,EAAAv3B,WAAAoV,EAAAH,EAAAuiB,YAAA9tC,OAAAA,EAAAurB,EAAA,IAG+C1lD,EAAE,CAAC,CAAC,EAAAm6B,EAAA0rB,EAAA,IAC9C7lD,EAAE,CAAC,CAAC,EAAAgoE,CAAA,GAAA,CAAA,CAGd,CAAA,EAAA/iB,CAAAA,IAAA,CAMb,CAEA,SAAS2iB,IAAQ,CACf,KAAM,CAACtL,CAAO,EAAIr+D,GAAeknE,EAAU,EAE3C,OAAA,IAAA,CAAA,IAAA+C,EAAAviB,GAAA,EAAAwiB,EAAAD,EAAAz3B,WAAA23B,EAAAD,EAAAF,YAAAE,OAAAA,EAAAA,EAAA/0D,EAIS1K,GAAQ,CAAA,IAACjB,UAAQ,CAAA,MAAA,yBAAA,EAAA,IAAA1F,UAAA,CAAA,MAAA,CAAA,0BAAAuvB,EACQgrC,IAAAA,EAAAA,GAAWA,OAAO,EAAA,SAAQ,IAAGhrC,EACpDgrC,IAAAA,EAAW+L,GAAAA,QAAQ,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAAH,EAAAA,EAAA90D,EAIvB1L,EAAI,CAAA,IAACszB,MAAI,CAAE1J,OAAAA,EAAAmyC,IAAAA,CAAAA,CAAAA,GAAiB,CAAA,EAAIA,GAAAA,GAAAA,GAAqB6D,EAAO,EAAA,IAAAvlE,UAAA,CAAAumE,IAAAA,EAAA9iB,KAAA+iB,EAAAD,EAAA73B,WAAA+3B,EAAAD,EAAAN,YAAAQ,EAAAD,EAAAP,YAAAS,EAAAD,EAAAR,YAAAU,EAAAD,EAAAT,YAAAW,EAAAD,EAAAV,YAAAW,OAAAA,EAAAX,YAAAK,EAAAA,EAIjD7E,GAAeiF,CAAA,EAAAJ,EAAAA,EAAehB,GAAOsB,CAAA,EAAAN,CAAAA,CAAA,CAAA,EAAAF,CAAA,EAAAF,CAAAA,GAAA,CAkBzD,CChIO,IAAIW,GAAsC,KAY1C,SAASC,GAAgBtmB,EAAwB,CACvCqmB,GAAArmB,CACjB,yOCHO,KAAM,CAACilB,GAAUsB,EAAW,EAAIjsE,EAAa,EAAK,EAC5CksE,GAAWA,IAAMD,GAAY,EAAI,EACjCrB,GAAYA,IAAMqB,GAAY,EAAK,EAE1CE,GAAqB,MAErBC,GAAqB,CACzB,CAAC,MAAO,aAAa,EACrB,CAAC,KAAM,aAAa,EACpB,CAAC,KAAM,cAAc,EACrB,CAAC,KAAM,cAAc,EACrB,CAAC,MAAO,eAAe,EACvB,CAAC,MAAO,eAAe,EACvB,CAAC,KAAM,aAAa,EACpB,CAAC,KAAM,WAAW,EAClB,CAAC,GAAI,KAAK,CAAC,EAGb,SAASC,GAAiBC,EAAwB,CAChD,UAAWC,KAAMH,GACXG,GAAAA,EAAG,CAAC,IAAMD,EACL,MAAA,GAGJ,MAAA,EACT,CAEA,SAASE,IAA8B,CAC/BC,MAAAA,EAAiBC,aAAaC,QAAQ,YAAY,EAIxD,GAHAC,QAAQC,IAAK,+BAA8B,EAC3CD,QAAQC,IAAIJ,CAAc,EAEtBA,IAAmB,GACrBG,eAAQC,IAAI,iDAAiD,EACtD,GAGLJ,GAAAA,GAAkBJ,GAAiBI,CAAc,EAC3CI,eAAAA,IAAK,qCAAoCJ,CAAe,EAAC,EAC1DA,EAGHK,MAAAA,EAAkBf,IAAcnZ,UAAU6V,WAG5CqE,OAFJF,QAAQC,IAAI,kBAAkB,EAC9BD,QAAQC,IAAIC,CAAe,EACvBA,GAAmBT,GAAiBS,CAAe,GAC7CD,QAAAA,IAAK,2CAA0CC,CAAgB,EAAC,EACjEA,GACEA,GAAmBA,IAAoB,MAGzC,IAGDD,QAAAA,IAAK,+BAA8BV,EAAmB,EAAC,EACxDA,GACT,CAGO,KAAM,CAACY,GAAYC,EAAe,EACvChtE,EAAqBmsE,EAAkB,EAElC,SAASc,GAAeX,EAAe,CACpCO,QAAAA,IAAK,sCAAqCP,CAAM,EAAC,EACzDU,GAAgBV,CAAK,EACRY,aAAAA,QAAQ,aAAcZ,CAAK,CAC1C,CAEO,SAASa,GAAIjmE,EAAmD,CACrE0lE,QAAQC,IAAI,KAAK,EACjBD,QAAQC,IAAK,qBAAoB3lE,EAAMkmE,YAAa,EAAC,EACrD,MAAM1sB,EAAWJ,GAAY,EACvB,CAAC+sB,EAAe1sB,CAAe,EAAIF,GAAgB,EACnD6sB,EAAQpmE,EAAMomE,OAAS,SAI7B,GAAI,CAACC,EAAkBC,CAAmB,EAAIxtE,EAAa,EAAK,EAEhEgtE,GAAgBR,IAAqB,EAErC3oE,GAAQ,IAAM,CACZ4pE,GAASvuD,OAAQ,CACf,UAAYhc,GAAW,CACjB,CAAC,QAAS,WAAY,QAAQ,EAAEwqE,SAASxqE,EAAE0G,OAAOmD,OAAO,GAGpDm/D,GAAA,CACX,EACA,MAAQhpE,GAAW,CACb,CAAC,QAAS,WAAY,QAAQ,EAAEwqE,SAASxqE,EAAE0G,OAAOmD,OAAO,GAG7D2zC,EAAS,QAAQ,CACnB,EACA,MAAQx9C,GAAW,CACb,CAAC,QAAS,WAAY,QAAQ,EAAEwqE,SAASxqE,EAAE0G,OAAOmD,OAAO,GAG7D2zC,EAAS,SAAS,CACpB,EACA,MAAQx9C,GAAW,CACb,CAAC,QAAS,WAAY,QAAQ,EAAEwqE,SAASxqE,EAAE0G,OAAOmD,OAAO,GAG7D2zC,EAAS,YAAY,CACvB,EACA,MAAQx9C,GAAW,CACb,CAAC,QAAS,WAAY,QAAQ,EAAEwqE,SAASxqE,EAAE0G,OAAOmD,OAAO,GAG7D2zC,EAAS,SAAS,CACpB,EACA,aAAex9C,GAAW,CACpB,CAAC,QAAS,WAAY,QAAQ,EAAEwqE,SAASxqE,EAAE0G,OAAOmD,OAAO,GAG7C4zC,EAAA,CAAEgtB,EAAG73D,MAAAA,CAAW,CAClC,EACA,KAAON,GAAe,CAChB,GAAA,CAAC,QAAS,WAAY,QAAQ,EAAEk4D,SAASl4D,EAAM5L,OAAOmD,OAAO,EAC/D,OAEI7J,MAAAA,EAAIwL,SAASk/D,eAAe,qBAAqB,EACnD1qE,IACFA,EAAEw0B,MAAM,EACRx0B,EAAE2qE,MAAM,EACV,CACF,CACD,CAAA,CACF,EAEDjtE,GAAa,IAAM,CACb,GAAA,CAACsG,EAAMkmE,aACT,QAAS1N,KAAO0M,GACV1M,EAAI,CAAC,IAAMqN,OACbr+D,SAASk/D,eAAe,qBAAqB,EAAGE,UAAYpO,EAAI,CAAC,EAGvE,CACD,EAED,eAAemI,GAAS,CACtB,MAAMkG,GAAW,EACjBrtB,EAAS,GAAG,CAAA,CAGd,MAAA,CAAApqC,EAEKm0D,GAASn0D,CAAAA,CAAAA,EAAAA,EACTiiC,GAAM,CAACD,iBAAgB,GAACD,OAAM,KAAA,MAAA,mBAAA,IAAApzC,UAAA,CAAA,OAAAqR,EAC5Bo2B,GAAS,CAACD,MAAK,GAAA,IAAAxnC,UAAA,CAAA,MAAA,CAAAqR,EACbiiC,GAAOM,MAAK,CAAC/jC,KAAI,IAAA7P,SAAMqoE,CAAAA,CAAKh3D,EAAAA,EAC5BiiC,GAAO/f,WAAMliB,EACbiiC,GAAOpS,SAAQ,CAACxkC,GAAE,wBAAA,IAAAsD,UAAA,CAAAqR,MAAAA,CAAAA,EAChBwoB,GAAG,CAAA,MAAA,UAAA,IAAA75B,UAAA,CAAA,MAAA,CAAAqR,EACDwoB,GAAIrG,KAAI,CAAA,IAAAxzB,UAAA,CAAA,OAAAqR,EACN2wC,GAAC,CAACnyC,KAAM,SAAQ,MAAS,WAAU7P,SAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EAAAqR,EAIrCwoB,GAAIrG,KAAI,CAAA,IAAAxzB,UAAA,CAAA,OAAAqR,EACN2wC,GAAC,CAACnyC,KAAM,aAAY,MAAS,WAAU7P,SAAA,WAAA,CAAA,CAAA,CAAA,CAAA,EAAAqR,EAIzCwoB,GAAIrG,KAAI,CAAA,IAAAxzB,UAAA,CAAA,OAAAqR,EACN2wC,GAAC,CAACnyC,KAAM,UAAS,MAAS,WAAU7P,SAAA,QAAA,CAAA,CAAA,CAAA,CAAA,EAAAqR,EAItCwoB,GAAIrG,KAAI,CAAA,IAAAxzB,UAAA,CAAA,OAAAqR,EACN2wC,GAAC,CAACnyC,KAAM,SAAQ,MAAS,WAAU7P,SAAA,OAAA,CAAA,CAAA,CAAA,CAAA,EAAAqR,EAIrCwoB,GAAIrG,KAAI,CAAA,IAAAxzB,UAAA,CAAA,OAAAqR,EACN2wC,GAAC,CAACnyC,KAAM,UAAS,MAAS,WAAU7P,SAAA,QAAA,CAAA,CAAA,CAAA,CAAAqR,EAAAA,EAItCwiC,GAAW,CACVvI,MAAK,aAAA,IACLva,QAAM,CAAE0oB,OAAAA,SAAS2D,SAASiF,WAAW,aAAa,CAAC,EAAA,IAAAriD,UAAA,CAAAqR,MAAAA,CAAAA,EAElD2wC,GAAC,CAACnyC,KAAM,uBAAsB,MAAS,gBAAe7P,SAAA,UAAA,CAAAqR,EAAAA,EAGtD2wC,GAAC,CAACnyC,KAAM,qBAAoB,MAAS,gBAAe7P,SAAA,QAAA,CAAAqR,EAAAA,EAGpD2wC,GAAC,CAACnyC,KAAM,mBAAkB,MAAS,gBAAe7P,SAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAqR,EAAAA,EAKtDwoB,GAAG,CAAA,IAAA75B,UAAA,CAAAqR,MAAAA,CAAAA,EACD1L,EAAI,CAAA,IACHszB,MAAI,CAAE1J,OAAAA,EAAA,IAAAmyC,GAAgB,GAAK,IAAI,EAAA,GAAIA,MAAqB6D,EAAO,EAAA,IAAAvlE,UAAA,CAAAqR,OAAAA,EAE9DwoB,GAAIrG,KAAI,CAAA,IAAAxzB,UAAA,CAAA,IAAAyR,EAAAC,GAAA,EAAAD,OAAAA,EAAAs3D,QAII,IAAM9uD,OAAOw/B,SAASuvB,OAAO,EAACv3D,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAAJ,EAAAA,EAM5C1L,EAAI,CAAA,IAACszB,MAAI,CAAA,MAAE,CAACh3B,EAAMkmE,YAAY,EAAA,IAAAnoE,UAAA,CAAAqR,OAAAA,EAC5BwoB,GAAIrG,KAAI,CAAA,IAAAxzB,UAAA,CAAA,OAAAqR,EAKNqgB,GAAQ,CAAA,IAAA1xB,UAAA,CAAA,MAAA,CAAAqR,EACNqgB,GAAS6B,OAAM,CACd72B,GAAI,sBACJulC,QAAO,oBACPv3B,MAAO,aAAA,CAAa,EAAA2G,EAErBqgB,GAAS4B,KAAI,CAAA,IAAAtzB,UAAA,CAAA,OAAAqR,EACX5L,GAAG,CAAC4wC,KAAM8wB,GAAkBnnE,SACnBf,GACNoS,EAEKqgB,GAAS8B,KAAI,CACZ9iB,QAAgBzS,GAAA,CACCgB,GAAAA,EAAE,CAAC,CAAY,EAC9BhB,EAAEuvB,cAAcy7C,KAAK,CACvB,EAAC,IAAAjpE,UAAA,CAAA,OAEAf,EAAE,CAAC,CAAA,CAAC,CAAA,CAIb,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAoS,EAMVwoB,GAAIwJ,KAAI,CAAC3yB,QAASu2D,GAAQjnE,SAAA,MAAA,CAAAqR,EAAAA,EAC1BwiC,GAAW,CAAA,IACVvI,OAAK,CAAAj6B,OAAAA,EAAGsxC,GAAM,EAAA,CAAA,EACdla,MAAO,MAAK,IACZ7hC,MAAI,CAAA,OAAE0hE,EAAiB,CAAC,EACxBY,QAASA,IAAM,CACOX,EAAA,CAACD,GAAkB,CACzC,EAAC,IAAAtoE,UAAA,CAAAqR,MAAAA,CAAAA,EAEA2wC,GAAC,CAACnyC,KAAI,YAAA,MAAA,gBAAA7P,SAAA,UAAA,CAAAqR,EAAAA,EAGN2wC,GAAC,CAACnyC,KAAI,SAAA,MAAA,gBAAA7P,SAAA,OAAA,CAAAqR,EAAAA,EAGN1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEuoC,GAAiB,CAAC,EAAA,IAAAxhE,UAAA,CAAA,IAAA2R,EAAAu/B,GAAA,EAAAv/B,OAAAA,EAAAo3D,QACMnG,EAAMjxD,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAN,EAK3CwoB,GAAIrG,KAAI,CAAA,IAAAxzB,UAAA,CAAA,IAAAmpE,EAAArmB,GAAA,EAAA1qB,OAAAA,EAAA+wC,EAMJvH,EAAU,EAAAuH,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAS7B,CAACC,GAAA,CAAA,OAAA,CAAA,ECvSD;AAAA;AAAA;AAAA;AAAA;AAAA,GAMA,SAAShxD,GAAMnc,EAAG,CAChB,OAAOA,EAAI,GAAM,CACnB,CACA,MAAMotE,GAAM,CAACptE,EAAGqD,EAAG8M,IAAM,KAAK,IAAI,KAAK,IAAInQ,EAAGmQ,CAAC,EAAG9M,CAAC,EACnD,SAASgqE,GAAIrtE,EAAG,CACd,OAAOotE,GAAIjxD,GAAMnc,EAAI,IAAI,EAAG,EAAG,GAAG,CACpC,CAIA,SAASstE,GAAIttE,EAAG,CACd,OAAOotE,GAAIjxD,GAAMnc,EAAI,GAAG,EAAG,EAAG,GAAG,CACnC,CACA,SAASutE,GAAIvtE,EAAG,CACd,OAAOotE,GAAIjxD,GAAMnc,EAAI,IAAI,EAAI,IAAK,EAAG,CAAC,CACxC,CACA,SAASwtE,GAAIxtE,EAAG,CACd,OAAOotE,GAAIjxD,GAAMnc,EAAI,GAAG,EAAG,EAAG,GAAG,CACnC,CAEA,MAAMytE,GAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAE,EACvJC,GAAM,CAAC,GAAG,kBAAkB,EAC5BC,GAAK3wE,GAAK0wE,GAAI1wE,EAAI,EAAG,EACrB4wE,GAAK5wE,GAAK0wE,IAAK1wE,EAAI,MAAS,CAAC,EAAI0wE,GAAI1wE,EAAI,EAAG,EAC5C6wE,GAAK7wE,IAAOA,EAAI,MAAS,KAAQA,EAAI,IACrC8wE,GAAU9tE,GAAK6tE,GAAG7tE,EAAE,CAAC,GAAK6tE,GAAG7tE,EAAE,CAAC,GAAK6tE,GAAG7tE,EAAE,CAAC,GAAK6tE,GAAG7tE,EAAE,CAAC,EAC5D,SAAS+tE,GAAS76D,EAAK,CACrB,IAAIxW,EAAMwW,EAAI,OACVy5C,EACJ,OAAIz5C,EAAI,CAAC,IAAM,MACTxW,IAAQ,GAAKA,IAAQ,EACvBiwD,EAAM,CACJ,EAAG,IAAM8gB,GAAMv6D,EAAI,CAAC,CAAC,EAAI,GACzB,EAAG,IAAMu6D,GAAMv6D,EAAI,CAAC,CAAC,EAAI,GACzB,EAAG,IAAMu6D,GAAMv6D,EAAI,CAAC,CAAC,EAAI,GACzB,EAAGxW,IAAQ,EAAI+wE,GAAMv6D,EAAI,CAAC,CAAC,EAAI,GAAK,GACrC,GACQxW,IAAQ,GAAKA,IAAQ,KAC9BiwD,EAAM,CACJ,EAAG8gB,GAAMv6D,EAAI,CAAC,CAAC,GAAK,EAAIu6D,GAAMv6D,EAAI,CAAC,CAAC,EACpC,EAAGu6D,GAAMv6D,EAAI,CAAC,CAAC,GAAK,EAAIu6D,GAAMv6D,EAAI,CAAC,CAAC,EACpC,EAAGu6D,GAAMv6D,EAAI,CAAC,CAAC,GAAK,EAAIu6D,GAAMv6D,EAAI,CAAC,CAAC,EACpC,EAAGxW,IAAQ,EAAK+wE,GAAMv6D,EAAI,CAAC,CAAC,GAAK,EAAIu6D,GAAMv6D,EAAI,CAAC,CAAC,EAAK,GACvD,IAGEy5C,CACT,CACA,MAAMqhB,GAAQ,CAACjxE,EAAG0pD,IAAM1pD,EAAI,IAAM0pD,EAAE1pD,CAAC,EAAI,GACzC,SAASkxE,GAAUjuE,EAAG,CACpB,IAAIymD,EAAIqnB,GAAQ9tE,CAAC,EAAI2tE,GAAKC,GAC1B,OAAO5tE,EACH,IAAMymD,EAAEzmD,EAAE,CAAC,EAAIymD,EAAEzmD,EAAE,CAAC,EAAIymD,EAAEzmD,EAAE,CAAC,EAAIguE,GAAMhuE,EAAE,EAAGymD,CAAC,EAC7C,MACN,CAEA,MAAMynB,GAAS,+GACf,SAASC,GAASh+D,EAAGlR,EAAGoE,EAAG,CACzB,MAAMtG,EAAIkC,EAAI,KAAK,IAAIoE,EAAG,EAAIA,CAAC,EACzBojD,EAAI,CAAC5gD,EAAGiD,GAAKjD,EAAIsK,EAAI,IAAM,KAAO9M,EAAItG,EAAI,KAAK,IAAI,KAAK,IAAI+L,EAAI,EAAG,EAAIA,EAAG,CAAC,EAAG,EAAE,EACtF,MAAO,CAAC29C,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAC1B,CACA,SAAS2nB,GAASj+D,EAAGlR,EAAGe,EAAG,CACzB,MAAMymD,EAAI,CAAC5gD,EAAGiD,GAAKjD,EAAIsK,EAAI,IAAM,IAAMnQ,EAAIA,EAAIf,EAAI,KAAK,IAAI,KAAK,IAAI6J,EAAG,EAAIA,EAAG,CAAC,EAAG,CAAC,EACpF,MAAO,CAAC29C,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAC1B,CACA,SAAS4nB,GAASl+D,EAAGR,EAAG3S,EAAG,CACzB,MAAMsxE,EAAMH,GAASh+D,EAAG,EAAG,EAAG,EAC9B,IAAI,EAMJ,IALIR,EAAI3S,EAAI,IACV,EAAI,GAAK2S,EAAI3S,GACb2S,GAAK,EACL3S,GAAK,GAEF,EAAI,EAAG,EAAI,EAAG,IACjBsxE,EAAI,CAAC,GAAK,EAAI3+D,EAAI3S,EAClBsxE,EAAI,CAAC,GAAK3+D,EAEZ,OAAO2+D,CACT,CACA,SAASC,GAAS9vC,EAAG+lC,EAAGxnE,EAAGuI,EAAG0W,EAAK,CACjC,OAAIwiB,IAAMxiB,GACCuoD,EAAIxnE,GAAKuI,GAAMi/D,EAAIxnE,EAAI,EAAI,GAElCwnE,IAAMvoD,GACAjf,EAAIyhC,GAAKl5B,EAAI,GAEfk5B,EAAI+lC,GAAKj/D,EAAI,CACvB,CACA,SAASipE,GAAQxuE,EAAG,CAElB,MAAMy+B,EAAIz+B,EAAE,EAAI,IACVwkE,EAAIxkE,EAAE,EAAI,IACVhD,EAAIgD,EAAE,EAAI,IACVic,EAAM,KAAK,IAAIwiB,EAAG+lC,EAAGxnE,CAAC,EACtBkf,EAAM,KAAK,IAAIuiB,EAAG+lC,EAAGxnE,CAAC,EACtBqG,GAAK4Y,EAAMC,GAAO,EACxB,IAAI/L,EAAGlR,EAAGsG,EACV,OAAI0W,IAAQC,IACV3W,EAAI0W,EAAMC,EACVjd,EAAIoE,EAAI,GAAMkC,GAAK,EAAI0W,EAAMC,GAAO3W,GAAK0W,EAAMC,GAC/C/L,EAAIo+D,GAAS9vC,EAAG+lC,EAAGxnE,EAAGuI,EAAG0W,CAAG,EAC5B9L,EAAIA,EAAI,GAAK,IAER,CAACA,EAAI,EAAGlR,GAAK,EAAGoE,CAAC,CAC1B,CACA,SAASorE,GAAMhoB,EAAG1pD,EAAGC,EAAGsC,EAAG,CACzB,OACE,MAAM,QAAQvC,CAAC,EACX0pD,EAAE1pD,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAClB0pD,EAAE1pD,EAAGC,EAAGsC,CAAC,GACb,IAAIguE,EAAG,CACX,CACA,SAASoB,GAAQv+D,EAAGlR,EAAGoE,EAAG,CACxB,OAAOorE,GAAMN,GAAUh+D,EAAGlR,EAAGoE,CAAC,CAChC,CACA,SAASsrE,GAAQx+D,EAAGR,EAAG3S,EAAG,CACxB,OAAOyxE,GAAMJ,GAAUl+D,EAAGR,EAAG3S,CAAC,CAChC,CACA,SAAS4xE,GAAQz+D,EAAGlR,EAAGe,EAAG,CACxB,OAAOyuE,GAAML,GAAUj+D,EAAGlR,EAAGe,CAAC,CAChC,CACA,SAAS6uE,GAAI1+D,EAAG,CACd,OAAQA,EAAI,IAAM,KAAO,GAC3B,CACA,SAAS2+D,GAAS57D,EAAK,CACrB,MAAMgc,EAAIg/C,GAAO,KAAKh7D,CAAG,EACzB,IAAInW,EAAI,IACJiD,EACJ,GAAI,CAACkvB,EACH,OAEEA,EAAE,CAAC,IAAMlvB,IACXjD,EAAImyB,EAAE,CAAC,EAAIm+C,GAAI,CAACn+C,EAAE,CAAC,CAAC,EAAIo+C,GAAI,CAACp+C,EAAE,CAAC,CAAC,GAEnC,MAAM/e,EAAI0+D,GAAI,CAAC3/C,EAAE,CAAC,CAAC,EACbi9B,EAAK,CAACj9B,EAAE,CAAC,EAAI,IACbk9B,EAAK,CAACl9B,EAAE,CAAC,EAAI,IACnB,OAAIA,EAAE,CAAC,IAAM,MACXlvB,EAAI2uE,GAAQx+D,EAAGg8C,EAAIC,CAAE,EACZl9B,EAAE,CAAC,IAAM,MAClBlvB,EAAI4uE,GAAQz+D,EAAGg8C,EAAIC,CAAE,EAErBpsD,EAAI0uE,GAAQv+D,EAAGg8C,EAAIC,CAAE,EAEhB,CACL,EAAGpsD,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGjD,CACJ,CACH,CACA,SAASgyE,GAAO/uE,EAAGgvE,EAAK,CACtB,IAAI7+D,EAAIq+D,GAAQxuE,CAAC,EACjBmQ,EAAE,CAAC,EAAI0+D,GAAI1+D,EAAE,CAAC,EAAI6+D,CAAG,EACrB7+D,EAAIu+D,GAAQv+D,CAAC,EACbnQ,EAAE,EAAImQ,EAAE,CAAC,EACTnQ,EAAE,EAAImQ,EAAE,CAAC,EACTnQ,EAAE,EAAImQ,EAAE,CAAC,CACX,CACA,SAAS8+D,GAAUjvE,EAAG,CACpB,GAAI,CAACA,EACH,OAEF,MAAMjD,EAAIyxE,GAAQxuE,CAAC,EACbmQ,EAAIpT,EAAE,CAAC,EACP,EAAIywE,GAAIzwE,EAAE,CAAC,CAAC,EACZsG,EAAImqE,GAAIzwE,EAAE,CAAC,CAAC,EAClB,OAAOiD,EAAE,EAAI,IACT,QAAQmQ,CAAC,KAAK,CAAC,MAAM9M,CAAC,MAAMkqE,GAAIvtE,EAAE,CAAC,CAAC,IACpC,OAAOmQ,CAAC,KAAK,CAAC,MAAM9M,CAAC,IAC3B,CAEA,MAAMoJ,GAAM,CACV,EAAG,OACH,EAAG,QACH,EAAG,KACH,EAAG,MACH,EAAG,KACH,EAAG,SACH,EAAG,QACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,QACH,EAAG,QACH,EAAG,KACH,EAAG,WACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,QACH,EAAG,KACH,EAAG,KACH,EAAG,OACH,EAAG,KACH,EAAG,QACH,EAAG,IACL,EACMyiE,GAAU,CACd,OAAQ,SACR,YAAa,SACb,KAAM,OACN,UAAW,SACX,KAAM,SACN,MAAO,SACP,OAAQ,SACR,MAAO,IACP,aAAc,SACd,GAAI,KACJ,QAAS,SACT,KAAM,SACN,UAAW,SACX,OAAQ,SACR,SAAU,SACV,QAAS,SACT,IAAK,SACL,YAAa,SACb,QAAS,SACT,QAAS,SACT,KAAM,OACN,IAAK,KACL,MAAO,OACP,QAAS,SACT,KAAM,SACN,KAAM,OACN,KAAM,SACN,OAAQ,SACR,QAAS,SACT,SAAU,SACV,OAAQ,SACR,MAAO,SACP,IAAK,SACL,OAAQ,SACR,OAAQ,SACR,KAAM,SACN,MAAO,SACP,MAAO,SACP,IAAK,OACL,OAAQ,SACR,OAAQ,SACR,SAAU,OACV,OAAQ,SACR,OAAQ,SACR,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,OAAQ,SACR,QAAS,SACT,UAAW,SACX,IAAK,SACL,OAAQ,SACR,IAAK,SACL,IAAK,OACL,MAAO,SACP,IAAK,SACL,QAAS,SACT,OAAQ,SACR,QAAS,SACT,MAAO,SACP,KAAM,SACN,MAAO,SACP,OAAQ,SACR,UAAW,SACX,QAAS,SACT,WAAY,SACZ,IAAK,SACL,KAAM,SACN,MAAO,SACP,UAAW,SACX,KAAM,SACN,KAAM,SACN,KAAM,SACN,KAAM,SACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,MAAO,SACP,MAAO,SACP,QAAS,SACT,IAAK,SACL,KAAM,OACN,QAAS,SACT,IAAK,SACL,OAAQ,SACR,MAAO,SACP,WAAY,SACZ,IAAK,KACL,MAAO,SACP,OAAQ,SACR,OAAQ,SACR,KAAM,SACN,UAAW,OACX,IAAK,SACL,SAAU,SACV,WAAY,SACZ,QAAS,SACT,SAAU,SACV,QAAS,SACT,WAAY,SACZ,KAAM,KACN,OAAQ,SACR,KAAM,SACN,QAAS,SACT,MAAO,SACP,QAAS,SACT,KAAM,SACN,UAAW,SACX,OAAQ,SACR,MAAO,SACP,WAAY,SACZ,UAAW,SACX,QAAS,SACT,KAAM,SACN,IAAK,SACL,KAAM,SACN,QAAS,SACT,MAAO,SACP,YAAa,SACb,GAAI,SACJ,SAAU,SACV,MAAO,SACP,UAAW,SACX,MAAO,SACP,UAAW,SACX,MAAO,SACP,QAAS,SACT,MAAO,SACP,OAAQ,SACR,MAAO,SACP,IAAK,SACL,KAAM,SACN,KAAM,SACN,KAAM,SACN,SAAU,OACV,OAAQ,SACR,IAAK,SACL,IAAK,OACL,MAAO,SACP,OAAQ,SACR,GAAI,SACJ,MAAO,SACP,IAAK,SACL,KAAM,SACN,UAAW,SACX,GAAI,SACJ,MAAO,QACT,EACA,SAASC,IAAS,CAChB,MAAMC,EAAW,CAAE,EACb/mE,EAAO,OAAO,KAAK6mE,EAAO,EAC1BG,EAAQ,OAAO,KAAK5iE,EAAG,EAC7B,IAAIhK,EAAGmE,EAAGkC,EAAGwmE,EAAIC,EACjB,IAAK9sE,EAAI,EAAGA,EAAI4F,EAAK,OAAQ5F,IAAK,CAEhC,IADA6sE,EAAKC,EAAKlnE,EAAK5F,CAAC,EACXmE,EAAI,EAAGA,EAAIyoE,EAAM,OAAQzoE,IAC5BkC,EAAIumE,EAAMzoE,CAAC,EACX2oE,EAAKA,EAAG,QAAQzmE,EAAG2D,GAAI3D,CAAC,CAAC,EAE3BA,EAAI,SAASomE,GAAQI,CAAE,EAAG,EAAE,EAC5BF,EAASG,CAAE,EAAI,CAACzmE,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAMA,EAAI,GAAI,CAC3D,CACE,OAAOsmE,CACT,CAEA,IAAII,GACJ,SAASC,GAAUv8D,EAAK,CACjBs8D,KACHA,GAAQL,GAAQ,EAChBK,GAAM,YAAc,CAAC,EAAG,EAAG,EAAG,CAAC,GAEjC,MAAMzyE,EAAIyyE,GAAMt8D,EAAI,YAAW,CAAE,EACjC,OAAOnW,GAAK,CACV,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,SAAW,EAAIA,EAAE,CAAC,EAAI,GAC5B,CACH,CAEA,MAAM2yE,GAAS,uGACf,SAASC,GAASz8D,EAAK,CACrB,MAAMgc,EAAIwgD,GAAO,KAAKx8D,CAAG,EACzB,IAAInW,EAAI,IACJ0hC,EAAG+lC,EAAGxnE,EACV,GAAKkyB,EAGL,IAAIA,EAAE,CAAC,IAAMuP,EAAG,CACd,MAAMz+B,EAAI,CAACkvB,EAAE,CAAC,EACdnyB,EAAImyB,EAAE,CAAC,EAAIm+C,GAAIrtE,CAAC,EAAIotE,GAAIptE,EAAI,IAAK,EAAG,GAAG,CAC3C,CACE,OAAAy+B,EAAI,CAACvP,EAAE,CAAC,EACRs1C,EAAI,CAACt1C,EAAE,CAAC,EACRlyB,EAAI,CAACkyB,EAAE,CAAC,EACRuP,EAAI,KAAOvP,EAAE,CAAC,EAAIm+C,GAAI5uC,CAAC,EAAI2uC,GAAI3uC,EAAG,EAAG,GAAG,GACxC+lC,EAAI,KAAOt1C,EAAE,CAAC,EAAIm+C,GAAI7I,CAAC,EAAI4I,GAAI5I,EAAG,EAAG,GAAG,GACxCxnE,EAAI,KAAOkyB,EAAE,CAAC,EAAIm+C,GAAIrwE,CAAC,EAAIowE,GAAIpwE,EAAG,EAAG,GAAG,GACjC,CACL,EAAGyhC,EACH,EAAG+lC,EACH,EAAGxnE,EACH,EAAGD,CACJ,EACH,CACA,SAAS6yE,GAAU5vE,EAAG,CACpB,OAAOA,IACLA,EAAE,EAAI,IACF,QAAQA,EAAE,CAAC,KAAKA,EAAE,CAAC,KAAKA,EAAE,CAAC,KAAKutE,GAAIvtE,EAAE,CAAC,CAAC,IACxC,OAAOA,EAAE,CAAC,KAAKA,EAAE,CAAC,KAAKA,EAAE,CAAC,IAElC,CAEA,MAAMkY,GAAKlY,GAAKA,GAAK,SAAYA,EAAI,MAAQ,KAAK,IAAIA,EAAG,EAAM,GAAG,EAAI,MAAQ,KACxEiY,GAAOjY,GAAKA,GAAK,OAAUA,EAAI,MAAQ,KAAK,KAAKA,EAAI,MAAS,MAAO,GAAG,EAC9E,SAAS6vE,GAAYC,EAAMC,EAAMzsE,EAAG,CAClC,MAAMm7B,EAAIxmB,GAAKs1D,GAAIuC,EAAK,CAAC,CAAC,EACpBtL,EAAIvsD,GAAKs1D,GAAIuC,EAAK,CAAC,CAAC,EACpB9yE,EAAIib,GAAKs1D,GAAIuC,EAAK,CAAC,CAAC,EAC1B,MAAO,CACL,EAAGxC,GAAIp1D,GAAGumB,EAAIn7B,GAAK2U,GAAKs1D,GAAIwC,EAAK,CAAC,CAAC,EAAItxC,EAAE,CAAC,EAC1C,EAAG6uC,GAAIp1D,GAAGssD,EAAIlhE,GAAK2U,GAAKs1D,GAAIwC,EAAK,CAAC,CAAC,EAAIvL,EAAE,CAAC,EAC1C,EAAG8I,GAAIp1D,GAAGlb,EAAIsG,GAAK2U,GAAKs1D,GAAIwC,EAAK,CAAC,CAAC,EAAI/yE,EAAE,CAAC,EAC1C,EAAG8yE,EAAK,EAAIxsE,GAAKysE,EAAK,EAAID,EAAK,EAChC,CACH,CAEA,SAASE,GAAOhwE,EAAGyC,EAAGwtE,EAAO,CAC3B,GAAIjwE,EAAG,CACL,IAAIoT,EAAMo7D,GAAQxuE,CAAC,EACnBoT,EAAI3Q,CAAC,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI2Q,EAAI3Q,CAAC,EAAI2Q,EAAI3Q,CAAC,EAAIwtE,EAAOxtE,IAAM,EAAI,IAAM,CAAC,CAAC,EACzE2Q,EAAMs7D,GAAQt7D,CAAG,EACjBpT,EAAE,EAAIoT,EAAI,CAAC,EACXpT,EAAE,EAAIoT,EAAI,CAAC,EACXpT,EAAE,EAAIoT,EAAI,CAAC,CACf,CACA,CACA,SAAS88D,GAAMlwE,EAAG+W,EAAO,CACvB,OAAO/W,GAAI,OAAO,OAAO+W,GAAS,CAAE,EAAE/W,CAAC,CACzC,CACA,SAASmwE,GAAW3tE,EAAO,CACzB,IAAIxC,EAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG,EACjC,OAAI,MAAM,QAAQwC,CAAK,EACjBA,EAAM,QAAU,IAClBxC,EAAI,CAAC,EAAGwC,EAAM,CAAC,EAAG,EAAGA,EAAM,CAAC,EAAG,EAAGA,EAAM,CAAC,EAAG,EAAG,GAAG,EAC9CA,EAAM,OAAS,IACjBxC,EAAE,EAAIstE,GAAI9qE,EAAM,CAAC,CAAC,KAItBxC,EAAIkwE,GAAM1tE,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EACzCxC,EAAE,EAAIstE,GAAIttE,EAAE,CAAC,GAERA,CACT,CACA,SAASowE,GAAcl9D,EAAK,CAC1B,OAAIA,EAAI,OAAO,CAAC,IAAM,IACby8D,GAASz8D,CAAG,EAEd47D,GAAS57D,CAAG,CACrB,CACA,MAAMm9D,EAAM,CACV,YAAY7tE,EAAO,CACjB,GAAIA,aAAiB6tE,GACnB,OAAO7tE,EAET,MAAM2R,EAAO,OAAO3R,EACpB,IAAIxC,EACAmU,IAAS,SACXnU,EAAImwE,GAAW3tE,CAAK,EACX2R,IAAS,WAClBnU,EAAI+tE,GAASvrE,CAAK,GAAKitE,GAAUjtE,CAAK,GAAK4tE,GAAc5tE,CAAK,GAEhE,KAAK,KAAOxC,EACZ,KAAK,OAAS,CAAC,CAACA,CACpB,CACE,IAAI,OAAQ,CACV,OAAO,KAAK,MAChB,CACE,IAAI,KAAM,CACR,IAAIA,EAAIkwE,GAAM,KAAK,IAAI,EACvB,OAAIlwE,IACFA,EAAE,EAAIutE,GAAIvtE,EAAE,CAAC,GAERA,CACX,CACE,IAAI,IAAI8W,EAAK,CACX,KAAK,KAAOq5D,GAAWr5D,CAAG,CAC9B,CACE,WAAY,CACV,OAAO,KAAK,OAAS84D,GAAU,KAAK,IAAI,EAAI,MAChD,CACE,WAAY,CACV,OAAO,KAAK,OAAS3B,GAAU,KAAK,IAAI,EAAI,MAChD,CACE,WAAY,CACV,OAAO,KAAK,OAASgB,GAAU,KAAK,IAAI,EAAI,MAChD,CACE,IAAIqB,EAAOC,EAAQ,CACjB,GAAID,EAAO,CACT,MAAME,EAAK,KAAK,IACVC,EAAKH,EAAM,IACjB,IAAII,EACJ,MAAMnvE,EAAIgvE,IAAWG,EAAK,GAAMH,EAC1B5gE,EAAI,EAAIpO,EAAI,EACZxE,EAAIyzE,EAAG,EAAIC,EAAG,EACdE,IAAOhhE,EAAI5S,IAAM,GAAK4S,GAAKA,EAAI5S,IAAM,EAAI4S,EAAI5S,IAAM,GAAK,EAC9D2zE,EAAK,EAAIC,EACTH,EAAG,EAAI,IAAOG,EAAKH,EAAG,EAAIE,EAAKD,EAAG,EAAI,GACtCD,EAAG,EAAI,IAAOG,EAAKH,EAAG,EAAIE,EAAKD,EAAG,EAAI,GACtCD,EAAG,EAAI,IAAOG,EAAKH,EAAG,EAAIE,EAAKD,EAAG,EAAI,GACtCD,EAAG,EAAIjvE,EAAIivE,EAAG,GAAK,EAAIjvE,GAAKkvE,EAAG,EAC/B,KAAK,IAAMD,CACjB,CACI,OAAO,IACX,CACE,YAAYF,EAAOhtE,EAAG,CACpB,OAAIgtE,IACF,KAAK,KAAOT,GAAY,KAAK,KAAMS,EAAM,KAAMhtE,CAAC,GAE3C,IACX,CACE,OAAQ,CACN,OAAO,IAAI+sE,GAAM,KAAK,GAAG,CAC7B,CACE,MAAMtzE,EAAG,CACP,YAAK,KAAK,EAAIuwE,GAAIvwE,CAAC,EACZ,IACX,CACE,QAAQkzE,EAAO,CACb,MAAM3B,EAAM,KAAK,KACjB,OAAAA,EAAI,GAAK,EAAI2B,EACN,IACX,CACE,WAAY,CACV,MAAM3B,EAAM,KAAK,KACXplB,EAAM/sC,GAAMmyD,EAAI,EAAI,GAAMA,EAAI,EAAI,IAAOA,EAAI,EAAI,GAAI,EAC3D,OAAAA,EAAI,EAAIA,EAAI,EAAIA,EAAI,EAAIplB,EACjB,IACX,CACE,QAAQ+mB,EAAO,CACb,MAAM3B,EAAM,KAAK,KACjB,OAAAA,EAAI,GAAK,EAAI2B,EACN,IACX,CACE,QAAS,CACP,MAAMjwE,EAAI,KAAK,KACf,OAAAA,EAAE,EAAI,IAAMA,EAAE,EACdA,EAAE,EAAI,IAAMA,EAAE,EACdA,EAAE,EAAI,IAAMA,EAAE,EACP,IACX,CACE,QAAQiwE,EAAO,CACb,OAAAD,GAAO,KAAK,KAAM,EAAGC,CAAK,EACnB,IACX,CACE,OAAOA,EAAO,CACZ,OAAAD,GAAO,KAAK,KAAM,EAAG,CAACC,CAAK,EACpB,IACX,CACE,SAASA,EAAO,CACd,OAAAD,GAAO,KAAK,KAAM,EAAGC,CAAK,EACnB,IACX,CACE,WAAWA,EAAO,CAChB,OAAAD,GAAO,KAAK,KAAM,EAAG,CAACC,CAAK,EACpB,IACX,CACE,OAAOjB,EAAK,CACV,OAAAD,GAAO,KAAK,KAAMC,CAAG,EACd,IACX,CACA,CCtkBA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYI,SAASn+C,IAAO,CACpB,CAGI,MAAM+/C,IAAO,IAAI,CACjB,IAAInwE,EAAK,EACT,MAAO,IAAIA,GACf,GAAI,EAKA,SAASowE,GAAc9xE,EAAO,CAC9B,OAAOA,IAAU,MAAQ,OAAOA,EAAU,GAC9C,CAKI,SAASqD,GAAQrD,EAAO,CACxB,GAAI,MAAM,SAAW,MAAM,QAAQA,CAAK,EACpC,MAAO,GAEX,MAAMoV,EAAO,OAAO,UAAU,SAAS,KAAKpV,CAAK,EACjD,OAAIoV,EAAK,MAAM,EAAG,CAAC,IAAM,WAAaA,EAAK,MAAM,EAAE,IAAM,QAI7D,CAKI,SAASo1C,GAASxqD,EAAO,CACzB,OAAOA,IAAU,MAAQ,OAAO,UAAU,SAAS,KAAKA,CAAK,IAAM,iBACvE,CAII,SAAS+xE,GAAe/xE,EAAO,CAC/B,OAAQ,OAAOA,GAAU,UAAYA,aAAiB,SAAW,SAAS,CAACA,CAAK,CACpF,CAKI,SAASgyE,GAAgBhyE,EAAO8E,EAAc,CAC9C,OAAOitE,GAAe/xE,CAAK,EAAIA,EAAQ8E,CAC3C,CAKI,SAASmtE,GAAejyE,EAAO8E,EAAc,CAC7C,OAAO,OAAO9E,EAAU,IAAc8E,EAAe9E,CACzD,CACA,MAAMkyE,GAAe,CAAClyE,EAAO0lC,IAAY,OAAO1lC,GAAU,UAAYA,EAAM,SAAS,GAAG,EAAI,WAAWA,CAAK,EAAI,IAAM,CAACA,EAAQ0lC,EACzHysC,GAAc,CAACnyE,EAAO0lC,IAAY,OAAO1lC,GAAU,UAAYA,EAAM,SAAS,GAAG,EAAI,WAAWA,CAAK,EAAI,IAAM0lC,EAAY,CAAC1lC,EAO9H,SAASsiC,GAASljC,EAAIqa,EAAMgwC,EAAS,CACrC,GAAIrqD,GAAM,OAAOA,EAAG,MAAS,WACzB,OAAOA,EAAG,MAAMqqD,EAAShwC,CAAI,CAErC,CACA,SAAS4hC,GAAK+2B,EAAUhzE,EAAIqqD,EAAS4oB,EAAS,CAC1C,IAAI,EAAG10E,EAAK2L,EACZ,GAAIjG,GAAQ+uE,CAAQ,EAOZ,IANJz0E,EAAMy0E,EAAS,OAMP,EAAI,EAAG,EAAIz0E,EAAK,IAChByB,EAAG,KAAKqqD,EAAS2oB,EAAS,CAAC,EAAG,CAAC,UAGhC5nB,GAAS4nB,CAAQ,EAGxB,IAFA9oE,EAAO,OAAO,KAAK8oE,CAAQ,EAC3Bz0E,EAAM2L,EAAK,OACP,EAAI,EAAG,EAAI3L,EAAK,IAChByB,EAAG,KAAKqqD,EAAS2oB,EAAS9oE,EAAK,CAAC,CAAC,EAAGA,EAAK,CAAC,CAAC,CAGvD,CAMI,SAASgpE,GAAeC,EAAIC,EAAI,CAChC,IAAI9uE,EAAG+uE,EAAMC,EAAIC,EACjB,GAAI,CAACJ,GAAM,CAACC,GAAMD,EAAG,SAAWC,EAAG,OAC/B,MAAO,GAEX,IAAI9uE,EAAI,EAAG+uE,EAAOF,EAAG,OAAQ7uE,EAAI+uE,EAAM,EAAE/uE,EAGrC,GAFAgvE,EAAKH,EAAG7uE,CAAC,EACTivE,EAAKH,EAAG9uE,CAAC,EACLgvE,EAAG,eAAiBC,EAAG,cAAgBD,EAAG,QAAUC,EAAG,MACvD,MAAO,GAGf,MAAO,EACX,CAII,SAASxB,GAAM7vE,EAAQ,CACvB,GAAI+B,GAAQ/B,CAAM,EACd,OAAOA,EAAO,IAAI6vE,EAAK,EAE3B,GAAI3mB,GAASlpD,CAAM,EAAG,CAClB,MAAMqI,EAAS,OAAO,OAAO,IAAI,EAC3BL,EAAO,OAAO,KAAKhI,CAAM,EACzBsxE,EAAOtpE,EAAK,OAClB,IAAIS,EAAI,EACR,KAAMA,EAAI6oE,EAAM,EAAE7oE,EACdJ,EAAOL,EAAKS,CAAC,CAAC,EAAIonE,GAAM7vE,EAAOgI,EAAKS,CAAC,CAAC,CAAC,EAE3C,OAAOJ,CACf,CACI,OAAOrI,CACX,CACA,SAASuxE,GAAWpwE,EAAK,CACrB,MAAO,CACH,YACA,YACA,aACR,EAAM,QAAQA,CAAG,IAAM,EACvB,CAKI,SAASqwE,GAAQrwE,EAAKkH,EAAQrI,EAAQrB,EAAS,CAC/C,GAAI,CAAC4yE,GAAWpwE,CAAG,EACf,OAEJ,MAAMswE,EAAOppE,EAAOlH,CAAG,EACjBuwE,EAAO1xE,EAAOmB,CAAG,EACnB+nD,GAASuoB,CAAI,GAAKvoB,GAASwoB,CAAI,EAE/B34D,GAAM04D,EAAMC,EAAM/yE,CAAO,EAEzB0J,EAAOlH,CAAG,EAAI0uE,GAAM6B,CAAI,CAEhC,CACA,SAAS34D,GAAM1Q,EAAQrI,EAAQrB,EAAS,CACpC,MAAMqG,EAAUjD,GAAQ/B,CAAM,EAAIA,EAAS,CACvCA,CACH,EACKmxE,EAAOnsE,EAAQ,OACrB,GAAI,CAACkkD,GAAS7gD,CAAM,EAChB,OAAOA,EAEX1J,EAAUA,GAAW,CAAE,EACvB,MAAMgzE,EAAShzE,EAAQ,QAAU6yE,GACjC,IAAIrzE,EACJ,QAAQiE,EAAI,EAAGA,EAAI+uE,EAAM,EAAE/uE,EAAE,CAEzB,GADAjE,EAAU6G,EAAQ5C,CAAC,EACf,CAAC8mD,GAAS/qD,CAAO,EACjB,SAEJ,MAAM6J,EAAO,OAAO,KAAK7J,CAAO,EAChC,QAAQsK,EAAI,EAAG6oE,EAAOtpE,EAAK,OAAQS,EAAI6oE,EAAM,EAAE7oE,EAC3CkpE,EAAO3pE,EAAKS,CAAC,EAAGJ,EAAQlK,EAASQ,CAAO,CAEpD,CACI,OAAO0J,CACX,CACA,SAASupE,GAAQvpE,EAAQrI,EAAQ,CAE7B,OAAO+Y,GAAM1Q,EAAQrI,EAAQ,CACzB,OAAQ6xE,EAChB,CAAK,CACL,CAII,SAASA,GAAU1wE,EAAKkH,EAAQrI,EAAQ,CACxC,GAAI,CAACuxE,GAAWpwE,CAAG,EACf,OAEJ,MAAMswE,EAAOppE,EAAOlH,CAAG,EACjBuwE,EAAO1xE,EAAOmB,CAAG,EACnB+nD,GAASuoB,CAAI,GAAKvoB,GAASwoB,CAAI,EAC/BE,GAAQH,EAAMC,CAAI,EACV,OAAO,UAAU,eAAe,KAAKrpE,EAAQlH,CAAG,IACxDkH,EAAOlH,CAAG,EAAI0uE,GAAM6B,CAAI,EAEhC,CASA,MAAMI,GAAe,CAEjB,GAAKnyE,GAAIA,EAET,EAAIgD,GAAIA,EAAE,EACV,EAAIA,GAAIA,EAAE,CACd,EAGI,SAASovE,GAAU5wE,EAAK,CACxB,MAAM6wE,EAAQ7wE,EAAI,MAAM,GAAG,EACrB6G,EAAO,CAAE,EACf,IAAI+K,EAAM,GACV,UAAW2E,KAAQs6D,EACfj/D,GAAO2E,EACH3E,EAAI,SAAS,IAAI,EACjBA,EAAMA,EAAI,MAAM,EAAG,EAAE,EAAI,KAEzB/K,EAAK,KAAK+K,CAAG,EACbA,EAAM,IAGd,OAAO/K,CACX,CACA,SAASiqE,GAAgB9wE,EAAK,CAC1B,MAAM6G,EAAO+pE,GAAU5wE,CAAG,EAC1B,OAAQsV,GAAM,CACV,UAAWhO,KAAKT,EAAK,CACjB,GAAIS,IAAM,GACN,MAEJgO,EAAMA,GAAOA,EAAIhO,CAAC,CAC9B,CACQ,OAAOgO,CACV,CACL,CACA,SAASy7D,GAAiBz7D,EAAKtV,EAAK,CAEhC,OADiB2wE,GAAa3wE,CAAG,IAAM2wE,GAAa3wE,CAAG,EAAI8wE,GAAgB9wE,CAAG,IAC9DsV,CAAG,CACvB,CAGI,SAAS07D,GAAYt/D,EAAK,CAC1B,OAAOA,EAAI,OAAO,CAAC,EAAE,YAAW,EAAKA,EAAI,MAAM,CAAC,CACpD,CACA,MAAM3K,GAAWxJ,GAAQ,OAAOA,EAAU,IACpC4Z,GAAc5Z,GAAQ,OAAOA,GAAU,WAEvC0zE,GAAY,CAAC11E,EAAGC,IAAI,CACtB,GAAID,EAAE,OAASC,EAAE,KACb,MAAO,GAEX,UAAWqK,KAAQtK,EACf,GAAI,CAACC,EAAE,IAAIqK,CAAI,EACX,MAAO,GAGf,MAAO,EACX,EAII,SAASqrE,GAAc,EAAG,CAC1B,OAAO,EAAE,OAAS,WAAa,EAAE,OAAS,SAAW,EAAE,OAAS,aACpE,CAKI,MAAMC,GAAK,KAAK,GACdC,GAAM,EAAID,GACVE,GAAQD,GAAMD,GACdG,GAAW,OAAO,kBAClBC,GAAcJ,GAAK,IACnBK,GAAUL,GAAK,EACfM,GAAaN,GAAK,EAClBO,GAAgBP,GAAK,EAAI,EACzBQ,GAAQ,KAAK,MACbC,GAAO,KAAK,KAClB,SAASC,GAAahgE,EAAGJ,EAAGqgE,EAAS,CACjC,OAAO,KAAK,IAAIjgE,EAAIJ,CAAC,EAAIqgE,CAC7B,CAGI,SAASC,GAAQnI,EAAO,CACxB,MAAMoI,EAAe,KAAK,MAAMpI,CAAK,EACrCA,EAAQiI,GAAajI,EAAOoI,EAAcpI,EAAQ,GAAI,EAAIoI,EAAepI,EACzE,MAAMqI,EAAY,KAAK,IAAI,GAAI,KAAK,MAAMN,GAAM/H,CAAK,CAAC,CAAC,EACjDsI,EAAWtI,EAAQqI,EAEzB,OADqBC,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAI,IAC3DD,CAC1B,CAII,SAASE,GAAW50E,EAAO,CAC3B,MAAM2D,EAAS,CAAE,EACXkxE,EAAO,KAAK,KAAK70E,CAAK,EAC5B,IAAI0D,EACJ,IAAIA,EAAI,EAAGA,EAAImxE,EAAMnxE,IACb1D,EAAQ0D,IAAM,IACdC,EAAO,KAAKD,CAAC,EACbC,EAAO,KAAK3D,EAAQ0D,CAAC,GAG7B,OAAImxE,KAAUA,EAAO,IACjBlxE,EAAO,KAAKkxE,CAAI,EAEpBlxE,EAAO,KAAK,CAAC3F,EAAGC,IAAID,EAAIC,CAAC,EAAE,IAAK,EACzB0F,CACX,CACA,SAAS4mD,GAASzjD,EAAG,CACjB,MAAO,CAAC,MAAM,WAAWA,CAAC,CAAC,GAAK,SAASA,CAAC,CAC9C,CACA,SAASguE,GAAYxgE,EAAGigE,EAAS,CAC7B,MAAMQ,EAAU,KAAK,MAAMzgE,CAAC,EAC5B,OAAOygE,EAAUR,GAAWjgE,GAAKygE,EAAUR,GAAWjgE,CAC1D,CAGI,SAAS0gE,GAAmB5iE,EAAOzI,EAAQZ,EAAU,CACrD,IAAIrF,EAAG+uE,EAAMzyE,EACb,IAAI0D,EAAI,EAAG+uE,EAAOrgE,EAAM,OAAQ1O,EAAI+uE,EAAM/uE,IACtC1D,EAAQoS,EAAM1O,CAAC,EAAEqF,CAAQ,EACpB,MAAM/I,CAAK,IACZ2J,EAAO,IAAM,KAAK,IAAIA,EAAO,IAAK3J,CAAK,EACvC2J,EAAO,IAAM,KAAK,IAAIA,EAAO,IAAK3J,CAAK,EAGnD,CACA,SAASi1E,GAAUC,EAAS,CACxB,OAAOA,GAAWtB,GAAK,IAC3B,CACA,SAASuB,GAAUC,EAAS,CACxB,OAAOA,GAAW,IAAMxB,GAC5B,CAOI,SAASyB,GAAe/gE,EAAG,CAC3B,GAAI,CAACy9D,GAAez9D,CAAC,EACjB,OAEJ,IAAIrR,EAAI,EACJT,EAAI,EACR,KAAM,KAAK,MAAM8R,EAAIrR,CAAC,EAAIA,IAAMqR,GAC5BrR,GAAK,GACLT,IAEJ,OAAOA,CACX,CAEA,SAAS8yE,GAAkBC,EAAaC,EAAY,CAChD,MAAMC,EAAsBD,EAAW,EAAID,EAAY,EACjDG,EAAsBF,EAAW,EAAID,EAAY,EACjDI,EAA2B,KAAK,KAAKF,EAAsBA,EAAsBC,EAAsBA,CAAmB,EAChI,IAAIE,EAAQ,KAAK,MAAMF,EAAqBD,CAAmB,EAC/D,OAAIG,EAAQ,IAAOhC,KACfgC,GAAS/B,IAEN,CACH,MAAA+B,EACA,SAAUD,CACb,CACL,CACA,SAASE,GAAsBC,EAAKC,EAAK,CACrC,OAAO,KAAK,KAAK,KAAK,IAAIA,EAAI,EAAID,EAAI,EAAG,CAAC,EAAI,KAAK,IAAIC,EAAI,EAAID,EAAI,EAAG,CAAC,CAAC,CAC5E,CAII,SAASE,GAAWh4E,EAAGC,EAAG,CAC1B,OAAQD,EAAIC,EAAI61E,IAASD,GAAMD,EACnC,CAII,SAASqC,GAAgBj4E,EAAG,CAC5B,OAAQA,EAAI61E,GAAMA,IAAOA,EAC7B,CAGI,SAASqC,GAAcN,EAAOztE,EAAOC,EAAK+tE,EAAuB,CACjE,MAAMn4E,EAAIi4E,GAAgBL,CAAK,EACzB11E,EAAI+1E,GAAgB9tE,CAAK,EACzBlF,EAAIgzE,GAAgB7tE,CAAG,EACvBguE,EAAeH,GAAgB/1E,EAAIlC,CAAC,EACpCq4E,EAAaJ,GAAgBhzE,EAAIjF,CAAC,EAClCs4E,EAAeL,GAAgBj4E,EAAIkC,CAAC,EACpCq2E,EAAaN,GAAgBj4E,EAAIiF,CAAC,EACxC,OAAOjF,IAAMkC,GAAKlC,IAAMiF,GAAKkzE,GAAyBj2E,IAAM+C,GAAKmzE,EAAeC,GAAcC,EAAeC,CACjH,CAOI,SAASC,GAAYx2E,EAAOmd,EAAKD,EAAK,CACtC,OAAO,KAAK,IAAIC,EAAK,KAAK,IAAID,EAAKld,CAAK,CAAC,CAC7C,CAII,SAASy2E,GAAYz2E,EAAO,CAC5B,OAAOw2E,GAAYx2E,EAAO,OAAQ,KAAK,CAC3C,CAOI,SAAS02E,GAAW12E,EAAOmI,EAAOC,EAAKmsE,EAAU,KAAM,CACvD,OAAOv0E,GAAS,KAAK,IAAImI,EAAOC,CAAG,EAAImsE,GAAWv0E,GAAS,KAAK,IAAImI,EAAOC,CAAG,EAAImsE,CACtF,CAEA,SAASoC,GAAQl8B,EAAOz6C,EAAO42E,EAAK,CAChCA,EAAMA,IAAShwE,GAAQ6zC,EAAM7zC,CAAK,EAAI5G,GACtC,IAAI62E,EAAKp8B,EAAM,OAAS,EACpBq8B,EAAK,EACLC,EACJ,KAAMF,EAAKC,EAAK,GACZC,EAAMD,EAAKD,GAAM,EACbD,EAAIG,CAAG,EACPD,EAAKC,EAELF,EAAKE,EAGb,MAAO,CACH,GAAAD,EACA,GAAAD,CACH,CACL,CAQI,MAAMG,GAAe,CAACv8B,EAAOh4C,EAAKzC,EAAOi3E,IAAON,GAAQl8B,EAAOz6C,EAAOi3E,EAAQrwE,GAAQ,CAClF,MAAMswE,EAAKz8B,EAAM7zC,CAAK,EAAEnE,CAAG,EAC3B,OAAOy0E,EAAKl3E,GAASk3E,IAAOl3E,GAASy6C,EAAM7zC,EAAQ,CAAC,EAAEnE,CAAG,IAAMzC,CACvE,EAAS4G,GAAQ6zC,EAAM7zC,CAAK,EAAEnE,CAAG,EAAIzC,CAAK,EAOhCm3E,GAAgB,CAAC18B,EAAOh4C,EAAKzC,IAAQ22E,GAAQl8B,EAAOz6C,EAAQ4G,GAAQ6zC,EAAM7zC,CAAK,EAAEnE,CAAG,GAAKzC,CAAK,EAOpG,SAASo3E,GAAeC,EAAQl6D,EAAKD,EAAK,CAC1C,IAAI/U,EAAQ,EACRC,EAAMivE,EAAO,OACjB,KAAMlvE,EAAQC,GAAOivE,EAAOlvE,CAAK,EAAIgV,GACjChV,IAEJ,KAAMC,EAAMD,GAASkvE,EAAOjvE,EAAM,CAAC,EAAI8U,GACnC9U,IAEJ,OAAOD,EAAQ,GAAKC,EAAMivE,EAAO,OAASA,EAAO,MAAMlvE,EAAOC,CAAG,EAAIivE,CACzE,CACA,MAAMC,GAAc,CAChB,OACA,MACA,QACA,SACA,SACJ,EACA,SAASC,GAAkBnlE,EAAO9S,EAAU,CACxC,GAAI8S,EAAM,SAAU,CAChBA,EAAM,SAAS,UAAU,KAAK9S,CAAQ,EACtC,MACR,CACI,OAAO,eAAe8S,EAAO,WAAY,CACrC,aAAc,GACd,WAAY,GACZ,MAAO,CACH,UAAW,CACP9S,CAChB,CACA,CACA,CAAK,EACDg4E,GAAY,QAAS70E,GAAM,CACvB,MAAM4wD,EAAS,UAAYogB,GAAYhxE,CAAG,EACpCi7C,EAAOtrC,EAAM3P,CAAG,EACtB,OAAO,eAAe2P,EAAO3P,EAAK,CAC9B,aAAc,GACd,WAAY,GACZ,SAAUgX,EAAM,CACZ,MAAMjV,EAAMk5C,EAAK,MAAM,KAAMjkC,CAAI,EACjC,OAAArH,EAAM,SAAS,UAAU,QAASolE,GAAS,CACnC,OAAOA,EAAOnkB,CAAM,GAAM,YAC1BmkB,EAAOnkB,CAAM,EAAE,GAAG55C,CAAI,CAE9C,CAAiB,EACMjV,CACvB,CACA,CAAS,CACT,CAAK,CACL,CACA,SAASizE,GAAoBrlE,EAAO9S,EAAU,CAC1C,MAAMo4E,EAAOtlE,EAAM,SACnB,GAAI,CAACslE,EACD,OAEJ,MAAMl7B,EAAYk7B,EAAK,UACjB9wE,EAAQ41C,EAAU,QAAQl9C,CAAQ,EACpCsH,IAAU,IACV41C,EAAU,OAAO51C,EAAO,CAAC,EAEzB,EAAA41C,EAAU,OAAS,KAGvB86B,GAAY,QAAS70E,GAAM,CACvB,OAAO2P,EAAM3P,CAAG,CACxB,CAAK,EACD,OAAO2P,EAAM,SACjB,CAGI,SAASulE,GAAapwE,EAAO,CAC7B,MAAMkB,EAAM,IAAI,IAChB,IAAI/E,EAAG+uE,EACP,IAAI/uE,EAAI,EAAG+uE,EAAOlrE,EAAM,OAAQ7D,EAAI+uE,EAAM,EAAE/uE,EACxC+E,EAAI,IAAIlB,EAAM7D,CAAC,CAAC,EAEpB,OAAI+E,EAAI,OAASgqE,EACNlrE,EAEJ,MAAM,KAAKkB,CAAG,CACzB,CAOG,MAAMmvE,GAAmB,UAAW,CACnC,OAAI,OAAO,OAAW,IACX,SAASt1C,EAAU,CACtB,OAAOA,EAAU,CACpB,EAEE,OAAO,qBAClB,EAAG,EAIC,SAAS+1B,GAAUj5D,EAAIqqD,EAAS,CAChC,IAAIouB,EAAY,CAAE,EACdC,EAAU,GACd,OAAO,YAAYr+D,EAAM,CAErBo+D,EAAYp+D,EACPq+D,IACDA,EAAU,GACVF,GAAiB,KAAK,OAAQ,IAAI,CAC9BE,EAAU,GACV14E,EAAG,MAAMqqD,EAASouB,CAAS,CAC3C,CAAa,EAER,CACL,CAGI,SAAS7oD,GAAS5vB,EAAI6lC,EAAO,CAC7B,IAAIzD,EACJ,OAAO,YAAY/nB,EAAM,CACrB,OAAIwrB,GACA,aAAazD,CAAO,EACpBA,EAAU,WAAWpiC,EAAI6lC,EAAOxrB,CAAI,GAEpCra,EAAG,MAAM,KAAMqa,CAAI,EAEhBwrB,CACV,CACL,CAII,MAAM8yC,GAAsBtqC,GAAQA,IAAU,QAAU,OAASA,IAAU,MAAQ,QAAU,SAIvFuqC,GAAiB,CAACvqC,EAAOtlC,EAAOC,IAAMqlC,IAAU,QAAUtlC,EAAQslC,IAAU,MAAQrlC,GAAOD,EAAQC,GAAO,EAI1G6vE,GAAS,CAACxqC,EAAO5yB,EAAMD,EAAOs9D,IAE7BzqC,KADOyqC,EAAM,OAAS,SACJt9D,EAAQ6yB,IAAU,UAAY5yB,EAAOD,GAAS,EAAIC,EAK3E,SAASs9D,GAAiChjE,EAAMijE,EAAQC,EAAoB,CAC5E,MAAMC,EAAaF,EAAO,OAC1B,IAAIjwE,EAAQ,EACR1K,EAAQ66E,EACZ,GAAInjE,EAAK,QAAS,CACd,KAAM,CAAE,OAAAojE,EAAS,QAAAC,CAAO,EAAMrjE,EACxBiL,EAAOm4D,EAAO,KACd,CAAE,IAAAp7D,EAAM,IAAAD,EAAM,WAAAu7D,EAAa,WAAAC,CAAa,EAAGH,EAAO,cAAe,EACnEE,IACAtwE,EAAQquE,GAAY,KAAK,IACzBQ,GAAawB,EAASD,EAAO,KAAMp7D,CAAG,EAAE,GACxCk7D,EAAqBC,EAAatB,GAAaoB,EAAQh4D,EAAMm4D,EAAO,iBAAiBp7D,CAAG,CAAC,EAAE,EAAE,EAAG,EAAGm7D,EAAa,CAAC,GAEjHI,EACAj7E,EAAQ+4E,GAAY,KAAK,IACzBQ,GAAawB,EAASD,EAAO,KAAMr7D,EAAK,EAAI,EAAE,GAAK,EACnDm7D,EAAqB,EAAIrB,GAAaoB,EAAQh4D,EAAMm4D,EAAO,iBAAiBr7D,CAAG,EAAG,EAAI,EAAE,GAAK,CAAC,EAAG/U,EAAOmwE,CAAU,EAAInwE,EAEtH1K,EAAQ66E,EAAanwE,CAEjC,CACI,MAAO,CACH,MAAAA,EACA,MAAA1K,CACH,CACL,CAMI,SAASk7E,GAAoBxjE,EAAM,CACnC,KAAM,CAAE,OAAAyjE,EAAS,OAAAC,EAAS,aAAAC,CAAe,EAAG3jE,EACtC4jE,EAAY,CACd,KAAMH,EAAO,IACb,KAAMA,EAAO,IACb,KAAMC,EAAO,IACb,KAAMA,EAAO,GAChB,EACD,GAAI,CAACC,EACD,OAAA3jE,EAAK,aAAe4jE,EACb,GAEX,MAAMC,EAAUF,EAAa,OAASF,EAAO,KAAOE,EAAa,OAASF,EAAO,KAAOE,EAAa,OAASD,EAAO,KAAOC,EAAa,OAASD,EAAO,IACzJ,cAAO,OAAOC,EAAcC,CAAS,EAC9BC,CACX,CAEA,MAAMC,GAAU10E,GAAIA,IAAM,GAAKA,IAAM,EAC/B20E,GAAY,CAAC30E,EAAGrE,EAAGsC,IAAI,EAAE,KAAK,IAAI,EAAG,IAAM+B,GAAK,EAAE,EAAI,KAAK,KAAKA,EAAIrE,GAAK2zE,GAAMrxE,CAAC,GAChF22E,GAAa,CAAC50E,EAAGrE,EAAGsC,IAAI,KAAK,IAAI,EAAG,IAAM+B,CAAC,EAAI,KAAK,KAAKA,EAAIrE,GAAK2zE,GAAMrxE,CAAC,EAAI,EAKzE42E,GAAU,CAChB,OAAS70E,GAAIA,EACb,WAAaA,GAAIA,EAAIA,EACrB,YAAcA,GAAI,CAACA,GAAKA,EAAI,GAC5B,cAAgBA,IAAKA,GAAK,IAAO,EAAI,GAAMA,EAAIA,EAAI,KAAQ,EAAEA,GAAKA,EAAI,GAAK,GAC3E,YAAcA,GAAIA,EAAIA,EAAIA,EAC1B,aAAeA,IAAKA,GAAK,GAAKA,EAAIA,EAAI,EACtC,eAAiBA,IAAKA,GAAK,IAAO,EAAI,GAAMA,EAAIA,EAAIA,EAAI,KAAQA,GAAK,GAAKA,EAAIA,EAAI,GAClF,YAAcA,GAAIA,EAAIA,EAAIA,EAAIA,EAC9B,aAAeA,GAAI,GAAGA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAC5C,eAAiBA,IAAKA,GAAK,IAAO,EAAI,GAAMA,EAAIA,EAAIA,EAAIA,EAAI,MAASA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAC3F,YAAcA,GAAIA,EAAIA,EAAIA,EAAIA,EAAIA,EAClC,aAAeA,IAAKA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,EAC9C,eAAiBA,IAAKA,GAAK,IAAO,EAAI,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,GAClG,WAAaA,GAAI,CAAC,KAAK,IAAIA,EAAI0vE,EAAO,EAAI,EAC1C,YAAc1vE,GAAI,KAAK,IAAIA,EAAI0vE,EAAO,EACtC,cAAgB1vE,GAAI,KAAQ,KAAK,IAAIqvE,GAAKrvE,CAAC,EAAI,GAC/C,WAAaA,GAAIA,IAAM,EAAI,EAAI,KAAK,IAAI,EAAG,IAAMA,EAAI,EAAE,EACvD,YAAcA,GAAIA,IAAM,EAAI,EAAI,CAAC,KAAK,IAAI,EAAG,IAAMA,CAAC,EAAI,EACxD,cAAgBA,GAAI00E,GAAO10E,CAAC,EAAIA,EAAIA,EAAI,GAAM,GAAM,KAAK,IAAI,EAAG,IAAMA,EAAI,EAAI,EAAE,EAAI,IAAO,CAAC,KAAK,IAAI,EAAG,KAAOA,EAAI,EAAI,EAAE,EAAI,GAC7H,WAAaA,GAAIA,GAAK,EAAIA,EAAI,EAAE,KAAK,KAAK,EAAIA,EAAIA,CAAC,EAAI,GACvD,YAAcA,GAAI,KAAK,KAAK,GAAKA,GAAK,GAAKA,CAAC,EAC5C,cAAgBA,IAAKA,GAAK,IAAO,EAAI,KAAQ,KAAK,KAAK,EAAIA,EAAIA,CAAC,EAAI,GAAK,IAAO,KAAK,KAAK,GAAKA,GAAK,GAAKA,CAAC,EAAI,GAC9G,cAAgBA,GAAI00E,GAAO10E,CAAC,EAAIA,EAAI20E,GAAU30E,EAAG,KAAO,EAAG,EAC3D,eAAiBA,GAAI00E,GAAO10E,CAAC,EAAIA,EAAI40E,GAAW50E,EAAG,KAAO,EAAG,EAC7D,iBAAkBA,EAAG,CAGjB,OAAO00E,GAAO10E,CAAC,EAAIA,EAAIA,EAAI,GAAM,GAAM20E,GAAU30E,EAAI,EAAG,MAAG,GAAC,EAAI,GAAM,GAAM40E,GAAW50E,EAAI,EAAI,EAAG,MAAG,GAAC,CACzG,EACD,WAAYA,EAAG,CAEX,OAAOA,EAAIA,IAAM,QAAI,GAAKA,EAAI,QACjC,EACD,YAAaA,EAAG,CAEZ,OAAQA,GAAK,GAAKA,IAAM,QAAI,GAAKA,EAAI,SAAK,CAC7C,EACD,cAAeA,EAAG,CACd,IAAIrE,EAAI,QACR,OAAKqE,GAAK,IAAO,EACN,IAAOA,EAAIA,KAAOrE,GAAK,OAAS,GAAKqE,EAAIrE,IAE7C,KAAQqE,GAAK,GAAKA,KAAOrE,GAAK,OAAS,GAAKqE,EAAIrE,GAAK,EAC/D,EACD,aAAeqE,GAAI,EAAI60E,GAAQ,cAAc,EAAI70E,CAAC,EAClD,cAAeA,EAAG,CAGd,OAAIA,EAAI,EAAI,KACD,OAAIA,EAAIA,EAEfA,EAAI,EAAI,KACD,QAAKA,GAAK,IAAM,MAAKA,EAAI,IAEhCA,EAAI,IAAM,KACH,QAAKA,GAAK,KAAO,MAAKA,EAAI,MAE9B,QAAKA,GAAK,MAAQ,MAAKA,EAAI,OACrC,EACD,gBAAkBA,GAAIA,EAAI,GAAM60E,GAAQ,aAAa70E,EAAI,CAAC,EAAI,GAAM60E,GAAQ,cAAc70E,EAAI,EAAI,CAAC,EAAI,GAAM,EACjH,EAEA,SAAS80E,GAAoBr5E,EAAO,CAChC,GAAIA,GAAS,OAAOA,GAAU,SAAU,CACpC,MAAMoV,EAAOpV,EAAM,SAAU,EAC7B,OAAOoV,IAAS,0BAA4BA,IAAS,yBAC7D,CACI,MAAO,EACX,CACA,SAASm8D,GAAMvxE,EAAO,CAClB,OAAOq5E,GAAoBr5E,CAAK,EAAIA,EAAQ,IAAIsxE,GAAMtxE,CAAK,CAC/D,CACA,SAASs5E,GAAct5E,EAAO,CAC1B,OAAOq5E,GAAoBr5E,CAAK,EAAIA,EAAQ,IAAIsxE,GAAMtxE,CAAK,EAAE,SAAS,EAAG,EAAE,OAAO,EAAG,EAAE,UAAW,CACtG,CAEA,MAAMu5E,GAAU,CACZ,IACA,IACA,cACA,SACA,SACJ,EACMC,GAAS,CACX,QACA,cACA,iBACJ,EACA,SAASC,GAAwB9mB,EAAU,CACvCA,EAAS,IAAI,YAAa,CACtB,MAAO,OACP,SAAU,IACV,OAAQ,eACR,GAAI,OACJ,KAAM,OACN,KAAM,OACN,GAAI,OACJ,KAAM,MACd,CAAK,EACDA,EAAS,SAAS,YAAa,CAC3B,UAAW,GACX,WAAY,GACZ,YAAcnoD,GAAOA,IAAS,cAAgBA,IAAS,cAAgBA,IAAS,IACxF,CAAK,EACDmoD,EAAS,IAAI,aAAc,CACvB,OAAQ,CACJ,KAAM,QACN,WAAY6mB,EACf,EACD,QAAS,CACL,KAAM,SACN,WAAYD,EACxB,CACA,CAAK,EACD5mB,EAAS,SAAS,aAAc,CAC5B,UAAW,WACnB,CAAK,EACDA,EAAS,IAAI,cAAe,CACxB,OAAQ,CACJ,UAAW,CACP,SAAU,GAC1B,CACS,EACD,OAAQ,CACJ,UAAW,CACP,SAAU,CAC1B,CACS,EACD,KAAM,CACF,WAAY,CACR,OAAQ,CACJ,KAAM,aACT,EACD,QAAS,CACL,KAAM,UACN,SAAU,CAC9B,CACA,CACS,EACD,KAAM,CACF,WAAY,CACR,OAAQ,CACJ,GAAI,aACP,EACD,QAAS,CACL,KAAM,UACN,OAAQ,SACR,GAAK1xD,GAAIA,EAAI,CACjC,CACA,CACA,CACA,CAAK,CACL,CAEA,SAASy4E,GAAqB/mB,EAAU,CACpCA,EAAS,IAAI,SAAU,CACnB,YAAa,GACb,QAAS,CACL,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,CAClB,CACA,CAAK,CACL,CAEA,MAAMgnB,GAAY,IAAI,IACtB,SAASC,GAAgBC,EAAQ55E,EAAS,CACtCA,EAAUA,GAAW,CAAE,EACvB,MAAM65E,EAAWD,EAAS,KAAK,UAAU55E,CAAO,EAChD,IAAI85E,EAAYJ,GAAU,IAAIG,CAAQ,EACtC,OAAKC,IACDA,EAAY,IAAI,KAAK,aAAaF,EAAQ55E,CAAO,EACjD05E,GAAU,IAAIG,EAAUC,CAAS,GAE9BA,CACX,CACA,SAASC,GAAat8E,EAAKm8E,EAAQ55E,EAAS,CACxC,OAAO25E,GAAgBC,EAAQ55E,CAAO,EAAE,OAAOvC,CAAG,CACtD,CAEA,MAAMu8E,GAAa,CAClB,OAAQj6E,EAAO,CACR,OAAOqD,GAAQrD,CAAK,EAAKA,EAAQ,GAAKA,CACzC,EACJ,QAASk6E,EAAWtzE,EAAOuzE,EAAO,CAC3B,GAAID,IAAc,EACd,MAAO,IAEX,MAAML,EAAS,KAAK,MAAM,QAAQ,OAClC,IAAIO,EACAj9B,EAAQ+8B,EACZ,GAAIC,EAAM,OAAS,EAAG,CAClB,MAAME,EAAU,KAAK,IAAI,KAAK,IAAIF,EAAM,CAAC,EAAE,KAAK,EAAG,KAAK,IAAIA,EAAMA,EAAM,OAAS,CAAC,EAAE,KAAK,CAAC,GACtFE,EAAU,MAAQA,EAAU,QAC5BD,EAAW,cAEfj9B,EAAQm9B,GAAeJ,EAAWC,CAAK,CACnD,CACQ,MAAMI,EAAWnG,GAAM,KAAK,IAAIj3B,CAAK,CAAC,EAChCq9B,EAAa,KAAK,IAAI,KAAK,IAAI,GAAK,KAAK,MAAMD,CAAQ,EAAG,EAAE,EAAG,CAAC,EAChEt6E,EAAU,CACZ,SAAAm6E,EACA,sBAAuBI,EACvB,sBAAuBA,CAC1B,EACD,cAAO,OAAOv6E,EAAS,KAAK,QAAQ,MAAM,MAAM,EACzC+5E,GAAaE,EAAWL,EAAQ55E,CAAO,CACjD,EACJ,YAAai6E,EAAWtzE,EAAOuzE,EAAO,CAC/B,GAAID,IAAc,EACd,MAAO,IAEX,MAAMO,EAASN,EAAMvzE,CAAK,EAAE,aAAeszE,EAAY,KAAK,IAAI,GAAI,KAAK,MAAM9F,GAAM8F,CAAS,CAAC,CAAC,EAChG,MAAI,CACA,EACA,EACA,EACA,EACA,GACA,EACZ,EAAU,SAASO,CAAM,GAAK7zE,EAAQ,GAAMuzE,EAAM,OAC/BF,GAAW,QAAQ,KAAK,KAAMC,EAAWtzE,EAAOuzE,CAAK,EAEzD,EACf,CACA,EACA,SAASG,GAAeJ,EAAWC,EAAO,CACtC,IAAIh9B,EAAQg9B,EAAM,OAAS,EAAIA,EAAM,CAAC,EAAE,MAAQA,EAAM,CAAC,EAAE,MAAQA,EAAM,CAAC,EAAE,MAAQA,EAAM,CAAC,EAAE,MAC3F,OAAI,KAAK,IAAIh9B,CAAK,GAAK,GAAK+8B,IAAc,KAAK,MAAMA,CAAS,IAC1D/8B,EAAQ+8B,EAAY,KAAK,MAAMA,CAAS,GAErC/8B,CACX,CACC,IAAIu9B,GAAQ,CACT,WAAAT,EACJ,EAEA,SAASU,GAAmBhoB,EAAU,CAClCA,EAAS,IAAI,QAAS,CAClB,QAAS,GACT,OAAQ,GACR,QAAS,GACT,YAAa,GACpB,OAAQ,QACR,MAAO,EACA,KAAM,CACF,QAAS,GACT,UAAW,EACX,gBAAiB,GACjB,UAAW,GACX,WAAY,EACZ,UAAW,CAACioB,EAAM36E,IAAUA,EAAQ,UACpC,UAAW,CAAC26E,EAAM36E,IAAUA,EAAQ,MACpC,OAAQ,EACX,EACD,OAAQ,CACJ,QAAS,GACT,KAAM,CAAE,EACR,WAAY,EACZ,MAAO,CACV,EACD,MAAO,CACH,QAAS,GACT,KAAM,GACN,QAAS,CACL,IAAK,EACL,OAAQ,CACxB,CACS,EACD,MAAO,CACH,YAAa,EACb,YAAa,GACb,OAAQ,GACR,gBAAiB,EACjB,gBAAiB,GACjB,QAAS,EACT,QAAS,GACT,SAAU,GACV,gBAAiB,EACjB,YAAa,EACb,SAAUy6E,GAAM,WAAW,OAC3B,MAAO,CAAE,EACT,MAAO,CAAE,EACT,MAAO,SACP,WAAY,OACZ,kBAAmB,GACnB,cAAe,4BACf,gBAAiB,CAC7B,CACA,CAAK,EACD/nB,EAAS,MAAM,cAAe,QAAS,GAAI,OAAO,EAClDA,EAAS,MAAM,aAAc,QAAS,GAAI,aAAa,EACvDA,EAAS,MAAM,eAAgB,QAAS,GAAI,aAAa,EACzDA,EAAS,MAAM,cAAe,QAAS,GAAI,OAAO,EAClDA,EAAS,SAAS,QAAS,CACvB,UAAW,GACX,YAAcnoD,GAAO,CAACA,EAAK,WAAW,QAAQ,GAAK,CAACA,EAAK,WAAW,OAAO,GAAKA,IAAS,YAAcA,IAAS,SAChH,WAAaA,GAAOA,IAAS,cAAgBA,IAAS,kBAAoBA,IAAS,MAC3F,CAAK,EACDmoD,EAAS,SAAS,SAAU,CACxB,UAAW,OACnB,CAAK,EACDA,EAAS,SAAS,cAAe,CAC7B,YAAcnoD,GAAOA,IAAS,mBAAqBA,IAAS,WAC5D,WAAaA,GAAOA,IAAS,iBACrC,CAAK,CACL,CAEA,MAAMqwE,GAAY,OAAO,OAAO,IAAI,EAC9B9gE,GAAc,OAAO,OAAO,IAAI,EACrC,SAAS+gE,GAAWt1E,EAAM/C,EAAK,CAC5B,GAAI,CAACA,EACD,OAAO+C,EAEX,MAAM8D,EAAO7G,EAAI,MAAM,GAAG,EAC1B,QAAQiB,EAAI,EAAGoD,EAAIwC,EAAK,OAAQ5F,EAAIoD,EAAG,EAAEpD,EAAE,CACvC,MAAMqG,EAAIT,EAAK5F,CAAC,EAChB8B,EAAOA,EAAKuE,CAAC,IAAMvE,EAAKuE,CAAC,EAAI,OAAO,OAAO,IAAI,EACvD,CACI,OAAOvE,CACX,CACA,SAASiD,GAAI/I,EAAMq7E,EAAO1D,EAAQ,CAC9B,OAAI,OAAO0D,GAAU,SACV1gE,GAAMygE,GAAWp7E,EAAMq7E,CAAK,EAAG1D,CAAM,EAEzCh9D,GAAMygE,GAAWp7E,EAAM,EAAE,EAAGq7E,CAAK,CAC5C,CACC,MAAMC,EAAS,CACZ,YAAYC,EAAcC,EAAU,CAChC,KAAK,UAAY,OACjB,KAAK,gBAAkB,kBACvB,KAAK,YAAc,kBACnB,KAAK,MAAQ,OACb,KAAK,SAAW,CAAE,EAClB,KAAK,iBAAoBr9E,GAAUA,EAAQ,MAAM,SAAS,oBAAqB,EAC/E,KAAK,SAAW,CAAE,EAClB,KAAK,OAAS,CACV,YACA,WACA,QACA,aACA,WACH,EACD,KAAK,KAAO,CACR,OAAQ,qDACR,KAAM,GACN,MAAO,SACP,WAAY,IACZ,OAAQ,IACX,EACD,KAAK,MAAQ,CAAE,EACf,KAAK,qBAAuB,CAACgO,EAAK5L,IAAUq5E,GAAcr5E,EAAQ,eAAe,EACjF,KAAK,iBAAmB,CAAC4L,EAAK5L,IAAUq5E,GAAcr5E,EAAQ,WAAW,EACzE,KAAK,WAAa,CAAC4L,EAAK5L,IAAUq5E,GAAcr5E,EAAQ,KAAK,EAC7D,KAAK,UAAY,IACjB,KAAK,YAAc,CACf,KAAM,UACN,UAAW,GACX,iBAAkB,EACrB,EACD,KAAK,oBAAsB,GAC3B,KAAK,QAAU,KACf,KAAK,QAAU,KACf,KAAK,QAAU,GACf,KAAK,QAAU,CAAE,EACjB,KAAK,WAAa,GAClB,KAAK,MAAQ,OACb,KAAK,OAAS,CAAE,EAChB,KAAK,SAAW,GAChB,KAAK,wBAA0B,GAC/B,KAAK,SAASg7E,CAAY,EAC1B,KAAK,MAAMC,CAAS,CAC5B,CACC,IAAIH,EAAO1D,EAAQ,CACZ,OAAO5uE,GAAI,KAAMsyE,EAAO1D,CAAM,CACtC,CACC,IAAI0D,EAAO,CACJ,OAAOD,GAAW,KAAMC,CAAK,CACrC,CACC,SAASA,EAAO1D,EAAQ,CACjB,OAAO5uE,GAAIsR,GAAaghE,EAAO1D,CAAM,CAC7C,CACI,SAAS0D,EAAO1D,EAAQ,CACpB,OAAO5uE,GAAIoyE,GAAWE,EAAO1D,CAAM,CAC3C,CACC,MAAM0D,EAAOvwE,EAAM2wE,EAAaC,EAAY,CACrC,MAAMC,EAAcP,GAAW,KAAMC,CAAK,EACpCO,EAAoBR,GAAW,KAAMK,CAAW,EAChDI,EAAc,IAAM/wE,EAC1B,OAAO,iBAAiB6wE,EAAa,CACjC,CAACE,CAAW,EAAG,CACX,MAAOF,EAAY7wE,CAAI,EACvB,SAAU,EACb,EACD,CAACA,CAAI,EAAG,CACJ,WAAY,GACZ,KAAO,CACH,MAAMyL,EAAQ,KAAKslE,CAAW,EACxB5xE,EAAS2xE,EAAkBF,CAAU,EAC3C,OAAI5wB,GAASv0C,CAAK,EACP,OAAO,OAAO,GAAItM,EAAQsM,CAAK,EAEnCg8D,GAAeh8D,EAAOtM,CAAM,CACtC,EACD,IAAK3J,EAAO,CACR,KAAKu7E,CAAW,EAAIv7E,CACxC,CACA,CACA,CAAS,CACT,CACI,MAAMw7E,EAAU,CACZA,EAAS,QAASC,GAAQA,EAAM,IAAI,CAAC,CAC7C,CACA,CACA,IAAI9oB,GAA2B,IAAIqoB,GAAS,CACxC,YAAcxwE,GAAO,CAACA,EAAK,WAAW,IAAI,EAC1C,WAAaA,GAAOA,IAAS,SAC7B,MAAO,CACH,UAAW,aACd,EACD,YAAa,CACT,YAAa,GACb,WAAY,EACpB,CACA,EAAG,CACCivE,GACAC,GACAiB,EACJ,CAAC,EAED,SAASe,GAAaC,EAAM,CACxB,MAAI,CAACA,GAAQ7J,GAAc6J,EAAK,IAAI,GAAK7J,GAAc6J,EAAK,MAAM,EACvD,MAEHA,EAAK,MAAQA,EAAK,MAAQ,IAAM,KAAOA,EAAK,OAASA,EAAK,OAAS,IAAM,IAAMA,EAAK,KAAO,MAAQA,EAAK,MACpH,CACC,SAASC,GAAa/vE,EAAK+F,EAAMiqE,EAAIC,EAASjjD,EAAQ,CACnD,IAAIkjD,EAAYnqE,EAAKinB,CAAM,EAC3B,OAAKkjD,IACDA,EAAYnqE,EAAKinB,CAAM,EAAIhtB,EAAI,YAAYgtB,CAAM,EAAE,MACnDgjD,EAAG,KAAKhjD,CAAM,GAEdkjD,EAAYD,IACZA,EAAUC,GAEPD,CACX,CACC,SAASE,GAAanwE,EAAK8vE,EAAMM,EAAepyB,EAAO,CACpDA,EAAQA,GAAS,CAAE,EACnB,IAAIj4C,EAAOi4C,EAAM,KAAOA,EAAM,MAAQ,CAAE,EACpCgyB,EAAKhyB,EAAM,eAAiBA,EAAM,gBAAkB,CAAE,EACtDA,EAAM,OAAS8xB,IACf/pE,EAAOi4C,EAAM,KAAO,CAAE,EACtBgyB,EAAKhyB,EAAM,eAAiB,CAAE,EAC9BA,EAAM,KAAO8xB,GAEjB9vE,EAAI,KAAM,EACVA,EAAI,KAAO8vE,EACX,IAAIG,EAAU,EACd,MAAMrJ,EAAOwJ,EAAc,OAC3B,IAAIv4E,EAAGmE,EAAGq0E,EAAMpyB,EAAOqyB,EACvB,IAAIz4E,EAAI,EAAGA,EAAI+uE,EAAM/uE,IAEjB,GADAomD,EAAQmyB,EAAcv4E,CAAC,EACIomD,GAAU,MAAQzmD,GAAQymD,CAAK,IAAM,GAC5DgyB,EAAUF,GAAa/vE,EAAK+F,EAAMiqE,EAAIC,EAAShyB,CAAK,UAC7CzmD,GAAQymD,CAAK,EACpB,IAAIjiD,EAAI,EAAGq0E,EAAOpyB,EAAM,OAAQjiD,EAAIq0E,EAAMr0E,IACtCs0E,EAAcryB,EAAMjiD,CAAC,EACYs0E,GAAgB,MAAQ,CAAC94E,GAAQ84E,CAAW,IACzEL,EAAUF,GAAa/vE,EAAK+F,EAAMiqE,EAAIC,EAASK,CAAW,GAK1EtwE,EAAI,QAAS,EACb,MAAMuwE,EAAQP,EAAG,OAAS,EAC1B,GAAIO,EAAQH,EAAc,OAAQ,CAC9B,IAAIv4E,EAAI,EAAGA,EAAI04E,EAAO14E,IAClB,OAAOkO,EAAKiqE,EAAGn4E,CAAC,CAAC,EAErBm4E,EAAG,OAAO,EAAGO,CAAK,CAC1B,CACI,OAAON,CACX,CACC,SAASO,GAAYC,EAAOC,EAAOv+D,EAAO,CACvC,MAAMw+D,EAAmBF,EAAM,wBACzBG,EAAYz+D,IAAU,EAAI,KAAK,IAAIA,EAAQ,EAAG,EAAG,EAAI,EAC3D,OAAO,KAAK,OAAOu+D,EAAQE,GAAaD,CAAgB,EAAIA,EAAmBC,CACnF,CACC,SAASC,GAAYC,EAAQ9wE,EAAK,CAC/BA,EAAMA,GAAO8wE,EAAO,WAAW,IAAI,EACnC9wE,EAAI,KAAM,EACVA,EAAI,eAAgB,EACpBA,EAAI,UAAU,EAAG,EAAG8wE,EAAO,MAAOA,EAAO,MAAM,EAC/C9wE,EAAI,QAAS,CACjB,CACA,SAAS+wE,GAAU/wE,EAAK5L,EAASqU,EAAGJ,EAAG,CACnC2oE,GAAgBhxE,EAAK5L,EAASqU,EAAGJ,EAAG,IAAI,CAC5C,CACA,SAAS2oE,GAAgBhxE,EAAK5L,EAASqU,EAAGJ,EAAGtD,EAAG,CAC5C,IAAIwE,EAAM0nE,EAASC,EAAS5yC,EAAM6yC,EAAch/D,EAAOi/D,EAAUC,EACjE,MAAMxtE,EAAQzP,EAAQ,WAChBk9E,EAAWl9E,EAAQ,SACnBm9E,EAASn9E,EAAQ,OACvB,IAAIo9E,GAAOF,GAAY,GAAKnJ,GAC5B,GAAItkE,GAAS,OAAOA,GAAU,WAC1B0F,EAAO1F,EAAM,SAAU,EACnB0F,IAAS,6BAA+BA,IAAS,8BAA8B,CAC/EvJ,EAAI,KAAM,EACVA,EAAI,UAAUyI,EAAGJ,CAAC,EAClBrI,EAAI,OAAOwxE,CAAG,EACdxxE,EAAI,UAAU6D,EAAO,CAACA,EAAM,MAAQ,EAAG,CAACA,EAAM,OAAS,EAAGA,EAAM,MAAOA,EAAM,MAAM,EACnF7D,EAAI,QAAS,EACb,MACZ,CAEI,GAAI,QAAMuxE,CAAM,GAAKA,GAAU,GAI/B,QADAvxE,EAAI,UAAW,EACR6D,EAAK,CACR,QACQkB,EACA/E,EAAI,QAAQyI,EAAGJ,EAAGtD,EAAI,EAAGwsE,EAAQ,EAAG,EAAGvJ,EAAG,EAE1ChoE,EAAI,IAAIyI,EAAGJ,EAAGkpE,EAAQ,EAAGvJ,EAAG,EAEhChoE,EAAI,UAAW,EACf,MACJ,IAAK,WACDmS,EAAQpN,EAAIA,EAAI,EAAIwsE,EACpBvxE,EAAI,OAAOyI,EAAI,KAAK,IAAI+oE,CAAG,EAAIr/D,EAAO9J,EAAI,KAAK,IAAImpE,CAAG,EAAID,CAAM,EAChEC,GAAOlJ,GACPtoE,EAAI,OAAOyI,EAAI,KAAK,IAAI+oE,CAAG,EAAIr/D,EAAO9J,EAAI,KAAK,IAAImpE,CAAG,EAAID,CAAM,EAChEC,GAAOlJ,GACPtoE,EAAI,OAAOyI,EAAI,KAAK,IAAI+oE,CAAG,EAAIr/D,EAAO9J,EAAI,KAAK,IAAImpE,CAAG,EAAID,CAAM,EAChEvxE,EAAI,UAAW,EACf,MACJ,IAAK,cACDmxE,EAAeI,EAAS,KACxBjzC,EAAOizC,EAASJ,EAChBF,EAAU,KAAK,IAAIO,EAAMnJ,EAAU,EAAI/pC,EACvC8yC,EAAW,KAAK,IAAII,EAAMnJ,EAAU,GAAKtjE,EAAIA,EAAI,EAAIosE,EAAe7yC,GACpE4yC,EAAU,KAAK,IAAIM,EAAMnJ,EAAU,EAAI/pC,EACvC+yC,EAAW,KAAK,IAAIG,EAAMnJ,EAAU,GAAKtjE,EAAIA,EAAI,EAAIosE,EAAe7yC,GACpEt+B,EAAI,IAAIyI,EAAI2oE,EAAU/oE,EAAI6oE,EAASC,EAAcK,EAAMzJ,GAAIyJ,EAAMpJ,EAAO,EACxEpoE,EAAI,IAAIyI,EAAI4oE,EAAUhpE,EAAI4oE,EAASE,EAAcK,EAAMpJ,GAASoJ,CAAG,EACnExxE,EAAI,IAAIyI,EAAI2oE,EAAU/oE,EAAI6oE,EAASC,EAAcK,EAAKA,EAAMpJ,EAAO,EACnEpoE,EAAI,IAAIyI,EAAI4oE,EAAUhpE,EAAI4oE,EAASE,EAAcK,EAAMpJ,GAASoJ,EAAMzJ,EAAE,EACxE/nE,EAAI,UAAW,EACf,MACJ,IAAK,OACD,GAAI,CAACsxE,EAAU,CACXhzC,EAAO,KAAK,QAAUizC,EACtBp/D,EAAQpN,EAAIA,EAAI,EAAIu5B,EACpBt+B,EAAI,KAAKyI,EAAI0J,EAAO9J,EAAIi2B,EAAM,EAAInsB,EAAO,EAAImsB,CAAI,EACjD,KAChB,CACYkzC,GAAOnJ,GACV,IAAK,UACF+I,EAAW,KAAK,IAAII,CAAG,GAAKzsE,EAAIA,EAAI,EAAIwsE,GACxCN,EAAU,KAAK,IAAIO,CAAG,EAAID,EAC1BL,EAAU,KAAK,IAAIM,CAAG,EAAID,EAC1BF,EAAW,KAAK,IAAIG,CAAG,GAAKzsE,EAAIA,EAAI,EAAIwsE,GACxCvxE,EAAI,OAAOyI,EAAI2oE,EAAU/oE,EAAI6oE,CAAO,EACpClxE,EAAI,OAAOyI,EAAI4oE,EAAUhpE,EAAI4oE,CAAO,EACpCjxE,EAAI,OAAOyI,EAAI2oE,EAAU/oE,EAAI6oE,CAAO,EACpClxE,EAAI,OAAOyI,EAAI4oE,EAAUhpE,EAAI4oE,CAAO,EACpCjxE,EAAI,UAAW,EACf,MACJ,IAAK,WACDwxE,GAAOnJ,GACV,IAAK,QACF+I,EAAW,KAAK,IAAII,CAAG,GAAKzsE,EAAIA,EAAI,EAAIwsE,GACxCN,EAAU,KAAK,IAAIO,CAAG,EAAID,EAC1BL,EAAU,KAAK,IAAIM,CAAG,EAAID,EAC1BF,EAAW,KAAK,IAAIG,CAAG,GAAKzsE,EAAIA,EAAI,EAAIwsE,GACxCvxE,EAAI,OAAOyI,EAAI2oE,EAAU/oE,EAAI6oE,CAAO,EACpClxE,EAAI,OAAOyI,EAAI2oE,EAAU/oE,EAAI6oE,CAAO,EACpClxE,EAAI,OAAOyI,EAAI4oE,EAAUhpE,EAAI4oE,CAAO,EACpCjxE,EAAI,OAAOyI,EAAI4oE,EAAUhpE,EAAI4oE,CAAO,EACpC,MACJ,IAAK,OACDG,EAAW,KAAK,IAAII,CAAG,GAAKzsE,EAAIA,EAAI,EAAIwsE,GACxCN,EAAU,KAAK,IAAIO,CAAG,EAAID,EAC1BL,EAAU,KAAK,IAAIM,CAAG,EAAID,EAC1BF,EAAW,KAAK,IAAIG,CAAG,GAAKzsE,EAAIA,EAAI,EAAIwsE,GACxCvxE,EAAI,OAAOyI,EAAI2oE,EAAU/oE,EAAI6oE,CAAO,EACpClxE,EAAI,OAAOyI,EAAI2oE,EAAU/oE,EAAI6oE,CAAO,EACpClxE,EAAI,OAAOyI,EAAI4oE,EAAUhpE,EAAI4oE,CAAO,EACpCjxE,EAAI,OAAOyI,EAAI4oE,EAAUhpE,EAAI4oE,CAAO,EACpCO,GAAOnJ,GACP+I,EAAW,KAAK,IAAII,CAAG,GAAKzsE,EAAIA,EAAI,EAAIwsE,GACxCN,EAAU,KAAK,IAAIO,CAAG,EAAID,EAC1BL,EAAU,KAAK,IAAIM,CAAG,EAAID,EAC1BF,EAAW,KAAK,IAAIG,CAAG,GAAKzsE,EAAIA,EAAI,EAAIwsE,GACxCvxE,EAAI,OAAOyI,EAAI2oE,EAAU/oE,EAAI6oE,CAAO,EACpClxE,EAAI,OAAOyI,EAAI2oE,EAAU/oE,EAAI6oE,CAAO,EACpClxE,EAAI,OAAOyI,EAAI4oE,EAAUhpE,EAAI4oE,CAAO,EACpCjxE,EAAI,OAAOyI,EAAI4oE,EAAUhpE,EAAI4oE,CAAO,EACpC,MACJ,IAAK,OACDA,EAAUlsE,EAAIA,EAAI,EAAI,KAAK,IAAIysE,CAAG,EAAID,EACtCL,EAAU,KAAK,IAAIM,CAAG,EAAID,EAC1BvxE,EAAI,OAAOyI,EAAIwoE,EAAS5oE,EAAI6oE,CAAO,EACnClxE,EAAI,OAAOyI,EAAIwoE,EAAS5oE,EAAI6oE,CAAO,EACnC,MACJ,IAAK,OACDlxE,EAAI,OAAOyI,EAAGJ,CAAC,EACfrI,EAAI,OAAOyI,EAAI,KAAK,IAAI+oE,CAAG,GAAKzsE,EAAIA,EAAI,EAAIwsE,GAASlpE,EAAI,KAAK,IAAImpE,CAAG,EAAID,CAAM,EAC/E,MACJ,IAAK,GACDvxE,EAAI,UAAW,EACf,KACZ,CACIA,EAAI,KAAM,EACN5L,EAAQ,YAAc,GACtB4L,EAAI,OAAQ,EAEpB,CACC,SAASyxE,GAAeC,EAAOC,EAAMC,EAAQ,CAC1C,OAAAA,EAASA,GAAU,GACZ,CAACD,GAAQD,GAASA,EAAM,EAAIC,EAAK,KAAOC,GAAUF,EAAM,EAAIC,EAAK,MAAQC,GAAUF,EAAM,EAAIC,EAAK,IAAMC,GAAUF,EAAM,EAAIC,EAAK,OAASC,CACrJ,CACA,SAASC,GAAS7xE,EAAK2xE,EAAM,CACzB3xE,EAAI,KAAM,EACVA,EAAI,UAAW,EACfA,EAAI,KAAK2xE,EAAK,KAAMA,EAAK,IAAKA,EAAK,MAAQA,EAAK,KAAMA,EAAK,OAASA,EAAK,GAAG,EAC5E3xE,EAAI,KAAM,CACd,CACA,SAAS8xE,GAAW9xE,EAAK,CACrBA,EAAI,QAAS,CACjB,CACC,SAAS+xE,GAAe/xE,EAAKyO,EAAU3Q,EAAQ2e,EAAMu1D,EAAM,CACxD,GAAI,CAACvjE,EACD,OAAOzO,EAAI,OAAOlC,EAAO,EAAGA,EAAO,CAAC,EAExC,GAAIk0E,IAAS,SAAU,CACnB,MAAMC,GAAYxjE,EAAS,EAAI3Q,EAAO,GAAK,EAC3CkC,EAAI,OAAOiyE,EAAUxjE,EAAS,CAAC,EAC/BzO,EAAI,OAAOiyE,EAAUn0E,EAAO,CAAC,CAChC,MAAUk0E,IAAS,SAAY,CAAC,CAACv1D,EAC9Bzc,EAAI,OAAOyO,EAAS,EAAG3Q,EAAO,CAAC,EAE/BkC,EAAI,OAAOlC,EAAO,EAAG2Q,EAAS,CAAC,EAEnCzO,EAAI,OAAOlC,EAAO,EAAGA,EAAO,CAAC,CACjC,CACC,SAASo0E,GAAelyE,EAAKyO,EAAU3Q,EAAQ2e,EAAM,CAClD,GAAI,CAAChO,EACD,OAAOzO,EAAI,OAAOlC,EAAO,EAAGA,EAAO,CAAC,EAExCkC,EAAI,cAAcyc,EAAOhO,EAAS,KAAOA,EAAS,KAAMgO,EAAOhO,EAAS,KAAOA,EAAS,KAAMgO,EAAO3e,EAAO,KAAOA,EAAO,KAAM2e,EAAO3e,EAAO,KAAOA,EAAO,KAAMA,EAAO,EAAGA,EAAO,CAAC,CACxL,CACC,SAASq0E,GAAWnyE,EAAK68B,EAAMp0B,EAAGJ,EAAGynE,EAAMjc,EAAO,GAAI,CACnD,MAAMue,EAAQ56E,GAAQqlC,CAAI,EAAIA,EAAO,CACjCA,CACH,EACKw1C,EAASxe,EAAK,YAAc,GAAKA,EAAK,cAAgB,GAC5D,IAAIh8D,EAAGgwD,EAIP,IAHA7nD,EAAI,KAAM,EACVA,EAAI,KAAO8vE,EAAK,OAChBwC,GAActyE,EAAK6zD,CAAI,EACnBh8D,EAAI,EAAGA,EAAIu6E,EAAM,OAAQ,EAAEv6E,EAC3BgwD,EAAOuqB,EAAMv6E,CAAC,EACVg8D,EAAK,UACL0e,GAAavyE,EAAK6zD,EAAK,QAAQ,EAE/Bwe,IACIxe,EAAK,cACL7zD,EAAI,YAAc6zD,EAAK,aAEtBoS,GAAcpS,EAAK,WAAW,IAC/B7zD,EAAI,UAAY6zD,EAAK,aAEzB7zD,EAAI,WAAW6nD,EAAMp/C,EAAGJ,EAAGwrD,EAAK,QAAQ,GAE5C7zD,EAAI,SAAS6nD,EAAMp/C,EAAGJ,EAAGwrD,EAAK,QAAQ,EACtC2e,GAAaxyE,EAAKyI,EAAGJ,EAAGw/C,EAAMgM,CAAI,EAClCxrD,GAAKynE,EAAK,WAEd9vE,EAAI,QAAS,CACjB,CACA,SAASsyE,GAActyE,EAAK6zD,EAAM,CAC1BA,EAAK,aACL7zD,EAAI,UAAU6zD,EAAK,YAAY,CAAC,EAAGA,EAAK,YAAY,CAAC,CAAC,EAErDoS,GAAcpS,EAAK,QAAQ,GAC5B7zD,EAAI,OAAO6zD,EAAK,QAAQ,EAExBA,EAAK,QACL7zD,EAAI,UAAY6zD,EAAK,OAErBA,EAAK,YACL7zD,EAAI,UAAY6zD,EAAK,WAErBA,EAAK,eACL7zD,EAAI,aAAe6zD,EAAK,aAEhC,CACA,SAAS2e,GAAaxyE,EAAKyI,EAAGJ,EAAGw/C,EAAMgM,EAAM,CACzC,GAAIA,EAAK,eAAiBA,EAAK,UAAW,CAC7C,MAAM4e,EAAUzyE,EAAI,YAAY6nD,CAAI,EACvB74C,EAAOvG,EAAIgqE,EAAQ,sBACnB1jE,EAAQtG,EAAIgqE,EAAQ,uBACpBn4E,EAAM+N,EAAIoqE,EAAQ,wBAClB3jE,EAASzG,EAAIoqE,EAAQ,yBACrBC,EAAc7e,EAAK,eAAiBv5D,EAAMwU,GAAU,EAAIA,EAC9D9O,EAAI,YAAcA,EAAI,UACtBA,EAAI,UAAW,EACfA,EAAI,UAAY6zD,EAAK,iBAAmB,EACxC7zD,EAAI,OAAOgP,EAAM0jE,CAAW,EAC5B1yE,EAAI,OAAO+O,EAAO2jE,CAAW,EAC7B1yE,EAAI,OAAQ,CACpB,CACA,CACA,SAASuyE,GAAavyE,EAAK6zD,EAAM,CAC7B,MAAM8e,EAAW3yE,EAAI,UACrBA,EAAI,UAAY6zD,EAAK,MACrB7zD,EAAI,SAAS6zD,EAAK,KAAMA,EAAK,IAAKA,EAAK,MAAOA,EAAK,MAAM,EACzD7zD,EAAI,UAAY2yE,CACpB,CACC,SAASC,GAAmB5yE,EAAK2Z,EAAM,CACpC,KAAM,CAAE,EAAAlR,EAAI,EAAAJ,EAAI,EAAAtD,EAAI,EAAAQ,EAAI,OAAAgsE,CAAM,EAAM53D,EACpC3Z,EAAI,IAAIyI,EAAI8oE,EAAO,QAASlpE,EAAIkpE,EAAO,QAASA,EAAO,QAAS,CAACnJ,GAASL,GAAI,EAAI,EAClF/nE,EAAI,OAAOyI,EAAGJ,EAAI9C,EAAIgsE,EAAO,UAAU,EACvCvxE,EAAI,IAAIyI,EAAI8oE,EAAO,WAAYlpE,EAAI9C,EAAIgsE,EAAO,WAAYA,EAAO,WAAYxJ,GAAIK,GAAS,EAAI,EAC9FpoE,EAAI,OAAOyI,EAAI1D,EAAIwsE,EAAO,YAAalpE,EAAI9C,CAAC,EAC5CvF,EAAI,IAAIyI,EAAI1D,EAAIwsE,EAAO,YAAalpE,EAAI9C,EAAIgsE,EAAO,YAAaA,EAAO,YAAanJ,GAAS,EAAG,EAAI,EACpGpoE,EAAI,OAAOyI,EAAI1D,EAAGsD,EAAIkpE,EAAO,QAAQ,EACrCvxE,EAAI,IAAIyI,EAAI1D,EAAIwsE,EAAO,SAAUlpE,EAAIkpE,EAAO,SAAUA,EAAO,SAAU,EAAG,CAACnJ,GAAS,EAAI,EACxFpoE,EAAI,OAAOyI,EAAI8oE,EAAO,QAASlpE,CAAC,CACpC,CAEA,MAAMwqE,GAAc,uCACdC,GAAa,wEAWf,SAASC,GAAa5+E,EAAOmqC,EAAM,CACnC,MAAMoX,GAAW,GAAKvhD,GAAO,MAAM0+E,EAAW,EAC9C,GAAI,CAACn9B,GAAWA,EAAQ,CAAC,IAAM,SAC3B,OAAOpX,EAAO,IAGlB,OADAnqC,EAAQ,CAACuhD,EAAQ,CAAC,EACXA,EAAQ,CAAC,EAAC,CACb,IAAK,KACD,OAAOvhD,EACX,IAAK,IACDA,GAAS,IACT,KACZ,CACI,OAAOmqC,EAAOnqC,CAClB,CACA,MAAM6+E,GAAgB59E,GAAI,CAACA,GAAK,EAChC,SAAS69E,GAAkB9+E,EAAOiH,EAAO,CACrC,MAAM2mD,EAAM,CAAE,EACRmxB,EAAWv0B,GAASvjD,CAAK,EACzBqC,EAAOy1E,EAAW,OAAO,KAAK93E,CAAK,EAAIA,EACvCrE,EAAO4nD,GAASxqD,CAAK,EAAI++E,EAAYlyE,GAAOolE,GAAejyE,EAAM6M,CAAI,EAAG7M,EAAMiH,EAAM4F,CAAI,CAAC,CAAC,EAAKA,GAAO7M,EAAM6M,CAAI,EAAI,IAAI7M,EAC9H,UAAW6M,KAAQvD,EACfskD,EAAI/gD,CAAI,EAAIgyE,GAAaj8E,EAAKiK,CAAI,CAAC,EAEvC,OAAO+gD,CACX,CAQI,SAASoxB,GAAOh/E,EAAO,CACvB,OAAO8+E,GAAkB9+E,EAAO,CAC5B,IAAK,IACL,MAAO,IACP,OAAQ,IACR,KAAM,GACd,CAAK,CACL,CAOI,SAASi/E,GAAcj/E,EAAO,CAC9B,OAAO8+E,GAAkB9+E,EAAO,CAC5B,UACA,WACA,aACA,aACR,CAAK,CACL,CAQI,SAASk/E,GAAUl/E,EAAO,CAC1B,MAAM+X,EAAMinE,GAAOh/E,CAAK,EACxB,OAAA+X,EAAI,MAAQA,EAAI,KAAOA,EAAI,MAC3BA,EAAI,OAASA,EAAI,IAAMA,EAAI,OACpBA,CACX,CAOI,SAASonE,GAAOl/E,EAASyK,EAAU,CACnCzK,EAAUA,GAAW,CAAE,EACvByK,EAAWA,GAAYioD,GAAS,KAChC,IAAIxoB,EAAO8nC,GAAehyE,EAAQ,KAAMyK,EAAS,IAAI,EACjD,OAAOy/B,GAAS,WAChBA,EAAO,SAASA,EAAM,EAAE,GAE5B,IAAIz6B,EAAQuiE,GAAehyE,EAAQ,MAAOyK,EAAS,KAAK,EACpDgF,GAAS,EAAE,GAAKA,GAAO,MAAMivE,EAAU,IACvC,QAAQ,KAAK,kCAAoCjvE,EAAQ,GAAG,EAC5DA,EAAQ,QAEZ,MAAMisE,EAAO,CACT,OAAQ1J,GAAehyE,EAAQ,OAAQyK,EAAS,MAAM,EACtD,WAAYk0E,GAAa3M,GAAehyE,EAAQ,WAAYyK,EAAS,UAAU,EAAGy/B,CAAI,EACtF,KAAAA,EACA,MAAAz6B,EACA,OAAQuiE,GAAehyE,EAAQ,OAAQyK,EAAS,MAAM,EACtD,OAAQ,EACX,EACD,OAAAixE,EAAK,OAASD,GAAaC,CAAI,EACxBA,CACX,CAWI,SAASzsD,GAAQkwD,EAAQvhF,EAAS+I,EAAOm6C,EAAM,CAE/C,IAAI,EAAG0xB,EAAMzyE,EACb,IAAI,EAAI,EAAGyyE,EAAO2M,EAAO,OAAQ,EAAI3M,EAAM,EAAE,EAEzC,GADAzyE,EAAQo/E,EAAO,CAAC,EACZp/E,IAAU,QAWVA,IAAU,OAIV,OAAOA,CAGnB,CAMI,SAASq/E,GAAUC,EAAQC,EAAOC,EAAa,CAC/C,KAAM,CAAE,IAAAriE,EAAM,IAAAD,CAAG,EAAMoiE,EACjBG,EAAStN,GAAYoN,GAAQriE,EAAMC,GAAO,CAAC,EAC3CuiE,EAAW,CAAC1/E,EAAO06B,IAAM8kD,GAAex/E,IAAU,EAAI,EAAIA,EAAQ06B,EACxE,MAAO,CACH,IAAKglD,EAASviE,EAAK,CAAC,KAAK,IAAIsiE,CAAM,CAAC,EACpC,IAAKC,EAASxiE,EAAKuiE,CAAM,CAC5B,CACL,CACA,SAAS56E,GAAc86E,EAAe9hF,EAAS,CAC3C,OAAO,OAAO,OAAO,OAAO,OAAO8hF,CAAa,EAAG9hF,CAAO,CAC9D,CAEA,SAAS+hF,GAAgBC,EAAQn8C,EAAW,CACxC,EACJ,EAAGo8C,EAAaD,EAAQn1E,EAAUq1E,EAAY,IAAIF,EAAO,CAAC,EAAG,CACpDr2E,GAAQkB,CAAQ,IACjBA,EAAW02D,GAAS,YAAaye,CAAM,GAE3C,MAAMh2B,EAAQ,CACV,CAAC,OAAO,WAAW,EAAG,SACtB,WAAY,GACZ,QAASg2B,EACT,YAAaC,EACb,UAAWp1E,EACX,WAAYq1E,EACZ,SAAWhF,GAAQ6E,GAAgB,CAC3B7E,EACA,GAAG8E,CACnB,EAAen8C,EAAUo8C,EAAYp1E,CAAQ,CACxC,EACD,OAAO,IAAI,MAAMm/C,EAAO,CAC3B,eAAgBlgD,EAAQkD,EAAM,CACnB,cAAOlD,EAAOkD,CAAI,EAClB,OAAOlD,EAAO,MACd,OAAOk2E,EAAO,CAAC,EAAEhzE,CAAI,EACd,EACV,EACR,IAAKlD,EAAQkD,EAAM,CACR,OAAOmzE,GAAQr2E,EAAQkD,EAAM,IAAIozE,GAAqBpzE,EAAM62B,EAAUm8C,EAAQl2E,CAAM,CAAC,CACxF,EACR,yBAA0BA,EAAQkD,EAAM,CAC7B,OAAO,QAAQ,yBAAyBlD,EAAO,QAAQ,CAAC,EAAGkD,CAAI,CAClE,EACR,gBAAkB,CACP,OAAO,QAAQ,eAAegzE,EAAO,CAAC,CAAC,CAC1C,EACR,IAAKl2E,EAAQkD,EAAM,CACR,OAAOqzE,GAAqBv2E,CAAM,EAAE,SAASkD,CAAI,CACpD,EACR,QAASlD,EAAQ,CACN,OAAOu2E,GAAqBv2E,CAAM,CACrC,EACR,IAAKA,EAAQkD,EAAM7M,EAAO,CACf,MAAMmgF,EAAUx2E,EAAO,WAAaA,EAAO,SAAWo2E,KACtD,OAAAp2E,EAAOkD,CAAI,EAAIszE,EAAQtzE,CAAI,EAAI7M,EAC/B,OAAO2J,EAAO,MACP,EACnB,CACA,CAAK,CACL,CACC,SAASy2E,GAAe/2E,EAAOxL,EAASwiF,EAAUC,EAAoB,CACnE,MAAMz2B,EAAQ,CACV,WAAY,GACZ,OAAQxgD,EACR,SAAUxL,EACV,UAAWwiF,EACX,OAAQ,IAAI,IACZ,aAAcpF,GAAa5xE,EAAOi3E,CAAkB,EACpD,WAAaz0E,GAAMu0E,GAAe/2E,EAAOwC,EAAKw0E,EAAUC,CAAkB,EAC1E,SAAWvF,GAAQqF,GAAe/2E,EAAM,SAAS0xE,CAAK,EAAGl9E,EAASwiF,EAAUC,CAAkB,CACjG,EACD,OAAO,IAAI,MAAMz2B,EAAO,CAC3B,eAAgBlgD,EAAQkD,EAAM,CACnB,cAAOlD,EAAOkD,CAAI,EAClB,OAAOxD,EAAMwD,CAAI,EACV,EACV,EACR,IAAKlD,EAAQkD,EAAM7D,EAAU,CAClB,OAAOg3E,GAAQr2E,EAAQkD,EAAM,IAAI0zE,GAAoB52E,EAAQkD,EAAM7D,CAAQ,CAAC,CAC/E,EACR,yBAA0BW,EAAQkD,EAAM,CAC7B,OAAOlD,EAAO,aAAa,QAAU,QAAQ,IAAIN,EAAOwD,CAAI,EAAI,CAC5D,WAAY,GACZ,aAAc,EACjB,EAAG,OAAY,QAAQ,yBAAyBxD,EAAOwD,CAAI,CAC/D,EACR,gBAAkB,CACP,OAAO,QAAQ,eAAexD,CAAK,CACtC,EACR,IAAKM,EAAQkD,EAAM,CACR,OAAO,QAAQ,IAAIxD,EAAOwD,CAAI,CACjC,EACR,SAAW,CACA,OAAO,QAAQ,QAAQxD,CAAK,CAC/B,EACR,IAAKM,EAAQkD,EAAM7M,EAAO,CACf,OAAAqJ,EAAMwD,CAAI,EAAI7M,EACd,OAAO2J,EAAOkD,CAAI,EACX,EACnB,CACA,CAAK,CACL,CACC,SAASouE,GAAa5xE,EAAOspD,EAAW,CACrC,WAAY,GACZ,UAAW,EACf,EAAG,CACC,KAAM,CAAE,YAAA6tB,EAAa7tB,EAAS,WAAa,WAAA8tB,EAAY9tB,EAAS,UAAY,SAAA+tB,EAAU/tB,EAAS,OAAU,EAAGtpD,EAC5G,MAAO,CACH,QAASq3E,EACT,WAAYF,EACZ,UAAWC,EACX,aAAc7mE,GAAW4mE,CAAW,EAAIA,EAAc,IAAIA,EAC1D,YAAa5mE,GAAW6mE,CAAU,EAAIA,EAAa,IAAIA,CAC1D,CACL,CACA,MAAME,GAAU,CAAC98C,EAAQr5B,IAAOq5B,EAASA,EAAS4vC,GAAYjpE,CAAI,EAAIA,EAChEo2E,GAAmB,CAAC/zE,EAAM7M,IAAQwqD,GAASxqD,CAAK,GAAK6M,IAAS,aAAe,OAAO,eAAe7M,CAAK,IAAM,MAAQA,EAAM,cAAgB,QAClJ,SAASggF,GAAQr2E,EAAQkD,EAAMqiB,EAAS,CACpC,GAAI,OAAO,UAAU,eAAe,KAAKvlB,EAAQkD,CAAI,EACjD,OAAOlD,EAAOkD,CAAI,EAEtB,MAAM7M,EAAQkvB,EAAS,EACvB,OAAAvlB,EAAOkD,CAAI,EAAI7M,EACRA,CACX,CACA,SAASugF,GAAoB52E,EAAQkD,EAAM7D,EAAU,CACjD,KAAM,CAAE,OAAA63E,EAAS,SAAAC,EAAW,UAAAC,EAAY,aAAchnE,CAAW,EAAMpQ,EACvE,IAAI3J,EAAQ6gF,EAAOh0E,CAAI,EACvB,OAAI+M,GAAW5Z,CAAK,GAAK+Z,EAAY,aAAalN,CAAI,IAClD7M,EAAQghF,GAAmBn0E,EAAM7M,EAAO2J,EAAQX,CAAQ,GAExD3F,GAAQrD,CAAK,GAAKA,EAAM,SACxBA,EAAQihF,GAAcp0E,EAAM7M,EAAO2J,EAAQoQ,EAAY,WAAW,GAElE6mE,GAAiB/zE,EAAM7M,CAAK,IAC5BA,EAAQogF,GAAepgF,EAAO8gF,EAAUC,GAAaA,EAAUl0E,CAAI,EAAGkN,CAAW,GAE9E/Z,CACX,CACA,SAASghF,GAAmBn0E,EAAM7M,EAAO2J,EAAQX,EAAU,CACvD,KAAM,CAAE,OAAA63E,EAAS,SAAAC,EAAW,UAAAC,EAAY,OAAAG,CAAS,EAAGv3E,EACpD,GAAIu3E,EAAO,IAAIr0E,CAAI,EACf,MAAM,IAAI,MAAM,uBAAyB,MAAM,KAAKq0E,CAAM,EAAE,KAAK,IAAI,EAAI,KAAOr0E,CAAI,EAExF,OAAAq0E,EAAO,IAAIr0E,CAAI,EACf7M,EAAQA,EAAM8gF,EAAUC,GAAa/3E,CAAQ,EAC7Ck4E,EAAO,OAAOr0E,CAAI,EACd+zE,GAAiB/zE,EAAM7M,CAAK,IAC5BA,EAAQmhF,GAAkBN,EAAO,QAASA,EAAQh0E,EAAM7M,CAAK,GAE1DA,CACX,CACA,SAASihF,GAAcp0E,EAAM7M,EAAO2J,EAAQy3E,EAAa,CACrD,KAAM,CAAE,OAAAP,EAAS,SAAAC,EAAW,UAAAC,EAAY,aAAchnE,CAAW,EAAMpQ,EACvE,GAAIH,GAAQs3E,EAAS,KAAK,GAAKM,EAAYv0E,CAAI,EAC3C7M,EAAQA,EAAM8gF,EAAS,MAAQ9gF,EAAM,MAAM,UACpCwqD,GAASxqD,EAAM,CAAC,CAAC,EAAG,CAC3B,MAAM0sD,EAAM1sD,EACN6/E,EAASgB,EAAO,QAAQ,OAAQ3gF,GAAIA,IAAMwsD,CAAG,EACnD1sD,EAAQ,CAAE,EACV,UAAWsI,KAAQokD,EAAI,CACnB,MAAMqX,EAAWod,GAAkBtB,EAAQgB,EAAQh0E,EAAMvE,CAAI,EAC7DtI,EAAM,KAAKogF,GAAerc,EAAU+c,EAAUC,GAAaA,EAAUl0E,CAAI,EAAGkN,CAAW,CAAC,CACpG,CACA,CACI,OAAO/Z,CACX,CACA,SAASqhF,GAAgB32E,EAAUmC,EAAM7M,EAAO,CAC5C,OAAO4Z,GAAWlP,CAAQ,EAAIA,EAASmC,EAAM7M,CAAK,EAAI0K,CAC1D,CACA,MAAM42E,GAAW,CAAC7+E,EAAK0N,IAAS1N,IAAQ,GAAO0N,EAAS,OAAO1N,GAAQ,SAAW+wE,GAAiBrjE,EAAQ1N,CAAG,EAAI,OAClH,SAAS8+E,GAAU94E,EAAK+4E,EAAc/+E,EAAKg/E,EAAgBzhF,EAAO,CAC9D,UAAWmQ,KAAUqxE,EAAa,CAC9B,MAAMzG,EAAQuG,GAAS7+E,EAAK0N,CAAM,EAClC,GAAI4qE,EAAO,CACPtyE,EAAI,IAAIsyE,CAAK,EACb,MAAMrwE,EAAW22E,GAAgBtG,EAAM,UAAWt4E,EAAKzC,CAAK,EAC5D,GAAIwJ,GAAQkB,CAAQ,GAAKA,IAAajI,GAAOiI,IAAa+2E,EACtD,OAAO/2E,CAEvB,SAAmBqwE,IAAU,IAASvxE,GAAQi4E,CAAc,GAAKh/E,IAAQg/E,EAC7D,OAAO,IAEnB,CACI,MAAO,EACX,CACA,SAASN,GAAkBK,EAAczd,EAAUl3D,EAAM7M,EAAO,CAC5D,MAAM8/E,EAAa/b,EAAS,YACtBr5D,EAAW22E,GAAgBtd,EAAS,UAAWl3D,EAAM7M,CAAK,EAC1D0hF,EAAY,CACd,GAAGF,EACH,GAAG1B,CACN,EACKr3E,EAAM,IAAI,IAChBA,EAAI,IAAIzI,CAAK,EACb,IAAIyC,EAAMk/E,GAAiBl5E,EAAKi5E,EAAW70E,EAAMnC,GAAYmC,EAAM7M,CAAK,EAIxE,OAHIyC,IAAQ,MAGR+G,GAAQkB,CAAQ,GAAKA,IAAamC,IAClCpK,EAAMk/E,GAAiBl5E,EAAKi5E,EAAWh3E,EAAUjI,EAAKzC,CAAK,EACvDyC,IAAQ,MACD,GAGRm9E,GAAgB,MAAM,KAAKn3E,CAAG,EAAG,CACpC,EACR,EAAOq3E,EAAYp1E,EAAU,IAAIk3E,GAAa7d,EAAUl3D,EAAM7M,CAAK,CAAC,CACpE,CACA,SAAS2hF,GAAiBl5E,EAAKi5E,EAAWj/E,EAAKiI,EAAUpC,EAAM,CAC3D,KAAM7F,GACFA,EAAM8+E,GAAU94E,EAAKi5E,EAAWj/E,EAAKiI,EAAUpC,CAAI,EAEvD,OAAO7F,CACX,CACA,SAASm/E,GAAa7d,EAAUl3D,EAAM7M,EAAO,CACzC,MAAMmQ,EAAS4zD,EAAS,WAAY,EAC9Bl3D,KAAQsD,IACVA,EAAOtD,CAAI,EAAI,CAAE,GAErB,MAAMlD,EAASwG,EAAOtD,CAAI,EAC1B,OAAIxJ,GAAQsG,CAAM,GAAK6gD,GAASxqD,CAAK,EAC1BA,EAEJ2J,GAAU,CAAE,CACvB,CACA,SAASs2E,GAAqBpzE,EAAM62B,EAAUm8C,EAAQx2E,EAAO,CACzD,IAAIrJ,EACJ,UAAW6jC,KAAUH,EAEjB,GADA1jC,EAAQohE,GAASuf,GAAQ98C,EAAQh3B,CAAI,EAAGgzE,CAAM,EAC1Cr2E,GAAQxJ,CAAK,EACb,OAAO4gF,GAAiB/zE,EAAM7M,CAAK,EAAImhF,GAAkBtB,EAAQx2E,EAAOwD,EAAM7M,CAAK,EAAIA,CAGnG,CACA,SAASohE,GAAS3+D,EAAKo9E,EAAQ,CAC3B,UAAW9E,KAAS8E,EAAO,CACvB,GAAI,CAAC9E,EACD,SAEJ,MAAM/6E,EAAQ+6E,EAAMt4E,CAAG,EACvB,GAAI+G,GAAQxJ,CAAK,EACb,OAAOA,CAEnB,CACA,CACA,SAASkgF,GAAqBv2E,EAAQ,CAClC,IAAIL,EAAOK,EAAO,MAClB,OAAKL,IACDA,EAAOK,EAAO,MAAQk4E,GAAyBl4E,EAAO,OAAO,GAE1DL,CACX,CACA,SAASu4E,GAAyBhC,EAAQ,CACtC,MAAMp3E,EAAM,IAAI,IAChB,UAAWsyE,KAAS8E,EAChB,UAAWp9E,KAAO,OAAO,KAAKs4E,CAAK,EAAE,OAAQhxE,GAAI,CAACA,EAAE,WAAW,GAAG,CAAC,EAC/DtB,EAAI,IAAIhG,CAAG,EAGnB,OAAO,MAAM,KAAKgG,CAAG,CACzB,CACA,SAASq5E,GAA4B3sE,EAAMvD,EAAMzJ,EAAO1K,EAAO,CAC3D,KAAM,CAAE,OAAA86E,CAAM,EAAMpjE,EACd,CAAE,IAAA1S,EAAK,GAAM,EAAG,KAAK,SACrBgxD,EAAS,IAAI,MAAMh2D,CAAK,EAC9B,IAAIiG,EAAG+uE,EAAM7rE,EAAO0B,EACpB,IAAI5E,EAAI,EAAG+uE,EAAOh1E,EAAOiG,EAAI+uE,EAAM,EAAE/uE,EACjCkD,EAAQlD,EAAIyE,EACZG,EAAOsJ,EAAKhL,CAAK,EACjB6sD,EAAO/vD,CAAC,EAAI,CACR,EAAG60E,EAAO,MAAM/E,GAAiBlrE,EAAM7F,CAAG,EAAGmE,CAAK,CACrD,EAEL,OAAO6sD,CACX,CAEA,MAAMsuB,GAAU,OAAO,SAAW,MAC5BC,GAAW,CAAC5J,EAAQ10E,IAAIA,EAAI00E,EAAO,QAAU,CAACA,EAAO10E,CAAC,EAAE,MAAQ00E,EAAO10E,CAAC,EACxEu+E,GAAgBC,GAAYA,IAAc,IAAM,IAAM,IAC5D,SAASC,GAAYC,EAAYC,EAAaC,EAAY/9E,EAAG,CAIzD,MAAM+V,EAAW8nE,EAAW,KAAOC,EAAcD,EAC3C3iF,EAAU4iF,EACVxpE,EAAOypE,EAAW,KAAOD,EAAcC,EACvCC,EAAM1M,GAAsBp2E,EAAS6a,CAAQ,EAC7CkoE,EAAM3M,GAAsBh9D,EAAMpZ,CAAO,EAC/C,IAAIgjF,EAAMF,GAAOA,EAAMC,GACnBE,EAAMF,GAAOD,EAAMC,GAEvBC,EAAM,MAAMA,CAAG,EAAI,EAAIA,EACvBC,EAAM,MAAMA,CAAG,EAAI,EAAIA,EACvB,MAAMC,EAAKp+E,EAAIk+E,EACTG,EAAKr+E,EAAIm+E,EACf,MAAO,CACH,SAAU,CACN,EAAGjjF,EAAQ,EAAIkjF,GAAM9pE,EAAK,EAAIyB,EAAS,GACvC,EAAG7a,EAAQ,EAAIkjF,GAAM9pE,EAAK,EAAIyB,EAAS,EAC1C,EACD,KAAM,CACF,EAAG7a,EAAQ,EAAImjF,GAAM/pE,EAAK,EAAIyB,EAAS,GACvC,EAAG7a,EAAQ,EAAImjF,GAAM/pE,EAAK,EAAIyB,EAAS,EACnD,CACK,CACL,CAGI,SAASuoE,GAAezK,EAAQ0K,EAAQC,EAAI,CAC5C,MAAMC,EAAY5K,EAAO,OACzB,IAAI6K,EAAQC,EAAOC,EAAMC,EAAkBC,EACvCC,EAAatB,GAAS5J,EAAQ,CAAC,EACnC,QAAQ10E,EAAI,EAAGA,EAAIs/E,EAAY,EAAG,EAAEt/E,EAGhC,GAFA2/E,EAAeC,EACfA,EAAatB,GAAS5J,EAAQ10E,EAAI,CAAC,EAC/B,GAAC2/E,GAAgB,CAACC,GAGtB,IAAIhP,GAAawO,EAAOp/E,CAAC,EAAG,EAAGq+E,EAAO,EAAG,CACrCgB,EAAGr/E,CAAC,EAAIq/E,EAAGr/E,EAAI,CAAC,EAAI,EACpB,QACZ,CACQu/E,EAASF,EAAGr/E,CAAC,EAAIo/E,EAAOp/E,CAAC,EACzBw/E,EAAQH,EAAGr/E,EAAI,CAAC,EAAIo/E,EAAOp/E,CAAC,EAC5B0/E,EAAmB,KAAK,IAAIH,EAAQ,CAAC,EAAI,KAAK,IAAIC,EAAO,CAAC,EACtD,EAAAE,GAAoB,KAGxBD,EAAO,EAAI,KAAK,KAAKC,CAAgB,EACrCL,EAAGr/E,CAAC,EAAIu/E,EAASE,EAAOL,EAAOp/E,CAAC,EAChCq/E,EAAGr/E,EAAI,CAAC,EAAIw/E,EAAQC,EAAOL,EAAOp/E,CAAC,GAE3C,CACA,SAAS6/E,GAAgBnL,EAAQ2K,EAAIb,EAAY,IAAK,CAClD,MAAMsB,EAAYvB,GAAaC,CAAS,EAClCc,EAAY5K,EAAO,OACzB,IAAIj7B,EAAOsmC,EAAaJ,EACpBC,EAAatB,GAAS5J,EAAQ,CAAC,EACnC,QAAQ10E,EAAI,EAAGA,EAAIs/E,EAAW,EAAEt/E,EAAE,CAI9B,GAHA+/E,EAAcJ,EACdA,EAAeC,EACfA,EAAatB,GAAS5J,EAAQ10E,EAAI,CAAC,EAC/B,CAAC2/E,EACD,SAEJ,MAAMK,EAASL,EAAanB,CAAS,EAC/ByB,EAASN,EAAaG,CAAS,EACjCC,IACAtmC,GAASumC,EAASD,EAAYvB,CAAS,GAAK,EAC5CmB,EAAa,MAAMnB,CAAS,EAAE,EAAIwB,EAASvmC,EAC3CkmC,EAAa,MAAMG,CAAS,EAAE,EAAIG,EAASxmC,EAAQ4lC,EAAGr/E,CAAC,GAEvD4/E,IACAnmC,GAASmmC,EAAWpB,CAAS,EAAIwB,GAAU,EAC3CL,EAAa,MAAMnB,CAAS,EAAE,EAAIwB,EAASvmC,EAC3CkmC,EAAa,MAAMG,CAAS,EAAE,EAAIG,EAASxmC,EAAQ4lC,EAAGr/E,CAAC,EAEnE,CACA,CAMI,SAASkgF,GAAoBxL,EAAQ8J,EAAY,IAAK,CACtD,MAAMsB,EAAYvB,GAAaC,CAAS,EAClCc,EAAY5K,EAAO,OACnB0K,EAAS,MAAME,CAAS,EAAE,KAAK,CAAC,EAChCD,EAAK,MAAMC,CAAS,EAE1B,IAAIt/E,EAAG+/E,EAAaJ,EAChBC,EAAatB,GAAS5J,EAAQ,CAAC,EACnC,IAAI10E,EAAI,EAAGA,EAAIs/E,EAAW,EAAEt/E,EAIxB,GAHA+/E,EAAcJ,EACdA,EAAeC,EACfA,EAAatB,GAAS5J,EAAQ10E,EAAI,CAAC,EAC/B,EAAC2/E,EAGL,IAAIC,EAAY,CACZ,MAAMO,EAAaP,EAAWpB,CAAS,EAAImB,EAAanB,CAAS,EAEjEY,EAAOp/E,CAAC,EAAImgF,IAAe,GAAKP,EAAWE,CAAS,EAAIH,EAAaG,CAAS,GAAKK,EAAa,CAC5G,CACQd,EAAGr/E,CAAC,EAAK+/E,EAA2BH,EAA6BjP,GAAKyO,EAAOp/E,EAAI,CAAC,CAAC,IAAM2wE,GAAKyO,EAAOp/E,CAAC,CAAC,EAAI,GAAKo/E,EAAOp/E,EAAI,CAAC,EAAIo/E,EAAOp/E,CAAC,GAAK,EAA5Fo/E,EAAOp/E,EAAI,CAAC,EAAtCo/E,EAAOp/E,CAAC,EAEnCm/E,GAAezK,EAAQ0K,EAAQC,CAAE,EACjCQ,GAAgBnL,EAAQ2K,EAAIb,CAAS,CACzC,CACA,SAAS4B,GAAgBC,EAAI5mE,EAAKD,EAAK,CACnC,OAAO,KAAK,IAAI,KAAK,IAAI6mE,EAAI7mE,CAAG,EAAGC,CAAG,CAC1C,CACA,SAAS6mE,GAAgB5L,EAAQoF,EAAM,CACnC,IAAI95E,EAAG+uE,EAAM8K,EAAO0G,EAAQC,EACxBC,EAAa7G,GAAelF,EAAO,CAAC,EAAGoF,CAAI,EAC/C,IAAI95E,EAAI,EAAG+uE,EAAO2F,EAAO,OAAQ10E,EAAI+uE,EAAM,EAAE/uE,EACzCwgF,EAAaD,EACbA,EAASE,EACTA,EAAazgF,EAAI+uE,EAAO,GAAK6K,GAAelF,EAAO10E,EAAI,CAAC,EAAG85E,CAAI,EAC1DyG,IAGL1G,EAAQnF,EAAO10E,CAAC,EACZwgF,IACA3G,EAAM,KAAOuG,GAAgBvG,EAAM,KAAMC,EAAK,KAAMA,EAAK,KAAK,EAC9DD,EAAM,KAAOuG,GAAgBvG,EAAM,KAAMC,EAAK,IAAKA,EAAK,MAAM,GAE9D2G,IACA5G,EAAM,KAAOuG,GAAgBvG,EAAM,KAAMC,EAAK,KAAMA,EAAK,KAAK,EAC9DD,EAAM,KAAOuG,GAAgBvG,EAAM,KAAMC,EAAK,IAAKA,EAAK,MAAM,GAG1E,CAGI,SAAS4G,GAA2BhM,EAAQn4E,EAASu9E,EAAM6G,EAAMnC,EAAW,CAC5E,IAAIx+E,EAAG+uE,EAAM8K,EAAO+G,EAKpB,GAHIrkF,EAAQ,WACRm4E,EAASA,EAAO,OAAQ2L,GAAK,CAACA,EAAG,IAAI,GAErC9jF,EAAQ,yBAA2B,WACnC2jF,GAAoBxL,EAAQ8J,CAAS,MAClC,CACH,IAAIh+E,EAAOmgF,EAAOjM,EAAOA,EAAO,OAAS,CAAC,EAAIA,EAAO,CAAC,EACtD,IAAI10E,EAAI,EAAG+uE,EAAO2F,EAAO,OAAQ10E,EAAI+uE,EAAM,EAAE/uE,EACzC65E,EAAQnF,EAAO10E,CAAC,EAChB4gF,EAAgBnC,GAAYj+E,EAAMq5E,EAAOnF,EAAO,KAAK,IAAI10E,EAAI,EAAG+uE,GAAQ4R,EAAO,EAAI,EAAE,EAAI5R,CAAI,EAAGxyE,EAAQ,OAAO,EAC/Gs9E,EAAM,KAAO+G,EAAc,SAAS,EACpC/G,EAAM,KAAO+G,EAAc,SAAS,EACpC/G,EAAM,KAAO+G,EAAc,KAAK,EAChC/G,EAAM,KAAO+G,EAAc,KAAK,EAChCpgF,EAAOq5E,CAEnB,CACQt9E,EAAQ,iBACR+jF,GAAgB5L,EAAQoF,CAAI,CAEpC,CAUI,SAAS+G,IAAkB,CAC3B,OAAO,OAAO,OAAW,KAAe,OAAO,SAAa,GAChE,CAGI,SAASC,GAAeC,EAAS,CACjC,IAAIt0E,EAASs0E,EAAQ,WACrB,OAAIt0E,GAAUA,EAAO,SAAQ,IAAO,wBAChCA,EAASA,EAAO,MAEbA,CACX,CAII,SAASu0E,GAAcC,EAAYn/E,EAAMo/E,EAAgB,CACzD,IAAIC,EACJ,OAAI,OAAOF,GAAe,UACtBE,EAAgB,SAASF,EAAY,EAAE,EACnCA,EAAW,QAAQ,GAAG,IAAM,KAE5BE,EAAgBA,EAAgB,IAAMr/E,EAAK,WAAWo/E,CAAc,IAGxEC,EAAgBF,EAEbE,CACX,CACA,MAAMxmE,GAAoBtQ,GAAUA,EAAQ,cAAc,YAAY,iBAAiBA,EAAS,IAAI,EACpG,SAAS+2E,GAASxzE,EAAIvI,EAAU,CAC5B,OAAOsV,GAAiB/M,CAAE,EAAE,iBAAiBvI,CAAQ,CACzD,CACA,MAAMg8E,GAAY,CACd,MACA,QACA,SACA,MACJ,EACA,SAASC,GAAmBrzD,EAAQjiB,EAAOg9B,EAAQ,CAC/C,MAAM/oC,EAAS,CAAE,EACjB+oC,EAASA,EAAS,IAAMA,EAAS,GACjC,QAAQ,EAAI,EAAG,EAAI,EAAG,IAAI,CACtB,MAAM2vB,EAAM0oB,GAAU,CAAC,EACvBphF,EAAO04D,CAAG,EAAI,WAAW1qC,EAAOjiB,EAAQ,IAAM2sD,EAAM3vB,CAAM,CAAC,GAAK,CACxE,CACI,OAAA/oC,EAAO,MAAQA,EAAO,KAAOA,EAAO,MACpCA,EAAO,OAASA,EAAO,IAAMA,EAAO,OAC7BA,CACX,CACA,MAAMshF,GAAe,CAAC3wE,EAAGJ,EAAGvK,KAAU2K,EAAI,GAAKJ,EAAI,KAAO,CAACvK,GAAU,CAACA,EAAO,YAKzE,SAASu7E,GAAkB,EAAGvI,EAAQ,CACtC,MAAMwI,EAAU,EAAE,QACZ7jF,EAAS6jF,GAAWA,EAAQ,OAASA,EAAQ,CAAC,EAAI,EAClD,CAAE,QAAAviE,EAAU,QAAAD,CAAO,EAAMrhB,EAC/B,IAAI8jF,EAAM,GACN9wE,EAAGJ,EACP,GAAI+wE,GAAariE,EAASD,EAAS,EAAE,MAAM,EACvCrO,EAAIsO,EACJ1O,EAAIyO,MACD,CACH,MAAM6C,EAAOm3D,EAAO,sBAAuB,EAC3CroE,EAAIhT,EAAO,QAAUkkB,EAAK,KAC1BtR,EAAI5S,EAAO,QAAUkkB,EAAK,IAC1B4/D,EAAM,EACd,CACI,MAAO,CACH,EAAA9wE,EACA,EAAAJ,EACA,IAAAkxE,CACH,CACL,CAMI,SAASC,GAAoB9vE,EAAO+mE,EAAO,CAC3C,GAAI,WAAY/mE,EACZ,OAAOA,EAEX,KAAM,CAAE,OAAAonE,EAAS,wBAAA2I,CAAuB,EAAMhJ,EACxC5sE,EAAQ2O,GAAiBs+D,CAAM,EAC/B4I,EAAY71E,EAAM,YAAc,aAChC81E,EAAWR,GAAmBt1E,EAAO,SAAS,EAC9C+1E,EAAUT,GAAmBt1E,EAAO,SAAU,OAAO,EACrD,CAAE,EAAA4E,EAAI,EAAAJ,EAAI,IAAAkxE,CAAM,EAAGF,GAAkB3vE,EAAOonE,CAAM,EAClDG,EAAU0I,EAAS,MAAQJ,GAAOK,EAAQ,MAC1C1I,EAAUyI,EAAS,KAAOJ,GAAOK,EAAQ,KAC/C,GAAI,CAAE,MAAAznE,EAAQ,OAAAC,CAAM,EAAMq+D,EAC1B,OAAIiJ,IACAvnE,GAASwnE,EAAS,MAAQC,EAAQ,MAClCxnE,GAAUunE,EAAS,OAASC,EAAQ,QAEjC,CACH,EAAG,KAAK,OAAOnxE,EAAIwoE,GAAW9+D,EAAQ2+D,EAAO,MAAQ2I,CAAuB,EAC5E,EAAG,KAAK,OAAOpxE,EAAI6oE,GAAW9+D,EAAS0+D,EAAO,OAAS2I,CAAuB,CACjF,CACL,CACA,SAASI,GAAiB/I,EAAQ3+D,EAAOC,EAAQ,CAC7C,IAAI0nE,EAAUC,EACd,GAAI5nE,IAAU,QAAaC,IAAW,OAAW,CAC7C,MAAMzK,EAAYgxE,GAAe7H,CAAM,EACvC,GAAI,CAACnpE,EACDwK,EAAQ2+D,EAAO,YACf1+D,EAAS0+D,EAAO,iBACb,CACH,MAAMn3D,EAAOhS,EAAU,wBACjBqyE,EAAiBxnE,GAAiB7K,CAAS,EAC3CsyE,EAAkBd,GAAmBa,EAAgB,SAAU,OAAO,EACtExyD,EAAmB2xD,GAAmBa,EAAgB,SAAS,EACrE7nE,EAAQwH,EAAK,MAAQ6N,EAAiB,MAAQyyD,EAAgB,MAC9D7nE,EAASuH,EAAK,OAAS6N,EAAiB,OAASyyD,EAAgB,OACjEH,EAAWjB,GAAcmB,EAAe,SAAUryE,EAAW,aAAa,EAC1EoyE,EAAYlB,GAAcmB,EAAe,UAAWryE,EAAW,cAAc,CACzF,CACA,CACI,MAAO,CACH,MAAAwK,EACA,OAAAC,EACA,SAAU0nE,GAAY5R,GACtB,UAAW6R,GAAa7R,EAC3B,CACL,CACA,MAAMgS,GAAU9kF,GAAI,KAAK,MAAMA,EAAI,EAAE,EAAI,GAEzC,SAAS+kF,GAAerJ,EAAQsJ,EAASC,EAAUC,EAAa,CAC5D,MAAMz2E,EAAQ2O,GAAiBs+D,CAAM,EAC/B72C,EAAUk/C,GAAmBt1E,EAAO,QAAQ,EAC5Ci2E,EAAWjB,GAAch1E,EAAM,SAAUitE,EAAQ,aAAa,GAAK5I,GACnE6R,EAAYlB,GAAch1E,EAAM,UAAWitE,EAAQ,cAAc,GAAK5I,GACtEqS,EAAgBV,GAAiB/I,EAAQsJ,EAASC,CAAQ,EAChE,GAAI,CAAE,MAAAloE,EAAQ,OAAAC,CAAM,EAAMmoE,EAC1B,GAAI12E,EAAM,YAAc,cAAe,CACnC,MAAM+1E,EAAUT,GAAmBt1E,EAAO,SAAU,OAAO,EACrD81E,EAAWR,GAAmBt1E,EAAO,SAAS,EACpDsO,GAASwnE,EAAS,MAAQC,EAAQ,MAClCxnE,GAAUunE,EAAS,OAASC,EAAQ,MAC5C,CACI,OAAAznE,EAAQ,KAAK,IAAI,EAAGA,EAAQ8nB,EAAQ,KAAK,EACzC7nB,EAAS,KAAK,IAAI,EAAGkoE,EAAcnoE,EAAQmoE,EAAcloE,EAAS6nB,EAAQ,MAAM,EAChF9nB,EAAQ+nE,GAAO,KAAK,IAAI/nE,EAAO2nE,EAAUS,EAAc,QAAQ,CAAC,EAChEnoE,EAAS8nE,GAAO,KAAK,IAAI9nE,EAAQ2nE,EAAWQ,EAAc,SAAS,CAAC,EAChEpoE,GAAS,CAACC,IAGVA,EAAS8nE,GAAO/nE,EAAQ,CAAC,IAENioE,IAAY,QAAaC,IAAa,SACvCC,GAAeC,EAAc,QAAUnoE,EAASmoE,EAAc,SAChFnoE,EAASmoE,EAAc,OACvBpoE,EAAQ+nE,GAAO,KAAK,MAAM9nE,EAASkoE,CAAW,CAAC,GAE5C,CACH,MAAAnoE,EACA,OAAAC,CACH,CACL,CAMI,SAASooE,GAAY/J,EAAOgK,EAAYC,EAAY,CACpD,MAAMC,EAAaF,GAAc,EAC3BG,EAAe,KAAK,MAAMnK,EAAM,OAASkK,CAAU,EACnDE,EAAc,KAAK,MAAMpK,EAAM,MAAQkK,CAAU,EACvDlK,EAAM,OAAS,KAAK,MAAMA,EAAM,MAAM,EACtCA,EAAM,MAAQ,KAAK,MAAMA,EAAM,KAAK,EACpC,MAAMK,EAASL,EAAM,OAQrB,OAJIK,EAAO,QAAU4J,GAAc,CAAC5J,EAAO,MAAM,QAAU,CAACA,EAAO,MAAM,SACrEA,EAAO,MAAM,OAAS,GAAGL,EAAM,MAAM,KACrCK,EAAO,MAAM,MAAQ,GAAGL,EAAM,KAAK,MAEnCA,EAAM,0BAA4BkK,GAAc7J,EAAO,SAAW8J,GAAgB9J,EAAO,QAAU+J,GACnGpK,EAAM,wBAA0BkK,EAChC7J,EAAO,OAAS8J,EAChB9J,EAAO,MAAQ+J,EACfpK,EAAM,IAAI,aAAakK,EAAY,EAAG,EAAGA,EAAY,EAAG,CAAC,EAClD,IAEJ,EACX,CAKI,MAAMG,GAA+B,UAAW,CAChD,IAAIC,EAAmB,GACvB,GAAI,CACA,MAAM3mF,EAAU,CACZ,IAAI,SAAW,CACX,OAAA2mF,EAAmB,GACZ,EACvB,CACS,EACD,OAAO,iBAAiB,OAAQ,KAAM3mF,CAAO,EAC7C,OAAO,oBAAoB,OAAQ,KAAMA,CAAO,CACnD,MAAW,CAEhB,CACI,OAAO2mF,CACX,EAAG,EASC,SAASC,GAAa94E,EAAShF,EAAU,CACzC,MAAM/I,EAAQ8kF,GAAS/2E,EAAShF,CAAQ,EAClCw4C,EAAUvhD,GAASA,EAAM,MAAM,mBAAmB,EACxD,OAAOuhD,EAAU,CAACA,EAAQ,CAAC,EAAI,MACnC,CAII,SAASulC,GAAa15B,EAAIC,EAAI9oD,EAAGs5E,EAAM,CACvC,MAAO,CACH,EAAGzwB,EAAG,EAAI7oD,GAAK8oD,EAAG,EAAID,EAAG,GACzB,EAAGA,EAAG,EAAI7oD,GAAK8oD,EAAG,EAAID,EAAG,EAC5B,CACL,CAGI,SAAS25B,GAAsB35B,EAAIC,EAAI9oD,EAAGs5E,EAAM,CAChD,MAAO,CACH,EAAGzwB,EAAG,EAAI7oD,GAAK8oD,EAAG,EAAID,EAAG,GACzB,EAAGywB,IAAS,SAAWt5E,EAAI,GAAM6oD,EAAG,EAAIC,EAAG,EAAIwwB,IAAS,QAAUt5E,EAAI,EAAI6oD,EAAG,EAAIC,EAAG,EAAI9oD,EAAI,EAAI8oD,EAAG,EAAID,EAAG,CAC7G,CACL,CAGI,SAAS45B,GAAqB55B,EAAIC,EAAI9oD,EAAGs5E,EAAM,CAC/C,MAAMoJ,EAAM,CACR,EAAG75B,EAAG,KACN,EAAGA,EAAG,IACT,EACK85B,EAAM,CACR,EAAG75B,EAAG,KACN,EAAGA,EAAG,IACT,EACKrvD,EAAI8oF,GAAa15B,EAAI65B,EAAK1iF,CAAC,EAC3BtG,EAAI6oF,GAAaG,EAAKC,EAAK3iF,CAAC,EAC5BhE,EAAIumF,GAAaI,EAAK75B,EAAI9oD,CAAC,EAC3BiC,EAAIsgF,GAAa9oF,EAAGC,EAAGsG,CAAC,EACxBtB,EAAI6jF,GAAa7oF,EAAGsC,EAAGgE,CAAC,EAC9B,OAAOuiF,GAAatgF,EAAGvD,EAAGsB,CAAC,CAC/B,CAEA,MAAM4iF,GAAwB,SAASC,EAAOppE,EAAO,CACjD,MAAO,CACH,EAAG1J,EAAG,CACF,OAAO8yE,EAAQA,EAAQppE,EAAQ1J,CAClC,EACD,SAAU1D,EAAG,CACToN,EAAQpN,CACX,EACD,UAAW68B,EAAO,CACd,OAAIA,IAAU,SACHA,EAEJA,IAAU,QAAU,OAAS,OACvC,EACD,MAAOn5B,EAAGtU,EAAO,CACb,OAAOsU,EAAItU,CACd,EACD,WAAYsU,EAAG+yE,EAAW,CACtB,OAAO/yE,EAAI+yE,CACvB,CACK,CACL,EACMC,GAAwB,UAAW,CACrC,MAAO,CACH,EAAGhzE,EAAG,CACF,OAAOA,CACV,EACD,SAAU1D,EAAG,CAAE,EACf,UAAW68B,EAAO,CACd,OAAOA,CACV,EACD,MAAOn5B,EAAGtU,EAAO,CACb,OAAOsU,EAAItU,CACd,EACD,WAAYsU,EAAGizE,EAAY,CACvB,OAAOjzE,CACnB,CACK,CACL,EACA,SAASkzE,GAActP,EAAKkP,EAAOppE,EAAO,CACtC,OAAOk6D,EAAMiP,GAAsBC,EAAOppE,CAAK,EAAIspE,GAAuB,CAC9E,CACA,SAASG,GAAsB57E,EAAKgiC,EAAW,CAC3C,IAAIn+B,EAAOg4E,GACP75C,IAAc,OAASA,IAAc,SACrCn+B,EAAQ7D,EAAI,OAAO,MACnB67E,EAAW,CACPh4E,EAAM,iBAAiB,WAAW,EAClCA,EAAM,oBAAoB,WAAW,CACxC,EACDA,EAAM,YAAY,YAAam+B,EAAW,WAAW,EACrDhiC,EAAI,kBAAoB67E,EAEhC,CACA,SAASC,GAAqB97E,EAAK67E,EAAU,CACrCA,IAAa,SACb,OAAO77E,EAAI,kBACXA,EAAI,OAAO,MAAM,YAAY,YAAa67E,EAAS,CAAC,EAAGA,EAAS,CAAC,CAAC,EAE1E,CAEA,SAASE,GAAW7+E,EAAU,CAC1B,OAAIA,IAAa,QACN,CACH,QAASmtE,GACT,QAASF,GACT,UAAWC,EACd,EAEE,CACH,QAASS,GACT,QAAS,CAAC14E,EAAGC,IAAID,EAAIC,EACrB,UAAYqW,GAAIA,CACnB,CACL,CACA,SAASuzE,GAAiB,CAAE,MAAA1/E,EAAQ,IAAAC,EAAM,MAAA3K,EAAQ,KAAA4mF,EAAO,MAAA30E,GAAU,CAC/D,MAAO,CACH,MAAOvH,EAAQ1K,EACf,IAAK2K,EAAM3K,EACX,KAAM4mF,IAASj8E,EAAMD,EAAQ,GAAK1K,IAAU,EAC5C,MAAAiS,CACH,CACL,CACA,SAASo4E,GAAWhpC,EAASs5B,EAAQ2P,EAAQ,CACzC,KAAM,CAAE,SAAAh/E,EAAW,MAAOi/E,EAAa,IAAKC,CAAQ,EAAMF,EACpD,CAAE,QAAAG,EAAU,UAAA9iD,GAAewiD,GAAW7+E,CAAQ,EAC9CtL,EAAQ26E,EAAO,OACrB,GAAI,CAAE,MAAAjwE,EAAQ,IAAAC,EAAM,KAAAi8E,CAAO,EAAGvlC,EAC1Bp7C,EAAG+uE,EACP,GAAI4R,EAAM,CAGN,IAFAl8E,GAAS1K,EACT2K,GAAO3K,EACHiG,EAAI,EAAG+uE,EAAOh1E,EAAOiG,EAAI+uE,GACpByV,EAAQ9iD,EAAUgzC,EAAOjwE,EAAQ1K,CAAK,EAAEsL,CAAQ,CAAC,EAAGi/E,EAAYC,CAAQ,EAD9C,EAAEvkF,EAIjCyE,IACAC,IAEJD,GAAS1K,EACT2K,GAAO3K,CACf,CACI,OAAI2K,EAAMD,IACNC,GAAO3K,GAEJ,CACH,MAAA0K,EACA,IAAAC,EACA,KAAAi8E,EACA,MAAOvlC,EAAQ,KAClB,CACL,CACC,SAASqpC,GAAcrpC,EAASs5B,EAAQ2P,EAAQ,CAC7C,GAAI,CAACA,EACD,MAAO,CACHjpC,CACH,EAEL,KAAM,CAAE,SAAA/1C,EAAW,MAAOi/E,EAAa,IAAKC,CAAQ,EAAMF,EACpDtqF,EAAQ26E,EAAO,OACf,CAAE,QAAAgQ,EAAU,QAAAF,EAAU,UAAA9iD,CAAS,EAAMwiD,GAAW7+E,CAAQ,EACxD,CAAE,MAAAZ,EAAQ,IAAAC,EAAM,KAAAi8E,EAAO,MAAA30E,CAAQ,EAAGo4E,GAAWhpC,EAASs5B,EAAQ2P,CAAM,EACpEpkF,EAAS,CAAE,EACjB,IAAI0kF,EAAS,GACTC,EAAW,KACXtoF,EAAOu9E,EAAO/5E,EAClB,MAAM+kF,EAAgB,IAAIL,EAAQF,EAAYxkF,EAAWxD,CAAK,GAAKooF,EAAQJ,EAAYxkF,CAAS,IAAM,EAChGglF,EAAc,IAAIJ,EAAQH,EAAUjoF,CAAK,IAAM,GAAKkoF,EAAQD,EAAUzkF,EAAWxD,CAAK,EACtFyoF,EAAc,IAAIJ,GAAUE,EAAe,EAC3CG,EAAa,IAAI,CAACL,GAAUG,EAAa,EAC/C,QAAQ9kF,EAAIyE,EAAOjE,EAAOiE,EAAOzE,GAAK0E,EAAK,EAAE1E,EACzC65E,EAAQnF,EAAO10E,EAAIjG,CAAK,EACpB,CAAA8/E,EAAM,OAGVv9E,EAAQolC,EAAUm4C,EAAMx0E,CAAQ,CAAC,EAC7B/I,IAAUwD,IAGd6kF,EAASH,EAAQloF,EAAOgoF,EAAYC,CAAQ,EACxCK,IAAa,MAAQG,MACrBH,EAAWF,EAAQpoF,EAAOgoF,CAAU,IAAM,EAAItkF,EAAIQ,GAElDokF,IAAa,MAAQI,MACrB/kF,EAAO,KAAKkkF,GAAiB,CACzB,MAAOS,EACP,IAAK5kF,EACL,KAAA2gF,EACA,MAAA5mF,EACA,MAAAiS,CAChB,CAAa,CAAC,EACF44E,EAAW,MAEfpkF,EAAOR,EACPF,EAAYxD,IAEhB,OAAIsoF,IAAa,MACb3kF,EAAO,KAAKkkF,GAAiB,CACzB,MAAOS,EACP,IAAAlgF,EACA,KAAAi8E,EACA,MAAA5mF,EACA,MAAAiS,CACZ,CAAS,CAAC,EAEC/L,CACX,CACC,SAASglF,GAAej1B,EAAMq0B,EAAQ,CACnC,MAAMpkF,EAAS,CAAE,EACX66C,EAAWkV,EAAK,SACtB,QAAQ,EAAI,EAAG,EAAIlV,EAAS,OAAQ,IAAI,CACpC,MAAMoqC,EAAMT,GAAc3pC,EAAS,CAAC,EAAGkV,EAAK,OAAQq0B,CAAM,EACtDa,EAAI,QACJjlF,EAAO,KAAK,GAAGilF,CAAG,CAE9B,CACI,OAAOjlF,CACX,CACC,SAASklF,GAAgBzQ,EAAQ36E,EAAO4mF,EAAMyE,EAAU,CACrD,IAAI3gF,EAAQ,EACRC,EAAM3K,EAAQ,EAClB,GAAI4mF,GAAQ,CAACyE,EACT,KAAM3gF,EAAQ1K,GAAS,CAAC26E,EAAOjwE,CAAK,EAAE,MAClCA,IAGR,KAAMA,EAAQ1K,GAAS26E,EAAOjwE,CAAK,EAAE,MACjCA,IAMJ,IAJAA,GAAS1K,EACL4mF,IACAj8E,GAAOD,GAELC,EAAMD,GAASiwE,EAAOhwE,EAAM3K,CAAK,EAAE,MACrC2K,IAEJ,OAAAA,GAAO3K,EACA,CACH,MAAA0K,EACA,IAAAC,CACH,CACL,CACC,SAAS2gF,GAAc3Q,EAAQjwE,EAAO+U,EAAKmnE,EAAM,CAC9C,MAAM5mF,EAAQ26E,EAAO,OACfz0E,EAAS,CAAE,EACjB,IAAIszE,EAAO9uE,EACPjE,EAAOk0E,EAAOjwE,CAAK,EACnBC,EACJ,IAAIA,EAAMD,EAAQ,EAAGC,GAAO8U,EAAK,EAAE9U,EAAI,CACnC,MAAM4gF,EAAM5Q,EAAOhwE,EAAM3K,CAAK,EAC1BurF,EAAI,MAAQA,EAAI,KACX9kF,EAAK,OACNmgF,EAAO,GACP1gF,EAAO,KAAK,CACR,MAAOwE,EAAQ1K,EACf,KAAM2K,EAAM,GAAK3K,EACjB,KAAA4mF,CACpB,CAAiB,EACDl8E,EAAQ8uE,EAAO+R,EAAI,KAAO5gF,EAAM,OAGpC6uE,EAAO7uE,EACHlE,EAAK,OACLiE,EAAQC,IAGhBlE,EAAO8kF,CACf,CACI,OAAI/R,IAAS,MACTtzE,EAAO,KAAK,CACR,MAAOwE,EAAQ1K,EACf,IAAKw5E,EAAOx5E,EACZ,KAAA4mF,CACZ,CAAS,EAEE1gF,CACX,CACC,SAASslF,GAAiBv1B,EAAMw1B,EAAgB,CAC7C,MAAM9Q,EAAS1kB,EAAK,OACdo1B,EAAWp1B,EAAK,QAAQ,SACxBj2D,EAAQ26E,EAAO,OACrB,GAAI,CAAC36E,EACD,MAAO,CAAE,EAEb,MAAM4mF,EAAO,CAAC,CAAC3wB,EAAK,MACd,CAAE,MAAAvrD,EAAQ,IAAAC,GAASygF,GAAgBzQ,EAAQ36E,EAAO4mF,EAAMyE,CAAQ,EACtE,GAAIA,IAAa,GACb,OAAOK,GAAcz1B,EAAM,CACvB,CACI,MAAAvrD,EACA,IAAAC,EACA,KAAAi8E,CAChB,CACA,EAAWjM,EAAQ8Q,CAAc,EAE7B,MAAMhsE,EAAM9U,EAAMD,EAAQC,EAAM3K,EAAQ2K,EAClCghF,EAAe,CAAC,CAAC11B,EAAK,WAAavrD,IAAU,GAAKC,IAAQ3K,EAAQ,EACxE,OAAO0rF,GAAcz1B,EAAMq1B,GAAc3Q,EAAQjwE,EAAO+U,EAAKksE,CAAY,EAAGhR,EAAQ8Q,CAAc,CACtG,CACC,SAASC,GAAcz1B,EAAMlV,EAAU45B,EAAQ8Q,EAAgB,CAC5D,MAAI,CAACA,GAAkB,CAACA,EAAe,YAAc,CAAC9Q,EAC3C55B,EAEJ6qC,GAAgB31B,EAAMlV,EAAU45B,EAAQ8Q,CAAc,CACjE,CACC,SAASG,GAAgB31B,EAAMlV,EAAU45B,EAAQ8Q,EAAgB,CAC9D,MAAMI,EAAe51B,EAAK,OAAO,WAAY,EACvC61B,EAAYC,GAAU91B,EAAK,OAAO,EAClC,CAAE,cAAe+1B,EAAe,QAAS,CAAE,SAAAX,CAAW,CAAA,EAAMp1B,EAC5Dj2D,EAAQ26E,EAAO,OACfz0E,EAAS,CAAE,EACjB,IAAI+lF,EAAYH,EACZphF,EAAQq2C,EAAS,CAAC,EAAE,MACpB96C,EAAIyE,EACR,SAASwhF,EAASzpF,EAAG+C,EAAGqB,EAAGslF,EAAI,CAC3B,MAAM1lD,EAAM4kD,EAAW,GAAK,EAC5B,GAAI5oF,IAAM+C,EAIV,KADA/C,GAAKzC,EACC26E,EAAOl4E,EAAIzC,CAAK,EAAE,MACpByC,GAAKgkC,EAET,KAAMk0C,EAAOn1E,EAAIxF,CAAK,EAAE,MACpBwF,GAAKihC,EAELhkC,EAAIzC,IAAUwF,EAAIxF,IAClBkG,EAAO,KAAK,CACR,MAAOzD,EAAIzC,EACX,IAAKwF,EAAIxF,EACT,KAAM6G,EACN,MAAOslF,CACvB,CAAa,EACDF,EAAYE,EACZzhF,EAAQlF,EAAIxF,GAExB,CACI,UAAWqhD,KAAWN,EAAS,CAC3Br2C,EAAQ2gF,EAAW3gF,EAAQ22C,EAAQ,MACnC,IAAI56C,EAAOk0E,EAAOjwE,EAAQ1K,CAAK,EAC3BiS,EACJ,IAAIhM,EAAIyE,EAAQ,EAAGzE,GAAKo7C,EAAQ,IAAKp7C,IAAI,CACrC,MAAMqgF,EAAK3L,EAAO10E,EAAIjG,CAAK,EAC3BiS,EAAQ85E,GAAUN,EAAe,WAAWrkF,GAAcykF,EAAc,CACpE,KAAM,UACN,GAAIplF,EACJ,GAAI6/E,EACJ,aAAcrgF,EAAI,GAAKjG,EACvB,YAAaiG,EAAIjG,EACjB,aAAAgsF,CACH,CAAA,CAAC,CAAC,EACCI,GAAan6E,EAAOg6E,CAAS,GAC7BC,EAASxhF,EAAOzE,EAAI,EAAGo7C,EAAQ,KAAM4qC,CAAS,EAElDxlF,EAAO6/E,EACP2F,EAAYh6E,CACxB,CACYvH,EAAQzE,EAAI,GACZimF,EAASxhF,EAAOzE,EAAI,EAAGo7C,EAAQ,KAAM4qC,CAAS,CAE1D,CACI,OAAO/lF,CACX,CACA,SAAS6lF,GAAUvpF,EAAS,CACxB,MAAO,CACH,gBAAiBA,EAAQ,gBACzB,eAAgBA,EAAQ,eACxB,WAAYA,EAAQ,WACpB,iBAAkBA,EAAQ,iBAC1B,gBAAiBA,EAAQ,gBACzB,YAAaA,EAAQ,YACrB,YAAaA,EAAQ,WACxB,CACL,CACA,SAAS4pF,GAAan6E,EAAOg6E,EAAW,CACpC,OAAOA,GAAa,KAAK,UAAUh6E,CAAK,IAAM,KAAK,UAAUg6E,CAAS,CAC1E,CC9iFA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUA,MAAMI,EAAS,CACX,aAAa,CACT,KAAK,SAAW,KAChB,KAAK,QAAU,IAAI,IACnB,KAAK,SAAW,GAChB,KAAK,UAAY,MACzB,CACC,QAAQxN,EAAOyN,EAAOC,EAAM50E,EAAM,CAC3B,MAAMy5C,EAAYk7B,EAAM,UAAU30E,CAAI,EAChC60E,EAAWF,EAAM,SACvBl7B,EAAU,QAASzvD,GAAKA,EAAG,CACnB,MAAAk9E,EACA,QAASyN,EAAM,QACf,SAAAE,EACA,YAAa,KAAK,IAAID,EAAOD,EAAM,MAAOE,CAAQ,CAClE,CAAa,CAAC,CACd,CACC,UAAW,CACA,KAAK,WAGT,KAAK,SAAW,GAChB,KAAK,SAAWrS,GAAiB,KAAK,OAAQ,IAAI,CAC9C,KAAK,QAAS,EACd,KAAK,SAAW,KACZ,KAAK,UACL,KAAK,SAAU,CAE/B,CAAS,EACT,CACC,QAAQoS,EAAO,KAAK,MAAO,CACpB,IAAIE,EAAY,EAChB,KAAK,QAAQ,QAAQ,CAACH,EAAOzN,IAAQ,CACjC,GAAI,CAACyN,EAAM,SAAW,CAACA,EAAM,MAAM,OAC/B,OAEJ,MAAMxiF,EAAQwiF,EAAM,MACpB,IAAIrmF,EAAI6D,EAAM,OAAS,EACnB4iF,EAAO,GACP7hF,EACJ,KAAM5E,GAAK,EAAG,EAAEA,EACZ4E,EAAOf,EAAM7D,CAAC,EACV4E,EAAK,SACDA,EAAK,OAASyhF,EAAM,WACpBA,EAAM,SAAWzhF,EAAK,QAE1BA,EAAK,KAAK0hF,CAAI,EACdG,EAAO,KAEP5iF,EAAM7D,CAAC,EAAI6D,EAAMA,EAAM,OAAS,CAAC,EACjCA,EAAM,IAAK,GAGf4iF,IACA7N,EAAM,KAAM,EACZ,KAAK,QAAQA,EAAOyN,EAAOC,EAAM,UAAU,GAE1CziF,EAAM,SACPwiF,EAAM,QAAU,GAChB,KAAK,QAAQzN,EAAOyN,EAAOC,EAAM,UAAU,EAC3CD,EAAM,QAAU,IAEpBG,GAAa3iF,EAAM,MAC/B,CAAS,EACD,KAAK,UAAYyiF,EACbE,IAAc,IACd,KAAK,SAAW,GAE5B,CACC,UAAU5N,EAAO,CACV,MAAM8N,EAAS,KAAK,QACpB,IAAIL,EAAQK,EAAO,IAAI9N,CAAK,EAC5B,OAAKyN,IACDA,EAAQ,CACJ,QAAS,GACT,QAAS,GACT,MAAO,CAAE,EACT,UAAW,CACP,SAAU,CAAE,EACZ,SAAU,CAAA,CAC9B,CACa,EACDK,EAAO,IAAI9N,EAAOyN,CAAK,GAEpBA,CACf,CACC,OAAOzN,EAAO/mE,EAAOu5C,EAAI,CAClB,KAAK,UAAUwtB,CAAK,EAAE,UAAU/mE,CAAK,EAAE,KAAKu5C,CAAE,CACtD,CACC,IAAIwtB,EAAO/0E,EAAO,CACP,CAACA,GAAS,CAACA,EAAM,QAGrB,KAAK,UAAU+0E,CAAK,EAAE,MAAM,KAAK,GAAG/0E,CAAK,CACjD,CACC,IAAI+0E,EAAO,CACJ,OAAO,KAAK,UAAUA,CAAK,EAAE,MAAM,OAAS,CACpD,CACC,MAAMA,EAAO,CACN,MAAMyN,EAAQ,KAAK,QAAQ,IAAIzN,CAAK,EAC/ByN,IAGLA,EAAM,QAAU,GAChBA,EAAM,MAAQ,KAAK,IAAK,EACxBA,EAAM,SAAWA,EAAM,MAAM,OAAO,CAAC1uE,EAAK2tE,IAAM,KAAK,IAAI3tE,EAAK2tE,EAAI,SAAS,EAAG,CAAC,EAC/E,KAAK,SAAU,EACvB,CACI,QAAQ1M,EAAO,CACX,GAAI,CAAC,KAAK,SACN,MAAO,GAEX,MAAMyN,EAAQ,KAAK,QAAQ,IAAIzN,CAAK,EACpC,MAAI,GAACyN,GAAS,CAACA,EAAM,SAAW,CAACA,EAAM,MAAM,OAIrD,CACC,KAAKzN,EAAO,CACL,MAAMyN,EAAQ,KAAK,QAAQ,IAAIzN,CAAK,EACpC,GAAI,CAACyN,GAAS,CAACA,EAAM,MAAM,OACvB,OAEJ,MAAMxiF,EAAQwiF,EAAM,MACpB,IAAI,EAAIxiF,EAAM,OAAS,EACvB,KAAM,GAAK,EAAG,EAAE,EACZA,EAAM,CAAC,EAAE,OAAQ,EAErBwiF,EAAM,MAAQ,CAAE,EAChB,KAAK,QAAQzN,EAAOyN,EAAO,KAAK,IAAK,EAAE,UAAU,CACzD,CACC,OAAOzN,EAAO,CACP,OAAO,KAAK,QAAQ,OAAOA,CAAK,CACxC,CACA,CACA,IAAI+N,GAA2B,IAAIP,GAEnC,MAAMQ,GAAc,cACdC,GAAgB,CAClB,QAASrxE,EAAMC,EAAIqxE,EAAQ,CACvB,OAAOA,EAAS,GAAMrxE,EAAKD,CAC9B,EACJ,MAAOA,EAAMC,EAAIqxE,EAAQ,CAClB,MAAMC,EAAKlZ,GAAMr4D,GAAQoxE,EAAW,EAC9B7Y,EAAKgZ,EAAG,OAASlZ,GAAMp4D,GAAMmxE,EAAW,EAC9C,OAAO7Y,GAAMA,EAAG,MAAQA,EAAG,IAAIgZ,EAAID,CAAM,EAAE,UAAS,EAAKrxE,CAC5D,EACD,OAAQD,EAAMC,EAAIqxE,EAAQ,CACtB,OAAOtxE,GAAQC,EAAKD,GAAQsxE,CACpC,CACA,EACA,MAAME,EAAU,CACZ,YAAYC,EAAKhhF,EAAQkD,EAAMsM,EAAG,CAC9B,MAAMyxE,EAAejhF,EAAOkD,CAAI,EAChCsM,EAAK+V,GAAQ,CACTy7D,EAAI,GACJxxE,EACAyxE,EACAD,EAAI,IAChB,CAAS,EACD,MAAMzxE,EAAOgW,GAAQ,CACjBy7D,EAAI,KACJC,EACAzxE,CACZ,CAAS,EACD,KAAK,QAAU,GACf,KAAK,IAAMwxE,EAAI,IAAMJ,GAAcI,EAAI,MAAQ,OAAOzxE,CAAI,EAC1D,KAAK,QAAUkgE,GAAQuR,EAAI,MAAM,GAAKvR,GAAQ,OAC9C,KAAK,OAAS,KAAK,MAAM,KAAK,IAAG,GAAMuR,EAAI,OAAS,EAAE,EACtD,KAAK,UAAY,KAAK,OAAS,KAAK,MAAMA,EAAI,QAAQ,EACtD,KAAK,MAAQ,CAAC,CAACA,EAAI,KACnB,KAAK,QAAUhhF,EACf,KAAK,MAAQkD,EACb,KAAK,MAAQqM,EACb,KAAK,IAAMC,EACX,KAAK,UAAY,MACzB,CACI,QAAS,CACL,OAAO,KAAK,OACpB,CACI,OAAOwxE,EAAKxxE,EAAI6wE,EAAM,CAClB,GAAI,KAAK,QAAS,CACd,KAAK,QAAQ,EAAK,EAClB,MAAMY,EAAe,KAAK,QAAQ,KAAK,KAAK,EACtCC,EAAUb,EAAO,KAAK,OACtBvP,EAAS,KAAK,UAAYoQ,EAChC,KAAK,OAASb,EACd,KAAK,UAAY,KAAK,MAAM,KAAK,IAAIvP,EAAQkQ,EAAI,QAAQ,CAAC,EAC1D,KAAK,QAAUE,EACf,KAAK,MAAQ,CAAC,CAACF,EAAI,KACnB,KAAK,IAAMz7D,GAAQ,CACfy7D,EAAI,GACJxxE,EACAyxE,EACAD,EAAI,IACpB,CAAa,EACD,KAAK,MAAQz7D,GAAQ,CACjBy7D,EAAI,KACJC,EACAzxE,CAChB,CAAa,CACb,CACA,CACI,QAAS,CACD,KAAK,UACL,KAAK,KAAK,KAAK,KAAK,EACpB,KAAK,QAAU,GACf,KAAK,QAAQ,EAAK,EAE9B,CACI,KAAK6wE,EAAM,CACP,MAAMa,EAAUb,EAAO,KAAK,OACtBrlD,EAAW,KAAK,UAChB93B,EAAO,KAAK,MACZqM,EAAO,KAAK,MACZmrE,EAAO,KAAK,MACZlrE,EAAK,KAAK,IAChB,IAAIqxE,EAEJ,GADA,KAAK,QAAUtxE,IAASC,IAAOkrE,GAAQwG,EAAUlmD,GAC7C,CAAC,KAAK,QAAS,CACf,KAAK,QAAQ93B,CAAI,EAAIsM,EACrB,KAAK,QAAQ,EAAI,EACjB,MACZ,CACQ,GAAI0xE,EAAU,EAAG,CACb,KAAK,QAAQh+E,CAAI,EAAIqM,EACrB,MACZ,CACQsxE,EAASK,EAAUlmD,EAAW,EAC9B6lD,EAASnG,GAAQmG,EAAS,EAAI,EAAIA,EAASA,EAC3CA,EAAS,KAAK,QAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,CAAM,CAAC,CAAC,EACtD,KAAK,QAAQ39E,CAAI,EAAI,KAAK,IAAIqM,EAAMC,EAAIqxE,CAAM,CACtD,CACI,MAAO,CACH,MAAM5oB,EAAW,KAAK,YAAc,KAAK,UAAY,CAAA,GACrD,OAAO,IAAI,QAAQ,CAACp9D,EAAKsmF,IAAM,CAC3BlpB,EAAS,KAAK,CACV,IAAAp9D,EACA,IAAAsmF,CAChB,CAAa,CACb,CAAS,CACT,CACI,QAAQjpF,EAAU,CACd,MAAMwxD,EAASxxD,EAAW,MAAQ,MAC5B+/D,EAAW,KAAK,WAAa,CAAE,EACrC,QAAQ,EAAI,EAAG,EAAIA,EAAS,OAAQ,IAChCA,EAAS,CAAC,EAAEvO,CAAM,EAAG,CAEjC,CACA,CAEA,MAAM03B,EAAW,CACb,YAAYzO,EAAO72B,EAAO,CACtB,KAAK,OAAS62B,EACd,KAAK,YAAc,IAAI,IACvB,KAAK,UAAU72B,CAAM,CAC7B,CACI,UAAUA,EAAQ,CACd,GAAI,CAAC+E,GAAS/E,CAAM,EAChB,OAEJ,MAAMulC,EAAmB,OAAO,KAAKr4B,GAAS,SAAS,EACjDs4B,EAAgB,KAAK,YAC3B,OAAO,oBAAoBxlC,CAAM,EAAE,QAAShjD,GAAM,CAC9C,MAAMkoF,EAAMllC,EAAOhjD,CAAG,EACtB,GAAI,CAAC+nD,GAASmgC,CAAG,EACb,OAEJ,MAAM9oF,EAAW,CAAE,EACnB,UAAWkuD,KAAUi7B,EACjBnpF,EAASkuD,CAAM,EAAI46B,EAAI56B,CAAM,GAEhC1sD,GAAQsnF,EAAI,UAAU,GAAKA,EAAI,YAAc,CAC1CloF,CAChB,GAAe,QAASoK,GAAO,EACXA,IAASpK,GAAO,CAACwoF,EAAc,IAAIp+E,CAAI,IACvCo+E,EAAc,IAAIp+E,EAAMhL,CAAQ,CAEpD,CAAa,CACb,CAAS,CACT,CACC,gBAAgB8H,EAAQ0tE,EAAQ,CACzB,MAAM6T,EAAa7T,EAAO,QACpBp3E,EAAUkrF,GAAqBxhF,EAAQuhF,CAAU,EACvD,GAAI,CAACjrF,EACD,MAAO,CAAE,EAEb,MAAMmrF,EAAa,KAAK,kBAAkBnrF,EAASirF,CAAU,EAC7D,OAAIA,EAAW,SACXG,GAAS1hF,EAAO,QAAQ,YAAauhF,CAAU,EAAE,KAAK,IAAI,CACtDvhF,EAAO,QAAUuhF,CACjC,EAAe,IAAI,CACnB,CAAa,EAEEE,CACf,CACC,kBAAkBzhF,EAAQ0tE,EAAQ,CAC3B,MAAM4T,EAAgB,KAAK,YACrBG,EAAa,CAAE,EACfE,EAAU3hF,EAAO,cAAgBA,EAAO,YAAc,CAAA,GACtD1C,EAAQ,OAAO,KAAKowE,CAAM,EAC1B2S,EAAO,KAAK,IAAK,EACvB,IAAItmF,EACJ,IAAIA,EAAIuD,EAAM,OAAS,EAAGvD,GAAK,EAAG,EAAEA,EAAE,CAClC,MAAMmJ,EAAO5F,EAAMvD,CAAC,EACpB,GAAImJ,EAAK,OAAO,CAAC,IAAM,IACnB,SAEJ,GAAIA,IAAS,UAAW,CACpBu+E,EAAW,KAAK,GAAG,KAAK,gBAAgBzhF,EAAQ0tE,CAAM,CAAC,EACvD,QAChB,CACY,MAAMr3E,EAAQq3E,EAAOxqE,CAAI,EACzB,IAAIqnC,EAAYo3C,EAAQz+E,CAAI,EAC5B,MAAM89E,EAAMM,EAAc,IAAIp+E,CAAI,EAClC,GAAIqnC,EACA,GAAIy2C,GAAOz2C,EAAU,SAAU,CAC3BA,EAAU,OAAOy2C,EAAK3qF,EAAOgqF,CAAI,EACjC,QACpB,MACoB91C,EAAU,OAAQ,EAG1B,GAAI,CAACy2C,GAAO,CAACA,EAAI,SAAU,CACvBhhF,EAAOkD,CAAI,EAAI7M,EACf,QAChB,CACYsrF,EAAQz+E,CAAI,EAAIqnC,EAAY,IAAIw2C,GAAUC,EAAKhhF,EAAQkD,EAAM7M,CAAK,EAClEorF,EAAW,KAAKl3C,CAAS,CACrC,CACQ,OAAOk3C,CACf,CACC,OAAOzhF,EAAQ0tE,EAAQ,CAChB,GAAI,KAAK,YAAY,OAAS,EAAG,CAC7B,OAAO,OAAO1tE,EAAQ0tE,CAAM,EAC5B,MACZ,CACQ,MAAM+T,EAAa,KAAK,kBAAkBzhF,EAAQ0tE,CAAM,EACxD,GAAI+T,EAAW,OACX,OAAAf,GAAS,IAAI,KAAK,OAAQe,CAAU,EAC7B,EAEnB,CACA,CACA,SAASC,GAASD,EAAYG,EAAY,CACtC,MAAMD,EAAU,CAAE,EACZhiF,EAAO,OAAO,KAAKiiF,CAAU,EACnC,QAAQ,EAAI,EAAG,EAAIjiF,EAAK,OAAQ,IAAI,CAChC,MAAMkiF,EAAOJ,EAAW9hF,EAAK,CAAC,CAAC,EAC3BkiF,GAAQA,EAAK,UACbF,EAAQ,KAAKE,EAAK,MAAM,CAEpC,CACI,OAAO,QAAQ,IAAIF,CAAO,CAC9B,CACA,SAASH,GAAqBxhF,EAAQuhF,EAAY,CAC9C,GAAI,CAACA,EACD,OAEJ,IAAIjrF,EAAU0J,EAAO,QACrB,GAAI,CAAC1J,EAAS,CACV0J,EAAO,QAAUuhF,EACjB,MACR,CACI,OAAIjrF,EAAQ,UACR0J,EAAO,QAAU1J,EAAU,OAAO,OAAO,CAAE,EAAEA,EAAS,CAClD,QAAS,GACT,YAAa,CAAA,CACzB,CAAS,GAEEA,CACX,CAEA,SAASwrF,GAAUC,EAAOC,EAAiB,CACvC,MAAMjsB,EAAOgsB,GAASA,EAAM,SAAW,CAAE,EACnCrZ,EAAU3S,EAAK,QACfviD,EAAMuiD,EAAK,MAAQ,OAAYisB,EAAkB,EACjDzuE,EAAMwiD,EAAK,MAAQ,OAAYisB,EAAkB,EACvD,MAAO,CACH,MAAOtZ,EAAUn1D,EAAMC,EACvB,IAAKk1D,EAAUl1D,EAAMD,CACxB,CACL,CACA,SAAS0uE,GAAYhT,EAAQC,EAAQ8S,EAAiB,CAClD,GAAIA,IAAoB,GACpB,MAAO,GAEX,MAAMr3E,EAAIm3E,GAAU7S,EAAQ+S,CAAe,EACrCz3E,EAAIu3E,GAAU5S,EAAQ8S,CAAe,EAC3C,MAAO,CACH,IAAKz3E,EAAE,IACP,MAAOI,EAAE,IACT,OAAQJ,EAAE,MACV,KAAMI,EAAE,KACX,CACL,CACA,SAASu3E,GAAO7rF,EAAO,CACnB,IAAI,EAAG0/B,EAAGzhC,EAAGqG,EACb,OAAIkmD,GAASxqD,CAAK,GACd,EAAIA,EAAM,IACV0/B,EAAI1/B,EAAM,MACV/B,EAAI+B,EAAM,OACVsE,EAAItE,EAAM,MAEV,EAAI0/B,EAAIzhC,EAAIqG,EAAItE,EAEb,CACH,IAAK,EACL,MAAO0/B,EACP,OAAQzhC,EACR,KAAMqG,EACN,SAAUtE,IAAU,EACvB,CACL,CACA,SAAS8rF,GAAwBxP,EAAOyP,EAAe,CACnD,MAAMziF,EAAO,CAAE,EACT0iF,EAAW1P,EAAM,uBAAuByP,CAAa,EAC3D,IAAI,EAAGtZ,EACP,IAAI,EAAI,EAAGA,EAAOuZ,EAAS,OAAQ,EAAIvZ,EAAM,EAAE,EAC3CnpE,EAAK,KAAK0iF,EAAS,CAAC,EAAE,KAAK,EAE/B,OAAO1iF,CACX,CACA,SAAS2iF,GAAWxqC,EAAOzhD,EAAOksF,EAASjsF,EAAU,CAAA,EAAI,CACrD,MAAMqJ,EAAOm4C,EAAM,KACb0qC,EAAalsF,EAAQ,OAAS,SACpC,IAAIyD,EAAG+uE,EAAMgX,EAAc2C,EAC3B,GAAIpsF,IAAU,KAGd,KAAI0D,EAAI,EAAG+uE,EAAOnpE,EAAK,OAAQ5F,EAAI+uE,EAAM,EAAE/uE,EAAE,CAEzC,GADA+lF,EAAe,CAACngF,EAAK5F,CAAC,EAClB+lF,IAAiByC,EAAS,CAC1B,GAAIjsF,EAAQ,IACR,SAEJ,KACZ,CACQmsF,EAAa3qC,EAAM,OAAOgoC,CAAY,EAClC1X,GAAeqa,CAAU,IAAMD,GAAcnsF,IAAU,GAAKq0E,GAAKr0E,CAAK,IAAMq0E,GAAK+X,CAAU,KAC3FpsF,GAASosF,EAErB,CACI,OAAOpsF,EACX,CACA,SAASqsF,GAAyBz6E,EAAM,CACpC,MAAMtI,EAAO,OAAO,KAAKsI,CAAI,EACvB06E,EAAQ,IAAI,MAAMhjF,EAAK,MAAM,EACnC,IAAI5F,EAAG+uE,EAAMhwE,EACb,IAAIiB,EAAI,EAAG+uE,EAAOnpE,EAAK,OAAQ5F,EAAI+uE,EAAM,EAAE/uE,EACvCjB,EAAM6G,EAAK5F,CAAC,EACZ4oF,EAAM5oF,CAAC,EAAI,CACP,EAAGjB,EACH,EAAGmP,EAAKnP,CAAG,CACd,EAEL,OAAO6pF,CACX,CACA,SAASC,GAAUb,EAAOv2E,EAAM,CAC5B,MAAMq3E,EAAUd,GAASA,EAAM,QAAQ,QACvC,OAAOc,GAAWA,IAAY,QAAar3E,EAAK,QAAU,MAC9D,CACA,SAASs3E,GAAYC,EAAYC,EAAYx3E,EAAM,CAC/C,MAAO,GAAGu3E,EAAW,EAAE,IAAIC,EAAW,EAAE,IAAIx3E,EAAK,OAASA,EAAK,IAAI,EACvE,CACA,SAASy3E,GAAclB,EAAO,CAC1B,KAAM,CAAE,IAAAvuE,EAAM,IAAAD,EAAM,WAAAu7D,EAAa,WAAAC,CAAa,EAAGgT,EAAM,cAAe,EACtE,MAAO,CACH,IAAKjT,EAAat7D,EAAM,OAAO,kBAC/B,IAAKu7D,EAAax7D,EAAM,OAAO,iBAClC,CACL,CACA,SAAS2vE,GAAiBC,EAAQC,EAAUC,EAAY,CACpD,MAAMC,EAAWH,EAAOC,CAAQ,IAAMD,EAAOC,CAAQ,EAAI,IACzD,OAAOE,EAASD,CAAU,IAAMC,EAASD,CAAU,EAAI,CAAA,EAC3D,CACA,SAASE,GAAoBzrC,EAAO0rC,EAAQC,EAAUh4E,EAAM,CACxD,UAAWD,KAAQg4E,EAAO,wBAAwB/3E,CAAI,EAAE,UAAU,CAC9D,MAAMpV,EAAQyhD,EAAMtsC,EAAK,KAAK,EAC9B,GAAIi4E,GAAYptF,EAAQ,GAAK,CAACotF,GAAYptF,EAAQ,EAC9C,OAAOmV,EAAK,KAExB,CACI,OAAO,IACX,CACA,SAASk4E,GAAaxxB,EAAYpI,EAAQ,CACtC,KAAM,CAAE,MAAA6oB,EAAQ,YAAannE,CAAO,EAAG0mD,EACjCixB,EAASxQ,EAAM,UAAYA,EAAM,QAAU,CAAA,GAC3C,CAAE,OAAA/D,EAAS,OAAA4U,EAAS,MAAO1D,CAAe,EAAGt0E,EAC7Cm4E,EAAQ/U,EAAO,KACfgV,EAAQJ,EAAO,KACf1qF,EAAMgqF,GAAYlU,EAAQ4U,EAAQh4E,CAAI,EACtCs9D,EAAOhf,EAAO,OACpB,IAAIhS,EACJ,QAAQ/9C,EAAI,EAAGA,EAAI+uE,EAAM,EAAE/uE,EAAE,CACzB,MAAM4E,EAAOmrD,EAAO/vD,CAAC,EACf,CAAE,CAAC4pF,CAAK,EAAG1mF,EAAQ,CAAC2mF,CAAK,EAAGvtF,CAAK,EAAMsI,EACvCklF,EAAallF,EAAK,UAAYA,EAAK,QAAU,CAAA,GACnDm5C,EAAQ+rC,EAAWD,CAAK,EAAIV,GAAiBC,EAAQrqF,EAAKmE,CAAK,EAC/D66C,EAAMgoC,CAAY,EAAIzpF,EACtByhD,EAAM,KAAOyrC,GAAoBzrC,EAAO0rC,EAAQ,GAAMh4E,EAAK,IAAI,EAC/DssC,EAAM,QAAUyrC,GAAoBzrC,EAAO0rC,EAAQ,GAAOh4E,EAAK,IAAI,EACnE,MAAMs4E,EAAehsC,EAAM,gBAAkBA,EAAM,cAAgB,CAAA,GACnEgsC,EAAahE,CAAY,EAAIzpF,CACrC,CACA,CACA,SAAS0tF,GAAgBpR,EAAOl8D,EAAM,CAClC,MAAMutE,EAASrR,EAAM,OACrB,OAAO,OAAO,KAAKqR,CAAM,EAAE,OAAQlrF,GAAMkrF,EAAOlrF,CAAG,EAAE,OAAS2d,CAAI,EAAE,MAAO,CAC/E,CACA,SAASwtE,GAAqBz9E,EAAQvJ,EAAO,CACzC,OAAO/B,GAAcsL,EAAQ,CACzB,OAAQ,GACR,QAAS,OACT,aAAcvJ,EACd,MAAAA,EACA,KAAM,UACN,KAAM,SACd,CAAK,CACL,CACA,SAASinF,GAAkB19E,EAAQvJ,EAAOmH,EAAS,CAC/C,OAAOlJ,GAAcsL,EAAQ,CACzB,OAAQ,GACR,UAAWvJ,EACX,OAAQ,OACR,IAAK,OACL,QAAAmH,EACA,MAAAnH,EACA,KAAM,UACN,KAAM,MACd,CAAK,CACL,CACA,SAASknF,GAAY34E,EAAM5N,EAAO,CAC9B,MAAMkiF,EAAet0E,EAAK,WAAW,MAC/BiL,EAAOjL,EAAK,QAAUA,EAAK,OAAO,KACxC,GAAKiL,EAGL,CAAA7Y,EAAQA,GAAS4N,EAAK,QACtB,UAAWs+C,KAAUlsD,EAAM,CACvB,MAAMulF,EAASr5B,EAAO,QACtB,GAAI,CAACq5B,GAAUA,EAAO1sE,CAAI,IAAM,QAAa0sE,EAAO1sE,CAAI,EAAEqpE,CAAY,IAAM,OACxE,OAEJ,OAAOqD,EAAO1sE,CAAI,EAAEqpE,CAAY,EAC5BqD,EAAO1sE,CAAI,EAAE,gBAAkB,QAAa0sE,EAAO1sE,CAAI,EAAE,cAAcqpE,CAAY,IAAM,QACzF,OAAOqD,EAAO1sE,CAAI,EAAE,cAAcqpE,CAAY,CAE1D,EACA,CACA,MAAMsE,GAAsBlQ,GAAOA,IAAS,SAAWA,IAAS,OAC1DmQ,GAAmB,CAACp6E,EAAQqtC,IAASA,EAASrtC,EAAS,OAAO,OAAO,CAAE,EAAEA,CAAM,EAC/Eq6E,GAAc,CAACC,EAAU/4E,EAAMmnE,IAAQ4R,GAAY,CAAC/4E,EAAK,QAAUA,EAAK,UAAY,CAClF,KAAM22E,GAAwBxP,EAAO,EAAI,EACzC,OAAQ,IACX,EACL,MAAM6R,EAAkB,CACvB,OAAO,SAAW,CAAE,EACpB,OAAO,mBAAqB,KAC5B,OAAO,gBAAkB,KACzB,YAAY7R,EAAOmN,EAAa,CACzB,KAAK,MAAQnN,EACb,KAAK,KAAOA,EAAM,IAClB,KAAK,MAAQmN,EACb,KAAK,gBAAkB,CAAE,EACzB,KAAK,YAAc,KAAK,QAAS,EACjC,KAAK,MAAQ,KAAK,YAAY,KAC9B,KAAK,QAAU,OACd,KAAK,SAAW,GACjB,KAAK,MAAQ,OACb,KAAK,YAAc,OACnB,KAAK,eAAiB,OACtB,KAAK,WAAa,OAClB,KAAK,WAAa,OAClB,KAAK,oBAAsB,GAC3B,KAAK,mBAAqB,GAC1B,KAAK,SAAW,OAChB,KAAK,UAAY,CAAE,EACnB,KAAK,mBAAqB,WAAW,mBACrC,KAAK,gBAAkB,WAAW,gBAClC,KAAK,WAAY,CACzB,CACI,YAAa,CACT,MAAMt0E,EAAO,KAAK,YAClB,KAAK,UAAW,EAChB,KAAK,WAAY,EACjBA,EAAK,SAAWo3E,GAAUp3E,EAAK,OAAQA,CAAI,EAC3C,KAAK,YAAa,EACd,KAAK,QAAQ,MAAQ,CAAC,KAAK,MAAM,gBAAgB,QAAQ,GACzD,QAAQ,KAAK,oKAAoK,CAE7L,CACI,YAAYs0E,EAAc,CAClB,KAAK,QAAUA,GACfqE,GAAY,KAAK,WAAW,EAEhC,KAAK,MAAQrE,CACrB,CACI,YAAa,CACT,MAAMnN,EAAQ,KAAK,MACbnnE,EAAO,KAAK,YACZqqB,EAAU,KAAK,WAAY,EAC3B4uD,EAAW,CAAChuE,EAAM9L,EAAGJ,EAAGwrB,IAAItf,IAAS,IAAM9L,EAAI8L,IAAS,IAAMsf,EAAIxrB,EAClEm6E,EAAMl5E,EAAK,QAAU88D,GAAezyC,EAAQ,QAASkuD,GAAgBpR,EAAO,GAAG,CAAC,EAChFgS,EAAMn5E,EAAK,QAAU88D,GAAezyC,EAAQ,QAASkuD,GAAgBpR,EAAO,GAAG,CAAC,EAChFiS,EAAMp5E,EAAK,QAAU88D,GAAezyC,EAAQ,QAASkuD,GAAgBpR,EAAO,GAAG,CAAC,EAChF4F,EAAY/sE,EAAK,UACjBq5E,EAAMr5E,EAAK,QAAUi5E,EAASlM,EAAWmM,EAAKC,EAAKC,CAAG,EACtDE,EAAMt5E,EAAK,QAAUi5E,EAASlM,EAAWoM,EAAKD,EAAKE,CAAG,EAC5Dp5E,EAAK,OAAS,KAAK,cAAck5E,CAAG,EACpCl5E,EAAK,OAAS,KAAK,cAAcm5E,CAAG,EACpCn5E,EAAK,OAAS,KAAK,cAAco5E,CAAG,EACpCp5E,EAAK,OAAS,KAAK,cAAcq5E,CAAG,EACpCr5E,EAAK,OAAS,KAAK,cAAcs5E,CAAG,CAC5C,CACI,YAAa,CACT,OAAO,KAAK,MAAM,KAAK,SAAS,KAAK,KAAK,CAClD,CACI,SAAU,CACN,OAAO,KAAK,MAAM,eAAe,KAAK,KAAK,CACnD,CACC,cAAcC,EAAS,CAChB,OAAO,KAAK,MAAM,OAAOA,CAAO,CACxC,CACC,eAAehD,EAAO,CACf,MAAMv2E,EAAO,KAAK,YAClB,OAAOu2E,IAAUv2E,EAAK,OAASA,EAAK,OAASA,EAAK,MAC1D,CACI,OAAQ,CACJ,KAAK,QAAQ,OAAO,CAC5B,CACC,UAAW,CACJ,MAAMA,EAAO,KAAK,YACd,KAAK,OACLsiE,GAAoB,KAAK,MAAO,IAAI,EAEpCtiE,EAAK,UACL24E,GAAY34E,CAAI,CAE5B,CACC,YAAa,CACN,MAAMqqB,EAAU,KAAK,WAAY,EAC3B5tB,EAAO4tB,EAAQ,OAASA,EAAQ,KAAO,CAAA,GACvCmvD,EAAQ,KAAK,MACnB,GAAInkC,GAAS54C,CAAI,EACb,KAAK,MAAQy6E,GAAyBz6E,CAAI,UACnC+8E,IAAU/8E,EAAM,CACvB,GAAI+8E,EAAO,CACPlX,GAAoBkX,EAAO,IAAI,EAC/B,MAAMx5E,EAAO,KAAK,YAClB24E,GAAY34E,CAAI,EAChBA,EAAK,QAAU,CAAE,CACjC,CACgBvD,GAAQ,OAAO,aAAaA,CAAI,GAChC2lE,GAAkB3lE,EAAM,IAAI,EAEhC,KAAK,UAAY,CAAE,EACnB,KAAK,MAAQA,CACzB,CACA,CACI,aAAc,CACV,MAAMuD,EAAO,KAAK,YAClB,KAAK,WAAY,EACb,KAAK,qBACLA,EAAK,QAAU,IAAI,KAAK,mBAEpC,CACI,sBAAsBy5E,EAAkB,CACpC,MAAMz5E,EAAO,KAAK,YACZqqB,EAAU,KAAK,WAAY,EACjC,IAAIqvD,EAAe,GACnB,KAAK,WAAY,EACjB,MAAMC,EAAa35E,EAAK,SACxBA,EAAK,SAAWo3E,GAAUp3E,EAAK,OAAQA,CAAI,EACvCA,EAAK,QAAUqqB,EAAQ,QACvBqvD,EAAe,GACff,GAAY34E,CAAI,EAChBA,EAAK,MAAQqqB,EAAQ,OAEzB,KAAK,gBAAgBovD,CAAgB,GACjCC,GAAgBC,IAAe35E,EAAK,WACpCk4E,GAAa,KAAMl4E,EAAK,OAAO,CAE3C,CACC,WAAY,CACL,MAAMswC,EAAS,KAAK,MAAM,OACpBspC,EAAYtpC,EAAO,iBAAiB,KAAK,KAAK,EAC9Co6B,EAASp6B,EAAO,gBAAgB,KAAK,WAAY,EAAEspC,EAAW,EAAI,EACxE,KAAK,QAAUtpC,EAAO,eAAeo6B,EAAQ,KAAK,YAAY,EAC9D,KAAK,SAAW,KAAK,QAAQ,QAC7B,KAAK,gBAAkB,CAAE,CACjC,CACC,MAAM13E,EAAO1K,EAAO,CACb,KAAM,CAAE,YAAa0X,EAAO,MAAOvD,CAAO,EAAG,KACvC,CAAE,OAAA2mE,EAAS,SAAAyW,CAAQ,EAAM75E,EACzBm4E,EAAQ/U,EAAO,KACrB,IAAI0W,EAAS9mF,IAAU,GAAK1K,IAAUmU,EAAK,OAAS,GAAOuD,EAAK,QAC5DjR,EAAOiE,EAAQ,GAAKgN,EAAK,QAAQhN,EAAQ,CAAC,EAC1CzE,EAAGslF,EAAKv1B,EACZ,GAAI,KAAK,WAAa,GAClBt+C,EAAK,QAAUvD,EACfuD,EAAK,QAAU,GACfs+C,EAAS7hD,MACN,CACCvO,GAAQuO,EAAKzJ,CAAK,CAAC,EACnBsrD,EAAS,KAAK,eAAet+C,EAAMvD,EAAMzJ,EAAO1K,CAAK,EAC9C+sD,GAAS54C,EAAKzJ,CAAK,CAAC,EAC3BsrD,EAAS,KAAK,gBAAgBt+C,EAAMvD,EAAMzJ,EAAO1K,CAAK,EAEtDg2D,EAAS,KAAK,mBAAmBt+C,EAAMvD,EAAMzJ,EAAO1K,CAAK,EAE7D,MAAMyxF,EAA6B,IAAIlG,EAAIsE,CAAK,IAAM,MAAQppF,GAAQ8kF,EAAIsE,CAAK,EAAIppF,EAAKopF,CAAK,EAC7F,IAAI5pF,EAAI,EAAGA,EAAIjG,EAAO,EAAEiG,EACpByR,EAAK,QAAQzR,EAAIyE,CAAK,EAAI6gF,EAAMv1B,EAAO/vD,CAAC,EACpCurF,IACIC,EAA0B,IAC1BD,EAAS,IAEb/qF,EAAO8kF,GAGf7zE,EAAK,QAAU85E,CAC3B,CACYD,GACA3B,GAAa,KAAM55B,CAAM,CAErC,CACC,mBAAmBt+C,EAAMvD,EAAMzJ,EAAO1K,EAAO,CACtC,KAAM,CAAE,OAAA86E,EAAS,OAAA4U,CAAM,EAAMh4E,EACvBm4E,EAAQ/U,EAAO,KACfgV,EAAQJ,EAAO,KACfgC,EAAS5W,EAAO,UAAW,EAC3B6W,EAAc7W,IAAW4U,EACzB15B,EAAS,IAAI,MAAMh2D,CAAK,EAC9B,IAAIiG,EAAG+uE,EAAM7rE,EACb,IAAIlD,EAAI,EAAG+uE,EAAOh1E,EAAOiG,EAAI+uE,EAAM,EAAE/uE,EACjCkD,EAAQlD,EAAIyE,EACZsrD,EAAO/vD,CAAC,EAAI,CACR,CAAC4pF,CAAK,EAAG8B,GAAe7W,EAAO,MAAM4W,EAAOvoF,CAAK,EAAGA,CAAK,EACzD,CAAC2mF,CAAK,EAAGJ,EAAO,MAAMv7E,EAAKhL,CAAK,EAAGA,CAAK,CAC3C,EAEL,OAAO6sD,CACf,CACC,eAAet+C,EAAMvD,EAAMzJ,EAAO1K,EAAO,CAClC,KAAM,CAAE,OAAAm7E,EAAS,OAAAC,CAAM,EAAM1jE,EACvBs+C,EAAS,IAAI,MAAMh2D,CAAK,EAC9B,IAAIiG,EAAG+uE,EAAM7rE,EAAO0B,EACpB,IAAI5E,EAAI,EAAG+uE,EAAOh1E,EAAOiG,EAAI+uE,EAAM,EAAE/uE,EACjCkD,EAAQlD,EAAIyE,EACZG,EAAOsJ,EAAKhL,CAAK,EACjB6sD,EAAO/vD,CAAC,EAAI,CACR,EAAGk1E,EAAO,MAAMtwE,EAAK,CAAC,EAAG1B,CAAK,EAC9B,EAAGiyE,EAAO,MAAMvwE,EAAK,CAAC,EAAG1B,CAAK,CACjC,EAEL,OAAO6sD,CACf,CACC,gBAAgBt+C,EAAMvD,EAAMzJ,EAAO1K,EAAO,CACnC,KAAM,CAAE,OAAAm7E,EAAS,OAAAC,CAAM,EAAM1jE,EACvB,CAAE,SAAAk6E,EAAU,IAAM,SAAAC,EAAU,GAAG,EAAM,KAAK,SAC1C77B,EAAS,IAAI,MAAMh2D,CAAK,EAC9B,IAAIiG,EAAG+uE,EAAM7rE,EAAO0B,EACpB,IAAI5E,EAAI,EAAG+uE,EAAOh1E,EAAOiG,EAAI+uE,EAAM,EAAE/uE,EACjCkD,EAAQlD,EAAIyE,EACZG,EAAOsJ,EAAKhL,CAAK,EACjB6sD,EAAO/vD,CAAC,EAAI,CACR,EAAGk1E,EAAO,MAAMpF,GAAiBlrE,EAAM+mF,CAAQ,EAAGzoF,CAAK,EACvD,EAAGiyE,EAAO,MAAMrF,GAAiBlrE,EAAMgnF,CAAQ,EAAG1oF,CAAK,CAC1D,EAEL,OAAO6sD,CACf,CACC,UAAU7sD,EAAO,CACV,OAAO,KAAK,YAAY,QAAQA,CAAK,CAC7C,CACC,eAAeA,EAAO,CACf,OAAO,KAAK,YAAY,KAAKA,CAAK,CAC1C,CACC,WAAW8kF,EAAOj4B,EAAQoqB,EAAM,CACzB,MAAMvB,EAAQ,KAAK,MACbnnE,EAAO,KAAK,YACZnV,EAAQyzD,EAAOi4B,EAAM,IAAI,EACzBjqC,EAAQ,CACV,KAAMqqC,GAAwBxP,EAAO,EAAI,EACzC,OAAQ7oB,EAAO,QAAQi4B,EAAM,IAAI,EAAE,aACtC,EACD,OAAOO,GAAWxqC,EAAOzhD,EAAOmV,EAAK,MAAO,CACxC,KAAA0oE,CACZ,CAAS,CACT,CACC,sBAAsBxR,EAAOqf,EAAOj4B,EAAQhS,EAAO,CAC5C,MAAM8tC,EAAc97B,EAAOi4B,EAAM,IAAI,EACrC,IAAI1rF,EAAQuvF,IAAgB,KAAO,IAAMA,EACzC,MAAMlY,EAAS51B,GAASgS,EAAO,QAAQi4B,EAAM,IAAI,EAC7CjqC,GAAS41B,IACT51B,EAAM,OAAS41B,EACfr3E,EAAQisF,GAAWxqC,EAAO8tC,EAAa,KAAK,YAAY,KAAK,GAEjEljB,EAAM,IAAM,KAAK,IAAIA,EAAM,IAAKrsE,CAAK,EACrCqsE,EAAM,IAAM,KAAK,IAAIA,EAAM,IAAKrsE,CAAK,CAC7C,CACC,UAAU0rF,EAAOwC,EAAU,CACpB,MAAM/4E,EAAO,KAAK,YACZqjE,EAAUrjE,EAAK,QACf85E,EAAS95E,EAAK,SAAWu2E,IAAUv2E,EAAK,OACxCs9D,EAAO+F,EAAQ,OACfgX,EAAa,KAAK,eAAe9D,CAAK,EACtCjqC,EAAQwsC,GAAYC,EAAU/4E,EAAM,KAAK,KAAK,EAC9Ck3D,EAAQ,CACV,IAAK,OAAO,kBACZ,IAAK,OAAO,iBACf,EACK,CAAE,IAAKojB,EAAW,IAAKC,CAAW,EAAG9C,GAAc4C,CAAU,EACnE,IAAI9rF,EAAG+vD,EACP,SAASk8B,GAAQ,CACbl8B,EAAS+kB,EAAQ90E,CAAC,EAClB,MAAM0oF,EAAa34B,EAAO+7B,EAAW,IAAI,EACzC,MAAO,CAACzd,GAAete,EAAOi4B,EAAM,IAAI,CAAC,GAAK+D,EAAWrD,GAAcsD,EAAWtD,CAC9F,CACQ,IAAI1oF,EAAI,EAAGA,EAAI+uE,GACP,GAAAkd,EAAK,IAGT,KAAK,sBAAsBtjB,EAAOqf,EAAOj4B,EAAQhS,CAAK,EAClDwtC,IALa,EAAEvrF,EACnB,CAQJ,GAAIurF,GACA,IAAIvrF,EAAI+uE,EAAO,EAAG/uE,GAAK,EAAG,EAAEA,EACxB,GAAI,CAAAisF,EAAK,EAGT,MAAK,sBAAsBtjB,EAAOqf,EAAOj4B,EAAQhS,CAAK,EACtD,OAGR,OAAO4qB,CACf,CACI,mBAAmBqf,EAAO,CACtB,MAAMj4B,EAAS,KAAK,YAAY,QAC1B4jB,EAAS,CAAE,EACjB,IAAI,EAAG5E,EAAMzyE,EACb,IAAI,EAAI,EAAGyyE,EAAOhf,EAAO,OAAQ,EAAIgf,EAAM,EAAE,EACzCzyE,EAAQyzD,EAAO,CAAC,EAAEi4B,EAAM,IAAI,EACxB3Z,GAAe/xE,CAAK,GACpBq3E,EAAO,KAAKr3E,CAAK,EAGzB,OAAOq3E,CACf,CACC,gBAAiB,CACV,MAAO,EACf,CACC,iBAAiBzwE,EAAO,CACjB,MAAMuO,EAAO,KAAK,YACZojE,EAASpjE,EAAK,OACdg4E,EAASh4E,EAAK,OACds+C,EAAS,KAAK,UAAU7sD,CAAK,EACnC,MAAO,CACH,MAAO2xE,EAAS,GAAKA,EAAO,iBAAiB9kB,EAAO8kB,EAAO,IAAI,CAAC,EAAI,GACpE,MAAO4U,EAAS,GAAKA,EAAO,iBAAiB15B,EAAO05B,EAAO,IAAI,CAAC,EAAI,EACvE,CACT,CACC,QAAQtP,EAAM,CACP,MAAM1oE,EAAO,KAAK,YAClB,KAAK,OAAO0oE,GAAQ,SAAS,EAC7B1oE,EAAK,MAAQ02E,GAAO5Z,GAAe,KAAK,QAAQ,KAAM2Z,GAAYz2E,EAAK,OAAQA,EAAK,OAAQ,KAAK,eAAgB,CAAA,CAAC,CAAC,CAC3H,CACC,OAAO0oE,EAAM,CAAA,CACV,MAAO,CACH,MAAMhyE,EAAM,KAAK,KACXywE,EAAQ,KAAK,MACbnnE,EAAO,KAAK,YACZy6E,EAAWz6E,EAAK,MAAQ,CAAE,EAC1BqoE,EAAOlB,EAAM,UACbvmD,EAAS,CAAE,EACX5tB,EAAQ,KAAK,YAAc,EAC3B1K,EAAQ,KAAK,YAAcmyF,EAAS,OAASznF,EAC7C0nF,EAA0B,KAAK,QAAQ,wBAC7C,IAAInsF,EAIJ,IAHIyR,EAAK,SACLA,EAAK,QAAQ,KAAKtJ,EAAK2xE,EAAMr1E,EAAO1K,CAAK,EAEzCiG,EAAIyE,EAAOzE,EAAIyE,EAAQ1K,EAAO,EAAEiG,EAAE,CAClC,MAAMqK,EAAU6hF,EAASlsF,CAAC,EACtBqK,EAAQ,SAGRA,EAAQ,QAAU8hF,EAClB95D,EAAO,KAAKhoB,CAAO,EAEnBA,EAAQ,KAAKlC,EAAK2xE,CAAI,EAEtC,CACQ,IAAI95E,EAAI,EAAGA,EAAIqyB,EAAO,OAAQ,EAAEryB,EAC5BqyB,EAAOryB,CAAC,EAAE,KAAKmI,EAAK2xE,CAAI,CAEpC,CACC,SAAS52E,EAAOmvB,EAAQ,CACjB,MAAM8nD,EAAO9nD,EAAS,SAAW,UACjC,OAAOnvB,IAAU,QAAa,KAAK,YAAY,QAAU,KAAK,6BAA6Bi3E,CAAI,EAAI,KAAK,0BAA0Bj3E,GAAS,EAAGi3E,CAAI,CAC1J,CACC,WAAWj3E,EAAOmvB,EAAQ8nD,EAAM,CACzB,MAAMr+C,EAAU,KAAK,WAAY,EACjC,IAAI3hC,EACJ,GAAI+I,GAAS,GAAKA,EAAQ,KAAK,YAAY,KAAK,OAAQ,CACpD,MAAMmH,EAAU,KAAK,YAAY,KAAKnH,CAAK,EAC3C/I,EAAUkQ,EAAQ,WAAaA,EAAQ,SAAW8/E,GAAkB,KAAK,WAAU,EAAIjnF,EAAOmH,CAAO,GACrGlQ,EAAQ,OAAS,KAAK,UAAU+I,CAAK,EACrC/I,EAAQ,IAAM2hC,EAAQ,KAAK54B,CAAK,EAChC/I,EAAQ,MAAQA,EAAQ,UAAY+I,CAChD,MACY/I,EAAU,KAAK,WAAa,KAAK,SAAW+vF,GAAqB,KAAK,MAAM,WAAU,EAAI,KAAK,KAAK,GACpG/vF,EAAQ,QAAU2hC,EAClB3hC,EAAQ,MAAQA,EAAQ,aAAe,KAAK,MAEhD,OAAAA,EAAQ,OAAS,CAAC,CAACk4B,EACnBl4B,EAAQ,KAAOggF,EACRhgF,CACf,CACC,6BAA6BggF,EAAM,CAC5B,OAAO,KAAK,uBAAuB,KAAK,mBAAmB,GAAIA,CAAI,CAC3E,CACC,0BAA0Bj3E,EAAOi3E,EAAM,CAChC,OAAO,KAAK,uBAAuB,KAAK,gBAAgB,GAAIA,EAAMj3E,CAAK,CAC/E,CACC,uBAAuBkpF,EAAajS,EAAO,UAAWj3E,EAAO,CACtD,MAAMmvB,EAAS8nD,IAAS,SAClBh0B,EAAQ,KAAK,gBACbiwB,EAAWgW,EAAc,IAAMjS,EAC/BjqE,EAASi2C,EAAMiwB,CAAQ,EACvBiW,EAAU,KAAK,qBAAuBvmF,GAAQ5C,CAAK,EACzD,GAAIgN,EACA,OAAOo6E,GAAiBp6E,EAAQm8E,CAAO,EAE3C,MAAMtqC,EAAS,KAAK,MAAM,OACpBspC,EAAYtpC,EAAO,wBAAwB,KAAK,MAAOqqC,CAAW,EAClEpsD,EAAW3N,EAAS,CACtB,GAAG+5D,CAAW,QACd,QACAA,EACA,EACZ,EAAY,CACAA,EACA,EACH,EACKjQ,EAASp6B,EAAO,gBAAgB,KAAK,WAAY,EAAEspC,CAAS,EAC5Dte,EAAQ,OAAO,KAAK9d,GAAS,SAASm9B,CAAW,CAAC,EAClDjyF,EAAU,IAAI,KAAK,WAAW+I,EAAOmvB,EAAQ8nD,CAAI,EACjDxG,EAAS5xB,EAAO,oBAAoBo6B,EAAQpP,EAAO5yE,EAAS6lC,CAAQ,EAC1E,OAAI2zC,EAAO,UACPA,EAAO,QAAU0Y,EACjBlmC,EAAMiwB,CAAQ,EAAI,OAAO,OAAOkU,GAAiB3W,EAAQ0Y,CAAO,CAAC,GAE9D1Y,CACf,CACC,mBAAmBzwE,EAAOg1B,EAAY7F,EAAQ,CACvC,MAAMumD,EAAQ,KAAK,MACbzyB,EAAQ,KAAK,gBACbiwB,EAAW,aAAal+C,CAAU,GAClChoB,EAASi2C,EAAMiwB,CAAQ,EAC7B,GAAIlmE,EACA,OAAOA,EAEX,IAAI3T,EACJ,GAAIq8E,EAAM,QAAQ,YAAc,GAAO,CACnC,MAAM72B,EAAS,KAAK,MAAM,OACpBspC,EAAYtpC,EAAO,0BAA0B,KAAK,MAAO7pB,CAAU,EACnEikD,EAASp6B,EAAO,gBAAgB,KAAK,WAAY,EAAEspC,CAAS,EAClE9uF,EAAUwlD,EAAO,eAAeo6B,EAAQ,KAAK,WAAWj5E,EAAOmvB,EAAQ6F,CAAU,CAAC,CAC9F,CACQ,MAAMwvD,EAAa,IAAIL,GAAWzO,EAAOr8E,GAAWA,EAAQ,UAAU,EACtE,OAAIA,GAAWA,EAAQ,aACnB4pD,EAAMiwB,CAAQ,EAAI,OAAO,OAAOsR,CAAU,GAEvCA,CACf,CACC,iBAAiBnrF,EAAS,CACnB,GAAKA,EAAQ,QAGb,OAAO,KAAK,iBAAmB,KAAK,eAAiB,OAAO,OAAO,GAAIA,CAAO,EACtF,CACC,eAAe49E,EAAMmS,EAAe,CAC7B,MAAO,CAACA,GAAiBjC,GAAmBlQ,CAAI,GAAK,KAAK,MAAM,mBACxE,CACC,kBAAkB11E,EAAO01E,EAAM,CACxB,MAAMoS,EAAY,KAAK,0BAA0B9nF,EAAO01E,CAAI,EACtDqS,EAA0B,KAAK,eAC/BF,EAAgB,KAAK,iBAAiBC,CAAS,EAC/CE,EAAiB,KAAK,eAAetS,EAAMmS,CAAa,GAAKA,IAAkBE,EACrF,YAAK,oBAAoBF,EAAenS,EAAMoS,CAAS,EAChD,CACH,cAAAD,EACA,eAAAG,CACH,CACT,CACC,cAAcpiF,EAASnH,EAAO2kF,EAAY1N,EAAM,CACrCkQ,GAAmBlQ,CAAI,EACvB,OAAO,OAAO9vE,EAASw9E,CAAU,EAEjC,KAAK,mBAAmB3kF,EAAOi3E,CAAI,EAAE,OAAO9vE,EAASw9E,CAAU,CAE3E,CACC,oBAAoByE,EAAenS,EAAMqN,EAAY,CAC1C8E,GAAiB,CAACjC,GAAmBlQ,CAAI,GACzC,KAAK,mBAAmB,OAAWA,CAAI,EAAE,OAAOmS,EAAe9E,CAAU,CAErF,CACC,UAAUn9E,EAASnH,EAAOi3E,EAAM9nD,EAAQ,CACjChoB,EAAQ,OAASgoB,EACjB,MAAM91B,EAAU,KAAK,SAAS2G,EAAOmvB,CAAM,EAC3C,KAAK,mBAAmBnvB,EAAOi3E,EAAM9nD,CAAM,EAAE,OAAOhoB,EAAS,CACzD,QAAS,CAACgoB,GAAU,KAAK,iBAAiB91B,CAAO,GAAKA,CAClE,CAAS,CACT,CACI,iBAAiB8N,EAAS07E,EAAc7iF,EAAO,CAC3C,KAAK,UAAUmH,EAASnH,EAAO,SAAU,EAAK,CACtD,CACI,cAAcmH,EAAS07E,EAAc7iF,EAAO,CACxC,KAAK,UAAUmH,EAASnH,EAAO,SAAU,EAAI,CACrD,CACC,0BAA2B,CACpB,MAAMmH,EAAU,KAAK,YAAY,QAC7BA,GACA,KAAK,UAAUA,EAAS,OAAW,SAAU,EAAK,CAE9D,CACC,uBAAwB,CACjB,MAAMA,EAAU,KAAK,YAAY,QAC7BA,GACA,KAAK,UAAUA,EAAS,OAAW,SAAU,EAAI,CAE7D,CACC,gBAAgB6gF,EAAkB,CAC3B,MAAMh9E,EAAO,KAAK,MACZg+E,EAAW,KAAK,YAAY,KAClC,SAAW,CAACv8B,EAAQqB,EAAMC,CAAI,IAAK,KAAK,UACpC,KAAKtB,CAAM,EAAEqB,EAAMC,CAAI,EAE3B,KAAK,UAAY,CAAE,EACnB,MAAMy7B,EAAUR,EAAS,OACnBS,EAAUz+E,EAAK,OACfnU,EAAQ,KAAK,IAAI4yF,EAASD,CAAO,EACnC3yF,GACA,KAAK,MAAM,EAAGA,CAAK,EAEnB4yF,EAAUD,EACV,KAAK,gBAAgBA,EAASC,EAAUD,EAASxB,CAAgB,EAC1DyB,EAAUD,GACjB,KAAK,gBAAgBC,EAASD,EAAUC,CAAO,CAE3D,CACC,gBAAgBloF,EAAO1K,EAAOmxF,EAAmB,GAAM,CAChD,MAAMz5E,EAAO,KAAK,YACZvD,EAAOuD,EAAK,KACZ/M,EAAMD,EAAQ1K,EACpB,IAAIiG,EACJ,MAAM4sF,EAAQ5jC,GAAM,CAEhB,IADAA,EAAI,QAAUjvD,EACViG,EAAIgpD,EAAI,OAAS,EAAGhpD,GAAK0E,EAAK1E,IAC9BgpD,EAAIhpD,CAAC,EAAIgpD,EAAIhpD,EAAIjG,CAAK,CAE7B,EAED,IADA6yF,EAAK1+E,CAAI,EACLlO,EAAIyE,EAAOzE,EAAI0E,EAAK,EAAE1E,EACtBkO,EAAKlO,CAAC,EAAI,IAAI,KAAK,gBAEnB,KAAK,UACL4sF,EAAKn7E,EAAK,OAAO,EAErB,KAAK,MAAMhN,EAAO1K,CAAK,EACnBmxF,GACA,KAAK,eAAeh9E,EAAMzJ,EAAO1K,EAAO,OAAO,CAE3D,CACI,eAAesQ,EAAS5F,EAAO1K,EAAOogF,EAAM,CAAA,CAC/C,gBAAgB11E,EAAO1K,EAAO,CACvB,MAAM0X,EAAO,KAAK,YAClB,GAAI,KAAK,SAAU,CACf,MAAMo7E,EAAUp7E,EAAK,QAAQ,OAAOhN,EAAO1K,CAAK,EAC5C0X,EAAK,UACL24E,GAAY34E,EAAMo7E,CAAO,CAEzC,CACQp7E,EAAK,KAAK,OAAOhN,EAAO1K,CAAK,CACrC,CACC,MAAMgc,EAAM,CACL,GAAI,KAAK,SACL,KAAK,UAAU,KAAKA,CAAI,MACrB,CACH,KAAM,CAAC45C,EAAQqB,EAAMC,CAAI,EAAIl7C,EAC7B,KAAK45C,CAAM,EAAEqB,EAAMC,CAAI,CACnC,CACQ,KAAK,MAAM,aAAa,KAAK,CACzB,KAAK,MACL,GAAGl7C,CACf,CAAS,CACT,CACI,aAAc,CACV,MAAMhc,EAAQ,UAAU,OACxB,KAAK,MAAM,CACP,kBACA,KAAK,WAAU,EAAG,KAAK,OAASA,EAChCA,CACZ,CAAS,CACT,CACI,YAAa,CACT,KAAK,MAAM,CACP,kBACA,KAAK,YAAY,KAAK,OAAS,EAC/B,CACZ,CAAS,CACT,CACI,cAAe,CACX,KAAK,MAAM,CACP,kBACA,EACA,CACZ,CAAS,CACT,CACI,cAAc0K,EAAO1K,EAAO,CACpBA,GACA,KAAK,MAAM,CACP,kBACA0K,EACA1K,CAChB,CAAa,EAEL,MAAM+yF,EAAW,UAAU,OAAS,EAChCA,GACA,KAAK,MAAM,CACP,kBACAroF,EACAqoF,CAChB,CAAa,CAEb,CACI,gBAAiB,CACb,KAAK,MAAM,CACP,kBACA,EACA,UAAU,MACtB,CAAS,CACT,CACA,CAEA,SAASC,GAAkB/E,EAAOt2E,EAAM,CACpC,GAAI,CAACs2E,EAAM,OAAO,KAAM,CACpB,MAAMgF,EAAehF,EAAM,wBAAwBt2E,CAAI,EACvD,IAAIiiE,EAAS,CAAE,EACf,QAAQ,EAAI,EAAG5E,EAAOie,EAAa,OAAQ,EAAIje,EAAM,IACjD4E,EAASA,EAAO,OAAOqZ,EAAa,CAAC,EAAE,WAAW,mBAAmBhF,CAAK,CAAC,EAE/EA,EAAM,OAAO,KAAO/T,GAAaN,EAAO,KAAK,CAACr5E,EAAGC,IAAID,EAAIC,CAAC,CAAC,CACnE,CACI,OAAOytF,EAAM,OAAO,IACxB,CACC,SAASiF,GAAqBx7E,EAAM,CACjC,MAAMu2E,EAAQv2E,EAAK,OACbkiE,EAASoZ,GAAkB/E,EAAOv2E,EAAK,IAAI,EACjD,IAAIgI,EAAMuuE,EAAM,QACZ,EAAGjZ,EAAMme,EAAM1sF,EACnB,MAAM2sF,EAAmB,IAAI,CACrBD,IAAS,OAASA,IAAS,SAG3BpnF,GAAQtF,CAAI,IACZiZ,EAAM,KAAK,IAAIA,EAAK,KAAK,IAAIyzE,EAAO1sF,CAAI,GAAKiZ,CAAG,GAEpDjZ,EAAO0sF,EACV,EACD,IAAI,EAAI,EAAGne,EAAO4E,EAAO,OAAQ,EAAI5E,EAAM,EAAE,EACzCme,EAAOlF,EAAM,iBAAiBrU,EAAO,CAAC,CAAC,EACvCwZ,EAAkB,EAGtB,IADA3sF,EAAO,OACH,EAAI,EAAGuuE,EAAOiZ,EAAM,MAAM,OAAQ,EAAIjZ,EAAM,EAAE,EAC9Cme,EAAOlF,EAAM,gBAAgB,CAAC,EAC9BmF,EAAkB,EAEtB,OAAO1zE,CACX,CACC,SAAS2zE,GAAyBlqF,EAAOmqF,EAAO9wF,EAAS+wF,EAAY,CAClE,MAAMC,EAAYhxF,EAAQ,aAC1B,IAAIkqC,EAAM+mC,EACV,OAAIY,GAAcmf,CAAS,GACvB9mD,EAAO4mD,EAAM,IAAM9wF,EAAQ,mBAC3BixE,EAAQjxE,EAAQ,gBAEhBkqC,EAAO8mD,EAAYD,EACnB9f,EAAQ,GAEL,CACH,MAAO/mC,EAAO6mD,EACd,MAAA9f,EACA,MAAO6f,EAAM,OAAOnqF,CAAK,EAAIujC,EAAO,CACvC,CACL,CACC,SAAS+mD,GAA0BtqF,EAAOmqF,EAAO9wF,EAAS+wF,EAAY,CACnE,MAAMG,EAASJ,EAAM,OACfH,EAAOO,EAAOvqF,CAAK,EACzB,IAAI1C,EAAO0C,EAAQ,EAAIuqF,EAAOvqF,EAAQ,CAAC,EAAI,KACvCiS,EAAOjS,EAAQuqF,EAAO,OAAS,EAAIA,EAAOvqF,EAAQ,CAAC,EAAI,KAC3D,MAAMwqF,EAAUnxF,EAAQ,mBACpBiE,IAAS,OACTA,EAAO0sF,GAAQ/3E,IAAS,KAAOk4E,EAAM,IAAMA,EAAM,MAAQl4E,EAAO+3E,IAEhE/3E,IAAS,OACTA,EAAO+3E,EAAOA,EAAO1sF,GAEzB,MAAMiE,EAAQyoF,GAAQA,EAAO,KAAK,IAAI1sF,EAAM2U,CAAI,GAAK,EAAIu4E,EAEzD,MAAO,CACH,MAFS,KAAK,IAAIv4E,EAAO3U,CAAI,EAAI,EAAIktF,EAEvBJ,EACd,MAAO/wF,EAAQ,cACf,MAAAkI,CACH,CACL,CACA,SAASkpF,GAAcC,EAAOhpF,EAAM6kF,EAAQzpF,EAAG,CAC3C,MAAM6tF,EAAapE,EAAO,MAAMmE,EAAM,CAAC,EAAG5tF,CAAC,EACrC8tF,EAAWrE,EAAO,MAAMmE,EAAM,CAAC,EAAG5tF,CAAC,EACnCyZ,EAAM,KAAK,IAAIo0E,EAAYC,CAAQ,EACnCt0E,EAAM,KAAK,IAAIq0E,EAAYC,CAAQ,EACzC,IAAIC,EAAWt0E,EACXu0E,EAASx0E,EACT,KAAK,IAAIC,CAAG,EAAI,KAAK,IAAID,CAAG,IAC5Bu0E,EAAWv0E,EACXw0E,EAASv0E,GAEb7U,EAAK6kF,EAAO,IAAI,EAAIuE,EACpBppF,EAAK,QAAU,CACX,SAAAmpF,EACA,OAAAC,EACA,MAAOH,EACP,IAAKC,EACL,IAAAr0E,EACA,IAAAD,CACH,CACL,CACA,SAASy0E,GAAWL,EAAOhpF,EAAM6kF,EAAQzpF,EAAG,CACxC,OAAIL,GAAQiuF,CAAK,EACbD,GAAcC,EAAOhpF,EAAM6kF,EAAQzpF,CAAC,EAEpC4E,EAAK6kF,EAAO,IAAI,EAAIA,EAAO,MAAMmE,EAAO5tF,CAAC,EAEtC4E,CACX,CACA,SAASspF,GAAsBz8E,EAAMvD,EAAMzJ,EAAO1K,EAAO,CACrD,MAAM86E,EAASpjE,EAAK,OACdg4E,EAASh4E,EAAK,OACdg6E,EAAS5W,EAAO,UAAW,EAC3B6W,EAAc7W,IAAW4U,EACzB15B,EAAS,CAAE,EACjB,IAAI/vD,EAAG+uE,EAAMnqE,EAAMgpF,EACnB,IAAI5tF,EAAIyE,EAAOsqE,EAAOtqE,EAAQ1K,EAAOiG,EAAI+uE,EAAM,EAAE/uE,EAC7C4tF,EAAQ1/E,EAAKlO,CAAC,EACd4E,EAAO,CAAE,EACTA,EAAKiwE,EAAO,IAAI,EAAI6W,GAAe7W,EAAO,MAAM4W,EAAOzrF,CAAC,EAAGA,CAAC,EAC5D+vD,EAAO,KAAKk+B,GAAWL,EAAOhpF,EAAM6kF,EAAQzpF,CAAC,CAAC,EAElD,OAAO+vD,CACX,CACA,SAASo+B,GAAWC,EAAQ,CACxB,OAAOA,GAAUA,EAAO,WAAa,QAAaA,EAAO,SAAW,MACxE,CACA,SAASC,GAAQ5nD,EAAMgjD,EAAQ6E,EAAY,CACvC,OAAI7nD,IAAS,EACFkqC,GAAKlqC,CAAI,GAEZgjD,EAAO,aAAc,EAAG,EAAI,KAAOA,EAAO,KAAO6E,EAAa,EAAI,GAC9E,CACA,SAASC,GAAY1G,EAAY,CAC7B,IAAIlZ,EAASlqE,EAAOC,EAAKjC,EAAKwU,EAC9B,OAAI4wE,EAAW,YACXlZ,EAAUkZ,EAAW,KAAOA,EAAW,EACvCpjF,EAAQ,OACRC,EAAM,UAENiqE,EAAUkZ,EAAW,KAAOA,EAAW,EACvCpjF,EAAQ,SACRC,EAAM,OAENiqE,GACAlsE,EAAM,MACNwU,EAAS,UAETxU,EAAM,QACNwU,EAAS,OAEN,CACH,MAAAxS,EACA,IAAAC,EACA,QAAAiqE,EACA,IAAAlsE,EACA,OAAAwU,CACH,CACL,CACA,SAASu3E,GAAiB3G,EAAYtrF,EAASwhD,EAAO76C,EAAO,CACzD,IAAIurF,EAAOlyF,EAAQ,cACnB,MAAMuE,EAAM,CAAE,EACd,GAAI,CAAC2tF,EAAM,CACP5G,EAAW,cAAgB/mF,EAC3B,MACR,CACI,GAAI2tF,IAAS,GAAM,CACf5G,EAAW,cAAgB,CACvB,IAAK,GACL,MAAO,GACP,OAAQ,GACR,KAAM,EACT,EACD,MACR,CACI,KAAM,CAAE,MAAApjF,EAAQ,IAAAC,EAAM,QAAAiqE,EAAU,IAAAlsE,EAAM,OAAAwU,CAAS,EAAGs3E,GAAY1G,CAAU,EACpE4G,IAAS,UAAY1wC,IACrB8pC,EAAW,mBAAqB,IAC3B9pC,EAAM,MAAQ,KAAO76C,EACtBurF,EAAOhsF,GACCs7C,EAAM,SAAW,KAAO76C,EAChCurF,EAAOx3E,GAEPnW,EAAI4tF,GAAUz3E,EAAQxS,EAAOC,EAAKiqE,CAAO,CAAC,EAAI,GAC9C8f,EAAOhsF,IAGf3B,EAAI4tF,GAAUD,EAAMhqF,EAAOC,EAAKiqE,CAAO,CAAC,EAAI,GAC5CkZ,EAAW,cAAgB/mF,CAC/B,CACA,SAAS4tF,GAAUD,EAAMn0F,EAAGC,EAAGo0E,EAAS,CACpC,OAAIA,GACA8f,EAAOE,GAAKF,EAAMn0F,EAAGC,CAAC,EACtBk0F,EAAOG,GAASH,EAAMl0F,EAAGD,CAAC,GAE1Bm0F,EAAOG,GAASH,EAAMn0F,EAAGC,CAAC,EAEvBk0F,CACX,CACA,SAASE,GAAKE,EAAM5f,EAAI6f,EAAI,CACxB,OAAOD,IAAS5f,EAAK6f,EAAKD,IAASC,EAAK7f,EAAK4f,CACjD,CACA,SAASD,GAASrxF,EAAGkH,EAAOC,EAAK,CAC7B,OAAOnH,IAAM,QAAUkH,EAAQlH,IAAM,MAAQmH,EAAMnH,CACvD,CACA,SAASwxF,GAAiBlH,EAAY,CAAE,cAAAmH,CAAa,EAAKxhB,EAAO,CAC7Dqa,EAAW,cAAgBmH,IAAkB,OAASxhB,IAAU,EAAI,IAAO,EAAIwhB,CACnF,CACA,MAAMC,WAAsBxE,EAAkB,CAC1C,OAAO,GAAK,MACf,OAAO,SAAW,CACX,mBAAoB,GACpB,gBAAiB,MACjB,mBAAoB,GACpB,cAAe,GACf,QAAS,GACT,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,IACA,IACA,OACA,QACA,QACpB,CACA,CACA,CACK,EACJ,OAAO,UAAY,CACZ,OAAQ,CACJ,QAAS,CACL,KAAM,WACN,OAAQ,GACR,KAAM,CACF,OAAQ,EAC5B,CACa,EACD,QAAS,CACL,KAAM,SACN,YAAa,EAC7B,CACA,CACK,EACJ,mBAAmBh5E,EAAMvD,EAAMzJ,EAAO1K,EAAO,CACtC,OAAOm0F,GAAsBz8E,EAAMvD,EAAMzJ,EAAO1K,CAAK,CAC7D,CACC,eAAe0X,EAAMvD,EAAMzJ,EAAO1K,EAAO,CAClC,OAAOm0F,GAAsBz8E,EAAMvD,EAAMzJ,EAAO1K,CAAK,CAC7D,CACC,gBAAgB0X,EAAMvD,EAAMzJ,EAAO1K,EAAO,CACnC,KAAM,CAAE,OAAA86E,EAAS,OAAA4U,CAAM,EAAMh4E,EACvB,CAAE,SAAAk6E,EAAU,IAAM,SAAAC,EAAU,GAAG,EAAM,KAAK,SAC1CsD,EAAWra,EAAO,OAAS,IAAM8W,EAAWC,EAC5CuD,EAAW1F,EAAO,OAAS,IAAMkC,EAAWC,EAC5C77B,EAAS,CAAE,EACjB,IAAI/vD,EAAG+uE,EAAMnqE,EAAMyP,EACnB,IAAIrU,EAAIyE,EAAOsqE,EAAOtqE,EAAQ1K,EAAOiG,EAAI+uE,EAAM,EAAE/uE,EAC7CqU,EAAMnG,EAAKlO,CAAC,EACZ4E,EAAO,CAAE,EACTA,EAAKiwE,EAAO,IAAI,EAAIA,EAAO,MAAM/E,GAAiBz7D,EAAK66E,CAAQ,EAAGlvF,CAAC,EACnE+vD,EAAO,KAAKk+B,GAAWne,GAAiBz7D,EAAK86E,CAAQ,EAAGvqF,EAAM6kF,EAAQzpF,CAAC,CAAC,EAE5E,OAAO+vD,CACf,CACC,sBAAsB4Y,EAAOqf,EAAOj4B,EAAQhS,EAAO,CAC5C,MAAM,sBAAsB4qB,EAAOqf,EAAOj4B,EAAQhS,CAAK,EACvD,MAAMqwC,EAASr+B,EAAO,QAClBq+B,GAAUpG,IAAU,KAAK,YAAY,SACrCrf,EAAM,IAAM,KAAK,IAAIA,EAAM,IAAKylB,EAAO,GAAG,EAC1CzlB,EAAM,IAAM,KAAK,IAAIA,EAAM,IAAKylB,EAAO,GAAG,EAEtD,CACC,gBAAiB,CACV,MAAO,EACf,CACC,iBAAiBlrF,EAAO,CACjB,MAAMuO,EAAO,KAAK,YACZ,CAAE,OAAAojE,EAAS,OAAA4U,CAAM,EAAMh4E,EACvBs+C,EAAS,KAAK,UAAU7sD,CAAK,EAC7BkrF,EAASr+B,EAAO,QAChBzzD,EAAQ6xF,GAAWC,CAAM,EAAI,IAAMA,EAAO,MAAQ,KAAOA,EAAO,IAAM,IAAM,GAAK3E,EAAO,iBAAiB15B,EAAO05B,EAAO,IAAI,CAAC,EAClI,MAAO,CACH,MAAO,GAAK5U,EAAO,iBAAiB9kB,EAAO8kB,EAAO,IAAI,CAAC,EACvD,MAAAv4E,CACH,CACT,CACI,YAAa,CACT,KAAK,oBAAsB,GAC3B,MAAM,WAAY,EAClB,MAAMmV,EAAO,KAAK,YAClBA,EAAK,MAAQ,KAAK,WAAY,EAAC,KACvC,CACI,OAAO0oE,EAAM,CACT,MAAM1oE,EAAO,KAAK,YAClB,KAAK,eAAeA,EAAK,KAAM,EAAGA,EAAK,KAAK,OAAQ0oE,CAAI,CAChE,CACI,eAAeiV,EAAM3qF,EAAO1K,EAAOogF,EAAM,CACrC,MAAM92E,EAAQ82E,IAAS,QACjB,CAAE,MAAAj3E,EAAQ,YAAa,CAAE,OAAAumF,CAAM,CAAM,EAAG,KACxCzvC,EAAOyvC,EAAO,aAAc,EAC5B4F,EAAa5F,EAAO,aAAc,EAClC4D,EAAQ,KAAK,UAAW,EACxB,CAAE,cAAAf,EAAgB,eAAAG,CAAiB,EAAG,KAAK,kBAAkBhoF,EAAO01E,CAAI,EAC9E,QAAQn6E,EAAIyE,EAAOzE,EAAIyE,EAAQ1K,EAAOiG,IAAI,CACtC,MAAM+vD,EAAS,KAAK,UAAU/vD,CAAC,EACzBsvF,EAAUjsF,GAAS+qE,GAAcre,EAAO05B,EAAO,IAAI,CAAC,EAAI,CAC1D,KAAAzvC,EACA,KAAMA,CACtB,EAAgB,KAAK,yBAAyBh6C,CAAC,EAC7BuvF,EAAU,KAAK,yBAAyBvvF,EAAGqtF,CAAK,EAChDtvC,GAASgS,EAAO,SAAW,CAAE,GAAE05B,EAAO,IAAI,EAC1C5B,EAAa,CACf,WAAAwH,EACA,KAAMC,EAAQ,KACd,mBAAoB,CAACvxC,GAASowC,GAAWp+B,EAAO,OAAO,GAAK7sD,IAAU66C,EAAM,MAAQ76C,IAAU66C,EAAM,QACpG,EAAGsxC,EAAaC,EAAQ,KAAOC,EAAQ,OACvC,EAAGF,EAAaE,EAAQ,OAASD,EAAQ,KACzC,OAAQD,EAAaE,EAAQ,KAAO,KAAK,IAAID,EAAQ,IAAI,EACzD,MAAOD,EAAa,KAAK,IAAIC,EAAQ,IAAI,EAAIC,EAAQ,IACxD,EACG9C,IACA5E,EAAW,QAAUyE,GAAiB,KAAK,0BAA0BtsF,EAAGovF,EAAKpvF,CAAC,EAAE,OAAS,SAAWm6E,CAAI,GAE5G,MAAM59E,EAAUsrF,EAAW,SAAWuH,EAAKpvF,CAAC,EAAE,QAC9CwuF,GAAiB3G,EAAYtrF,EAASwhD,EAAO76C,CAAK,EAClD6rF,GAAiBlH,EAAYtrF,EAAS8wF,EAAM,KAAK,EACjD,KAAK,cAAc+B,EAAKpvF,CAAC,EAAGA,EAAG6nF,EAAY1N,CAAI,CAC3D,CACA,CACC,WAAW5G,EAAMic,EAAW,CACrB,KAAM,CAAE,OAAA3a,GAAY,KAAK,YACnByT,EAAWzT,EAAO,wBAAwB,KAAK,KAAK,EAAE,OAAQpjE,GAAOA,EAAK,WAAW,QAAQ,OAAO,EACpGq3E,EAAUjU,EAAO,QAAQ,QACzBuU,EAAS,CAAE,EACXqG,EAAYh+E,GAAO,CACrB,MAAMs+C,EAASt+C,EAAK,WAAW,UAAU+9E,CAAS,EAC5C/oC,EAAMsJ,GAAUA,EAAOt+C,EAAK,OAAO,IAAI,EAC7C,GAAI28D,GAAc3nB,CAAG,GAAK,MAAMA,CAAG,EAC/B,MAAO,EAEd,EACD,UAAWh1C,KAAQ62E,EACf,GAAI,EAAAkH,IAAc,QAAaC,EAASh+E,CAAI,MAGxCq3E,IAAY,IAASM,EAAO,QAAQ33E,EAAK,KAAK,IAAM,IAAMq3E,IAAY,QAAar3E,EAAK,QAAU,SAClG23E,EAAO,KAAK33E,EAAK,KAAK,EAEtBA,EAAK,QAAU8hE,GACf,MAGR,OAAK6V,EAAO,QACRA,EAAO,KAAK,MAAS,EAElBA,CACf,CACC,eAAelmF,EAAO,CACf,OAAO,KAAK,WAAW,OAAWA,CAAK,EAAE,MACjD,CACC,eAAe6iF,EAAcj/E,EAAM0oF,EAAW,CACvC,MAAMpG,EAAS,KAAK,WAAWrD,EAAcyJ,CAAS,EAChDtsF,EAAQ4D,IAAS,OAAYsiF,EAAO,QAAQtiF,CAAI,EAAI,GAC1D,OAAO5D,IAAU,GAAKkmF,EAAO,OAAS,EAAIlmF,CAClD,CACC,WAAY,CACL,MAAM84D,EAAO,KAAK,QACZvqD,EAAO,KAAK,YACZojE,EAASpjE,EAAK,OACdg8E,EAAS,CAAE,EACjB,IAAIztF,EAAG+uE,EACP,IAAI/uE,EAAI,EAAG+uE,EAAOt9D,EAAK,KAAK,OAAQzR,EAAI+uE,EAAM,EAAE/uE,EAC5CytF,EAAO,KAAK5Y,EAAO,iBAAiB,KAAK,UAAU70E,CAAC,EAAE60E,EAAO,IAAI,EAAG70E,CAAC,CAAC,EAE1E,MAAM0vF,EAAe1zB,EAAK,aAE1B,MAAO,CACH,IAFQ0zB,GAAgBzC,GAAqBx7E,CAAI,EAGjD,OAAAg8E,EACA,MAAO5Y,EAAO,YACd,IAAKA,EAAO,UACZ,WAAY,KAAK,eAAgB,EACjC,MAAOA,EACP,QAAS7Y,EAAK,QACd,MAAO0zB,EAAe,EAAI1zB,EAAK,mBAAqBA,EAAK,aAC5D,CACT,CACC,yBAAyB94D,EAAO,CACzB,KAAM,CAAE,YAAa,CAAE,OAAAumF,EAAS,SAAA6B,EAAW,MAAOvF,GAAkB,QAAS,CAAE,KAAM4J,EAAY,aAAAC,CAAY,CAAM,EAAG,KAChHtB,EAAaqB,GAAa,EAC1B5/B,EAAS,KAAK,UAAU7sD,CAAK,EAC7BkrF,EAASr+B,EAAO,QAChB8/B,EAAW1B,GAAWC,CAAM,EAClC,IAAI9xF,EAAQyzD,EAAO05B,EAAO,IAAI,EAC1BhlF,EAAQ,EACRgB,EAAS6lF,EAAW,KAAK,WAAW7B,EAAQ15B,EAAQu7B,CAAQ,EAAIhvF,EAChE62D,EAAM1sB,EACNhhC,IAAWnJ,IACXmI,EAAQgB,EAASnJ,EACjBmJ,EAASnJ,GAETuzF,IACAvzF,EAAQ8xF,EAAO,SACf3oF,EAAS2oF,EAAO,OAASA,EAAO,SAC5B9xF,IAAU,GAAKq0E,GAAKr0E,CAAK,IAAMq0E,GAAKyd,EAAO,MAAM,IACjD3pF,EAAQ,GAEZA,GAASnI,GAEb,MAAMuxF,EAAa,CAACzf,GAAcuhB,CAAS,GAAK,CAACE,EAAWF,EAAYlrF,EACxE,IAAIu1C,EAAOyvC,EAAO,iBAAiBoE,CAAU,EAO7C,GANI,KAAK,MAAM,kBAAkB3qF,CAAK,EAClCiwD,EAAOs2B,EAAO,iBAAiBhlF,EAAQgB,CAAM,EAE7C0tD,EAAOnZ,EAEXvT,EAAO0sB,EAAOnZ,EACV,KAAK,IAAIvT,CAAI,EAAImpD,EAAc,CAC/BnpD,EAAO4nD,GAAQ5nD,EAAMgjD,EAAQ6E,CAAU,EAAIsB,EACvCtzF,IAAUgyF,IACVt0C,GAAQvT,EAAO,GAEnB,MAAMqpD,EAAarG,EAAO,mBAAmB,CAAC,EACxCsG,EAAWtG,EAAO,mBAAmB,CAAC,EACtChwE,EAAM,KAAK,IAAIq2E,EAAYC,CAAQ,EACnCv2E,EAAM,KAAK,IAAIs2E,EAAYC,CAAQ,EACzC/1C,EAAO,KAAK,IAAI,KAAK,IAAIA,EAAMxgC,CAAG,EAAGC,CAAG,EACxC05C,EAAOnZ,EAAOvT,EACV6kD,GAAY,CAACuE,IACb9/B,EAAO,QAAQ05B,EAAO,IAAI,EAAE,cAAc1D,CAAY,EAAI0D,EAAO,iBAAiBt2B,CAAI,EAAIs2B,EAAO,iBAAiBzvC,CAAI,EAEtI,CACQ,GAAIA,IAASyvC,EAAO,iBAAiB6E,CAAU,EAAG,CAC9C,MAAM0B,EAAWrf,GAAKlqC,CAAI,EAAIgjD,EAAO,qBAAqB6E,CAAU,EAAI,EACxEt0C,GAAQg2C,EACRvpD,GAAQupD,CACpB,CACQ,MAAO,CACH,KAAAvpD,EACA,KAAAuT,EACA,KAAAmZ,EACA,OAAQA,EAAO1sB,EAAO,CACzB,CACT,CACC,yBAAyBvjC,EAAOmqF,EAAO,CAChC,MAAMrF,EAAQqF,EAAM,MACd9wF,EAAU,KAAK,QACfkzF,EAAWlzF,EAAQ,SACnB0zF,EAAkB1hB,GAAehyE,EAAQ,gBAAiB,GAAQ,EACxE,IAAI6gB,EAAQqpB,EACZ,GAAI4mD,EAAM,QAAS,CACf,MAAMC,EAAamC,EAAW,KAAK,eAAevsF,CAAK,EAAImqF,EAAM,WAC3D1kB,EAAQpsE,EAAQ,eAAiB,OAASixF,GAA0BtqF,EAAOmqF,EAAO9wF,EAAS+wF,CAAU,EAAIF,GAAyBlqF,EAAOmqF,EAAO9wF,EAAS+wF,CAAU,EACnK4C,EAAa,KAAK,eAAe,KAAK,MAAO,KAAK,YAAY,MAAOT,EAAWvsF,EAAQ,MAAS,EACvGka,EAASurD,EAAM,MAAQA,EAAM,MAAQunB,EAAavnB,EAAM,MAAQ,EAChEliC,EAAO,KAAK,IAAIwpD,EAAiBtnB,EAAM,MAAQA,EAAM,KAAK,CACtE,MACYvrD,EAAS4qE,EAAM,iBAAiB,KAAK,UAAU9kF,CAAK,EAAE8kF,EAAM,IAAI,EAAG9kF,CAAK,EACxEujC,EAAO,KAAK,IAAIwpD,EAAiB5C,EAAM,IAAMA,EAAM,KAAK,EAE5D,MAAO,CACH,KAAMjwE,EAASqpB,EAAO,EACtB,KAAMrpB,EAASqpB,EAAO,EACtB,OAAArpB,EACA,KAAAqpB,CACH,CACT,CACI,MAAO,CACH,MAAMh1B,EAAO,KAAK,YACZg4E,EAASh4E,EAAK,OACd0V,EAAQ1V,EAAK,KACbs9D,EAAO5nD,EAAM,OACnB,IAAInnB,EAAI,EACR,KAAMA,EAAI+uE,EAAM,EAAE/uE,EACV,KAAK,UAAUA,CAAC,EAAEypF,EAAO,IAAI,IAAM,MACnCtiE,EAAMnnB,CAAC,EAAE,KAAK,KAAK,IAAI,CAGvC,CACA,CAEA,MAAMmwF,WAAyB1F,EAAkB,CAC7C,OAAO,GAAK,SACf,OAAO,SAAW,CACX,mBAAoB,GACpB,gBAAiB,QACjB,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,IACA,IACA,cACA,QACpB,CACA,CACA,CACK,EACJ,OAAO,UAAY,CACZ,OAAQ,CACJ,EAAG,CACC,KAAM,QACT,EACD,EAAG,CACC,KAAM,QACtB,CACA,CACK,EACD,YAAa,CACT,KAAK,oBAAsB,GAC3B,MAAM,WAAY,CAC1B,CACC,mBAAmBh5E,EAAMvD,EAAMzJ,EAAO1K,EAAO,CACtC,MAAMg2D,EAAS,MAAM,mBAAmBt+C,EAAMvD,EAAMzJ,EAAO1K,CAAK,EAChE,QAAQiG,EAAI,EAAGA,EAAI+vD,EAAO,OAAQ/vD,IAC9B+vD,EAAO/vD,CAAC,EAAE,QAAU,KAAK,0BAA0BA,EAAIyE,CAAK,EAAE,OAElE,OAAOsrD,CACf,CACC,eAAet+C,EAAMvD,EAAMzJ,EAAO1K,EAAO,CAClC,MAAMg2D,EAAS,MAAM,eAAet+C,EAAMvD,EAAMzJ,EAAO1K,CAAK,EAC5D,QAAQiG,EAAI,EAAGA,EAAI+vD,EAAO,OAAQ/vD,IAAI,CAClC,MAAM4E,EAAOsJ,EAAKzJ,EAAQzE,CAAC,EAC3B+vD,EAAO/vD,CAAC,EAAE,QAAUuuE,GAAe3pE,EAAK,CAAC,EAAG,KAAK,0BAA0B5E,EAAIyE,CAAK,EAAE,MAAM,CACxG,CACQ,OAAOsrD,CACf,CACC,gBAAgBt+C,EAAMvD,EAAMzJ,EAAO1K,EAAO,CACnC,MAAMg2D,EAAS,MAAM,gBAAgBt+C,EAAMvD,EAAMzJ,EAAO1K,CAAK,EAC7D,QAAQiG,EAAI,EAAGA,EAAI+vD,EAAO,OAAQ/vD,IAAI,CAClC,MAAM4E,EAAOsJ,EAAKzJ,EAAQzE,CAAC,EAC3B+vD,EAAO/vD,CAAC,EAAE,QAAUuuE,GAAe3pE,GAAQA,EAAK,GAAK,CAACA,EAAK,EAAG,KAAK,0BAA0B5E,EAAIyE,CAAK,EAAE,MAAM,CAC1H,CACQ,OAAOsrD,CACf,CACC,gBAAiB,CACV,MAAM7hD,EAAO,KAAK,YAAY,KAC9B,IAAIsL,EAAM,EACV,QAAQxZ,EAAIkO,EAAK,OAAS,EAAGlO,GAAK,EAAG,EAAEA,EACnCwZ,EAAM,KAAK,IAAIA,EAAKtL,EAAKlO,CAAC,EAAE,KAAK,KAAK,0BAA0BA,CAAC,CAAC,EAAI,CAAC,EAE3E,OAAOwZ,EAAM,GAAKA,CAC1B,CACC,iBAAiBtW,EAAO,CACjB,MAAMuO,EAAO,KAAK,YACZg6E,EAAS,KAAK,MAAM,KAAK,QAAU,CAAE,EACrC,CAAE,OAAAvW,EAAS,OAAAC,CAAM,EAAM1jE,EACvBs+C,EAAS,KAAK,UAAU7sD,CAAK,EAC7B0N,EAAIskE,EAAO,iBAAiBnlB,EAAO,CAAC,EACpCv/C,EAAI2kE,EAAO,iBAAiBplB,EAAO,CAAC,EACpC/zB,EAAI+zB,EAAO,QACjB,MAAO,CACH,MAAO07B,EAAOvoF,CAAK,GAAK,GACxB,MAAO,IAAM0N,EAAI,KAAOJ,GAAKwrB,EAAI,KAAOA,EAAI,IAAM,GACrD,CACT,CACI,OAAOm+C,EAAM,CACT,MAAMzF,EAAS,KAAK,YAAY,KAChC,KAAK,eAAeA,EAAQ,EAAGA,EAAO,OAAQyF,CAAI,CAC1D,CACI,eAAezF,EAAQjwE,EAAO1K,EAAOogF,EAAM,CACvC,MAAM92E,EAAQ82E,IAAS,QACjB,CAAE,OAAAtF,EAAS,OAAA4U,CAAS,EAAG,KAAK,YAC5B,CAAE,cAAA6C,EAAgB,eAAAG,CAAiB,EAAG,KAAK,kBAAkBhoF,EAAO01E,CAAI,EACxEyP,EAAQ/U,EAAO,KACfgV,EAAQJ,EAAO,KACrB,QAAQzpF,EAAIyE,EAAOzE,EAAIyE,EAAQ1K,EAAOiG,IAAI,CACtC,MAAM65E,EAAQnF,EAAO10E,CAAC,EAChB+vD,EAAS,CAAC1sD,GAAS,KAAK,UAAUrD,CAAC,EACnC6nF,EAAa,CAAE,EACf7H,EAAS6H,EAAW+B,CAAK,EAAIvmF,EAAQwxE,EAAO,mBAAmB,EAAG,EAAIA,EAAO,iBAAiB9kB,EAAO65B,CAAK,CAAC,EAC3G3J,EAAS4H,EAAWgC,CAAK,EAAIxmF,EAAQomF,EAAO,aAAY,EAAKA,EAAO,iBAAiB15B,EAAO85B,CAAK,CAAC,EACxGhC,EAAW,KAAO,MAAM7H,CAAM,GAAK,MAAMC,CAAM,EAC3CwM,IACA5E,EAAW,QAAUyE,GAAiB,KAAK,0BAA0BtsF,EAAG65E,EAAM,OAAS,SAAWM,CAAI,EAClG92E,IACAwkF,EAAW,QAAQ,OAAS,IAGpC,KAAK,cAAchO,EAAO75E,EAAG6nF,EAAY1N,CAAI,CACzD,CACA,CACC,0BAA0Bj3E,EAAOi3E,EAAM,CAChC,MAAMpqB,EAAS,KAAK,UAAU7sD,CAAK,EACnC,IAAIywE,EAAS,MAAM,0BAA0BzwE,EAAOi3E,CAAI,EACpDxG,EAAO,UACPA,EAAS,OAAO,OAAO,CAAA,EAAIA,EAAQ,CAC/B,QAAS,EACzB,CAAa,GAEL,MAAM+F,EAAS/F,EAAO,OACtB,OAAIwG,IAAS,WACTxG,EAAO,OAAS,GAEpBA,EAAO,QAAUpF,GAAexe,GAAUA,EAAO,QAAS2pB,CAAM,EACzD/F,CACf,CACA,CAEA,SAASyc,GAAkB3W,EAAU4W,EAAeC,EAAQ,CACxD,IAAIC,EAAS,EACTC,EAAS,EACTtxE,EAAU,EACVD,EAAU,EACd,GAAIoxE,EAAgBlgB,GAAK,CACrB,MAAMsgB,EAAahX,EACbiX,EAAWD,EAAaJ,EACxBM,EAAS,KAAK,IAAIF,CAAU,EAC5BG,EAAS,KAAK,IAAIH,CAAU,EAC5BI,EAAO,KAAK,IAAIH,CAAQ,EACxBI,EAAO,KAAK,IAAIJ,CAAQ,EACxBK,EAAU,CAAC7e,EAAO53E,EAAGC,IAAIi4E,GAAcN,EAAOue,EAAYC,EAAU,EAAI,EAAI,EAAI,KAAK,IAAIp2F,EAAGA,EAAIg2F,EAAQ/1F,EAAGA,EAAI+1F,CAAM,EACrHU,EAAU,CAAC9e,EAAO53E,EAAGC,IAAIi4E,GAAcN,EAAOue,EAAYC,EAAU,EAAI,EAAI,GAAK,KAAK,IAAIp2F,EAAGA,EAAIg2F,EAAQ/1F,EAAGA,EAAI+1F,CAAM,EACtHW,EAAOF,EAAQ,EAAGJ,EAAQE,CAAI,EAC9BK,EAAOH,EAAQxgB,GAASqgB,EAAQE,CAAI,EACpCK,EAAOH,EAAQ9gB,GAAIygB,EAAQE,CAAI,EAC/BO,EAAOJ,EAAQ9gB,GAAKK,GAASqgB,EAAQE,CAAI,EAC/CP,GAAUU,EAAOE,GAAQ,EACzBX,GAAUU,EAAOE,GAAQ,EACzBlyE,EAAU,EAAE+xE,EAAOE,GAAQ,EAC3BlyE,EAAU,EAAEiyE,EAAOE,GAAQ,CACnC,CACI,MAAO,CACH,OAAAb,EACA,OAAAC,EACA,QAAAtxE,EACA,QAAAD,CACH,CACL,CACA,MAAMoyE,WAA2B5G,EAAkB,CAC/C,OAAO,GAAK,WACf,OAAO,SAAW,CACX,mBAAoB,GACpB,gBAAiB,MACjB,UAAW,CACP,cAAe,GACf,aAAc,EACjB,EACD,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,gBACA,WACA,cACA,cACA,aACA,IACA,IACA,SACA,cACA,SACpB,CACA,CACS,EACD,OAAQ,MACR,SAAU,EACV,cAAe,IACf,OAAQ,OACR,QAAS,EACT,UAAW,GACd,EACD,OAAO,YAAc,CACjB,YAAc3jF,GAAOA,IAAS,UAC9B,WAAaA,GAAOA,IAAS,SAChC,EACJ,OAAO,UAAY,CACZ,YAAa,EACb,QAAS,CACL,OAAQ,CACJ,OAAQ,CACJ,eAAgB8xE,EAAO,CACnB,MAAM1qE,EAAO0qE,EAAM,KACnB,GAAI1qE,EAAK,OAAO,QAAUA,EAAK,SAAS,OAAQ,CAC5C,KAAM,CAAE,OAAQ,CAAE,WAAAojF,EAAa,MAAAzjB,CAAK,GAAS+K,EAAM,OAAO,QAC1D,OAAO1qE,EAAK,OAAO,IAAI,CAAC89B,EAAOhsC,IAAI,CAE/B,MAAMgM,EADO4sE,EAAM,eAAe,CAAC,EAChB,WAAW,SAAS54E,CAAC,EACxC,MAAO,CACH,KAAMgsC,EACN,UAAWhgC,EAAM,gBACjB,YAAaA,EAAM,YACnB,UAAW6hE,EACX,UAAW7hE,EAAM,YACjB,WAAYslF,EACZ,OAAQ,CAAC1Y,EAAM,kBAAkB54E,CAAC,EAClC,MAAOA,CACV,CACjC,CAA6B,CAC7B,CACwB,MAAO,CAAE,CACjC,CACiB,EACD,QAAST,EAAGgyF,EAAYC,EAAQ,CAC5BA,EAAO,MAAM,qBAAqBD,EAAW,KAAK,EAClDC,EAAO,MAAM,OAAQ,CACzC,CACA,CACA,CACK,EACD,YAAY5Y,EAAOmN,EAAa,CAC5B,MAAMnN,EAAOmN,CAAY,EACzB,KAAK,oBAAsB,GAC3B,KAAK,YAAc,OACnB,KAAK,YAAc,OACnB,KAAK,QAAU,OACf,KAAK,QAAU,MACvB,CACI,YAAa,CAAA,CAChB,MAAMthF,EAAO1K,EAAO,CACb,MAAMmU,EAAO,KAAK,WAAU,EAAG,KACzBuD,EAAO,KAAK,YAClB,GAAI,KAAK,WAAa,GAClBA,EAAK,QAAUvD,MACZ,CACH,IAAIujF,EAAUzxF,GAAI,CAACkO,EAAKlO,CAAC,EACzB,GAAI8mD,GAAS54C,EAAKzJ,CAAK,CAAC,EAAG,CACvB,KAAM,CAAE,IAAA1F,EAAK,OAAU,EAAG,KAAK,SAC/B0yF,EAAUzxF,GAAI,CAAC8vE,GAAiB5hE,EAAKlO,CAAC,EAAGjB,CAAG,CAC5D,CACY,IAAIiB,EAAG+uE,EACP,IAAI/uE,EAAIyE,EAAOsqE,EAAOtqE,EAAQ1K,EAAOiG,EAAI+uE,EAAM,EAAE/uE,EAC7CyR,EAAK,QAAQzR,CAAC,EAAIyxF,EAAOzxF,CAAC,CAE1C,CACA,CACC,cAAe,CACR,OAAOuxE,GAAU,KAAK,QAAQ,SAAW,EAAE,CACnD,CACC,mBAAoB,CACb,OAAOA,GAAU,KAAK,QAAQ,aAAa,CACnD,CACC,qBAAsB,CACf,IAAI93D,EAAM02D,GACN32D,EAAM,CAAC22D,GACX,QAAQnwE,EAAI,EAAGA,EAAI,KAAK,MAAM,KAAK,SAAS,OAAQ,EAAEA,EAClD,GAAI,KAAK,MAAM,iBAAiBA,CAAC,GAAK,KAAK,MAAM,eAAeA,CAAC,EAAE,OAAS,KAAK,MAAO,CACpF,MAAMm4D,EAAa,KAAK,MAAM,eAAen4D,CAAC,EAAE,WAC1Cy5E,EAAWthB,EAAW,aAAc,EACpCk4B,EAAgBl4B,EAAW,kBAAmB,EACpD1+C,EAAM,KAAK,IAAIA,EAAKggE,CAAQ,EAC5BjgE,EAAM,KAAK,IAAIA,EAAKigE,EAAW4W,CAAa,CAC5D,CAEQ,MAAO,CACH,SAAU52E,EACV,cAAeD,EAAMC,CACxB,CACT,CACC,OAAO0gE,EAAM,CACN,MAAMvB,EAAQ,KAAK,MACb,CAAE,UAAA8Y,CAAS,EAAM9Y,EACjBnnE,EAAO,KAAK,YACZkgF,EAAOlgF,EAAK,KACZmgF,EAAU,KAAK,oBAAsB,KAAK,aAAaD,CAAI,EAAI,KAAK,QAAQ,QAC5EE,EAAU,KAAK,KAAK,KAAK,IAAIH,EAAU,MAAOA,EAAU,MAAM,EAAIE,GAAW,EAAG,CAAC,EACjFtB,EAAS,KAAK,IAAI9hB,GAAa,KAAK,QAAQ,OAAQqjB,CAAO,EAAG,CAAC,EAC/DC,EAAc,KAAK,eAAe,KAAK,KAAK,EAC5C,CAAE,cAAAzB,EAAgB,SAAA5W,GAAc,KAAK,oBAAqB,EAC1D,CAAE,OAAA8W,EAAS,OAAAC,EAAS,QAAAtxE,EAAU,QAAAD,CAAU,EAAGmxE,GAAkB3W,EAAU4W,EAAeC,CAAM,EAC5FrO,GAAYyP,EAAU,MAAQE,GAAWrB,EACzCrO,GAAawP,EAAU,OAASE,GAAWpB,EAC3CuB,EAAY,KAAK,IAAI,KAAK,IAAI9P,EAAUC,CAAS,EAAI,EAAG,CAAC,EACzD8P,EAAcvjB,GAAY,KAAK,QAAQ,OAAQsjB,CAAS,EACxDE,EAAc,KAAK,IAAID,EAAc1B,EAAQ,CAAC,EAC9C4B,GAAgBF,EAAcC,GAAe,KAAK,8BAA+B,EACvF,KAAK,QAAU/yE,EAAU8yE,EACzB,KAAK,QAAU/yE,EAAU+yE,EACzBvgF,EAAK,MAAQ,KAAK,eAAgB,EAClC,KAAK,YAAcugF,EAAcE,EAAe,KAAK,qBAAqB,KAAK,KAAK,EACpF,KAAK,YAAc,KAAK,IAAI,KAAK,YAAcA,EAAeJ,EAAa,CAAC,EAC5E,KAAK,eAAeH,EAAM,EAAGA,EAAK,OAAQxX,CAAI,CACtD,CACC,eAAen6E,EAAGqD,EAAO,CAClB,MAAM24D,EAAO,KAAK,QACZvqD,EAAO,KAAK,YACZ4+E,EAAgB,KAAK,kBAAmB,EAC9C,OAAIhtF,GAAS24D,EAAK,UAAU,eAAiB,CAAC,KAAK,MAAM,kBAAkBh8D,CAAC,GAAKyR,EAAK,QAAQzR,CAAC,IAAM,MAAQyR,EAAK,KAAKzR,CAAC,EAAE,OAC/G,EAEJ,KAAK,uBAAuByR,EAAK,QAAQzR,CAAC,EAAIqwF,EAAgBlgB,EAAG,CAChF,CACI,eAAewhB,EAAMltF,EAAO1K,EAAOogF,EAAM,CACrC,MAAM92E,EAAQ82E,IAAS,QACjBvB,EAAQ,KAAK,MACb8Y,EAAY9Y,EAAM,UAElBuZ,EADOvZ,EAAM,QACQ,UACrBwZ,GAAWV,EAAU,KAAOA,EAAU,OAAS,EAC/CW,GAAWX,EAAU,IAAMA,EAAU,QAAU,EAC/CY,EAAejvF,GAAS8uF,EAAc,aACtCF,EAAcK,EAAe,EAAI,KAAK,YACtCN,EAAcM,EAAe,EAAI,KAAK,YACtC,CAAE,cAAAhG,EAAgB,eAAAG,CAAiB,EAAG,KAAK,kBAAkBhoF,EAAO01E,CAAI,EAC9E,IAAIsW,EAAa,KAAK,aAAc,EAChCzwF,EACJ,IAAIA,EAAI,EAAGA,EAAIyE,EAAO,EAAEzE,EACpBywF,GAAc,KAAK,eAAezwF,EAAGqD,CAAK,EAE9C,IAAIrD,EAAIyE,EAAOzE,EAAIyE,EAAQ1K,EAAO,EAAEiG,EAAE,CAClC,MAAMqwF,EAAgB,KAAK,eAAerwF,EAAGqD,CAAK,EAC5CkvF,EAAMZ,EAAK3xF,CAAC,EACZ6nF,EAAa,CACf,EAAGuK,EAAU,KAAK,QAClB,EAAGC,EAAU,KAAK,QAClB,WAAA5B,EACA,SAAUA,EAAaJ,EACvB,cAAAA,EACA,YAAA2B,EACA,YAAAC,CACH,EACGxF,IACA5E,EAAW,QAAUyE,GAAiB,KAAK,0BAA0BtsF,EAAGuyF,EAAI,OAAS,SAAWpY,CAAI,GAExGsW,GAAcJ,EACd,KAAK,cAAckC,EAAKvyF,EAAG6nF,EAAY1N,CAAI,CACvD,CACA,CACI,gBAAiB,CACb,MAAM1oE,EAAO,KAAK,YACZ+gF,EAAW/gF,EAAK,KACtB,IAAI6iD,EAAQ,EACR,EACJ,IAAI,EAAI,EAAG,EAAIk+B,EAAS,OAAQ,IAAI,CAChC,MAAMl2F,EAAQmV,EAAK,QAAQ,CAAC,EACxBnV,IAAU,MAAQ,CAAC,MAAMA,CAAK,GAAK,KAAK,MAAM,kBAAkB,CAAC,GAAK,CAACk2F,EAAS,CAAC,EAAE,SACnFl+B,GAAS,KAAK,IAAIh4D,CAAK,EAEvC,CACQ,OAAOg4D,CACf,CACI,uBAAuBh4D,EAAO,CAC1B,MAAMg4D,EAAQ,KAAK,YAAY,MAC/B,OAAIA,EAAQ,GAAK,CAAC,MAAMh4D,CAAK,EAClB6zE,IAAO,KAAK,IAAI7zE,CAAK,EAAIg4D,GAE7B,CACf,CACI,iBAAiBpxD,EAAO,CACpB,MAAMuO,EAAO,KAAK,YACZmnE,EAAQ,KAAK,MACb6S,EAAS7S,EAAM,KAAK,QAAU,CAAE,EAChCt8E,EAAQg6E,GAAa7kE,EAAK,QAAQvO,CAAK,EAAG01E,EAAM,QAAQ,MAAM,EACpE,MAAO,CACH,MAAO6S,EAAOvoF,CAAK,GAAK,GACxB,MAAA5G,CACH,CACT,CACI,kBAAkBq1F,EAAM,CACpB,IAAIn4E,EAAM,EACV,MAAMo/D,EAAQ,KAAK,MACnB,IAAI,EAAG7J,EAAMt9D,EAAM0mD,EAAY57D,EAC/B,GAAI,CAACo1F,GACD,IAAI,EAAI,EAAG5iB,EAAO6J,EAAM,KAAK,SAAS,OAAQ,EAAI7J,EAAM,EAAE,EACtD,GAAI6J,EAAM,iBAAiB,CAAC,EAAG,CAC3BnnE,EAAOmnE,EAAM,eAAe,CAAC,EAC7B+Y,EAAOlgF,EAAK,KACZ0mD,EAAa1mD,EAAK,WAClB,KACpB,EAGQ,GAAI,CAACkgF,EACD,MAAO,GAEX,IAAI,EAAI,EAAG5iB,EAAO4iB,EAAK,OAAQ,EAAI5iB,EAAM,EAAE,EACvCxyE,EAAU47D,EAAW,0BAA0B,CAAC,EAC5C57D,EAAQ,cAAgB,UACxBid,EAAM,KAAK,IAAIA,EAAKjd,EAAQ,aAAe,EAAGA,EAAQ,kBAAoB,CAAC,GAGnF,OAAOid,CACf,CACI,aAAam4E,EAAM,CACf,IAAIn4E,EAAM,EACV,QAAQxZ,EAAI,EAAG+uE,EAAO4iB,EAAK,OAAQ3xF,EAAI+uE,EAAM,EAAE/uE,EAAE,CAC7C,MAAMzD,EAAU,KAAK,0BAA0ByD,CAAC,EAChDwZ,EAAM,KAAK,IAAIA,EAAKjd,EAAQ,QAAU,EAAGA,EAAQ,aAAe,CAAC,CAC7E,CACQ,OAAOid,CACf,CACC,qBAAqBusE,EAAc,CAC5B,IAAI0M,EAAmB,EACvB,QAAQzyF,EAAI,EAAGA,EAAI+lF,EAAc,EAAE/lF,EAC3B,KAAK,MAAM,iBAAiBA,CAAC,IAC7ByyF,GAAoB,KAAK,eAAezyF,CAAC,GAGjD,OAAOyyF,CACf,CACC,eAAe1M,EAAc,CACtB,OAAO,KAAK,IAAIxX,GAAe,KAAK,MAAM,KAAK,SAASwX,CAAY,EAAE,OAAQ,CAAC,EAAG,CAAC,CAC3F,CACC,+BAAgC,CACzB,OAAO,KAAK,qBAAqB,KAAK,MAAM,KAAK,SAAS,MAAM,GAAK,CAC7E,CACA,CAEA,MAAM2M,WAAuBjI,EAAkB,CAC3C,OAAO,GAAK,OACf,OAAO,SAAW,CACX,mBAAoB,OACpB,gBAAiB,QACjB,SAAU,GACV,SAAU,EACb,EACJ,OAAO,UAAY,CACZ,OAAQ,CACJ,QAAS,CACL,KAAM,UACT,EACD,QAAS,CACL,KAAM,QACtB,CACA,CACK,EACD,YAAa,CACT,KAAK,oBAAsB,GAC3B,KAAK,mBAAqB,GAC1B,MAAM,WAAY,CAC1B,CACI,OAAOtQ,EAAM,CACT,MAAM1oE,EAAO,KAAK,YACZ,CAAE,QAASu+C,EAAO,KAAM0kB,EAAS,CAAE,EAAG,SAAAie,CAAQ,EAAMlhF,EACpDkjE,EAAqB,KAAK,MAAM,oBACtC,GAAI,CAAE,MAAAlwE,EAAQ,MAAA1K,CAAQ,EAAG06E,GAAiChjE,EAAMijE,EAAQC,CAAkB,EAC1F,KAAK,WAAalwE,EAClB,KAAK,WAAa1K,EACdk7E,GAAoBxjE,CAAI,IACxBhN,EAAQ,EACR1K,EAAQ26E,EAAO,QAEnB1kB,EAAK,OAAS,KAAK,MACnBA,EAAK,cAAgB,KAAK,MAC1BA,EAAK,WAAa,CAAC,CAAC2iC,EAAS,WAC7B3iC,EAAK,OAAS0kB,EACd,MAAMn4E,EAAU,KAAK,6BAA6B49E,CAAI,EACjD,KAAK,QAAQ,WACd59E,EAAQ,YAAc,GAE1BA,EAAQ,QAAU,KAAK,QAAQ,QAC/B,KAAK,cAAcyzD,EAAM,OAAW,CAChC,SAAU,CAAC2kB,EACX,QAAAp4E,CACH,EAAE49E,CAAI,EACP,KAAK,eAAezF,EAAQjwE,EAAO1K,EAAOogF,CAAI,CACtD,CACI,eAAezF,EAAQjwE,EAAO1K,EAAOogF,EAAM,CACvC,MAAM92E,EAAQ82E,IAAS,QACjB,CAAE,OAAAtF,EAAS,OAAA4U,EAAS,SAAA6B,EAAW,SAAAqH,CAAQ,EAAM,KAAK,YAClD,CAAE,cAAArG,EAAgB,eAAAG,CAAiB,EAAG,KAAK,kBAAkBhoF,EAAO01E,CAAI,EACxEyP,EAAQ/U,EAAO,KACfgV,EAAQJ,EAAO,KACf,CAAE,SAAArE,EAAW,QAAAhqC,CAAU,EAAG,KAAK,QAC/Bw3C,EAAe/rC,GAASu+B,CAAQ,EAAIA,EAAW,OAAO,kBACtDyN,EAAe,KAAK,MAAM,qBAAuBxvF,GAAS82E,IAAS,OACnEz1E,EAAMD,EAAQ1K,EACd+4F,EAAcpe,EAAO,OAC3B,IAAIqe,EAAatuF,EAAQ,GAAK,KAAK,UAAUA,EAAQ,CAAC,EACtD,QAAQzE,EAAI,EAAGA,EAAI8yF,EAAa,EAAE9yF,EAAE,CAChC,MAAM65E,EAAQnF,EAAO10E,CAAC,EAChB6nF,EAAagL,EAAehZ,EAAQ,CAAE,EAC5C,GAAI75E,EAAIyE,GAASzE,GAAK0E,EAAK,CACvBmjF,EAAW,KAAO,GAClB,QAChB,CACY,MAAM93B,EAAS,KAAK,UAAU/vD,CAAC,EACzBgzF,EAAW5kB,GAAcre,EAAO85B,CAAK,CAAC,EACtC7J,EAAS6H,EAAW+B,CAAK,EAAI/U,EAAO,iBAAiB9kB,EAAO65B,CAAK,EAAG5pF,CAAC,EACrEigF,EAAS4H,EAAWgC,CAAK,EAAIxmF,GAAS2vF,EAAWvJ,EAAO,aAAc,EAAGA,EAAO,iBAAiB6B,EAAW,KAAK,WAAW7B,EAAQ15B,EAAQu7B,CAAQ,EAAIv7B,EAAO85B,CAAK,EAAG7pF,CAAC,EAC9K6nF,EAAW,KAAO,MAAM7H,CAAM,GAAK,MAAMC,CAAM,GAAK+S,EACpDnL,EAAW,KAAO7nF,EAAI,GAAK,KAAK,IAAI+vD,EAAO65B,CAAK,EAAImJ,EAAWnJ,CAAK,CAAC,EAAIgJ,EACrEx3C,IACAysC,EAAW,OAAS93B,EACpB83B,EAAW,IAAM8K,EAAS,KAAK3yF,CAAC,GAEhCysF,IACA5E,EAAW,QAAUyE,GAAiB,KAAK,0BAA0BtsF,EAAG65E,EAAM,OAAS,SAAWM,CAAI,GAErG0Y,GACD,KAAK,cAAchZ,EAAO75E,EAAG6nF,EAAY1N,CAAI,EAEjD4Y,EAAahjC,CACzB,CACA,CACC,gBAAiB,CACV,MAAMt+C,EAAO,KAAK,YACZqqB,EAAUrqB,EAAK,QACfg2B,EAAS3L,EAAQ,SAAWA,EAAQ,QAAQ,aAAe,EAC3D5tB,EAAOuD,EAAK,MAAQ,CAAE,EAC5B,GAAI,CAACvD,EAAK,OACN,OAAOu5B,EAEX,MAAMi3C,EAAaxwE,EAAK,CAAC,EAAE,KAAK,KAAK,0BAA0B,CAAC,CAAC,EAC3D+kF,EAAY/kF,EAAKA,EAAK,OAAS,CAAC,EAAE,KAAK,KAAK,0BAA0BA,EAAK,OAAS,CAAC,CAAC,EAC5F,OAAO,KAAK,IAAIu5B,EAAQi3C,EAAYuU,CAAS,EAAI,CACzD,CACI,MAAO,CACH,MAAMxhF,EAAO,KAAK,YAClBA,EAAK,QAAQ,oBAAoB,KAAK,MAAM,UAAWA,EAAK,OAAO,IAAI,EACvE,MAAM,KAAM,CACpB,CACA,CAEA,MAAMyhF,WAA4BzI,EAAkB,CAChD,OAAO,GAAK,YACf,OAAO,SAAW,CACX,gBAAiB,MACjB,UAAW,CACP,cAAe,GACf,aAAc,EACjB,EACD,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,IACA,IACA,aACA,WACA,cACA,aACpB,CACA,CACS,EACD,UAAW,IACX,WAAY,CACf,EACJ,OAAO,UAAY,CACZ,YAAa,EACb,QAAS,CACL,OAAQ,CACJ,OAAQ,CACJ,eAAgB7R,EAAO,CACnB,MAAM1qE,EAAO0qE,EAAM,KACnB,GAAI1qE,EAAK,OAAO,QAAUA,EAAK,SAAS,OAAQ,CAC5C,KAAM,CAAE,OAAQ,CAAE,WAAAojF,EAAa,MAAAzjB,CAAK,GAAS+K,EAAM,OAAO,QAC1D,OAAO1qE,EAAK,OAAO,IAAI,CAAC89B,EAAOhsC,IAAI,CAE/B,MAAMgM,EADO4sE,EAAM,eAAe,CAAC,EAChB,WAAW,SAAS54E,CAAC,EACxC,MAAO,CACH,KAAMgsC,EACN,UAAWhgC,EAAM,gBACjB,YAAaA,EAAM,YACnB,UAAW6hE,EACX,UAAW7hE,EAAM,YACjB,WAAYslF,EACZ,OAAQ,CAAC1Y,EAAM,kBAAkB54E,CAAC,EAClC,MAAOA,CACV,CACjC,CAA6B,CAC7B,CACwB,MAAO,CAAE,CACjC,CACiB,EACD,QAAST,EAAGgyF,EAAYC,EAAQ,CAC5BA,EAAO,MAAM,qBAAqBD,EAAW,KAAK,EAClDC,EAAO,MAAM,OAAQ,CACzC,CACA,CACS,EACD,OAAQ,CACJ,EAAG,CACC,KAAM,eACN,WAAY,CACR,QAAS,EACZ,EACD,YAAa,GACb,KAAM,CACF,SAAU,EACb,EACD,YAAa,CACT,QAAS,EACZ,EACD,WAAY,CAC5B,CACA,CACK,EACD,YAAY5Y,EAAOmN,EAAa,CAC5B,MAAMnN,EAAOmN,CAAY,EACzB,KAAK,YAAc,OACnB,KAAK,YAAc,MAC3B,CACI,iBAAiB7iF,EAAO,CACpB,MAAMuO,EAAO,KAAK,YACZmnE,EAAQ,KAAK,MACb6S,EAAS7S,EAAM,KAAK,QAAU,CAAE,EAChCt8E,EAAQg6E,GAAa7kE,EAAK,QAAQvO,CAAK,EAAE,EAAG01E,EAAM,QAAQ,MAAM,EACtE,MAAO,CACH,MAAO6S,EAAOvoF,CAAK,GAAK,GACxB,MAAA5G,CACH,CACT,CACI,gBAAgBmV,EAAMvD,EAAMzJ,EAAO1K,EAAO,CACtC,OAAOqkF,GAA4B,KAAK,IAAI,EAAE3sE,EAAMvD,EAAMzJ,EAAO1K,CAAK,CAC9E,CACI,OAAOogF,EAAM,CACT,MAAMwX,EAAO,KAAK,YAAY,KAC9B,KAAK,cAAe,EACpB,KAAK,eAAeA,EAAM,EAAGA,EAAK,OAAQxX,CAAI,CACtD,CACC,WAAY,CACL,MAAM1oE,EAAO,KAAK,YACZk3D,EAAQ,CACV,IAAK,OAAO,kBACZ,IAAK,OAAO,iBACf,EACD,OAAAl3D,EAAK,KAAK,QAAQ,CAACpH,EAASnH,IAAQ,CAChC,MAAM6sD,EAAS,KAAK,UAAU7sD,CAAK,EAAE,EACjC,CAAC,MAAM6sD,CAAM,GAAK,KAAK,MAAM,kBAAkB7sD,CAAK,IAChD6sD,EAAS4Y,EAAM,MACfA,EAAM,IAAM5Y,GAEZA,EAAS4Y,EAAM,MACfA,EAAM,IAAM5Y,GAGhC,CAAS,EACM4Y,CACf,CACC,eAAgB,CACT,MAAMiQ,EAAQ,KAAK,MACb8Y,EAAY9Y,EAAM,UAClB5c,EAAO4c,EAAM,QACbua,EAAU,KAAK,IAAIzB,EAAU,MAAQA,EAAU,KAAMA,EAAU,OAASA,EAAU,GAAG,EACrFM,EAAc,KAAK,IAAImB,EAAU,EAAG,CAAC,EACrClB,EAAc,KAAK,IAAIj2B,EAAK,iBAAmBg2B,EAAc,IAAMh2B,EAAK,iBAAmB,EAAG,CAAC,EAC/Fk2B,GAAgBF,EAAcC,GAAerZ,EAAM,uBAAwB,EACjF,KAAK,YAAcoZ,EAAcE,EAAe,KAAK,MACrD,KAAK,YAAc,KAAK,YAAcA,CAC9C,CACI,eAAeP,EAAMltF,EAAO1K,EAAOogF,EAAM,CACrC,MAAM92E,EAAQ82E,IAAS,QACjBvB,EAAQ,KAAK,MAEbuZ,EADOvZ,EAAM,QACQ,UACrBoP,EAAQ,KAAK,YAAY,OACzBoK,EAAUpK,EAAM,QAChBqK,EAAUrK,EAAM,QAChBoL,EAAoBpL,EAAM,cAAc,CAAC,EAAI,GAAM9X,GACzD,IAAIgC,EAAQkhB,EACRpzF,EACJ,MAAMqzF,EAAe,IAAM,KAAK,qBAAsB,EACtD,IAAIrzF,EAAI,EAAGA,EAAIyE,EAAO,EAAEzE,EACpBkyE,GAAS,KAAK,cAAclyE,EAAGm6E,EAAMkZ,CAAY,EAErD,IAAIrzF,EAAIyE,EAAOzE,EAAIyE,EAAQ1K,EAAOiG,IAAI,CAClC,MAAMuyF,EAAMZ,EAAK3xF,CAAC,EAClB,IAAIywF,EAAave,EACbwe,EAAWxe,EAAQ,KAAK,cAAclyE,EAAGm6E,EAAMkZ,CAAY,EAC3DrB,EAAcpZ,EAAM,kBAAkB54E,CAAC,EAAIgoF,EAAM,8BAA8B,KAAK,UAAUhoF,CAAC,EAAE,CAAC,EAAI,EAC1GkyE,EAAQwe,EACJrtF,IACI8uF,EAAc,eACdH,EAAc,GAEdG,EAAc,gBACd1B,EAAaC,EAAW0C,IAGhC,MAAMvL,EAAa,CACf,EAAGuK,EACH,EAAGC,EACH,YAAa,EACb,YAAAL,EACA,WAAAvB,EACA,SAAAC,EACA,QAAS,KAAK,0BAA0B1wF,EAAGuyF,EAAI,OAAS,SAAWpY,CAAI,CAC1E,EACD,KAAK,cAAcoY,EAAKvyF,EAAG6nF,EAAY1N,CAAI,CACvD,CACA,CACI,sBAAuB,CACnB,MAAM1oE,EAAO,KAAK,YAClB,IAAI1X,EAAQ,EACZ,OAAA0X,EAAK,KAAK,QAAQ,CAACpH,EAASnH,IAAQ,CAC5B,CAAC,MAAM,KAAK,UAAUA,CAAK,EAAE,CAAC,GAAK,KAAK,MAAM,kBAAkBA,CAAK,GACrEnJ,GAEhB,CAAS,EACMA,CACf,CACC,cAAcmJ,EAAOi3E,EAAMkZ,EAAc,CAClC,OAAO,KAAK,MAAM,kBAAkBnwF,CAAK,EAAIquE,GAAU,KAAK,0BAA0BruE,EAAOi3E,CAAI,EAAE,OAASkZ,CAAY,EAAI,CACpI,CACA,CAEA,MAAMC,WAAsBjC,EAAmB,CAC3C,OAAO,GAAK,MACf,OAAO,SAAW,CACX,OAAQ,EACR,SAAU,EACV,cAAe,IACf,OAAQ,MACX,CACL,CAEA,MAAMkC,WAAwB9I,EAAkB,CAC5C,OAAO,GAAK,QACf,OAAO,SAAW,CACX,mBAAoB,OACpB,gBAAiB,QACjB,UAAW,IACX,SAAU,GACV,SAAU,CACN,KAAM,CACF,KAAM,OACtB,CACA,CACK,EACJ,OAAO,UAAY,CACZ,YAAa,EACb,OAAQ,CACJ,EAAG,CACC,KAAM,cACtB,CACA,CACK,EACJ,iBAAiBvnF,EAAO,CACjB,MAAMumF,EAAS,KAAK,YAAY,OAC1B15B,EAAS,KAAK,UAAU7sD,CAAK,EACnC,MAAO,CACH,MAAOumF,EAAO,UAAW,EAACvmF,CAAK,EAC/B,MAAO,GAAKumF,EAAO,iBAAiB15B,EAAO05B,EAAO,IAAI,CAAC,CAC1D,CACT,CACI,gBAAgBh4E,EAAMvD,EAAMzJ,EAAO1K,EAAO,CACtC,OAAOqkF,GAA4B,KAAK,IAAI,EAAE3sE,EAAMvD,EAAMzJ,EAAO1K,CAAK,CAC9E,CACI,OAAOogF,EAAM,CACT,MAAM1oE,EAAO,KAAK,YACZu+C,EAAOv+C,EAAK,QACZijE,EAASjjE,EAAK,MAAQ,CAAE,EACxBg6E,EAASh6E,EAAK,OAAO,UAAW,EAEtC,GADAu+C,EAAK,OAAS0kB,EACVyF,IAAS,SAAU,CACnB,MAAM59E,EAAU,KAAK,6BAA6B49E,CAAI,EACjD,KAAK,QAAQ,WACd59E,EAAQ,YAAc,GAE1B,MAAMsrF,EAAa,CACf,MAAO,GACP,UAAW4D,EAAO,SAAW/W,EAAO,OACpC,QAAAn4E,CACH,EACD,KAAK,cAAcyzD,EAAM,OAAW63B,EAAY1N,CAAI,CAChE,CACQ,KAAK,eAAezF,EAAQ,EAAGA,EAAO,OAAQyF,CAAI,CAC1D,CACI,eAAezF,EAAQjwE,EAAO1K,EAAOogF,EAAM,CACvC,MAAM6N,EAAQ,KAAK,YAAY,OACzB3kF,EAAQ82E,IAAS,QACvB,QAAQn6E,EAAIyE,EAAOzE,EAAIyE,EAAQ1K,EAAOiG,IAAI,CACtC,MAAM65E,EAAQnF,EAAO10E,CAAC,EAChBzD,EAAU,KAAK,0BAA0ByD,EAAG65E,EAAM,OAAS,SAAWM,CAAI,EAC1EqZ,EAAgBxL,EAAM,yBAAyBhoF,EAAG,KAAK,UAAUA,CAAC,EAAE,CAAC,EACrE4Q,EAAIvN,EAAQ2kF,EAAM,QAAUwL,EAAc,EAC1ChjF,EAAInN,EAAQ2kF,EAAM,QAAUwL,EAAc,EAC1C3L,EAAa,CACf,EAAAj3E,EACA,EAAAJ,EACA,MAAOgjF,EAAc,MACrB,KAAM,MAAM5iF,CAAC,GAAK,MAAMJ,CAAC,EACzB,QAAAjU,CACH,EACD,KAAK,cAAcs9E,EAAO75E,EAAG6nF,EAAY1N,CAAI,CACzD,CACA,CACA,CAEA,MAAMsZ,WAA0BhJ,EAAkB,CAC9C,OAAO,GAAK,UACf,OAAO,SAAW,CACX,mBAAoB,GACpB,gBAAiB,QACjB,SAAU,GACV,KAAM,EACT,EACJ,OAAO,UAAY,CACZ,YAAa,CACT,KAAM,OACT,EACD,OAAQ,CACJ,EAAG,CACC,KAAM,QACT,EACD,EAAG,CACC,KAAM,QACtB,CACA,CACK,EACJ,iBAAiBvnF,EAAO,CACjB,MAAMuO,EAAO,KAAK,YACZg6E,EAAS,KAAK,MAAM,KAAK,QAAU,CAAE,EACrC,CAAE,OAAAvW,EAAS,OAAAC,CAAM,EAAM1jE,EACvBs+C,EAAS,KAAK,UAAU7sD,CAAK,EAC7B0N,EAAIskE,EAAO,iBAAiBnlB,EAAO,CAAC,EACpCv/C,EAAI2kE,EAAO,iBAAiBplB,EAAO,CAAC,EAC1C,MAAO,CACH,MAAO07B,EAAOvoF,CAAK,GAAK,GACxB,MAAO,IAAM0N,EAAI,KAAOJ,EAAI,GAC/B,CACT,CACI,OAAO2pE,EAAM,CACT,MAAM1oE,EAAO,KAAK,YACZ,CAAE,KAAMijE,EAAS,CAAA,CAAK,EAAGjjE,EACzBkjE,EAAqB,KAAK,MAAM,oBACtC,GAAI,CAAE,MAAAlwE,EAAQ,MAAA1K,CAAQ,EAAG06E,GAAiChjE,EAAMijE,EAAQC,CAAkB,EAO1F,GANA,KAAK,WAAalwE,EAClB,KAAK,WAAa1K,EACdk7E,GAAoBxjE,CAAI,IACxBhN,EAAQ,EACR1K,EAAQ26E,EAAO,QAEf,KAAK,QAAQ,SAAU,CACvB,KAAM,CAAE,QAAS1kB,EAAO,SAAA2iC,CAAW,EAAGlhF,EACtCu+C,EAAK,OAAS,KAAK,MACnBA,EAAK,cAAgB,KAAK,MAC1BA,EAAK,WAAa,CAAC,CAAC2iC,EAAS,WAC7B3iC,EAAK,OAAS0kB,EACd,MAAMn4E,EAAU,KAAK,6BAA6B49E,CAAI,EACtD59E,EAAQ,QAAU,KAAK,QAAQ,QAC/B,KAAK,cAAcyzD,EAAM,OAAW,CAChC,SAAU,CAAC2kB,EACX,QAAAp4E,CACH,EAAE49E,CAAI,CACnB,CACQ,KAAK,eAAezF,EAAQjwE,EAAO1K,EAAOogF,CAAI,CACtD,CACI,aAAc,CACV,KAAM,CAAE,SAAAuZ,GAAc,KAAK,QACvB,CAAC,KAAK,oBAAsBA,IAC5B,KAAK,mBAAqB,KAAK,MAAM,SAAS,WAAW,MAAM,GAEnE,MAAM,YAAa,CAC3B,CACI,eAAehf,EAAQjwE,EAAO1K,EAAOogF,EAAM,CACvC,MAAM92E,EAAQ82E,IAAS,QACjB,CAAE,OAAAtF,EAAS,OAAA4U,EAAS,SAAA6B,EAAW,SAAAqH,CAAQ,EAAM,KAAK,YAClDpG,EAAY,KAAK,0BAA0B9nF,EAAO01E,CAAI,EACtDmS,EAAgB,KAAK,iBAAiBC,CAAS,EAC/CE,EAAiB,KAAK,eAAetS,EAAMmS,CAAa,EACxD1C,EAAQ/U,EAAO,KACfgV,EAAQJ,EAAO,KACf,CAAE,SAAArE,EAAW,QAAAhqC,CAAU,EAAG,KAAK,QAC/Bw3C,EAAe/rC,GAASu+B,CAAQ,EAAIA,EAAW,OAAO,kBACtDyN,EAAe,KAAK,MAAM,qBAAuBxvF,GAAS82E,IAAS,OACzE,IAAI4Y,EAAatuF,EAAQ,GAAK,KAAK,UAAUA,EAAQ,CAAC,EACtD,QAAQzE,EAAIyE,EAAOzE,EAAIyE,EAAQ1K,EAAO,EAAEiG,EAAE,CACtC,MAAM65E,EAAQnF,EAAO10E,CAAC,EAChB+vD,EAAS,KAAK,UAAU/vD,CAAC,EACzB6nF,EAAagL,EAAehZ,EAAQ,CAAE,EACtCmZ,EAAW5kB,GAAcre,EAAO85B,CAAK,CAAC,EACtC7J,EAAS6H,EAAW+B,CAAK,EAAI/U,EAAO,iBAAiB9kB,EAAO65B,CAAK,EAAG5pF,CAAC,EACrEigF,EAAS4H,EAAWgC,CAAK,EAAIxmF,GAAS2vF,EAAWvJ,EAAO,aAAc,EAAGA,EAAO,iBAAiB6B,EAAW,KAAK,WAAW7B,EAAQ15B,EAAQu7B,CAAQ,EAAIv7B,EAAO85B,CAAK,EAAG7pF,CAAC,EAC9K6nF,EAAW,KAAO,MAAM7H,CAAM,GAAK,MAAMC,CAAM,GAAK+S,EACpDnL,EAAW,KAAO7nF,EAAI,GAAK,KAAK,IAAI+vD,EAAO65B,CAAK,EAAImJ,EAAWnJ,CAAK,CAAC,EAAIgJ,EACrEx3C,IACAysC,EAAW,OAAS93B,EACpB83B,EAAW,IAAM8K,EAAS,KAAK3yF,CAAC,GAEhCysF,IACA5E,EAAW,QAAUyE,GAAiB,KAAK,0BAA0BtsF,EAAG65E,EAAM,OAAS,SAAWM,CAAI,GAErG0Y,GACD,KAAK,cAAchZ,EAAO75E,EAAG6nF,EAAY1N,CAAI,EAEjD4Y,EAAahjC,CACzB,CACQ,KAAK,oBAAoBu8B,EAAenS,EAAMoS,CAAS,CAC/D,CACC,gBAAiB,CACV,MAAM96E,EAAO,KAAK,YACZvD,EAAOuD,EAAK,MAAQ,CAAE,EAC5B,GAAI,CAAC,KAAK,QAAQ,SAAU,CACxB,IAAI+H,EAAM,EACV,QAAQxZ,EAAIkO,EAAK,OAAS,EAAGlO,GAAK,EAAG,EAAEA,EACnCwZ,EAAM,KAAK,IAAIA,EAAKtL,EAAKlO,CAAC,EAAE,KAAK,KAAK,0BAA0BA,CAAC,CAAC,EAAI,CAAC,EAE3E,OAAOwZ,EAAM,GAAKA,CAC9B,CACQ,MAAMsiB,EAAUrqB,EAAK,QACfg2B,EAAS3L,EAAQ,SAAWA,EAAQ,QAAQ,aAAe,EACjE,GAAI,CAAC5tB,EAAK,OACN,OAAOu5B,EAEX,MAAMi3C,EAAaxwE,EAAK,CAAC,EAAE,KAAK,KAAK,0BAA0B,CAAC,CAAC,EAC3D+kF,EAAY/kF,EAAKA,EAAK,OAAS,CAAC,EAAE,KAAK,KAAK,0BAA0BA,EAAK,OAAS,CAAC,CAAC,EAC5F,OAAO,KAAK,IAAIu5B,EAAQi3C,EAAYuU,CAAS,EAAI,CACzD,CACA,CAEA,IAAIU,GAA2B,OAAO,OAAO,CAC7C,UAAW,KACX,cAAe1E,GACf,iBAAkBkB,GAClB,mBAAoBkB,GACpB,eAAgBqB,GAChB,oBAAqBQ,GACrB,cAAeI,GACf,gBAAiBC,GACjB,kBAAmBE,EACnB,CAAC,EAMG,SAASG,IAAW,CACpB,MAAM,IAAI,MAAM,iFAAiF,CACrG,CAMI,MAAMC,EAAgB,CAUpB,OAAO,SAASC,EAAS,CACvB,OAAO,OAAOD,GAAgB,UAAWC,CAAO,CACxD,CACI,YAAYv3F,EAAQ,CAChB,KAAK,QAAUA,GAAW,CAAE,CACpC,CAEI,MAAO,CAAA,CACP,SAAU,CACN,OAAOq3F,GAAU,CACzB,CACI,OAAQ,CACJ,OAAOA,GAAU,CACzB,CACI,QAAS,CACL,OAAOA,GAAU,CACzB,CACI,KAAM,CACF,OAAOA,GAAU,CACzB,CACI,MAAO,CACH,OAAOA,GAAU,CACzB,CACI,SAAU,CACN,OAAOA,GAAU,CACzB,CACI,OAAQ,CACJ,OAAOA,GAAU,CACzB,CACA,CACA,IAAIz4B,GAAW,CACX,MAAO04B,EACX,EAEA,SAASE,GAAaC,EAASt3E,EAAMpgB,EAAO23F,EAAW,CACnD,KAAM,CAAE,WAAA97B,EAAa,KAAAjqD,EAAO,QAAAgmF,CAAU,EAAGF,EACnCnf,EAAS1c,EAAW,YAAY,OACtC,GAAI0c,GAAUn4D,IAASm4D,EAAO,MAAQn4D,IAAS,KAAOw3E,GAAWhmF,EAAK,OAAQ,CAC1E,MAAMimF,EAAetf,EAAO,eAAiBpB,GAAgBH,GAC7D,GAAK2gB,GAEE,GAAI97B,EAAW,eAAgB,CAClC,MAAMvqD,EAAKM,EAAK,CAAC,EACXy6D,EAAQ,OAAO/6D,EAAG,UAAa,YAAcA,EAAG,SAAS8O,CAAI,EACnE,GAAIisD,EAAO,CACP,MAAMlkE,EAAQ0vF,EAAajmF,EAAMwO,EAAMpgB,EAAQqsE,CAAK,EAC9CjkE,EAAMyvF,EAAajmF,EAAMwO,EAAMpgB,EAAQqsE,CAAK,EAClD,MAAO,CACH,GAAIlkE,EAAM,GACV,GAAIC,EAAI,EACX,CACjB,CACA,MAZY,QAAOyvF,EAAajmF,EAAMwO,EAAMpgB,CAAK,CAajD,CACI,MAAO,CACH,GAAI,EACJ,GAAI4R,EAAK,OAAS,CACrB,CACL,CACC,SAASkmF,GAAyBxb,EAAOl8D,EAAMyB,EAAU3S,EAASyoF,EAAW,CAC1E,MAAM3L,EAAW1P,EAAM,6BAA8B,EAC/Ct8E,EAAQ6hB,EAASzB,CAAI,EAC3B,QAAQ1c,EAAI,EAAG+uE,EAAOuZ,EAAS,OAAQtoF,EAAI+uE,EAAM,EAAE/uE,EAAE,CACjD,KAAM,CAAE,MAAAkD,EAAQ,KAAAgL,GAAUo6E,EAAStoF,CAAC,EAC9B,CAAE,GAAAozE,EAAK,GAAAD,CAAE,EAAM4gB,GAAazL,EAAStoF,CAAC,EAAG0c,EAAMpgB,EAAO23F,CAAS,EACrE,QAAQ9vF,EAAIivE,EAAIjvE,GAAKgvE,EAAI,EAAEhvE,EAAE,CACzB,MAAMkG,EAAU6D,EAAK/J,CAAC,EACjBkG,EAAQ,MACTmB,EAAQnB,EAASnH,EAAOiB,CAAC,CAEzC,CACA,CACA,CACC,SAASkwF,GAAyB33E,EAAM,CACrC,MAAM43E,EAAO53E,EAAK,QAAQ,GAAG,IAAM,GAC7B63E,EAAO73E,EAAK,QAAQ,GAAG,IAAM,GACnC,OAAO,SAAS01D,EAAKC,EAAK,CACtB,MAAMmiB,EAASF,EAAO,KAAK,IAAIliB,EAAI,EAAIC,EAAI,CAAC,EAAI,EAC1CoiB,EAASF,EAAO,KAAK,IAAIniB,EAAI,EAAIC,EAAI,CAAC,EAAI,EAChD,OAAO,KAAK,KAAK,KAAK,IAAImiB,EAAQ,CAAC,EAAI,KAAK,IAAIC,EAAQ,CAAC,CAAC,CAC7D,CACL,CACC,SAASC,GAAkB9b,EAAOz6D,EAAUzB,EAAMi4E,EAAkBC,EAAkB,CACnF,MAAM/wF,EAAQ,CAAE,EAChB,MAAI,CAAC+wF,GAAoB,CAAChc,EAAM,cAAcz6D,CAAQ,GAetDi2E,GAAyBxb,EAAOl8D,EAAMyB,EAZf,SAAS9T,EAAS07E,EAAc7iF,EAAO,CACtD,CAAC0xF,GAAoB,CAAChb,GAAevvE,EAASuuE,EAAM,UAAW,CAAC,GAGhEvuE,EAAQ,QAAQ8T,EAAS,EAAGA,EAAS,EAAGw2E,CAAgB,GACxD9wF,EAAM,KAAK,CACP,QAAAwG,EACA,aAAA07E,EACA,MAAA7iF,CAChB,CAAa,CAER,EAC+D,EAAI,EAC7DW,CACX,CACC,SAASgxF,GAAsBjc,EAAOz6D,EAAUzB,EAAMi4E,EAAkB,CACrE,IAAI9wF,EAAQ,CAAE,EACd,SAASixF,EAAezqF,EAAS07E,EAAc7iF,EAAO,CAClD,KAAM,CAAE,WAAAutF,EAAa,SAAAC,GAAcrmF,EAAQ,SAAS,CAChD,aACA,UACH,EAAEsqF,CAAgB,EACb,CAAE,MAAAziB,CAAK,EAAMN,GAAkBvnE,EAAS,CAC1C,EAAG8T,EAAS,EACZ,EAAGA,EAAS,CACxB,CAAS,EACGq0D,GAAcN,EAAOue,EAAYC,CAAQ,GACzC7sF,EAAM,KAAK,CACP,QAAAwG,EACA,aAAA07E,EACA,MAAA7iF,CAChB,CAAa,CAEb,CACI,OAAAkxF,GAAyBxb,EAAOl8D,EAAMyB,EAAU22E,CAAc,EACvDjxF,CACX,CACC,SAASkxF,GAAyBnc,EAAOz6D,EAAUzB,EAAMu3E,EAAWU,EAAkBC,EAAkB,CACrG,IAAI/wF,EAAQ,CAAE,EACd,MAAMmxF,EAAiBX,GAAyB33E,CAAI,EACpD,IAAIu4E,EAAc,OAAO,kBACzB,SAASH,EAAezqF,EAAS07E,EAAc7iF,EAAO,CAClD,MAAMuxD,EAAUpqD,EAAQ,QAAQ8T,EAAS,EAAGA,EAAS,EAAGw2E,CAAgB,EACxE,GAAIV,GAAa,CAACx/B,EACd,OAEJ,MAAMr3C,EAAS/S,EAAQ,eAAesqF,CAAgB,EAEtD,GAAI,EADgB,CAAC,CAACC,GAAoBhc,EAAM,cAAcx7D,CAAM,IAChD,CAACq3C,EACjB,OAEJ,MAAMntC,EAAW0tE,EAAe72E,EAAUf,CAAM,EAC5CkK,EAAW2tE,GACXpxF,EAAQ,CACJ,CACI,QAAAwG,EACA,aAAA07E,EACA,MAAA7iF,CACpB,CACa,EACD+xF,EAAc3tE,GACPA,IAAa2tE,GACpBpxF,EAAM,KAAK,CACP,QAAAwG,EACA,aAAA07E,EACA,MAAA7iF,CAChB,CAAa,CAEb,CACI,OAAAkxF,GAAyBxb,EAAOl8D,EAAMyB,EAAU22E,CAAc,EACvDjxF,CACX,CACC,SAASqxF,GAAgBtc,EAAOz6D,EAAUzB,EAAMu3E,EAAWU,EAAkBC,EAAkB,CAC5F,MAAI,CAACA,GAAoB,CAAChc,EAAM,cAAcz6D,CAAQ,EAC3C,CAAE,EAENzB,IAAS,KAAO,CAACu3E,EAAYY,GAAsBjc,EAAOz6D,EAAUzB,EAAMi4E,CAAgB,EAAII,GAAyBnc,EAAOz6D,EAAUzB,EAAMu3E,EAAWU,EAAkBC,CAAgB,CACtM,CACC,SAASO,GAAavc,EAAOz6D,EAAUzB,EAAMu3E,EAAWU,EAAkB,CACvE,MAAM9wF,EAAQ,CAAE,EACVuxF,EAAc14E,IAAS,IAAM,WAAa,WAChD,IAAI24E,EAAiB,GAWrB,OAVAjB,GAAyBxb,EAAOl8D,EAAMyB,EAAU,CAAC9T,EAAS07E,EAAc7iF,IAAQ,CACxEmH,EAAQ+qF,CAAW,EAAEj3E,EAASzB,CAAI,EAAGi4E,CAAgB,IACrD9wF,EAAM,KAAK,CACP,QAAAwG,EACA,aAAA07E,EACA,MAAA7iF,CAChB,CAAa,EACDmyF,EAAiBA,GAAkBhrF,EAAQ,QAAQ8T,EAAS,EAAGA,EAAS,EAAGw2E,CAAgB,EAEvG,CAAK,EACGV,GAAa,CAACoB,EACP,CAAE,EAENxxF,CACX,CACC,IAAIyxF,GAAc,CACf,yBAAAlB,GACA,MAAO,CACV,MAAOxb,EAAOr5E,EAAGhD,EAASo4F,EAAkB,CACjC,MAAMx2E,EAAWwjE,GAAoBpiF,EAAGq5E,CAAK,EACvCl8D,EAAOngB,EAAQ,MAAQ,IACvBq4F,EAAmBr4F,EAAQ,kBAAoB,GAC/CsH,EAAQtH,EAAQ,UAAYm4F,GAAkB9b,EAAOz6D,EAAUzB,EAAMi4E,EAAkBC,CAAgB,EAAIM,GAAgBtc,EAAOz6D,EAAUzB,EAAM,GAAOi4E,EAAkBC,CAAgB,EAC3L1I,EAAW,CAAE,EACnB,OAAKroF,EAAM,QAGX+0E,EAAM,6BAA4B,EAAG,QAASnnE,GAAO,CACjD,MAAMvO,EAAQW,EAAM,CAAC,EAAE,MACjBwG,EAAUoH,EAAK,KAAKvO,CAAK,EAC3BmH,GAAW,CAACA,EAAQ,MACpB6hF,EAAS,KAAK,CACV,QAAA7hF,EACA,aAAcoH,EAAK,MACnB,MAAAvO,CACxB,CAAqB,CAErB,CAAa,EACMgpF,GAbI,CAAE,CAchB,EACR,QAAStT,EAAOr5E,EAAGhD,EAASo4F,EAAkB,CACnC,MAAMx2E,EAAWwjE,GAAoBpiF,EAAGq5E,CAAK,EACvCl8D,EAAOngB,EAAQ,MAAQ,KACvBq4F,EAAmBr4F,EAAQ,kBAAoB,GACrD,IAAIsH,EAAQtH,EAAQ,UAAYm4F,GAAkB9b,EAAOz6D,EAAUzB,EAAMi4E,EAAkBC,CAAgB,EAAIM,GAAgBtc,EAAOz6D,EAAUzB,EAAM,GAAOi4E,EAAkBC,CAAgB,EAC/L,GAAI/wF,EAAM,OAAS,EAAG,CAClB,MAAMkiF,EAAeliF,EAAM,CAAC,EAAE,aACxBqK,EAAO0qE,EAAM,eAAemN,CAAY,EAAE,KAChDliF,EAAQ,CAAE,EACV,QAAQ7D,EAAI,EAAGA,EAAIkO,EAAK,OAAQ,EAAElO,EAC9B6D,EAAM,KAAK,CACP,QAASqK,EAAKlO,CAAC,EACf,aAAA+lF,EACA,MAAO/lF,CAC/B,CAAqB,CAErB,CACY,OAAO6D,CACV,EACR,MAAO+0E,EAAOr5E,EAAGhD,EAASo4F,EAAkB,CACjC,MAAMx2E,EAAWwjE,GAAoBpiF,EAAGq5E,CAAK,EACvCl8D,EAAOngB,EAAQ,MAAQ,KACvBq4F,EAAmBr4F,EAAQ,kBAAoB,GACrD,OAAOm4F,GAAkB9b,EAAOz6D,EAAUzB,EAAMi4E,EAAkBC,CAAgB,CACrF,EACR,QAAShc,EAAOr5E,EAAGhD,EAASo4F,EAAkB,CACnC,MAAMx2E,EAAWwjE,GAAoBpiF,EAAGq5E,CAAK,EACvCl8D,EAAOngB,EAAQ,MAAQ,KACvBq4F,EAAmBr4F,EAAQ,kBAAoB,GACrD,OAAO24F,GAAgBtc,EAAOz6D,EAAUzB,EAAMngB,EAAQ,UAAWo4F,EAAkBC,CAAgB,CACtG,EACR,EAAGhc,EAAOr5E,EAAGhD,EAASo4F,EAAkB,CAC7B,MAAMx2E,EAAWwjE,GAAoBpiF,EAAGq5E,CAAK,EAC7C,OAAOuc,GAAavc,EAAOz6D,EAAU,IAAK5hB,EAAQ,UAAWo4F,CAAgB,CAChF,EACR,EAAG/b,EAAOr5E,EAAGhD,EAASo4F,EAAkB,CAC7B,MAAMx2E,EAAWwjE,GAAoBpiF,EAAGq5E,CAAK,EAC7C,OAAOuc,GAAavc,EAAOz6D,EAAU,IAAK5hB,EAAQ,UAAWo4F,CAAgB,CACzF,CACA,CACA,EAEA,MAAMY,GAAmB,CACrB,OACA,MACA,QACA,QACJ,EACA,SAASC,GAAiB9mF,EAAOyP,EAAU,CACvC,OAAOzP,EAAM,OAAQnR,GAAIA,EAAE,MAAQ4gB,CAAQ,CAC/C,CACA,SAASs3E,GAA4B/mF,EAAOgO,EAAM,CAC9C,OAAOhO,EAAM,OAAQnR,GAAIg4F,GAAiB,QAAQh4F,EAAE,GAAG,IAAM,IAAMA,EAAE,IAAI,OAASmf,CAAI,CAC1F,CACA,SAASg5E,GAAahnF,EAAOigE,EAAS,CAClC,OAAOjgE,EAAM,KAAK,CAACpU,EAAGC,IAAI,CACtB,MAAMy0E,EAAKL,EAAUp0E,EAAID,EACnB20E,EAAKN,EAAUr0E,EAAIC,EACzB,OAAOy0E,EAAG,SAAWC,EAAG,OAASD,EAAG,MAAQC,EAAG,MAAQD,EAAG,OAASC,EAAG,MAC9E,CAAK,CACL,CACA,SAAS0mB,GAAUC,EAAO,CACtB,MAAMC,EAAc,CAAE,EACtB,IAAI71F,EAAG+uE,EAAM2S,EAAK/oB,EAAK5a,EAAO+3C,EAC9B,IAAI91F,EAAI,EAAG+uE,GAAQ6mB,GAAS,IAAI,OAAQ51F,EAAI+uE,EAAM,EAAE/uE,EAChD0hF,EAAMkU,EAAM51F,CAAC,EACZ,CAAE,SAAU24D,EAAM,QAAS,CAAE,MAAA5a,EAAQ,YAAA+3C,EAAa,CAAI,CAAA,EAAMpU,EAC7DmU,EAAY,KAAK,CACb,MAAO71F,EACP,IAAA0hF,EACA,IAAA/oB,EACA,WAAY+oB,EAAI,aAAc,EAC9B,OAAQA,EAAI,OACZ,MAAO3jC,GAAS4a,EAAM5a,EACtB,YAAA+3C,CACZ,CAAS,EAEL,OAAOD,CACX,CACA,SAASE,GAAYC,EAAS,CAC1B,MAAM5M,EAAS,CAAE,EACjB,UAAWjzE,KAAQ6/E,EAAQ,CACvB,KAAM,CAAE,MAAAj4C,EAAQ,IAAA4a,EAAM,YAAAm9B,CAAc,EAAG3/E,EACvC,GAAI,CAAC4nC,GAAS,CAACw3C,GAAiB,SAAS58B,CAAG,EACxC,SAEJ,MAAM6kB,EAAS4L,EAAOrrC,CAAK,IAAMqrC,EAAOrrC,CAAK,EAAI,CAC7C,MAAO,EACP,OAAQ,EACR,OAAQ,EACR,KAAM,CAClB,GACQy/B,EAAO,QACPA,EAAO,QAAUsY,CACzB,CACI,OAAO1M,CACX,CACC,SAAS6M,GAAcD,EAASx7C,EAAQ,CACrC,MAAM4uC,EAAS2M,GAAYC,CAAO,EAC5B,CAAE,aAAAE,EAAe,cAAAC,CAAa,EAAM37C,EAC1C,IAAIx6C,EAAG+uE,EAAMqnB,EACb,IAAIp2F,EAAI,EAAG+uE,EAAOinB,EAAQ,OAAQh2F,EAAI+uE,EAAM,EAAE/uE,EAAE,CAC5Co2F,EAASJ,EAAQh2F,CAAC,EAClB,KAAM,CAAE,SAAAq2F,GAAcD,EAAO,IACvBr4C,EAAQqrC,EAAOgN,EAAO,KAAK,EAC3BtP,EAAS/oC,GAASq4C,EAAO,YAAcr4C,EAAM,OAC/Cq4C,EAAO,YACPA,EAAO,MAAQtP,EAASA,EAASoP,EAAeG,GAAY77C,EAAO,eACnE47C,EAAO,OAASD,IAEhBC,EAAO,MAAQF,EACfE,EAAO,OAAStP,EAASA,EAASqP,EAAgBE,GAAY77C,EAAO,gBAEjF,CACI,OAAO4uC,CACX,CACA,SAASkN,GAAiBV,EAAO,CAC7B,MAAMC,EAAcF,GAAUC,CAAK,EAC7BS,EAAWX,GAAaG,EAAY,OAAQ1/E,GAAOA,EAAK,IAAI,QAAQ,EAAG,EAAI,EAC3EgB,EAAOu+E,GAAaF,GAAiBK,EAAa,MAAM,EAAG,EAAI,EAC/D3+E,EAAQw+E,GAAaF,GAAiBK,EAAa,OAAO,CAAC,EAC3DpzF,EAAMizF,GAAaF,GAAiBK,EAAa,KAAK,EAAG,EAAI,EAC7D5+E,EAASy+E,GAAaF,GAAiBK,EAAa,QAAQ,CAAC,EAC7DU,EAAmBd,GAA4BI,EAAa,GAAG,EAC/DW,EAAiBf,GAA4BI,EAAa,GAAG,EACnE,MAAO,CACH,SAAAQ,EACA,WAAYl/E,EAAK,OAAO1U,CAAG,EAC3B,eAAgByU,EAAM,OAAOs/E,CAAc,EAAE,OAAOv/E,CAAM,EAAE,OAAOs/E,CAAgB,EACnF,UAAWf,GAAiBK,EAAa,WAAW,EACpD,SAAU1+E,EAAK,OAAOD,CAAK,EAAE,OAAOs/E,CAAc,EAClD,WAAY/zF,EAAI,OAAOwU,CAAM,EAAE,OAAOs/E,CAAgB,CACzD,CACL,CACA,SAASE,GAAeC,EAAYhF,EAAWp3F,EAAGC,EAAG,CACjD,OAAO,KAAK,IAAIm8F,EAAWp8F,CAAC,EAAGo3F,EAAUp3F,CAAC,CAAC,EAAI,KAAK,IAAIo8F,EAAWn8F,CAAC,EAAGm3F,EAAUn3F,CAAC,CAAC,CACvF,CACA,SAASo8F,GAAiBD,EAAYE,EAAY,CAC9CF,EAAW,IAAM,KAAK,IAAIA,EAAW,IAAKE,EAAW,GAAG,EACxDF,EAAW,KAAO,KAAK,IAAIA,EAAW,KAAME,EAAW,IAAI,EAC3DF,EAAW,OAAS,KAAK,IAAIA,EAAW,OAAQE,EAAW,MAAM,EACjEF,EAAW,MAAQ,KAAK,IAAIA,EAAW,MAAOE,EAAW,KAAK,CAClE,CACA,SAASC,GAAWnF,EAAWl3C,EAAQ47C,EAAQhN,EAAQ,CACnD,KAAM,CAAE,IAAAzwB,EAAM,IAAA+oB,CAAG,EAAM0U,EACjBM,EAAahF,EAAU,WAC7B,GAAI,CAAC5qC,GAAS6R,CAAG,EAAG,CACZy9B,EAAO,OACP1E,EAAU/4B,CAAG,GAAKy9B,EAAO,MAE7B,MAAMr4C,EAAQqrC,EAAOgN,EAAO,KAAK,GAAK,CAClC,KAAM,EACN,MAAO,CACV,EACDr4C,EAAM,KAAO,KAAK,IAAIA,EAAM,KAAMq4C,EAAO,WAAa1U,EAAI,OAASA,EAAI,KAAK,EAC5E0U,EAAO,KAAOr4C,EAAM,KAAOA,EAAM,MACjC2zC,EAAU/4B,CAAG,GAAKy9B,EAAO,IACjC,CACQ1U,EAAI,YACJiV,GAAiBD,EAAYhV,EAAI,YAAY,EAEjD,MAAMoV,EAAW,KAAK,IAAI,EAAGt8C,EAAO,WAAai8C,GAAeC,EAAYhF,EAAW,OAAQ,OAAO,CAAC,EACjGqF,EAAY,KAAK,IAAI,EAAGv8C,EAAO,YAAci8C,GAAeC,EAAYhF,EAAW,MAAO,QAAQ,CAAC,EACnGsF,EAAeF,IAAapF,EAAU,EACtCuF,EAAgBF,IAAcrF,EAAU,EAC9C,OAAAA,EAAU,EAAIoF,EACdpF,EAAU,EAAIqF,EACPX,EAAO,WAAa,CACvB,KAAMY,EACN,MAAOC,CACf,EAAQ,CACA,KAAMA,EACN,MAAOD,CACV,CACL,CACA,SAASE,GAAiBxF,EAAW,CACjC,MAAMgF,EAAahF,EAAU,WAC7B,SAASyF,EAAUx+B,EAAK,CACpB,MAAMojB,EAAS,KAAK,IAAI2a,EAAW/9B,CAAG,EAAI+4B,EAAU/4B,CAAG,EAAG,CAAC,EAC3D,OAAA+4B,EAAU/4B,CAAG,GAAKojB,EACXA,CACf,CACI2V,EAAU,GAAKyF,EAAU,KAAK,EAC9BzF,EAAU,GAAKyF,EAAU,MAAM,EAC/BA,EAAU,OAAO,EACjBA,EAAU,QAAQ,CACtB,CACA,SAASC,GAAW/H,EAAYqC,EAAW,CACvC,MAAMgF,EAAahF,EAAU,WAC7B,SAAS2F,EAAmBhW,EAAW,CACnC,MAAMtH,EAAS,CACX,KAAM,EACN,IAAK,EACL,MAAO,EACP,OAAQ,CACX,EACD,OAAAsH,EAAU,QAAS1oB,GAAM,CACrBohB,EAAOphB,CAAG,EAAI,KAAK,IAAI+4B,EAAU/4B,CAAG,EAAG+9B,EAAW/9B,CAAG,CAAC,CAClE,CAAS,EACMohB,CACf,CACI,OAAoBsd,EAAbhI,EAAgC,CACnC,OACA,OACH,EAAuB,CACpB,MACA,QACR,CAHK,CAIL,CACA,SAASiI,GAAS1B,EAAOlE,EAAWl3C,EAAQ4uC,EAAQ,CAChD,MAAMmO,EAAa,CAAE,EACrB,IAAIv3F,EAAG+uE,EAAMqnB,EAAQ1U,EAAK8V,EAAOliB,EACjC,IAAIt1E,EAAI,EAAG+uE,EAAO6mB,EAAM,OAAQ4B,EAAQ,EAAGx3F,EAAI+uE,EAAM,EAAE/uE,EAAE,CACrDo2F,EAASR,EAAM51F,CAAC,EAChB0hF,EAAM0U,EAAO,IACb1U,EAAI,OAAO0U,EAAO,OAAS1E,EAAU,EAAG0E,EAAO,QAAU1E,EAAU,EAAG0F,GAAWhB,EAAO,WAAY1E,CAAS,CAAC,EAC9G,KAAM,CAAE,KAAA+F,EAAO,MAAAj4D,GAAWq3D,GAAWnF,EAAWl3C,EAAQ47C,EAAQhN,CAAM,EACtEoO,GAASC,GAAQF,EAAW,OAC5BjiB,EAAUA,GAAW91C,EAChBkiD,EAAI,UACL6V,EAAW,KAAKnB,CAAM,CAElC,CACI,OAAOoB,GAASF,GAASC,EAAY7F,EAAWl3C,EAAQ4uC,CAAM,GAAK9T,CACvE,CACA,SAASoiB,GAAWhW,EAAKvqE,EAAM1U,EAAK6X,EAAOC,EAAQ,CAC/CmnE,EAAI,IAAMj/E,EACVi/E,EAAI,KAAOvqE,EACXuqE,EAAI,MAAQvqE,EAAOmD,EACnBonE,EAAI,OAASj/E,EAAM8X,EACnBmnE,EAAI,MAAQpnE,EACZonE,EAAI,OAASnnE,CACjB,CACA,SAASo9E,GAAW/B,EAAOlE,EAAWl3C,EAAQ4uC,EAAQ,CAClD,MAAMwO,EAAcp9C,EAAO,QAC3B,GAAI,CAAE,EAAA5pC,EAAI,EAAAJ,CAAC,EAAMkhF,EACjB,UAAW0E,KAAUR,EAAM,CACvB,MAAMlU,EAAM0U,EAAO,IACbr4C,EAAQqrC,EAAOgN,EAAO,KAAK,GAAK,CAClC,MAAO,EACP,OAAQ,EACR,OAAQ,CACX,EACKtoB,EAASsoB,EAAO,YAAcr4C,EAAM,QAAU,EACpD,GAAIq4C,EAAO,WAAY,CACnB,MAAM97E,EAAQo3E,EAAU,EAAI5jB,EACtBvzD,EAASwjC,EAAM,MAAQ2jC,EAAI,OAC7B57E,GAAQi4C,EAAM,KAAK,IACnBvtC,EAAIutC,EAAM,OAEV2jC,EAAI,SACJgW,GAAWhW,EAAKkW,EAAY,KAAMpnF,EAAGgqC,EAAO,WAAao9C,EAAY,MAAQA,EAAY,KAAMr9E,CAAM,EAErGm9E,GAAWhW,EAAKgQ,EAAU,KAAO3zC,EAAM,OAAQvtC,EAAG8J,EAAOC,CAAM,EAEnEwjC,EAAM,MAAQvtC,EACdutC,EAAM,QAAUzjC,EAChB9J,EAAIkxE,EAAI,MACpB,KAAe,CACH,MAAMmW,EAAUnG,EAAU,EAAI5jB,EACxBgqB,EAAS/5C,EAAM,MAAQ2jC,EAAI,MAC7B57E,GAAQi4C,EAAM,KAAK,IACnBntC,EAAImtC,EAAM,OAEV2jC,EAAI,SACJgW,GAAWhW,EAAK9wE,EAAGgnF,EAAY,IAAKE,EAAQt9C,EAAO,YAAco9C,EAAY,OAASA,EAAY,GAAG,EAErGF,GAAWhW,EAAK9wE,EAAG8gF,EAAU,IAAM3zC,EAAM,OAAQ+5C,EAAQD,CAAO,EAEpE95C,EAAM,MAAQntC,EACdmtC,EAAM,QAAU85C,EAChBjnF,EAAI8wE,EAAI,KACpB,CACA,CACIgQ,EAAU,EAAI9gF,EACd8gF,EAAU,EAAIlhF,CAClB,CACA,IAAIwlF,GAAU,CACb,OAAQpd,EAAOh0E,EAAM,CACTg0E,EAAM,QACPA,EAAM,MAAQ,CAAE,GAEpBh0E,EAAK,SAAWA,EAAK,UAAY,GACjCA,EAAK,SAAWA,EAAK,UAAY,MACjCA,EAAK,OAASA,EAAK,QAAU,EAC7BA,EAAK,QAAUA,EAAK,SAAW,UAAW,CACtC,MAAO,CACH,CACI,EAAG,EACH,KAAM8sF,EAAW,CACb9sF,EAAK,KAAK8sF,CAAS,CAC3C,CACA,CACa,CACJ,EACD9Y,EAAM,MAAM,KAAKh0E,CAAI,CACxB,EACJ,UAAWg0E,EAAOmf,EAAY,CACvB,MAAM70F,EAAQ01E,EAAM,MAAQA,EAAM,MAAM,QAAQmf,CAAU,EAAI,GAC1D70F,IAAU,IACV01E,EAAM,MAAM,OAAO11E,EAAO,CAAC,CAElC,EACJ,UAAW01E,EAAOh0E,EAAMrI,EAAS,CAC1BqI,EAAK,SAAWrI,EAAQ,SACxBqI,EAAK,SAAWrI,EAAQ,SACxBqI,EAAK,OAASrI,EAAQ,MACzB,EACJ,OAAQq8E,EAAOt+D,EAAOC,EAAQy9E,EAAY,CACnC,GAAI,CAACpf,EACD,OAEJ,MAAMx8D,EAAUo/D,GAAU5C,EAAM,QAAQ,OAAO,OAAO,EAChDqf,EAAiB,KAAK,IAAI39E,EAAQ8B,EAAQ,MAAO,CAAC,EAClD87E,EAAkB,KAAK,IAAI39E,EAAS6B,EAAQ,OAAQ,CAAC,EACrDw5E,EAAQU,GAAiB1d,EAAM,KAAK,EACpCuf,EAAgBvC,EAAM,SACtBwC,EAAkBxC,EAAM,WAC9Bj+C,GAAKihC,EAAM,MAAQ8I,GAAM,CACjB,OAAOA,EAAI,cAAiB,YAC5BA,EAAI,aAAc,CAElC,CAAS,EACD,MAAM2W,EAA0BF,EAAc,OAAO,CAAC7jC,EAAOn+C,IAAOA,EAAK,IAAI,SAAWA,EAAK,IAAI,QAAQ,UAAY,GAAQm+C,EAAQA,EAAQ,EAAG,CAAC,GAAK,EAChJ9Z,EAAS,OAAO,OAAO,CACzB,WAAYlgC,EACZ,YAAaC,EACb,QAAA6B,EACA,eAAA67E,EACA,gBAAAC,EACA,aAAcD,EAAiB,EAAII,EACnC,cAAeH,EAAkB,CAC7C,CAAS,EACKxB,EAAa,OAAO,OAAO,CAAA,EAAIt6E,CAAO,EAC5Cu6E,GAAiBD,EAAYlb,GAAUwc,CAAU,CAAC,EAClD,MAAMtG,EAAY,OAAO,OAAO,CAC5B,WAAAgF,EACA,EAAGuB,EACH,EAAGC,EACH,EAAG97E,EAAQ,KACX,EAAGA,EAAQ,GACd,EAAEA,CAAO,EACJgtE,EAAS6M,GAAckC,EAAc,OAAOC,CAAe,EAAG59C,CAAM,EAC1E88C,GAAS1B,EAAM,SAAUlE,EAAWl3C,EAAQ4uC,CAAM,EAClDkO,GAASa,EAAezG,EAAWl3C,EAAQ4uC,CAAM,EAC7CkO,GAASc,EAAiB1G,EAAWl3C,EAAQ4uC,CAAM,GACnDkO,GAASa,EAAezG,EAAWl3C,EAAQ4uC,CAAM,EAErD8N,GAAiBxF,CAAS,EAC1BiG,GAAW/B,EAAM,WAAYlE,EAAWl3C,EAAQ4uC,CAAM,EACtDsI,EAAU,GAAKA,EAAU,EACzBA,EAAU,GAAKA,EAAU,EACzBiG,GAAW/B,EAAM,eAAgBlE,EAAWl3C,EAAQ4uC,CAAM,EAC1DxQ,EAAM,UAAY,CACd,KAAM8Y,EAAU,KAChB,IAAKA,EAAU,IACf,MAAOA,EAAU,KAAOA,EAAU,EAClC,OAAQA,EAAU,IAAMA,EAAU,EAClC,OAAQA,EAAU,EAClB,MAAOA,EAAU,CACpB,EACD/5C,GAAKi+C,EAAM,UAAYQ,GAAS,CAC5B,MAAM1U,EAAM0U,EAAO,IACnB,OAAO,OAAO1U,EAAK9I,EAAM,SAAS,EAClC8I,EAAI,OAAOgQ,EAAU,EAAGA,EAAU,EAAG,CACjC,KAAM,EACN,IAAK,EACL,MAAO,EACP,OAAQ,CACxB,CAAa,CACb,CAAS,CACT,CACA,EAEA,MAAM4G,EAAa,CAClB,eAAerf,EAAQwJ,EAAa,CAAA,CACpC,eAAetoF,EAAS,CACjB,MAAO,EACf,CACC,iBAAiBy+E,EAAOlnE,EAAM9V,EAAU,CAAA,CACxC,oBAAoBg9E,EAAOlnE,EAAM9V,EAAU,CAAA,CAC3C,qBAAsB,CACf,MAAO,EACf,CACC,eAAeyO,EAASiQ,EAAOC,EAAQkoE,EAAa,CAC7C,OAAAnoE,EAAQ,KAAK,IAAI,EAAGA,GAASjQ,EAAQ,KAAK,EAC1CkQ,EAASA,GAAUlQ,EAAQ,OACpB,CACH,MAAAiQ,EACA,OAAQ,KAAK,IAAI,EAAGmoE,EAAc,KAAK,MAAMnoE,EAAQmoE,CAAW,EAAIloE,CAAM,CAC7E,CACT,CACC,WAAW0+D,EAAQ,CACZ,MAAO,EACf,CACC,aAAal3B,EAAQ,CACtB,CACA,CAEA,MAAMw2C,WAAsBD,EAAa,CACrC,eAAe1zF,EAAM,CACjB,OAAOA,GAAQA,EAAK,YAAcA,EAAK,WAAW,IAAI,GAAK,IACnE,CACI,aAAam9C,EAAQ,CACjBA,EAAO,QAAQ,UAAY,EACnC,CACA,CAEA,MAAMy2C,GAAc,WACbC,GAAc,CACjB,WAAY,YACZ,UAAW,YACX,SAAU,UACV,aAAc,aACd,YAAa,YACb,YAAa,YACb,UAAW,UACX,aAAc,WACd,WAAY,UAChB,EACMC,GAAiBp8F,GAAQA,IAAU,MAAQA,IAAU,GAC1D,SAASq8F,GAAW1f,EAAQwJ,EAAa,CACtC,MAAMz2E,EAAQitE,EAAO,MACf2f,EAAe3f,EAAO,aAAa,QAAQ,EAC3C4f,EAAc5f,EAAO,aAAa,OAAO,EAc/C,GAbAA,EAAOuf,EAAW,EAAI,CAClB,QAAS,CACL,OAAQI,EACR,MAAOC,EACP,MAAO,CACH,QAAS7sF,EAAM,QACf,OAAQA,EAAM,OACd,MAAOA,EAAM,KAC7B,CACA,CACK,EACDA,EAAM,QAAUA,EAAM,SAAW,QACjCA,EAAM,UAAYA,EAAM,WAAa,aACjC0sF,GAAcG,CAAW,EAAG,CAC5B,MAAMC,EAAe3V,GAAalK,EAAQ,OAAO,EAC7C6f,IAAiB,SACjB7f,EAAO,MAAQ6f,EAE3B,CACI,GAAIJ,GAAcE,CAAY,EAC1B,GAAI3f,EAAO,MAAM,SAAW,GACxBA,EAAO,OAASA,EAAO,OAASwJ,GAAe,OAC5C,CACH,MAAMsW,EAAgB5V,GAAalK,EAAQ,QAAQ,EAC/C8f,IAAkB,SAClB9f,EAAO,OAAS8f,EAEhC,CAEI,OAAO9f,CACX,CACA,MAAM+f,GAAuB/V,GAA+B,CACxD,QAAS,EACb,EAAI,GACJ,SAASgW,GAAYn3F,EAAM4P,EAAM9V,EAAU,CACvCkG,EAAK,iBAAiB4P,EAAM9V,EAAUo9F,EAAoB,CAC9D,CACA,SAASE,GAAetgB,EAAOlnE,EAAM9V,EAAU,CAC3Cg9E,EAAM,OAAO,oBAAoBlnE,EAAM9V,EAAUo9F,EAAoB,CACzE,CACA,SAASG,GAAgBtnF,EAAO+mE,EAAO,CACnC,MAAMlnE,EAAO+mF,GAAY5mF,EAAM,IAAI,GAAKA,EAAM,KACxC,CAAE,EAAAjB,EAAI,EAAAJ,CAAC,EAAMmxE,GAAoB9vE,EAAO+mE,CAAK,EACnD,MAAO,CACH,KAAAlnE,EACA,MAAAknE,EACA,OAAQ/mE,EACR,EAAGjB,IAAM,OAAYA,EAAI,KACzB,EAAGJ,IAAM,OAAYA,EAAI,IAC5B,CACL,CACA,SAAS4oF,GAAiBC,EAAUpgB,EAAQ,CACxC,UAAWn3E,KAAQu3F,EACf,GAAIv3F,IAASm3E,GAAUn3E,EAAK,SAASm3E,CAAM,EACvC,MAAO,EAGnB,CACA,SAASqgB,GAAqB1gB,EAAOlnE,EAAM9V,EAAU,CACjD,MAAMq9E,EAASL,EAAM,OACf2gB,EAAW,IAAI,iBAAkBC,GAAU,CAC7C,IAAI96F,EAAU,GACd,UAAWkvF,KAAS4L,EAChB96F,EAAUA,GAAW06F,GAAiBxL,EAAM,WAAY3U,CAAM,EAC9Dv6E,EAAUA,GAAW,CAAC06F,GAAiBxL,EAAM,aAAc3U,CAAM,EAEjEv6E,GACA9C,EAAU,CAEtB,CAAK,EACD,OAAA29F,EAAS,QAAQ,SAAU,CACvB,UAAW,GACX,QAAS,EACjB,CAAK,EACMA,CACX,CACA,SAASE,GAAqB7gB,EAAOlnE,EAAM9V,EAAU,CACjD,MAAMq9E,EAASL,EAAM,OACf2gB,EAAW,IAAI,iBAAkBC,GAAU,CAC7C,IAAI96F,EAAU,GACd,UAAWkvF,KAAS4L,EAChB96F,EAAUA,GAAW06F,GAAiBxL,EAAM,aAAc3U,CAAM,EAChEv6E,EAAUA,GAAW,CAAC06F,GAAiBxL,EAAM,WAAY3U,CAAM,EAE/Dv6E,GACA9C,EAAU,CAEtB,CAAK,EACD,OAAA29F,EAAS,QAAQ,SAAU,CACvB,UAAW,GACX,QAAS,EACjB,CAAK,EACMA,CACX,CACA,MAAMG,GAAqB,IAAI,IAC/B,IAAIC,GAAsB,EAC1B,SAASC,IAAiB,CACtB,MAAM/7E,EAAM,OAAO,iBACfA,IAAQ87E,KAGZA,GAAsB97E,EACtB67E,GAAmB,QAAQ,CAACz5E,EAAQ24D,IAAQ,CACpCA,EAAM,0BAA4B/6D,GAClCoC,EAAQ,CAEpB,CAAK,EACL,CACA,SAAS45E,GAA8BjhB,EAAO34D,EAAQ,CAC7Cy5E,GAAmB,MACpB,OAAO,iBAAiB,SAAUE,EAAc,EAEpDF,GAAmB,IAAI9gB,EAAO34D,CAAM,CACxC,CACA,SAAS65E,GAAgClhB,EAAO,CAC5C8gB,GAAmB,OAAO9gB,CAAK,EAC1B8gB,GAAmB,MACpB,OAAO,oBAAoB,SAAUE,EAAc,CAE3D,CACA,SAASG,GAAqBnhB,EAAOlnE,EAAM9V,EAAU,CACjD,MAAMq9E,EAASL,EAAM,OACf9oE,EAAYmpE,GAAU6H,GAAe7H,CAAM,EACjD,GAAI,CAACnpE,EACD,OAEJ,MAAMmQ,EAAS00C,GAAU,CAACr6C,EAAOC,IAAS,CACtC,MAAMrN,EAAI4C,EAAU,YACpBlU,EAAS0e,EAAOC,CAAM,EAClBrN,EAAI4C,EAAU,aACdlU,EAAU,CAEjB,EAAE,MAAM,EACH29F,EAAW,IAAI,eAAgBC,GAAU,CAC3C,MAAM5L,EAAQ4L,EAAQ,CAAC,EACjBl/E,EAAQszE,EAAM,YAAY,MAC1BrzE,EAASqzE,EAAM,YAAY,OAC7BtzE,IAAU,GAAKC,IAAW,GAG9B0F,EAAO3F,EAAOC,CAAM,CAC5B,CAAK,EACD,OAAAg/E,EAAS,QAAQzpF,CAAS,EAC1B+pF,GAA8BjhB,EAAO34D,CAAM,EACpCs5E,CACX,CACA,SAASS,GAAgBphB,EAAOlnE,EAAM6nF,EAAU,CACxCA,GACAA,EAAS,WAAY,EAErB7nF,IAAS,UACTooF,GAAgClhB,CAAK,CAE7C,CACA,SAASqhB,GAAqBrhB,EAAOlnE,EAAM9V,EAAU,CACjD,MAAMq9E,EAASL,EAAM,OACfjzE,EAAQgvD,GAAW9iD,GAAQ,CACzB+mE,EAAM,MAAQ,MACdh9E,EAASu9F,GAAgBtnF,EAAO+mE,CAAK,CAAC,CAE7C,EAAEA,CAAK,EACR,OAAAqgB,GAAYhgB,EAAQvnE,EAAM/L,CAAK,EACxBA,CACX,CACC,MAAMu0F,WAAoB5B,EAAa,CACvC,eAAerf,EAAQwJ,EAAa,CAC7B,MAAMtoF,EAAU8+E,GAAUA,EAAO,YAAcA,EAAO,WAAW,IAAI,EACrE,OAAI9+E,GAAWA,EAAQ,SAAW8+E,GAC9B0f,GAAW1f,EAAQwJ,CAAW,EACvBtoF,GAEJ,IACf,CACC,eAAeA,EAAS,CACjB,MAAM8+E,EAAS9+E,EAAQ,OACvB,GAAI,CAAC8+E,EAAOuf,EAAW,EACnB,MAAO,GAEX,MAAM5rF,EAAUqsE,EAAOuf,EAAW,EAAE,QACpC,CACI,SACA,OACZ,EAAU,QAASrvF,GAAO,CACd,MAAM7M,EAAQsQ,EAAQzD,CAAI,EACtBilE,GAAc9xE,CAAK,EACnB28E,EAAO,gBAAgB9vE,CAAI,EAE3B8vE,EAAO,aAAa9vE,EAAM7M,CAAK,CAE/C,CAAS,EACD,MAAM0P,EAAQY,EAAQ,OAAS,CAAE,EACjC,cAAO,KAAKZ,CAAK,EAAE,QAASjN,GAAM,CAC9Bk6E,EAAO,MAAMl6E,CAAG,EAAIiN,EAAMjN,CAAG,CACzC,CAAS,EACDk6E,EAAO,MAAQA,EAAO,MACtB,OAAOA,EAAOuf,EAAW,EAClB,EACf,CACC,iBAAiB5f,EAAOlnE,EAAM9V,EAAU,CACjC,KAAK,oBAAoBg9E,EAAOlnE,CAAI,EACpC,MAAMyoF,EAAUvhB,EAAM,WAAaA,EAAM,SAAW,CAAA,GAM9CptE,EALW,CACb,OAAQ8tF,GACR,OAAQG,GACR,OAAQM,EACX,EACwBroF,CAAI,GAAKuoF,GAClCE,EAAQzoF,CAAI,EAAIlG,EAAQotE,EAAOlnE,EAAM9V,CAAQ,CACrD,CACC,oBAAoBg9E,EAAOlnE,EAAM,CAC1B,MAAMyoF,EAAUvhB,EAAM,WAAaA,EAAM,SAAW,CAAA,GAC9CjzE,EAAQw0F,EAAQzoF,CAAI,EAC1B,GAAI,CAAC/L,EACD,QAEa,CACb,OAAQq0F,GACR,OAAQA,GACR,OAAQA,EACX,EACwBtoF,CAAI,GAAKwnF,IAC1BtgB,EAAOlnE,EAAM/L,CAAK,EAC1Bw0F,EAAQzoF,CAAI,EAAI,MACxB,CACI,qBAAsB,CAClB,OAAO,OAAO,gBACtB,CACC,eAAeunE,EAAQ3+D,EAAOC,EAAQkoE,EAAa,CAC5C,OAAOH,GAAerJ,EAAQ3+D,EAAOC,EAAQkoE,CAAW,CAChE,CACC,WAAWxJ,EAAQ,CACZ,MAAMnpE,EAAYgxE,GAAe7H,CAAM,EACvC,MAAO,CAAC,EAAEnpE,GAAaA,EAAU,YACzC,CACA,CAEA,SAASsqF,GAAgBnhB,EAAQ,CAC7B,MAAI,CAAC4H,GAAe,GAAM,OAAO,gBAAoB,KAAe5H,aAAkB,gBAC3Esf,GAEJ2B,EACX,CAEA,IAAAG,GAAA,KAAc,CACV,OAAO,SAAW,CAAE,EACpB,OAAO,cAAgB,OACvB,OAAS,GACT,gBAAgB1F,EAAkB,CAC9B,KAAM,CAAE,EAAA/jF,EAAI,EAAAJ,GAAO,KAAK,SAAS,CAC7B,IACA,GACH,EAAEmkF,CAAgB,EACnB,MAAO,CACH,EAAA/jF,EACA,EAAAJ,CACH,CACT,CACI,UAAW,CACP,OAAOq2C,GAAS,KAAK,CAAC,GAAKA,GAAS,KAAK,CAAC,CAClD,CACI,SAAStjD,EAAO+2F,EAAO,CACnB,MAAMjU,EAAQ,KAAK,YACnB,GAAI,CAACiU,GAAS,CAACjU,EAEX,OAAO,KAEX,MAAMn8B,EAAM,CAAE,EACd,OAAA3mD,EAAM,QAAS4F,GAAO,CAClB+gD,EAAI/gD,CAAI,EAAIk9E,EAAMl9E,CAAI,GAAKk9E,EAAMl9E,CAAI,EAAE,OAAQ,EAAGk9E,EAAMl9E,CAAI,EAAE,IAAM,KAAKA,CAAI,CACzF,CAAS,EACM+gD,CACf,CACA,EAEA,SAASqwC,GAASvS,EAAOvR,EAAO,CAC5B,MAAM+jB,EAAWxS,EAAM,QAAQ,MACzByS,EAAqBC,GAAkB1S,CAAK,EAC5C2S,EAAa,KAAK,IAAIH,EAAS,eAAiBC,EAAoBA,CAAkB,EACtFG,EAAeJ,EAAS,MAAM,QAAUK,GAAgBpkB,CAAK,EAAI,CAAE,EACnEqkB,EAAkBF,EAAa,OAC/BxmE,EAAQwmE,EAAa,CAAC,EACtBrnB,EAAOqnB,EAAaE,EAAkB,CAAC,EACvCC,EAAW,CAAE,EACnB,GAAID,EAAkBH,EAClB,OAAAK,GAAWvkB,EAAOskB,EAAUH,EAAcE,EAAkBH,CAAU,EAC/DI,EAEX,MAAMnJ,EAAUqJ,GAAiBL,EAAcnkB,EAAOkkB,CAAU,EAChE,GAAIG,EAAkB,EAAG,CACrB,IAAI96F,EAAG+uE,EACP,MAAMmsB,EAAkBJ,EAAkB,EAAI,KAAK,OAAOvnB,EAAOn/C,IAAU0mE,EAAkB,EAAE,EAAI,KAEnG,IADAK,GAAK1kB,EAAOskB,EAAUnJ,EAASxjB,GAAc8sB,CAAe,EAAI,EAAI9mE,EAAQ8mE,EAAiB9mE,CAAK,EAC9Fp0B,EAAI,EAAG+uE,EAAO+rB,EAAkB,EAAG96F,EAAI+uE,EAAM/uE,IAC7Cm7F,GAAK1kB,EAAOskB,EAAUnJ,EAASgJ,EAAa56F,CAAC,EAAG46F,EAAa56F,EAAI,CAAC,CAAC,EAEvE,OAAAm7F,GAAK1kB,EAAOskB,EAAUnJ,EAASre,EAAMnF,GAAc8sB,CAAe,EAAIzkB,EAAM,OAASlD,EAAO2nB,CAAe,EACpGH,CACf,CACI,OAAAI,GAAK1kB,EAAOskB,EAAUnJ,CAAO,EACtBmJ,CACX,CACA,SAASL,GAAkB1S,EAAO,CAC9B,MAAM3qE,EAAS2qE,EAAM,QAAQ,OACvBoT,EAAapT,EAAM,UAAW,EAC9BqT,EAAWrT,EAAM,QAAUoT,GAAc/9E,EAAS,EAAI,GACtDi+E,EAAWtT,EAAM,WAAaoT,EACpC,OAAO,KAAK,MAAM,KAAK,IAAIC,EAAUC,CAAQ,CAAC,CAClD,CACC,SAASL,GAAiBL,EAAcnkB,EAAOkkB,EAAY,CACxD,MAAMY,EAAmBC,GAAeZ,CAAY,EAC9ChJ,EAAUnb,EAAM,OAASkkB,EAC/B,GAAI,CAACY,EACD,OAAO,KAAK,IAAI3J,EAAS,CAAC,EAE9B,MAAM6J,EAAUvqB,GAAWqqB,CAAgB,EAC3C,QAAQv7F,EAAI,EAAG+uE,EAAO0sB,EAAQ,OAAS,EAAGz7F,EAAI+uE,EAAM/uE,IAAI,CACpD,MAAM8mF,EAAS2U,EAAQz7F,CAAC,EACxB,GAAI8mF,EAAS8K,EACT,OAAO9K,CAEnB,CACI,OAAO,KAAK,IAAI8K,EAAS,CAAC,CAC9B,CACC,SAASiJ,GAAgBpkB,EAAO,CAC7B,MAAMx2E,EAAS,CAAE,EACjB,IAAID,EAAG+uE,EACP,IAAI/uE,EAAI,EAAG+uE,EAAO0H,EAAM,OAAQz2E,EAAI+uE,EAAM/uE,IAClCy2E,EAAMz2E,CAAC,EAAE,OACTC,EAAO,KAAKD,CAAC,EAGrB,OAAOC,CACX,CACC,SAAS+6F,GAAWvkB,EAAOskB,EAAUH,EAAchJ,EAAS,CACzD,IAAI73F,EAAQ,EACRob,EAAOylF,EAAa,CAAC,EACrB56F,EAEJ,IADA4xF,EAAU,KAAK,KAAKA,CAAO,EACvB5xF,EAAI,EAAGA,EAAIy2E,EAAM,OAAQz2E,IACrBA,IAAMmV,IACN4lF,EAAS,KAAKtkB,EAAMz2E,CAAC,CAAC,EACtBjG,IACAob,EAAOylF,EAAa7gG,EAAQ63F,CAAO,EAG/C,CACC,SAASuJ,GAAK1kB,EAAOskB,EAAUnJ,EAAS8J,EAAYC,EAAU,CAC3D,MAAMl3F,EAAQ8pE,GAAemtB,EAAY,CAAC,EACpCh3F,EAAM,KAAK,IAAI6pE,GAAeotB,EAAUllB,EAAM,MAAM,EAAGA,EAAM,MAAM,EACzE,IAAI18E,EAAQ,EACR0L,EAAQzF,EAAGmV,EAOf,IANAy8E,EAAU,KAAK,KAAKA,CAAO,EACvB+J,IACAl2F,EAASk2F,EAAWD,EACpB9J,EAAUnsF,EAAS,KAAK,MAAMA,EAASmsF,CAAO,GAElDz8E,EAAO1Q,EACD0Q,EAAO,GACTpb,IACAob,EAAO,KAAK,MAAM1Q,EAAQ1K,EAAQ63F,CAAO,EAE7C,IAAI5xF,EAAI,KAAK,IAAIyE,EAAO,CAAC,EAAGzE,EAAI0E,EAAK1E,IAC7BA,IAAMmV,IACN4lF,EAAS,KAAKtkB,EAAMz2E,CAAC,CAAC,EACtBjG,IACAob,EAAO,KAAK,MAAM1Q,EAAQ1K,EAAQ63F,CAAO,EAGrD,CACC,SAAS4J,GAAexyC,EAAK,CAC1B,MAAM/uD,EAAM+uD,EAAI,OAChB,IAAIhpD,EAAG47F,EACP,GAAI3hG,EAAM,EACN,MAAO,GAEX,IAAI2hG,EAAO5yC,EAAI,CAAC,EAAGhpD,EAAI,EAAGA,EAAI/F,EAAK,EAAE+F,EACjC,GAAIgpD,EAAIhpD,CAAC,EAAIgpD,EAAIhpD,EAAI,CAAC,IAAM47F,EACxB,MAAO,GAGf,OAAOA,CACX,CAEA,MAAMC,GAAgB9xD,GAAQA,IAAU,OAAS,QAAUA,IAAU,QAAU,OAASA,EAClF+xD,GAAiB,CAAC9T,EAAOyG,EAAMpxE,IAASoxE,IAAS,OAASA,IAAS,OAASzG,EAAMyG,CAAI,EAAIpxE,EAAS2qE,EAAMyG,CAAI,EAAIpxE,EACtH,SAAS0+E,GAAO/yC,EAAKgzC,EAAU,CAC5B,MAAM/7F,EAAS,CAAE,EACXg8F,EAAYjzC,EAAI,OAASgzC,EACzB/hG,EAAM+uD,EAAI,OAChB,IAAIhpD,EAAI,EACR,KAAMA,EAAI/F,EAAK+F,GAAKi8F,EAChBh8F,EAAO,KAAK+oD,EAAI,KAAK,MAAMhpD,CAAC,CAAC,CAAC,EAElC,OAAOC,CACX,CACC,SAASi8F,GAAoBlU,EAAO9kF,EAAOi5F,EAAiB,CACzD,MAAM12F,EAASuiF,EAAM,MAAM,OACrBoU,EAAa,KAAK,IAAIl5F,EAAOuC,EAAS,CAAC,EACvChB,EAAQujF,EAAM,YACdtjF,EAAMsjF,EAAM,UACZnX,EAAU,KAChB,IAAIwrB,EAAYrU,EAAM,gBAAgBoU,CAAU,EAC5C/+E,EACJ,GAAI,EAAA8+E,IACI12F,IAAW,EACX4X,EAAS,KAAK,IAAIg/E,EAAY53F,EAAOC,EAAM23F,CAAS,EAC7Cn5F,IAAU,EACjBma,GAAU2qE,EAAM,gBAAgB,CAAC,EAAIqU,GAAa,EAElDh/E,GAAUg/E,EAAYrU,EAAM,gBAAgBoU,EAAa,CAAC,GAAK,EAEnEC,GAAaD,EAAal5F,EAAQma,EAAS,CAACA,EACxCg/E,EAAY53F,EAAQosE,GAAWwrB,EAAY33F,EAAMmsE,IAIzD,OAAOwrB,CACX,CACC,SAASC,GAAeC,EAAQ92F,EAAQ,CACrCkyC,GAAK4kD,EAASp2C,GAAQ,CAClB,MAAMgyB,EAAKhyB,EAAM,GACXuyB,EAAQP,EAAG,OAAS,EAC1B,IAAIn4E,EACJ,GAAI04E,EAAQjzE,EAAQ,CAChB,IAAIzF,EAAI,EAAGA,EAAI04E,EAAO,EAAE14E,EACpB,OAAOmmD,EAAM,KAAKgyB,EAAGn4E,CAAC,CAAC,EAE3Bm4E,EAAG,OAAO,EAAGO,CAAK,CAC9B,CACA,CAAK,CACL,CACC,SAAS8jB,GAAkBjgG,EAAS,CACjC,OAAOA,EAAQ,UAAYA,EAAQ,WAAa,CACpD,CACC,SAASkgG,GAAelgG,EAASyK,EAAU,CACxC,GAAI,CAACzK,EAAQ,QACT,MAAO,GAEX,MAAM07E,EAAOwD,GAAOl/E,EAAQ,KAAMyK,CAAQ,EACpCoV,EAAUo/D,GAAUj/E,EAAQ,OAAO,EAEzC,OADcoD,GAAQpD,EAAQ,IAAI,EAAIA,EAAQ,KAAK,OAAS,GAC7C07E,EAAK,WAAa77D,EAAQ,MAC7C,CACA,SAASsgF,GAAmBjwF,EAAQu7E,EAAO,CACvC,OAAO7mF,GAAcsL,EAAQ,CACzB,MAAAu7E,EACA,KAAM,OACd,CAAK,CACL,CACA,SAAS2U,GAAkBlwF,EAAQvJ,EAAO05F,EAAM,CAC5C,OAAOz7F,GAAcsL,EAAQ,CACzB,KAAAmwF,EACA,MAAA15F,EACA,KAAM,MACd,CAAK,CACL,CACA,SAAS25F,GAAW9yD,EAAO5rB,EAAUwwD,EAAS,CAC1C,IAAIzkB,EAAMmqB,GAAmBtqC,CAAK,EAClC,OAAI4kC,GAAWxwD,IAAa,SAAW,CAACwwD,GAAWxwD,IAAa,WAC5D+rC,EAAM2xC,GAAa3xC,CAAG,GAEnBA,CACX,CACA,SAAS4yC,GAAU9U,EAAO3qE,EAAQc,EAAU4rB,EAAO,CAC/C,KAAM,CAAE,IAAAtnC,EAAM,KAAA0U,EAAO,OAAAF,EAAS,MAAAC,EAAQ,MAAA0hE,CAAK,EAAMoP,EAC3C,CAAE,UAAA0J,EAAY,OAAAzH,CAAM,EAAMrR,EAChC,IAAIa,EAAW,EACXwI,EAAU8a,EAAQC,EACtB,MAAMziF,EAAStD,EAASxU,EAClB6X,EAAQpD,EAAQC,EACtB,GAAI6wE,EAAM,eAAgB,CAEtB,GADA+U,EAASzoB,GAAevqC,EAAO5yB,EAAMD,CAAK,EACtC4vC,GAAS3oC,CAAQ,EAAG,CACpB,MAAM8+E,EAAiB,OAAO,KAAK9+E,CAAQ,EAAE,CAAC,EACxC7hB,EAAQ6hB,EAAS8+E,CAAc,EACrCD,EAAS/S,EAAOgT,CAAc,EAAE,iBAAiB3gG,CAAK,EAAIie,EAAS8C,CAC/E,MAAmBc,IAAa,SACpB6+E,GAAUtL,EAAU,OAASA,EAAU,KAAO,EAAIn3E,EAAS8C,EAE3D2/E,EAASlB,GAAe9T,EAAO7pE,EAAUd,CAAM,EAEnD4kE,EAAW/qE,EAAQC,CAC3B,KAAW,CACH,GAAI2vC,GAAS3oC,CAAQ,EAAG,CACpB,MAAM++E,EAAkB,OAAO,KAAK/+E,CAAQ,EAAE,CAAC,EACzCg/E,EAASh/E,EAAS++E,CAAe,EACvCH,EAAS9S,EAAOiT,CAAe,EAAE,iBAAiBC,CAAM,EAAI7iF,EAAQ+C,CAChF,MAAmBc,IAAa,SACpB4+E,GAAUrL,EAAU,KAAOA,EAAU,OAAS,EAAIp3E,EAAQ+C,EAE1D0/E,EAASjB,GAAe9T,EAAO7pE,EAAUd,CAAM,EAEnD2/E,EAAS1oB,GAAevqC,EAAO9yB,EAAQxU,CAAG,EAC1Cg3E,EAAWt7D,IAAa,OAAS,CAACoyD,GAAUA,EACpD,CACI,MAAO,CACH,OAAAwsB,EACA,OAAAC,EACA,SAAA/a,EACA,SAAAxI,CACH,CACL,CACA,MAAM2jB,WAAcC,EAAQ,CACxB,YAAYpW,EAAI,CACZ,MAAO,EACN,KAAK,GAAKA,EAAI,GACd,KAAK,KAAOA,EAAI,KAChB,KAAK,QAAU,OACf,KAAK,IAAMA,EAAI,IACf,KAAK,MAAQA,EAAI,MACjB,KAAK,IAAM,OACX,KAAK,OAAS,OACd,KAAK,KAAO,OACZ,KAAK,MAAQ,OACb,KAAK,MAAQ,OACb,KAAK,OAAS,OACf,KAAK,SAAW,CACZ,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,CACX,EACA,KAAK,SAAW,OAChB,KAAK,UAAY,OACjB,KAAK,WAAa,OAClB,KAAK,cAAgB,OACrB,KAAK,YAAc,OACnB,KAAK,aAAe,OACpB,KAAK,KAAO,OACZ,KAAK,cAAgB,OACtB,KAAK,IAAM,OACX,KAAK,IAAM,OACX,KAAK,OAAS,OACb,KAAK,MAAQ,CAAE,EACf,KAAK,eAAiB,KACtB,KAAK,YAAc,KACnB,KAAK,YAAc,KACpB,KAAK,QAAU,EACf,KAAK,WAAa,EAClB,KAAK,kBAAoB,CAAE,EAC1B,KAAK,YAAc,OACnB,KAAK,UAAY,OAClB,KAAK,eAAiB,GACtB,KAAK,SAAW,OAChB,KAAK,SAAW,OAChB,KAAK,cAAgB,OACrB,KAAK,cAAgB,OACrB,KAAK,aAAe,EACpB,KAAK,aAAe,EACpB,KAAK,OAAS,CAAE,EAChB,KAAK,kBAAoB,GACzB,KAAK,SAAW,MACxB,CACC,KAAK1qF,EAAS,CACP,KAAK,QAAUA,EAAQ,WAAW,KAAK,WAAU,CAAE,EACnD,KAAK,KAAOA,EAAQ,KACpB,KAAK,SAAW,KAAK,MAAMA,EAAQ,GAAG,EACtC,KAAK,SAAW,KAAK,MAAMA,EAAQ,GAAG,EACtC,KAAK,cAAgB,KAAK,MAAMA,EAAQ,YAAY,EACpD,KAAK,cAAgB,KAAK,MAAMA,EAAQ,YAAY,CAC5D,CACC,MAAM+gG,EAAKp6F,EAAO,CACX,OAAOo6F,CACf,CACC,eAAgB,CACT,GAAI,CAAE,SAAAC,EAAW,SAAAC,EAAW,cAAAC,EAAgB,cAAAC,CAAgB,EAAG,KAC/D,OAAAH,EAAWjvB,GAAgBivB,EAAU,OAAO,iBAAiB,EAC7DC,EAAWlvB,GAAgBkvB,EAAU,OAAO,iBAAiB,EAC7DC,EAAgBnvB,GAAgBmvB,EAAe,OAAO,iBAAiB,EACvEC,EAAgBpvB,GAAgBovB,EAAe,OAAO,iBAAiB,EAChE,CACH,IAAKpvB,GAAgBivB,EAAUE,CAAa,EAC5C,IAAKnvB,GAAgBkvB,EAAUE,CAAa,EAC5C,WAAYrvB,GAAekvB,CAAQ,EACnC,WAAYlvB,GAAemvB,CAAQ,CACtC,CACT,CACC,UAAUhT,EAAU,CACb,GAAI,CAAE,IAAA/wE,EAAM,IAAAD,EAAM,WAAAu7D,EAAa,WAAAC,CAAa,EAAG,KAAK,cAAe,EAC/DrM,EACJ,GAAIoM,GAAcC,EACd,MAAO,CACH,IAAAv7D,EACA,IAAAD,CACH,EAEL,MAAMmkF,EAAQ,KAAK,wBAAyB,EAC5C,QAAQ39F,EAAI,EAAG+uE,EAAO4uB,EAAM,OAAQ39F,EAAI+uE,EAAM,EAAE/uE,EAC5C2oE,EAAQg1B,EAAM39F,CAAC,EAAE,WAAW,UAAU,KAAMwqF,CAAQ,EAC/CzV,IACDt7D,EAAM,KAAK,IAAIA,EAAKkvD,EAAM,GAAG,GAE5BqM,IACDx7D,EAAM,KAAK,IAAIA,EAAKmvD,EAAM,GAAG,GAGrC,OAAAlvD,EAAMu7D,GAAcv7D,EAAMD,EAAMA,EAAMC,EACtCD,EAAMu7D,GAAct7D,EAAMD,EAAMC,EAAMD,EAC/B,CACH,IAAK80D,GAAgB70D,EAAK60D,GAAgB90D,EAAKC,CAAG,CAAC,EACnD,IAAK60D,GAAgB90D,EAAK80D,GAAgB70D,EAAKD,CAAG,CAAC,CACtD,CACT,CACC,YAAa,CACN,MAAO,CACH,KAAM,KAAK,aAAe,EAC1B,IAAK,KAAK,YAAc,EACxB,MAAO,KAAK,cAAgB,EAC5B,OAAQ,KAAK,eAAiB,CACjC,CACT,CACC,UAAW,CACJ,OAAO,KAAK,KACpB,CACC,WAAY,CACL,MAAMtL,EAAO,KAAK,MAAM,KACxB,OAAO,KAAK,QAAQ,SAAW,KAAK,aAAc,EAAGA,EAAK,QAAUA,EAAK,UAAYA,EAAK,QAAU,CAAE,CAC9G,CACC,cAAcwjF,EAAY,KAAK,MAAM,UAAW,CAEzC,OADc,KAAK,cAAgB,KAAK,YAAc,KAAK,mBAAmBA,CAAS,EAE/F,CACI,cAAe,CACX,KAAK,OAAS,CAAE,EAChB,KAAK,kBAAoB,EACjC,CACI,cAAe,CACX9yD,GAAS,KAAK,QAAQ,aAAc,CAChC,IACZ,CAAS,CACT,CACC,OAAOqjD,EAAUC,EAAW9/C,EAAS,CAC9B,KAAM,CAAE,YAAA05C,EAAc,MAAAD,EAAQ,MAAO2e,CAAQ,EAAM,KAAK,QAClDoD,EAAapD,EAAS,WAC5B,KAAK,aAAc,EACnB,KAAK,SAAWvY,EAChB,KAAK,UAAYC,EACjB,KAAK,SAAW9/C,EAAU,OAAO,OAAO,CACpC,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,CACX,EAAEA,CAAO,EACV,KAAK,MAAQ,KACb,KAAK,YAAc,KACnB,KAAK,eAAiB,KACtB,KAAK,YAAc,KACnB,KAAK,oBAAqB,EAC1B,KAAK,cAAe,EACpB,KAAK,mBAAoB,EACzB,KAAK,WAAa,KAAK,aAAY,EAAK,KAAK,MAAQA,EAAQ,KAAOA,EAAQ,MAAQ,KAAK,OAASA,EAAQ,IAAMA,EAAQ,OACnH,KAAK,oBACN,KAAK,iBAAkB,EACvB,KAAK,oBAAqB,EAC1B,KAAK,gBAAiB,EACtB,KAAK,OAASu5C,GAAU,KAAME,EAAOC,CAAW,EAChD,KAAK,kBAAoB,IAE7B,KAAK,iBAAkB,EACvB,KAAK,MAAQ,KAAK,WAAY,GAAI,CAAE,EACpC,KAAK,gBAAiB,EACtB,MAAM+hB,EAAkBD,EAAa,KAAK,MAAM,OAChD,KAAK,sBAAsBC,EAAkB9B,GAAO,KAAK,MAAO6B,CAAU,EAAI,KAAK,KAAK,EACxF,KAAK,UAAW,EAChB,KAAK,6BAA8B,EACnC,KAAK,uBAAwB,EAC7B,KAAK,4BAA6B,EAC9BpD,EAAS,UAAYA,EAAS,UAAYA,EAAS,SAAW,UAC9D,KAAK,MAAQD,GAAS,KAAM,KAAK,KAAK,EACtC,KAAK,YAAc,KACnB,KAAK,cAAe,GAEpBsD,GACA,KAAK,sBAAsB,KAAK,KAAK,EAEzC,KAAK,UAAW,EAChB,KAAK,IAAK,EACV,KAAK,SAAU,EACf,KAAK,YAAa,CAC1B,CACC,WAAY,CACL,IAAIC,EAAgB,KAAK,QAAQ,QAC7BhO,EAAYC,EACZ,KAAK,gBACLD,EAAa,KAAK,KAClBC,EAAW,KAAK,QAEhBD,EAAa,KAAK,IAClBC,EAAW,KAAK,OAChB+N,EAAgB,CAACA,GAErB,KAAK,YAAchO,EACnB,KAAK,UAAYC,EACjB,KAAK,eAAiB+N,EACtB,KAAK,QAAU/N,EAAWD,EAC1B,KAAK,eAAiB,KAAK,QAAQ,aAC3C,CACI,aAAc,CACVlxD,GAAS,KAAK,QAAQ,YAAa,CAC/B,IACZ,CAAS,CACT,CACI,qBAAsB,CAClBA,GAAS,KAAK,QAAQ,oBAAqB,CACvC,IACZ,CAAS,CACT,CACI,eAAgB,CACR,KAAK,gBACL,KAAK,MAAQ,KAAK,SAClB,KAAK,KAAO,EACZ,KAAK,MAAQ,KAAK,QAElB,KAAK,OAAS,KAAK,UACnB,KAAK,IAAM,EACX,KAAK,OAAS,KAAK,QAEvB,KAAK,YAAc,EACnB,KAAK,WAAa,EAClB,KAAK,aAAe,EACpB,KAAK,cAAgB,CAC7B,CACI,oBAAqB,CACjBA,GAAS,KAAK,QAAQ,mBAAoB,CACtC,IACZ,CAAS,CACT,CACI,WAAW93B,EAAM,CACb,KAAK,MAAM,cAAcA,EAAM,KAAK,WAAU,CAAE,EAChD83B,GAAS,KAAK,QAAQ93B,CAAI,EAAG,CACzB,IACZ,CAAS,CACT,CACI,kBAAmB,CACf,KAAK,WAAW,kBAAkB,CAC1C,CACI,qBAAsB,CAAA,CACtB,iBAAkB,CACd,KAAK,WAAW,iBAAiB,CACzC,CACI,kBAAmB,CACf,KAAK,WAAW,kBAAkB,CAC1C,CACC,YAAa,CACN,MAAO,CAAE,CACjB,CACI,iBAAkB,CACd,KAAK,WAAW,iBAAiB,CACzC,CACI,6BAA8B,CAC1B83B,GAAS,KAAK,QAAQ,4BAA6B,CAC/C,IACZ,CAAS,CACT,CACC,mBAAmB63C,EAAO,CACnB,MAAM+jB,EAAW,KAAK,QAAQ,MAC9B,IAAIx6F,EAAG+uE,EAAM6tB,EACb,IAAI58F,EAAI,EAAG+uE,EAAO0H,EAAM,OAAQz2E,EAAI+uE,EAAM/uE,IACtC48F,EAAOnmB,EAAMz2E,CAAC,EACd48F,EAAK,MAAQh+D,GAAS47D,EAAS,SAAU,CACrCoC,EAAK,MACL58F,EACAy2E,CACH,EAAE,IAAI,CAEnB,CACI,4BAA6B,CACzB73C,GAAS,KAAK,QAAQ,2BAA4B,CAC9C,IACZ,CAAS,CACT,CACI,8BAA+B,CAC3BA,GAAS,KAAK,QAAQ,6BAA8B,CAChD,IACZ,CAAS,CACT,CACI,wBAAyB,CACrB,MAAMriC,EAAU,KAAK,QACfi+F,EAAWj+F,EAAQ,MACnBwhG,EAAW,KAAK,MAAM,OACtBC,EAAcxD,EAAS,aAAe,EACtCyD,EAAczD,EAAS,YAC7B,IAAI0D,EAAgBF,EAChBG,EAAWjc,EAAWkc,EAC1B,GAAI,CAAC,KAAK,cAAgB,CAAC5D,EAAS,SAAWwD,GAAeC,GAAeF,GAAY,GAAK,CAAC,KAAK,aAAY,EAAI,CAChH,KAAK,cAAgBC,EACrB,MACZ,CACQ,MAAMK,EAAa,KAAK,eAAgB,EAClCC,EAAgBD,EAAW,OAAO,MAClCE,EAAiBF,EAAW,QAAQ,OACpCpc,EAAWnP,GAAY,KAAK,MAAM,MAAQwrB,EAAe,EAAG,KAAK,QAAQ,EAC/EH,EAAY5hG,EAAQ,OAAS,KAAK,SAAWwhG,EAAW9b,GAAY8b,EAAW,GAC3EO,EAAgB,EAAIH,IACpBA,EAAYlc,GAAY8b,GAAYxhG,EAAQ,OAAS,GAAM,IAC3D2lF,EAAY,KAAK,UAAYsa,GAAkBjgG,EAAQ,IAAI,EAAIi+F,EAAS,QAAUiC,GAAelgG,EAAQ,MAAO,KAAK,MAAM,QAAQ,IAAI,EACvI6hG,EAAmB,KAAK,KAAKE,EAAgBA,EAAgBC,EAAiBA,CAAc,EAC5FL,EAAgBzsB,GAAU,KAAK,IAAI,KAAK,KAAKqB,IAAaurB,EAAW,QAAQ,OAAS,GAAKF,EAAW,GAAI,CAAC,CAAC,EAAG,KAAK,KAAKrrB,GAAYoP,EAAYkc,EAAkB,GAAI,CAAC,CAAC,EAAI,KAAK,KAAKtrB,GAAYyrB,EAAiBH,EAAkB,GAAI,CAAC,CAAC,CAAC,CAAC,EAC9OF,EAAgB,KAAK,IAAIF,EAAa,KAAK,IAAIC,EAAaC,CAAa,CAAC,GAE9E,KAAK,cAAgBA,CAC7B,CACI,6BAA8B,CAC1Bt/D,GAAS,KAAK,QAAQ,4BAA6B,CAC/C,IACZ,CAAS,CACT,CACI,eAAgB,CAAA,CAChB,WAAY,CACRA,GAAS,KAAK,QAAQ,UAAW,CAC7B,IACZ,CAAS,CACT,CACI,KAAM,CACF,MAAMu0D,EAAU,CACZ,MAAO,EACP,OAAQ,CACX,EACK,CAAE,MAAAva,EAAQ,QAAS,CAAE,MAAO4hB,EAAW,MAAOgE,EAAY,KAAMC,CAAQ,CAAM,EAAG,KACjFtsD,EAAU,KAAK,WAAY,EAC3BusD,EAAe,KAAK,aAAc,EACxC,GAAIvsD,EAAS,CACT,MAAMwsD,EAAclC,GAAe+B,EAAW5lB,EAAM,QAAQ,IAAI,EAQhE,GAPI8lB,GACAvL,EAAQ,MAAQ,KAAK,SACrBA,EAAQ,OAASqJ,GAAkBiC,CAAQ,EAAIE,IAE/CxL,EAAQ,OAAS,KAAK,UACtBA,EAAQ,MAAQqJ,GAAkBiC,CAAQ,EAAIE,GAE9CnE,EAAS,SAAW,KAAK,MAAM,OAAQ,CACvC,KAAM,CAAE,MAAApmE,EAAQ,KAAAm/C,EAAO,OAAAqrB,EAAS,QAAAC,CAAU,EAAG,KAAK,eAAgB,EAC5DC,EAActE,EAAS,QAAU,EACjCuE,EAAextB,GAAU,KAAK,aAAa,EAC3CytB,EAAM,KAAK,IAAID,CAAY,EAC3BE,EAAM,KAAK,IAAIF,CAAY,EACjC,GAAIL,EAAc,CACd,MAAMQ,EAAc1E,EAAS,OAAS,EAAIyE,EAAML,EAAO,MAAQI,EAAMH,EAAQ,OAC7E1L,EAAQ,OAAS,KAAK,IAAI,KAAK,UAAWA,EAAQ,OAAS+L,EAAcJ,CAAW,CACxG,KAAuB,CACH,MAAMK,EAAa3E,EAAS,OAAS,EAAIwE,EAAMJ,EAAO,MAAQK,EAAMJ,EAAQ,OAC5E1L,EAAQ,MAAQ,KAAK,IAAI,KAAK,SAAUA,EAAQ,MAAQgM,EAAaL,CAAW,CACpG,CACgB,KAAK,kBAAkB1qE,EAAOm/C,EAAM0rB,EAAKD,CAAG,CAC5D,CACA,CACQ,KAAK,eAAgB,EACjBN,GACA,KAAK,MAAQ,KAAK,QAAU9lB,EAAM,MAAQ,KAAK,SAAS,KAAO,KAAK,SAAS,MAC7E,KAAK,OAASua,EAAQ,SAEtB,KAAK,MAAQA,EAAQ,MACrB,KAAK,OAAS,KAAK,QAAUva,EAAM,OAAS,KAAK,SAAS,IAAM,KAAK,SAAS,OAE1F,CACI,kBAAkBxkD,EAAOm/C,EAAM0rB,EAAKD,EAAK,CACrC,KAAM,CAAE,MAAO,CAAE,MAAAj1D,EAAQ,QAAA3tB,CAAO,EAAM,SAAA+B,CAAQ,EAAM,KAAK,QACnDihF,EAAY,KAAK,gBAAkB,EACnCC,EAAmBlhF,IAAa,OAAS,KAAK,OAAS,IAC7D,GAAI,KAAK,eAAgB,CACrB,MAAMmhF,EAAa,KAAK,gBAAgB,CAAC,EAAI,KAAK,KAC5CC,EAAc,KAAK,MAAQ,KAAK,gBAAgB,KAAK,MAAM,OAAS,CAAC,EAC3E,IAAI3tD,EAAc,EACdF,EAAe,EACf0tD,EACIC,GACAztD,EAAcotD,EAAM5qE,EAAM,MAC1Bsd,EAAeutD,EAAM1rB,EAAK,SAE1B3hC,EAAcqtD,EAAM7qE,EAAM,OAC1Bsd,EAAestD,EAAMzrB,EAAK,OAEvBxpC,IAAU,QACjB2H,EAAe6hC,EAAK,MACbxpC,IAAU,MACjB6H,EAAcxd,EAAM,MACb2V,IAAU,UACjB6H,EAAcxd,EAAM,MAAQ,EAC5Bsd,EAAe6hC,EAAK,MAAQ,GAEhC,KAAK,YAAc,KAAK,KAAK3hC,EAAc0tD,EAAaljF,GAAW,KAAK,OAAS,KAAK,MAAQkjF,GAAa,CAAC,EAC5G,KAAK,aAAe,KAAK,KAAK5tD,EAAe6tD,EAAcnjF,GAAW,KAAK,OAAS,KAAK,MAAQmjF,GAAc,CAAC,CAC5H,KAAe,CACH,IAAIC,EAAajsB,EAAK,OAAS,EAC3BksB,EAAgBrrE,EAAM,OAAS,EAC/B2V,IAAU,SACVy1D,EAAa,EACbC,EAAgBrrE,EAAM,QACf2V,IAAU,QACjBy1D,EAAajsB,EAAK,OAClBksB,EAAgB,GAEpB,KAAK,WAAaD,EAAapjF,EAC/B,KAAK,cAAgBqjF,EAAgBrjF,CACjD,CACA,CACC,gBAAiB,CACN,KAAK,WACL,KAAK,SAAS,KAAO,KAAK,IAAI,KAAK,YAAa,KAAK,SAAS,IAAI,EAClE,KAAK,SAAS,IAAM,KAAK,IAAI,KAAK,WAAY,KAAK,SAAS,GAAG,EAC/D,KAAK,SAAS,MAAQ,KAAK,IAAI,KAAK,aAAc,KAAK,SAAS,KAAK,EACrE,KAAK,SAAS,OAAS,KAAK,IAAI,KAAK,cAAe,KAAK,SAAS,MAAM,EAEpF,CACI,UAAW,CACPwiB,GAAS,KAAK,QAAQ,SAAU,CAC5B,IACZ,CAAS,CACT,CACC,cAAe,CACR,KAAM,CAAE,KAAAliB,EAAO,SAAAyB,CAAW,EAAG,KAAK,QAClC,OAAOA,IAAa,OAASA,IAAa,UAAYzB,IAAS,GACvE,CACC,YAAa,CACN,OAAO,KAAK,QAAQ,QAC5B,CACC,sBAAsB+5D,EAAO,CACtB,KAAK,4BAA6B,EAClC,KAAK,mBAAmBA,CAAK,EAC7B,IAAIz2E,EAAG+uE,EACP,IAAI/uE,EAAI,EAAG+uE,EAAO0H,EAAM,OAAQz2E,EAAI+uE,EAAM/uE,IAClCouE,GAAcqI,EAAMz2E,CAAC,EAAE,KAAK,IAC5By2E,EAAM,OAAOz2E,EAAG,CAAC,EACjB+uE,IACA/uE,KAGR,KAAK,2BAA4B,CACzC,CACC,gBAAiB,CACV,IAAIq+F,EAAa,KAAK,YACtB,GAAI,CAACA,EAAY,CACb,MAAMT,EAAa,KAAK,QAAQ,MAAM,WACtC,IAAInnB,EAAQ,KAAK,MACbmnB,EAAannB,EAAM,SACnBA,EAAQslB,GAAOtlB,EAAOmnB,CAAU,GAEpC,KAAK,YAAcS,EAAa,KAAK,mBAAmB5nB,EAAOA,EAAM,MAAM,CACvF,CACQ,OAAO4nB,CACf,CACC,mBAAmB5nB,EAAOhxE,EAAQ,CAC3B,KAAM,CAAE,IAAA0C,EAAM,kBAAmBo0F,CAAS,EAAG,KACvCmD,EAAS,CAAE,EACXC,EAAU,CAAE,EAClB,IAAIC,EAAkB,EAClBC,EAAmB,EACnB7/F,EAAGmE,EAAGq0E,EAAMxsC,EAAO8zD,EAAUC,EAAY55C,EAAO65C,EAAY1lF,EAAOC,EAAQ0lF,EAC/E,IAAIjgG,EAAI,EAAGA,EAAIyF,EAAQ,EAAEzF,EAAE,CAUvB,GATAgsC,EAAQyqC,EAAMz2E,CAAC,EAAE,MACjB8/F,EAAW,KAAK,wBAAwB9/F,CAAC,EACzCmI,EAAI,KAAO43F,EAAaD,EAAS,OACjC35C,EAAQo2C,EAAOwD,CAAU,EAAIxD,EAAOwD,CAAU,GAAK,CAC/C,KAAM,CAAE,EACR,GAAI,CAAA,CACP,EACDC,EAAaF,EAAS,WACtBxlF,EAAQC,EAAS,EACb,CAAC6zD,GAAcpiC,CAAK,GAAK,CAACrsC,GAAQqsC,CAAK,EACvC1xB,EAAQ49D,GAAa/vE,EAAKg+C,EAAM,KAAMA,EAAM,GAAI7rC,EAAO0xB,CAAK,EAC5DzxB,EAASylF,UACFrgG,GAAQqsC,CAAK,EACpB,IAAI7nC,EAAI,EAAGq0E,EAAOxsC,EAAM,OAAQ7nC,EAAIq0E,EAAM,EAAEr0E,EACxC87F,EAAcj0D,EAAM7nC,CAAC,EACjB,CAACiqE,GAAc6xB,CAAW,GAAK,CAACtgG,GAAQsgG,CAAW,IACnD3lF,EAAQ49D,GAAa/vE,EAAKg+C,EAAM,KAAMA,EAAM,GAAI7rC,EAAO2lF,CAAW,EAClE1lF,GAAUylF,GAItBN,EAAO,KAAKplF,CAAK,EACjBqlF,EAAQ,KAAKplF,CAAM,EACnBqlF,EAAkB,KAAK,IAAItlF,EAAOslF,CAAe,EACjDC,EAAmB,KAAK,IAAItlF,EAAQslF,CAAgB,CAChE,CACQvD,GAAeC,EAAQ92F,CAAM,EAC7B,MAAMm5F,EAASc,EAAO,QAAQE,CAAe,EACvCf,EAAUc,EAAQ,QAAQE,CAAgB,EAC1CK,EAAWC,IAAO,CAChB,MAAOT,EAAOS,CAAG,GAAK,EACtB,OAAQR,EAAQQ,CAAG,GAAK,CACxC,GACQ,MAAO,CACH,MAAOD,EAAQ,CAAC,EAChB,KAAMA,EAAQz6F,EAAS,CAAC,EACxB,OAAQy6F,EAAQtB,CAAM,EACtB,QAASsB,EAAQrB,CAAO,EACxB,OAAAa,EACA,QAAAC,CACH,CACT,CACC,iBAAiBrjG,EAAO,CACjB,OAAOA,CACf,CACC,iBAAiBA,EAAO4G,EAAO,CACxB,MAAO,IACf,CACC,iBAAiB21E,EAAO,CAAA,CACxB,gBAAgB31E,EAAO,CAChB,MAAMuzE,EAAQ,KAAK,MACnB,OAAIvzE,EAAQ,GAAKA,EAAQuzE,EAAM,OAAS,EAC7B,KAEJ,KAAK,iBAAiBA,EAAMvzE,CAAK,EAAE,KAAK,CACvD,CACC,mBAAmBk9F,EAAS,CACjB,KAAK,iBACLA,EAAU,EAAIA,GAElB,MAAMvnB,EAAQ,KAAK,YAAcunB,EAAU,KAAK,QAChD,OAAOrtB,GAAY,KAAK,eAAiB4F,GAAY,KAAK,MAAOE,EAAO,CAAC,EAAIA,CAAK,CAC1F,CACC,mBAAmBA,EAAO,CACnB,MAAMunB,GAAWvnB,EAAQ,KAAK,aAAe,KAAK,QAClD,OAAO,KAAK,eAAiB,EAAIunB,EAAUA,CACnD,CACC,cAAe,CACR,OAAO,KAAK,iBAAiB,KAAK,aAAY,CAAE,CACxD,CACC,cAAe,CACR,KAAM,CAAE,IAAA3mF,EAAM,IAAAD,CAAG,EAAM,KACvB,OAAOC,EAAM,GAAKD,EAAM,EAAIA,EAAMC,EAAM,GAAKD,EAAM,EAAIC,EAAM,CACrE,CACC,WAAWvW,EAAO,CACX,MAAMuzE,EAAQ,KAAK,OAAS,CAAE,EAC9B,GAAIvzE,GAAS,GAAKA,EAAQuzE,EAAM,OAAQ,CACpC,MAAMmmB,EAAOnmB,EAAMvzE,CAAK,EACxB,OAAO05F,EAAK,WAAaA,EAAK,SAAWD,GAAkB,KAAK,WAAY,EAAEz5F,EAAO05F,CAAI,EACrG,CACQ,OAAO,KAAK,WAAa,KAAK,SAAWF,GAAmB,KAAK,MAAM,aAAc,IAAI,EACjG,CACC,WAAY,CACL,MAAM2D,EAAc,KAAK,QAAQ,MAC3BC,EAAM/uB,GAAU,KAAK,aAAa,EAClCytB,EAAM,KAAK,IAAI,KAAK,IAAIsB,CAAG,CAAC,EAC5BrB,EAAM,KAAK,IAAI,KAAK,IAAIqB,CAAG,CAAC,EAC5BjC,EAAa,KAAK,eAAgB,EAClCjiF,EAAUikF,EAAY,iBAAmB,EACzCnzF,EAAImxF,EAAaA,EAAW,OAAO,MAAQjiF,EAAU,EACrD1O,EAAI2wF,EAAaA,EAAW,QAAQ,OAASjiF,EAAU,EAC7D,OAAO,KAAK,aAAY,EAAK1O,EAAIsxF,EAAM9xF,EAAI+xF,EAAM/xF,EAAI8xF,EAAMtxF,EAAIuxF,EAAMvxF,EAAIuxF,EAAM/xF,EAAI8xF,EAAMtxF,EAAIsxF,EAAM9xF,EAAI+xF,CAC/G,CACC,YAAa,CACN,MAAM9sD,EAAU,KAAK,QAAQ,QAC7B,OAAIA,IAAY,OACL,CAAC,CAACA,EAEN,KAAK,0BAA0B,OAAS,CACvD,CACC,sBAAsBu/C,EAAW,CAC1B,MAAMh1E,EAAO,KAAK,KACZk8D,EAAQ,KAAK,MACbr8E,EAAU,KAAK,QACf,CAAE,KAAAgkG,EAAO,SAAApiF,EAAW,OAAAspB,CAAS,EAAGlrC,EAChC8gB,EAASkjF,EAAK,OACd7B,EAAe,KAAK,aAAc,EAElC8B,EADQ,KAAK,MACO,QAAUnjF,EAAS,EAAI,GAC3CojF,EAAKjE,GAAkB+D,CAAI,EAC3B18F,EAAQ,CAAE,EACV68F,EAAaj5D,EAAO,WAAW,KAAK,WAAU,CAAE,EAChDk5D,EAAYD,EAAW,QAAUA,EAAW,MAAQ,EACpDE,EAAgBD,EAAY,EAC5BE,EAAmB,SAAShoB,EAAO,CACrC,OAAOF,GAAYC,EAAOC,EAAO8nB,CAAS,CAC7C,EACD,IAAIG,EAAa9gG,EAAGq8F,EAAW0E,EAC3BC,EAAKC,EAAKC,EAAKC,EAAKC,EAAIC,EAAIC,EAAIC,EACpC,GAAIpjF,IAAa,MACb2iF,EAAcD,EAAiB,KAAK,MAAM,EAC1CI,EAAM,KAAK,OAASR,EACpBU,EAAML,EAAcF,EACpBS,EAAKR,EAAiBnP,EAAU,GAAG,EAAIkP,EACvCW,EAAK7P,EAAU,eACRvzE,IAAa,SACpB2iF,EAAcD,EAAiB,KAAK,GAAG,EACvCQ,EAAK3P,EAAU,IACf6P,EAAKV,EAAiBnP,EAAU,MAAM,EAAIkP,EAC1CK,EAAMH,EAAcF,EACpBO,EAAM,KAAK,IAAMV,UACVtiF,IAAa,OACpB2iF,EAAcD,EAAiB,KAAK,KAAK,EACzCG,EAAM,KAAK,MAAQP,EACnBS,EAAMJ,EAAcF,EACpBQ,EAAKP,EAAiBnP,EAAU,IAAI,EAAIkP,EACxCU,EAAK5P,EAAU,cACRvzE,IAAa,QACpB2iF,EAAcD,EAAiB,KAAK,IAAI,EACxCO,EAAK1P,EAAU,KACf4P,EAAKT,EAAiBnP,EAAU,KAAK,EAAIkP,EACzCI,EAAMF,EAAcF,EACpBM,EAAM,KAAK,KAAOT,UACX/jF,IAAS,IAAK,CACrB,GAAIyB,IAAa,SACb2iF,EAAcD,GAAkBnP,EAAU,IAAMA,EAAU,QAAU,EAAI,EAAG,UACpE5qC,GAAS3oC,CAAQ,EAAG,CAC3B,MAAM8+E,EAAiB,OAAO,KAAK9+E,CAAQ,EAAE,CAAC,EACxC7hB,EAAQ6hB,EAAS8+E,CAAc,EACrC6D,EAAcD,EAAiB,KAAK,MAAM,OAAO5D,CAAc,EAAE,iBAAiB3gG,CAAK,CAAC,CACxG,CACY+kG,EAAK3P,EAAU,IACf6P,EAAK7P,EAAU,OACfuP,EAAMH,EAAcF,EACpBO,EAAMF,EAAMR,CACxB,SAAmB/jF,IAAS,IAAK,CACrB,GAAIyB,IAAa,SACb2iF,EAAcD,GAAkBnP,EAAU,KAAOA,EAAU,OAAS,CAAC,UAC9D5qC,GAAS3oC,CAAQ,EAAG,CAC3B,MAAM++E,EAAkB,OAAO,KAAK/+E,CAAQ,EAAE,CAAC,EACzCg/E,EAASh/E,EAAS++E,CAAe,EACvC4D,EAAcD,EAAiB,KAAK,MAAM,OAAO3D,CAAe,EAAE,iBAAiBC,CAAM,CAAC,CAC1G,CACY6D,EAAMF,EAAcF,EACpBM,EAAMF,EAAMP,EACZW,EAAK1P,EAAU,KACf4P,EAAK5P,EAAU,KAC3B,CACQ,MAAM8P,EAAQjzB,GAAehyE,EAAQ,MAAM,cAAeikG,CAAW,EAC/DiB,EAAO,KAAK,IAAI,EAAG,KAAK,KAAKjB,EAAcgB,CAAK,CAAC,EACvD,IAAIxhG,EAAI,EAAGA,EAAIwgG,EAAaxgG,GAAKyhG,EAAK,CAClC,MAAMtnG,EAAU,KAAK,WAAW6F,CAAC,EAC3B0hG,EAAcnB,EAAK,WAAWpmG,CAAO,EACrCwnG,EAAoBl6D,EAAO,WAAWttC,CAAO,EAC7CynG,EAAYF,EAAY,UACxBG,EAAYH,EAAY,MACxBI,GAAaH,EAAkB,MAAQ,CAAE,EACzCI,GAAmBJ,EAAkB,WACrCxD,GAAYuD,EAAY,UACxBM,GAAYN,EAAY,UACxBO,GAAiBP,EAAY,gBAAkB,CAAE,EACjDQ,GAAuBR,EAAY,qBACzCrF,EAAYH,GAAoB,KAAMl8F,EAAGqd,CAAM,EAC3Cg/E,IAAc,SAGlB0E,EAAmBpoB,GAAYC,EAAOyjB,EAAWuF,CAAS,EACtDlD,EACAsC,EAAME,EAAME,EAAKE,EAAKP,EAEtBE,EAAME,EAAME,EAAKE,EAAKR,EAE1Bl9F,EAAM,KAAK,CACP,IAAAm9F,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,EACA,MAAOK,EACP,MAAOC,EACP,WAAAC,GACA,iBAAAC,GACA,UAAA5D,GACA,UAAA6D,GACA,eAAAC,GACA,qBAAAC,EAChB,CAAa,EACb,CACQ,YAAK,aAAe1B,EACpB,KAAK,aAAeM,EACbj9F,CACf,CACC,mBAAmB6tF,EAAW,CACvB,MAAMh1E,EAAO,KAAK,KACZngB,EAAU,KAAK,QACf,CAAE,SAAA4hB,EAAW,MAAOkiF,CAAc,EAAG9jG,EACrCmiG,EAAe,KAAK,aAAc,EAClCjoB,EAAQ,KAAK,MACb,CAAE,MAAA1sC,EAAQ,WAAAo4D,EAAa,QAAA/lF,EAAU,OAAAgmF,CAAS,EAAG/B,EAC7CI,EAAKjE,GAAkBjgG,EAAQ,IAAI,EACnC8lG,EAAiB5B,EAAKrkF,EACtBkmF,EAAkBF,EAAS,CAAChmF,EAAUimF,EACtC5oB,EAAW,CAAClI,GAAU,KAAK,aAAa,EACxC1tE,EAAQ,CAAE,EAChB,IAAI7D,EAAG+uE,EAAM6tB,EAAM5wD,EAAOp7B,EAAGJ,EAAG+xF,EAAW1pB,EAAOZ,EAAM+nB,EAAYwC,EAAWC,EAC3EC,EAAe,SACnB,GAAIvkF,IAAa,MACb3N,EAAI,KAAK,OAAS8xF,EAClBC,EAAY,KAAK,wBAAyB,UACnCpkF,IAAa,SACpB3N,EAAI,KAAK,IAAM8xF,EACfC,EAAY,KAAK,wBAAyB,UACnCpkF,IAAa,OAAQ,CAC5B,MAAM+rC,EAAM,KAAK,wBAAwBu2C,CAAE,EAC3C8B,EAAYr4C,EAAI,UAChBt5C,EAAIs5C,EAAI,CACpB,SAAmB/rC,IAAa,QAAS,CAC7B,MAAMwkF,EAAO,KAAK,wBAAwBlC,CAAE,EAC5C8B,EAAYI,EAAK,UACjB/xF,EAAI+xF,EAAK,CACrB,SAAmBjmF,IAAS,IAAK,CACrB,GAAIyB,IAAa,SACb3N,GAAKkhF,EAAU,IAAMA,EAAU,QAAU,EAAI2Q,UACtCv7C,GAAS3oC,CAAQ,EAAG,CAC3B,MAAM8+E,EAAiB,OAAO,KAAK9+E,CAAQ,EAAE,CAAC,EACxC7hB,EAAQ6hB,EAAS8+E,CAAc,EACrCzsF,EAAI,KAAK,MAAM,OAAOysF,CAAc,EAAE,iBAAiB3gG,CAAK,EAAI+lG,CAChF,CACYE,EAAY,KAAK,wBAAyB,CACtD,SAAmB7lF,IAAS,IAAK,CACrB,GAAIyB,IAAa,SACbvN,GAAK8gF,EAAU,KAAOA,EAAU,OAAS,EAAI2Q,UACtCv7C,GAAS3oC,CAAQ,EAAG,CAC3B,MAAM++E,EAAkB,OAAO,KAAK/+E,CAAQ,EAAE,CAAC,EACzCg/E,EAASh/E,EAAS++E,CAAe,EACvCtsF,EAAI,KAAK,MAAM,OAAOssF,CAAe,EAAE,iBAAiBC,CAAM,CAC9E,CACYoF,EAAY,KAAK,wBAAwB9B,CAAE,EAAE,SACzD,CACY/jF,IAAS,MACLqtB,IAAU,QACV24D,EAAe,MACR34D,IAAU,QACjB24D,EAAe,WAGvB,MAAMrE,EAAa,KAAK,eAAgB,EACxC,IAAIr+F,EAAI,EAAG+uE,EAAO0H,EAAM,OAAQz2E,EAAI+uE,EAAM,EAAE/uE,EAAE,CAC1C48F,EAAOnmB,EAAMz2E,CAAC,EACdgsC,EAAQ4wD,EAAK,MACb,MAAM8E,EAAcrB,EAAY,WAAW,KAAK,WAAWrgG,CAAC,CAAC,EAC7D64E,EAAQ,KAAK,gBAAgB74E,CAAC,EAAIqgG,EAAY,YAC9CpoB,EAAO,KAAK,wBAAwBj4E,CAAC,EACrCggG,EAAa/nB,EAAK,WAClBuqB,EAAY7iG,GAAQqsC,CAAK,EAAIA,EAAM,OAAS,EAC5C,MAAM42D,EAAYJ,EAAY,EACxB30B,EAAQ6zB,EAAY,MACpBmB,EAAcnB,EAAY,gBAC1BoB,EAAcpB,EAAY,gBAChC,IAAIqB,EAAgBR,EAChB7D,GACA9tF,EAAIioE,EACA0pB,IAAc,UACVviG,IAAM+uE,EAAO,EACbg0B,EAAiB,KAAK,QAAQ,QAAoB,OAAV,QACjC/iG,IAAM,EACb+iG,EAAiB,KAAK,QAAQ,QAAmB,QAAT,OAExCA,EAAgB,UAGpB5kF,IAAa,MACTgkF,IAAe,QAAU1oB,IAAa,EACtCgpB,EAAa,CAACD,EAAYxC,EAAaA,EAAa,EAC7CmC,IAAe,SACtBM,EAAa,CAACpE,EAAW,QAAQ,OAAS,EAAIuE,EAAY5C,EAAaA,EAEvEyC,EAAa,CAACpE,EAAW,QAAQ,OAAS2B,EAAa,EAGvDmC,IAAe,QAAU1oB,IAAa,EACtCgpB,EAAazC,EAAa,EACnBmC,IAAe,SACtBM,EAAapE,EAAW,QAAQ,OAAS,EAAIuE,EAAY5C,EAEzDyC,EAAapE,EAAW,QAAQ,OAASmE,EAAYxC,EAGzDoC,IACAK,GAAc,IAEdhpB,IAAa,GAAK,CAACioB,EAAY,oBAC/B9wF,GAAKovF,EAAa,EAAI,KAAK,IAAIvmB,CAAQ,KAG3CjpE,EAAIqoE,EACJ4pB,GAAc,EAAID,GAAaxC,EAAa,GAEhD,IAAIlpE,GACJ,GAAI4qE,EAAY,kBAAmB,CAC/B,MAAMsB,GAAexnB,GAAUkmB,EAAY,eAAe,EACpDnnF,GAAS8jF,EAAW,QAAQr+F,CAAC,EAC7Bsa,GAAQ+jF,EAAW,OAAOr+F,CAAC,EACjC,IAAIyC,GAAMggG,EAAaO,GAAa,IAChC7rF,GAAO,EAAI6rF,GAAa,KAC5B,OAAON,EAAY,CACf,IAAK,SACDjgG,IAAO8X,GAAS,EAChB,MACJ,IAAK,SACD9X,IAAO8X,GACP,KACxB,CACgB,OAAOgoF,EAAS,CACZ,IAAK,SACDprF,IAAQmD,GAAQ,EAChB,MACJ,IAAK,QACDnD,IAAQmD,GACR,KACxB,CACgBwc,GAAW,CACP,KAAA3f,GACA,IAAA1U,GACA,MAAO6X,GAAQ0oF,GAAa,MAC5B,OAAQzoF,GAASyoF,GAAa,OAC9B,MAAOtB,EAAY,aACtB,CACjB,CACY79F,EAAM,KAAK,CACP,MAAAmoC,EACA,KAAAisC,EACA,WAAAwqB,EACA,QAAS,CACL,SAAAhpB,EACA,MAAA5L,EACA,YAAAg1B,EACA,YAAAC,EACA,UAAWC,EACX,aAAAL,EACA,YAAa,CACT9xF,EACAJ,CACH,EACD,SAAAsmB,EACpB,CACA,CAAa,CACb,CACQ,OAAOjzB,CACf,CACI,yBAA0B,CACtB,KAAM,CAAE,SAAAsa,EAAW,MAAAs4D,CAAQ,EAAG,KAAK,QAEnC,GADiB,CAAClF,GAAU,KAAK,aAAa,EAE1C,OAAOpzD,IAAa,MAAQ,OAAS,QAEzC,IAAI4rB,EAAQ,SACZ,OAAI0sC,EAAM,QAAU,QAChB1sC,EAAQ,OACD0sC,EAAM,QAAU,MACvB1sC,EAAQ,QACD0sC,EAAM,QAAU,UACvB1sC,EAAQ,SAELA,CACf,CACI,wBAAwB02D,EAAI,CACxB,KAAM,CAAE,SAAAtiF,EAAW,MAAO,CAAE,WAAAgkF,EAAa,OAAAC,EAAS,QAAAhmF,CAAO,GAAS,KAAK,QACjEiiF,EAAa,KAAK,eAAgB,EAClCgE,EAAiB5B,EAAKrkF,EACtBwiF,EAASP,EAAW,OAAO,MACjC,IAAIkE,EACA3xF,EACJ,OAAIuN,IAAa,OACTikF,GACAxxF,EAAI,KAAK,MAAQwL,EACb+lF,IAAe,OACfI,EAAY,OACLJ,IAAe,UACtBI,EAAY,SACZ3xF,GAAKguF,EAAS,IAEd2D,EAAY,QACZ3xF,GAAKguF,KAGThuF,EAAI,KAAK,MAAQyxF,EACbF,IAAe,OACfI,EAAY,QACLJ,IAAe,UACtBI,EAAY,SACZ3xF,GAAKguF,EAAS,IAEd2D,EAAY,OACZ3xF,EAAI,KAAK,OAGVuN,IAAa,QAChBikF,GACAxxF,EAAI,KAAK,KAAOwL,EACZ+lF,IAAe,OACfI,EAAY,QACLJ,IAAe,UACtBI,EAAY,SACZ3xF,GAAKguF,EAAS,IAEd2D,EAAY,OACZ3xF,GAAKguF,KAGThuF,EAAI,KAAK,KAAOyxF,EACZF,IAAe,OACfI,EAAY,OACLJ,IAAe,UACtBI,EAAY,SACZ3xF,GAAKguF,EAAS,IAEd2D,EAAY,QACZ3xF,EAAI,KAAK,QAIjB2xF,EAAY,QAET,CACH,UAAAA,EACA,EAAA3xF,CACH,CACT,CACC,mBAAoB,CACb,GAAI,KAAK,QAAQ,MAAM,OACnB,OAEJ,MAAMgoE,EAAQ,KAAK,MACbz6D,EAAW,KAAK,QAAQ,SAC9B,GAAIA,IAAa,QAAUA,IAAa,QACpC,MAAO,CACH,IAAK,EACL,KAAM,KAAK,KACX,OAAQy6D,EAAM,OACd,MAAO,KAAK,KACf,EAEL,GAAIz6D,IAAa,OAASA,IAAa,SACnC,MAAO,CACH,IAAK,KAAK,IACV,KAAM,EACN,OAAQ,KAAK,OACb,MAAOy6D,EAAM,KAChB,CAEb,CACC,gBAAiB,CACV,KAAM,CAAE,IAAAzwE,EAAM,QAAS,CAAE,gBAAA86F,CAAe,EAAM,KAAA9rF,EAAO,IAAA1U,EAAM,MAAA6X,EAAQ,OAAAC,CAAM,EAAM,KAC3E0oF,IACA96F,EAAI,KAAM,EACVA,EAAI,UAAY86F,EAChB96F,EAAI,SAASgP,EAAM1U,EAAK6X,EAAOC,CAAM,EACrCpS,EAAI,QAAS,EAEzB,CACI,qBAAqB7L,EAAO,CACxB,MAAMikG,EAAO,KAAK,QAAQ,KAC1B,GAAI,CAAC,KAAK,WAAY,GAAI,CAACA,EAAK,QAC5B,MAAO,GAGX,MAAMr9F,EADQ,KAAK,MACC,UAAWrC,GAAIA,EAAE,QAAUvE,CAAK,EACpD,OAAI4G,GAAS,EACIq9F,EAAK,WAAW,KAAK,WAAWr9F,CAAK,CAAC,EACvC,UAET,CACf,CACC,SAASwuF,EAAW,CACb,MAAM6O,EAAO,KAAK,QAAQ,KACpBp4F,EAAM,KAAK,IACXtE,EAAQ,KAAK,iBAAmB,KAAK,eAAiB,KAAK,sBAAsB6tF,CAAS,GAChG,IAAI1xF,EAAG+uE,EACP,MAAMm0B,EAAW,CAACx5C,EAAIC,EAAI39C,IAAQ,CAC1B,CAACA,EAAM,OAAS,CAACA,EAAM,QAG3B7D,EAAI,KAAM,EACVA,EAAI,UAAY6D,EAAM,MACtB7D,EAAI,YAAc6D,EAAM,MACxB7D,EAAI,YAAY6D,EAAM,YAAc,CAAA,CAAE,EACtC7D,EAAI,eAAiB6D,EAAM,iBAC3B7D,EAAI,UAAW,EACfA,EAAI,OAAOuhD,EAAG,EAAGA,EAAG,CAAC,EACrBvhD,EAAI,OAAOwhD,EAAG,EAAGA,EAAG,CAAC,EACrBxhD,EAAI,OAAQ,EACZA,EAAI,QAAS,EAChB,EACD,GAAIo4F,EAAK,QACL,IAAIvgG,EAAI,EAAG+uE,EAAOlrE,EAAM,OAAQ7D,EAAI+uE,EAAM,EAAE/uE,EAAE,CAC1C,MAAM4E,EAAOf,EAAM7D,CAAC,EAChBugG,EAAK,iBACL2C,EAAS,CACL,EAAGt+F,EAAK,GACR,EAAGA,EAAK,EAChC,EAAuB,CACC,EAAGA,EAAK,GACR,EAAGA,EAAK,EACX,EAAEA,CAAI,EAEP27F,EAAK,WACL2C,EAAS,CACL,EAAGt+F,EAAK,IACR,EAAGA,EAAK,GAChC,EAAuB,CACC,EAAGA,EAAK,IACR,EAAGA,EAAK,GAChC,EAAuB,CACC,MAAOA,EAAK,UACZ,MAAOA,EAAK,UACZ,WAAYA,EAAK,eACjB,iBAAkBA,EAAK,oBAC/C,CAAqB,CAErB,CAEA,CACC,YAAa,CACN,KAAM,CAAE,MAAAg0E,EAAQ,IAAAzwE,EAAM,QAAS,CAAE,OAAAs/B,EAAS,KAAA84D,CAAO,CAAA,EAAM,KACjDG,EAAaj5D,EAAO,WAAW,KAAK,WAAU,CAAE,EAChDk5D,EAAYl5D,EAAO,QAAUi5D,EAAW,MAAQ,EACtD,GAAI,CAACC,EACD,OAEJ,MAAMwC,EAAgB5C,EAAK,WAAW,KAAK,WAAW,CAAC,CAAC,EAAE,UACpDO,EAAc,KAAK,aACzB,IAAIM,EAAIE,EAAID,EAAIE,EACZ,KAAK,gBACLH,EAAKzoB,GAAYC,EAAO,KAAK,KAAM+nB,CAAS,EAAIA,EAAY,EAC5DW,EAAK3oB,GAAYC,EAAO,KAAK,MAAOuqB,CAAa,EAAIA,EAAgB,EACrE9B,EAAKE,EAAKT,IAEVO,EAAK1oB,GAAYC,EAAO,KAAK,IAAK+nB,CAAS,EAAIA,EAAY,EAC3DY,EAAK5oB,GAAYC,EAAO,KAAK,OAAQuqB,CAAa,EAAIA,EAAgB,EACtE/B,EAAKE,EAAKR,GAEd34F,EAAI,KAAM,EACVA,EAAI,UAAYu4F,EAAW,MAC3Bv4F,EAAI,YAAcu4F,EAAW,MAC7Bv4F,EAAI,UAAW,EACfA,EAAI,OAAOi5F,EAAIC,CAAE,EACjBl5F,EAAI,OAAOm5F,EAAIC,CAAE,EACjBp5F,EAAI,OAAQ,EACZA,EAAI,QAAS,CACrB,CACC,WAAWupF,EAAW,CAEf,GAAI,CADgB,KAAK,QAAQ,MAChB,QACb,OAEJ,MAAMvpF,EAAM,KAAK,IACX2xE,EAAO,KAAK,kBAAmB,EACjCA,GACAE,GAAS7xE,EAAK2xE,CAAI,EAEtB,MAAMj2E,EAAQ,KAAK,cAAc6tF,CAAS,EAC1C,UAAW9sF,KAAQf,EAAM,CACrB,MAAMu/F,EAAoBx+F,EAAK,QACzBk7F,EAAWl7F,EAAK,KAChBonC,EAAQpnC,EAAK,MACb4L,EAAI5L,EAAK,WACf01E,GAAWnyE,EAAK6jC,EAAO,EAAGx7B,EAAGsvF,EAAUsD,CAAiB,CACpE,CACYtpB,GACAG,GAAW9xE,CAAG,CAE1B,CACC,WAAY,CACL,KAAM,CAAE,IAAAA,EAAM,QAAS,CAAE,SAAAgW,EAAW,MAAAyuB,EAAQ,QAAA+hC,CAAU,CAAA,EAAM,KAC5D,GAAI,CAAC/hC,EAAM,QACP,OAEJ,MAAMqrC,EAAOwD,GAAO7uC,EAAM,IAAI,EACxBxwB,EAAUo/D,GAAU5uC,EAAM,OAAO,EACjC7C,EAAQ6C,EAAM,MACpB,IAAIvvB,EAAS46D,EAAK,WAAa,EAC3B95D,IAAa,UAAYA,IAAa,UAAY2oC,GAAS3oC,CAAQ,GACnEd,GAAUjB,EAAQ,OACdzc,GAAQitC,EAAM,IAAI,IAClBvvB,GAAU46D,EAAK,YAAcrrC,EAAM,KAAK,OAAS,KAGrDvvB,GAAUjB,EAAQ,IAEtB,KAAM,CAAE,OAAA2gF,EAAS,OAAAC,EAAS,SAAA/a,EAAW,SAAAxI,CAAQ,EAAMqjB,GAAU,KAAMz/E,EAAQc,EAAU4rB,CAAK,EAC1FuwC,GAAWnyE,EAAKykC,EAAM,KAAM,EAAG,EAAGqrC,EAAM,CACpC,MAAOrrC,EAAM,MACb,SAAAq1C,EACA,SAAAxI,EACA,UAAWojB,GAAW9yD,EAAO5rB,EAAUwwD,CAAO,EAC9C,aAAc,SACd,YAAa,CACTouB,EACAC,CAChB,CACA,CAAS,CACT,CACI,KAAKtL,EAAW,CACP,KAAK,eAGV,KAAK,eAAgB,EACrB,KAAK,SAASA,CAAS,EACvB,KAAK,WAAY,EACjB,KAAK,UAAW,EAChB,KAAK,WAAWA,CAAS,EACjC,CACC,SAAU,CACH,MAAM11B,EAAO,KAAK,QACZqnC,EAAKrnC,EAAK,OAASA,EAAK,MAAM,GAAK,EACnCsnC,EAAK/0B,GAAevS,EAAK,MAAQA,EAAK,KAAK,EAAG,EAAE,EAChDunC,EAAKh1B,GAAevS,EAAK,QAAUA,EAAK,OAAO,EAAG,CAAC,EACzD,MAAI,CAAC,KAAK,cAAgB,KAAK,OAASohC,GAAM,UAAU,KAC7C,CACH,CACI,EAAGiG,EACH,KAAO3R,GAAY,CACf,KAAK,KAAKA,CAAS,CAC3C,CACA,CACa,EAEE,CACH,CACI,EAAG4R,EACH,KAAO5R,GAAY,CACf,KAAK,eAAgB,EACrB,KAAK,SAASA,CAAS,EACvB,KAAK,UAAW,CACpC,CACa,EACD,CACI,EAAG6R,EACH,KAAM,IAAI,CACN,KAAK,WAAY,CACrC,CACa,EACD,CACI,EAAGF,EACH,KAAO3R,GAAY,CACf,KAAK,WAAWA,CAAS,CAC7C,CACA,CACS,CACT,CACC,wBAAwBhgF,EAAM,CACvB,MAAMisF,EAAQ,KAAK,MAAM,6BAA8B,EACjD6F,EAAS,KAAK,KAAO,SACrBvjG,EAAS,CAAE,EACjB,IAAID,EAAG+uE,EACP,IAAI/uE,EAAI,EAAG+uE,EAAO4uB,EAAM,OAAQ39F,EAAI+uE,EAAM,EAAE/uE,EAAE,CAC1C,MAAMyR,EAAOksF,EAAM39F,CAAC,EAChByR,EAAK+xF,CAAM,IAAM,KAAK,KAAO,CAAC9xF,GAAQD,EAAK,OAASC,IACpDzR,EAAO,KAAKwR,CAAI,CAEhC,CACQ,OAAOxR,CACf,CACC,wBAAwBiD,EAAO,CACxB,MAAM84D,EAAO,KAAK,QAAQ,MAAM,WAAW,KAAK,WAAW94D,CAAK,CAAC,EACjE,OAAOu4E,GAAOzf,EAAK,IAAI,CAC/B,CACC,YAAa,CACN,MAAMynC,EAAW,KAAK,wBAAwB,CAAC,EAAE,WACjD,OAAQ,KAAK,aAAc,EAAG,KAAK,MAAQ,KAAK,QAAUA,CAClE,CACA,CAEA,MAAMC,EAAc,CAChB,YAAYhyF,EAAM2lE,EAAOssB,EAAS,CAC9B,KAAK,KAAOjyF,EACZ,KAAK,MAAQ2lE,EACb,KAAK,SAAWssB,EAChB,KAAK,MAAQ,OAAO,OAAO,IAAI,CACvC,CACI,UAAUjyF,EAAM,CACZ,OAAO,OAAO,UAAU,cAAc,KAAK,KAAK,KAAK,UAAWA,EAAK,SAAS,CACtF,CACC,SAAS9M,EAAM,CACR,MAAM0P,EAAQ,OAAO,eAAe1P,CAAI,EACxC,IAAIg/F,EACAC,GAAkBvvF,CAAK,IACvBsvF,EAAc,KAAK,SAAStvF,CAAK,GAErC,MAAMzQ,EAAQ,KAAK,MACb7F,EAAK4G,EAAK,GACVyyE,EAAQ,KAAK,MAAQ,IAAMr5E,EACjC,GAAI,CAACA,EACD,MAAM,IAAI,MAAM,2BAA6B4G,CAAI,EAErD,OAAI5G,KAAM6F,IAGVA,EAAM7F,CAAE,EAAI4G,EACZk/F,GAAiBl/F,EAAMyyE,EAAOusB,CAAW,EACrC,KAAK,UACL30C,GAAS,SAASrqD,EAAK,GAAIA,EAAK,SAAS,GAEtCyyE,CACf,CACC,IAAIr5E,EAAI,CACD,OAAO,KAAK,MAAMA,CAAE,CAC5B,CACC,WAAW4G,EAAM,CACV,MAAMf,EAAQ,KAAK,MACb7F,EAAK4G,EAAK,GACVyyE,EAAQ,KAAK,MACfr5E,KAAM6F,GACN,OAAOA,EAAM7F,CAAE,EAEfq5E,GAASr5E,KAAMixD,GAASooB,CAAK,IAC7B,OAAOpoB,GAASooB,CAAK,EAAEr5E,CAAE,EACrB,KAAK,UACL,OAAOm5E,GAAUn5E,CAAE,EAGnC,CACA,CACA,SAAS8lG,GAAiBl/F,EAAMyyE,EAAOusB,EAAa,CAChD,MAAMG,EAAeptF,GAAM,OAAO,OAAO,IAAI,EAAG,CAC5CitF,EAAc30C,GAAS,IAAI20C,CAAW,EAAI,CAAE,EAC5C30C,GAAS,IAAIooB,CAAK,EAClBzyE,EAAK,QACb,CAAK,EACDqqD,GAAS,IAAIooB,EAAO0sB,CAAY,EAC5Bn/F,EAAK,eACLo/F,GAAc3sB,EAAOzyE,EAAK,aAAa,EAEvCA,EAAK,aACLqqD,GAAS,SAASooB,EAAOzyE,EAAK,WAAW,CAEjD,CACA,SAASo/F,GAAc3sB,EAAOz5B,EAAQ,CAClC,OAAO,KAAKA,CAAM,EAAE,QAASv4C,GAAW,CACpC,MAAM4+F,EAAgB5+F,EAAS,MAAM,GAAG,EAClC6+F,EAAaD,EAAc,IAAK,EAChCE,EAAc,CAChB9sB,CACH,EAAC,OAAO4sB,CAAa,EAAE,KAAK,GAAG,EAC1Br0B,EAAQhyB,EAAOv4C,CAAQ,EAAE,MAAM,GAAG,EAClCqyE,EAAa9H,EAAM,IAAK,EACxB6H,EAAc7H,EAAM,KAAK,GAAG,EAClC3gB,GAAS,MAAMk1C,EAAaD,EAAYzsB,EAAaC,CAAU,CACvE,CAAK,CACL,CACA,SAASmsB,GAAkBvvF,EAAO,CAC9B,MAAO,OAAQA,GAAS,aAAcA,CAC1C,CAEA,MAAM8vF,EAAS,CACX,aAAa,CACT,KAAK,YAAc,IAAIV,GAAcjZ,GAAmB,WAAY,EAAI,EACxE,KAAK,SAAW,IAAIiZ,GAAcrG,GAAS,UAAU,EACrD,KAAK,QAAU,IAAIqG,GAAc,OAAQ,SAAS,EAClD,KAAK,OAAS,IAAIA,GAActG,GAAO,QAAQ,EAC/C,KAAK,iBAAmB,CACpB,KAAK,YACL,KAAK,OACL,KAAK,QACR,CACT,CACC,OAAOrnF,EAAM,CACN,KAAK,MAAM,WAAYA,CAAI,CACnC,CACI,UAAUA,EAAM,CACZ,KAAK,MAAM,aAAcA,CAAI,CACrC,CACC,kBAAkBA,EAAM,CACjB,KAAK,MAAM,WAAYA,EAAM,KAAK,WAAW,CACrD,CACC,eAAeA,EAAM,CACd,KAAK,MAAM,WAAYA,EAAM,KAAK,QAAQ,CAClD,CACC,cAAcA,EAAM,CACb,KAAK,MAAM,WAAYA,EAAM,KAAK,OAAO,CACjD,CACC,aAAaA,EAAM,CACZ,KAAK,MAAM,WAAYA,EAAM,KAAK,MAAM,CAChD,CACC,cAAc/X,EAAI,CACX,OAAO,KAAK,KAAKA,EAAI,KAAK,YAAa,YAAY,CAC3D,CACC,WAAWA,EAAI,CACR,OAAO,KAAK,KAAKA,EAAI,KAAK,SAAU,SAAS,CACrD,CACC,UAAUA,EAAI,CACP,OAAO,KAAK,KAAKA,EAAI,KAAK,QAAS,QAAQ,CACnD,CACC,SAASA,EAAI,CACN,OAAO,KAAK,KAAKA,EAAI,KAAK,OAAQ,OAAO,CACjD,CACC,qBAAqB+X,EAAM,CACpB,KAAK,MAAM,aAAcA,EAAM,KAAK,WAAW,CACvD,CACC,kBAAkBA,EAAM,CACjB,KAAK,MAAM,aAAcA,EAAM,KAAK,QAAQ,CACpD,CACC,iBAAiBA,EAAM,CAChB,KAAK,MAAM,aAAcA,EAAM,KAAK,OAAO,CACnD,CACC,gBAAgBA,EAAM,CACf,KAAK,MAAM,aAAcA,EAAM,KAAK,MAAM,CAClD,CACC,MAAM45C,EAAQ55C,EAAMsuF,EAAe,CAC5B,CACI,GAAGtuF,CACf,EAAU,QAASvJ,GAAM,CACb,MAAM83F,EAAMD,GAAiB,KAAK,oBAAoB73F,CAAG,EACrD63F,GAAiBC,EAAI,UAAU93F,CAAG,GAAK83F,IAAQ,KAAK,SAAW93F,EAAI,GACnE,KAAK,MAAMmjD,EAAQ20C,EAAK93F,CAAG,EAE3BmrC,GAAKnrC,EAAM5H,GAAO,CACd,MAAM2/F,EAAUF,GAAiB,KAAK,oBAAoBz/F,CAAI,EAC9D,KAAK,MAAM+qD,EAAQ40C,EAAS3/F,CAAI,CACpD,CAAiB,CAEjB,CAAS,CACT,CACC,MAAM+qD,EAAQ60C,EAAUv0F,EAAW,CAC5B,MAAMw0F,EAAc10B,GAAYpgB,CAAM,EACtC/wB,GAAS3uB,EAAU,SAAWw0F,CAAW,EAAG,CAAA,EAAIx0F,CAAS,EACzDu0F,EAAS70C,CAAM,EAAE1/C,CAAS,EAC1B2uB,GAAS3uB,EAAU,QAAUw0F,CAAW,EAAG,CAAA,EAAIx0F,CAAS,CAChE,CACC,oBAAoByB,EAAM,CACnB,QAAQ1R,EAAI,EAAGA,EAAI,KAAK,iBAAiB,OAAQA,IAAI,CACjD,MAAMskG,EAAM,KAAK,iBAAiBtkG,CAAC,EACnC,GAAIskG,EAAI,UAAU5yF,CAAI,EAClB,OAAO4yF,CAEvB,CACQ,OAAO,KAAK,OACpB,CACC,KAAKtmG,EAAIqmG,EAAe3yF,EAAM,CACvB,MAAM9M,EAAOy/F,EAAc,IAAIrmG,CAAE,EACjC,GAAI4G,IAAS,OACT,MAAM,IAAI,MAAM,IAAM5G,EAAK,yBAA2B0T,EAAO,GAAG,EAEpE,OAAO9M,CACf,CACA,CACA,IAAI4/F,GAA2B,IAAIJ,GAEnC,MAAMM,EAAc,CAChB,aAAa,CACT,KAAK,MAAQ,CAAE,CACvB,CACC,OAAO9rB,EAAO+rB,EAAM5uF,EAAMylC,EAAQ,CACvBmpD,IAAS,eACT,KAAK,MAAQ,KAAK,mBAAmB/rB,EAAO,EAAI,EAChD,KAAK,QAAQ,KAAK,MAAOA,EAAO,SAAS,GAE7C,MAAMviE,EAAcmlC,EAAS,KAAK,aAAao9B,CAAK,EAAE,OAAOp9B,CAAM,EAAI,KAAK,aAAao9B,CAAK,EACxF34E,EAAS,KAAK,QAAQoW,EAAauiE,EAAO+rB,EAAM5uF,CAAI,EAC1D,OAAI4uF,IAAS,iBACT,KAAK,QAAQtuF,EAAauiE,EAAO,MAAM,EACvC,KAAK,QAAQ,KAAK,MAAOA,EAAO,WAAW,GAExC34E,CACf,CACC,QAAQoW,EAAauiE,EAAO+rB,EAAM5uF,EAAM,CACjCA,EAAOA,GAAQ,CAAE,EACjB,UAAWk0C,KAAc5zC,EAAY,CACjC,MAAMuuF,EAAS36C,EAAW,OACpB0F,EAASi1C,EAAOD,CAAI,EACpBnqD,EAAS,CACXo+B,EACA7iE,EACAk0C,EAAW,OACd,EACD,GAAIrrB,GAAS+wB,EAAQnV,EAAQoqD,CAAM,IAAM,IAAS7uF,EAAK,WACnD,MAAO,EAEvB,CACQ,MAAO,EACf,CACI,YAAa,CACJq4D,GAAc,KAAK,MAAM,IAC1B,KAAK,UAAY,KAAK,OACtB,KAAK,OAAS,OAE1B,CACC,aAAawK,EAAO,CACb,GAAI,KAAK,OACL,OAAO,KAAK,OAEhB,MAAMviE,EAAc,KAAK,OAAS,KAAK,mBAAmBuiE,CAAK,EAC/D,YAAK,oBAAoBA,CAAK,EACvBviE,CACf,CACI,mBAAmBuiE,EAAOisB,EAAK,CAC3B,MAAM9iD,EAAS62B,GAASA,EAAM,OACxBr8E,EAAUgyE,GAAexsB,EAAO,SAAWA,EAAO,QAAQ,QAAS,EAAE,EACrE+iD,EAAUC,GAAWhjD,CAAM,EACjC,OAAOxlD,IAAY,IAAS,CAACsoG,EAAM,CAAA,EAAKG,GAAkBpsB,EAAOksB,EAASvoG,EAASsoG,CAAG,CAC9F,CACC,oBAAoBjsB,EAAO,CACpB,MAAMqsB,EAAsB,KAAK,WAAa,CAAE,EAC1C5uF,EAAc,KAAK,OACnBulF,EAAO,CAACthG,EAAGC,IAAID,EAAE,OAAQsW,GAAI,CAACrW,EAAE,KAAMiW,GAAII,EAAE,OAAO,KAAOJ,EAAE,OAAO,EAAE,CAAC,EAC5E,KAAK,QAAQorF,EAAKqJ,EAAqB5uF,CAAW,EAAGuiE,EAAO,MAAM,EAClE,KAAK,QAAQgjB,EAAKvlF,EAAa4uF,CAAmB,EAAGrsB,EAAO,OAAO,CAC3E,CACA,CACC,SAASmsB,GAAWhjD,EAAQ,CACzB,MAAMmjD,EAAW,CAAE,EACbJ,EAAU,CAAE,EACZl/F,EAAO,OAAO,KAAK4+F,GAAS,QAAQ,KAAK,EAC/C,QAAQxkG,EAAI,EAAGA,EAAI4F,EAAK,OAAQ5F,IAC5B8kG,EAAQ,KAAKN,GAAS,UAAU5+F,EAAK5F,CAAC,CAAC,CAAC,EAE5C,MAAMuS,EAAQwvC,EAAO,SAAW,CAAE,EAClC,QAAQojD,EAAK,EAAGA,EAAK5yF,EAAM,OAAQ4yF,IAAK,CACpC,MAAMP,EAASryF,EAAM4yF,CAAE,EACnBL,EAAQ,QAAQF,CAAM,IAAM,KAC5BE,EAAQ,KAAKF,CAAM,EACnBM,EAASN,EAAO,EAAE,EAAI,GAElC,CACI,MAAO,CACH,QAAAE,EACA,SAAAI,CACH,CACL,CACA,SAASE,GAAQ7oG,EAASsoG,EAAK,CAC3B,MAAI,CAACA,GAAOtoG,IAAY,GACb,KAEPA,IAAY,GACL,CAAE,EAENA,CACX,CACA,SAASyoG,GAAkBpsB,EAAO,CAAE,QAAAksB,EAAU,SAAAI,CAAW,EAAE3oG,EAASsoG,EAAK,CACrE,MAAM5kG,EAAS,CAAE,EACX9F,EAAUy+E,EAAM,WAAY,EAClC,UAAWgsB,KAAUE,EAAQ,CACzB,MAAM9mG,EAAK4mG,EAAO,GACZ5oC,EAAOopC,GAAQ7oG,EAAQyB,CAAE,EAAG6mG,CAAG,EACjC7oC,IAAS,MAGb/7D,EAAO,KAAK,CACR,OAAA2kG,EACA,QAASS,GAAWzsB,EAAM,OAAQ,CAC9B,OAAAgsB,EACA,MAAOM,EAASlnG,CAAE,CACrB,EAAEg+D,EAAM7hE,CAAO,CAC5B,CAAS,CACT,CACI,OAAO8F,CACX,CACA,SAASolG,GAAWtjD,EAAQ,CAAE,OAAA6iD,EAAS,MAAAryF,CAAQ,EAAEypD,EAAM7hE,EAAS,CAC5D,MAAMyL,EAAOm8C,EAAO,gBAAgB6iD,CAAM,EACpCzoB,EAASp6B,EAAO,gBAAgBia,EAAMp2D,CAAI,EAChD,OAAI2M,GAASqyF,EAAO,UAChBzoB,EAAO,KAAKyoB,EAAO,QAAQ,EAExB7iD,EAAO,eAAeo6B,EAAQhiF,EAAS,CAC1C,EACR,EAAO,CACC,WAAY,GACZ,UAAW,GACX,QAAS,EACjB,CAAK,CACL,CAEA,SAASmrG,GAAa5zF,EAAMnV,EAAS,CACjC,MAAMgpG,EAAkBt2C,GAAS,SAASv9C,CAAI,GAAK,CAAE,EAErD,QADwBnV,EAAQ,UAAY,CAAE,GAAEmV,CAAI,GAAK,CAAE,GACrC,WAAanV,EAAQ,WAAagpG,EAAgB,WAAa,GACzF,CACA,SAASC,GAA0BxnG,EAAIwgF,EAAW,CAC9C,IAAI9hE,EAAO1e,EACX,OAAIA,IAAO,UACP0e,EAAO8hE,EACAxgF,IAAO,YACd0e,EAAO8hE,IAAc,IAAM,IAAM,KAE9B9hE,CACX,CACA,SAAS+oF,GAA0B/oF,EAAM8hE,EAAW,CAChD,OAAO9hE,IAAS8hE,EAAY,UAAY,SAC5C,CACA,SAASknB,GAAiBvnF,EAAU,CAChC,GAAIA,IAAa,OAASA,IAAa,SACnC,MAAO,IAEX,GAAIA,IAAa,QAAUA,IAAa,QACpC,MAAO,GAEf,CACA,SAASwnF,GAAc3nG,EAAI4nG,EAAc,CAKrC,GAJI5nG,IAAO,KAAOA,IAAO,KAAOA,IAAO,MAGvCA,EAAK4nG,EAAa,MAAQF,GAAiBE,EAAa,QAAQ,GAAK5nG,EAAG,OAAS,GAAK2nG,GAAc3nG,EAAG,CAAC,EAAE,YAAa,EAAE4nG,CAAY,EACjI5nG,GACA,OAAOA,EAEX,MAAM,IAAI,MAAM,6BAA6B,IAAI,qDAAqD,CAC1G,CACA,SAAS6nG,GAAiB9jD,EAAQxlD,EAAS,CACvC,MAAMupG,EAAgB3uB,GAAUp1B,EAAO,IAAI,GAAK,CAC5C,OAAQ,CAAA,CACX,EACKgkD,EAAexpG,EAAQ,QAAU,CAAE,EACnCypG,EAAiBV,GAAavjD,EAAO,KAAMxlD,CAAO,EAClD0tF,EAAS,OAAO,OAAO,IAAI,EACjC,cAAO,KAAK8b,CAAY,EAAE,QAAS/nG,GAAK,CACpC,MAAMioG,EAAYF,EAAa/nG,CAAE,EACjC,GAAI,CAAC8oD,GAASm/C,CAAS,EACnB,OAAO,QAAQ,MAAM,0CAA0CjoG,CAAE,EAAE,EAEvE,GAAIioG,EAAU,OACV,OAAO,QAAQ,KAAK,kDAAkDjoG,CAAE,EAAE,EAE9E,MAAM0e,EAAOipF,GAAc3nG,EAAIioG,CAAS,EAClCj1E,EAAYy0E,GAA0B/oF,EAAMspF,CAAc,EAC1DE,EAAsBJ,EAAc,QAAU,CAAE,EACtD7b,EAAOjsF,CAAE,EAAIwxE,GAAQ,OAAO,OAAO,IAAI,EAAG,CACtC,CACI,KAAA9yD,CACH,EACDupF,EACAC,EAAoBxpF,CAAI,EACxBwpF,EAAoBl1E,CAAS,CACzC,CAAS,CACT,CAAK,EACD+wB,EAAO,KAAK,SAAS,QAASjmB,GAAU,CACpC,MAAMpqB,EAAOoqB,EAAQ,MAAQimB,EAAO,KAC9By8B,EAAY1iD,EAAQ,WAAawpE,GAAa5zF,EAAMnV,CAAO,EAE3D2pG,GADkB/uB,GAAUzlE,CAAI,GAAK,CAAE,GACD,QAAU,CAAE,EACxD,OAAO,KAAKw0F,CAAmB,EAAE,QAASC,GAAY,CAClD,MAAMzpF,EAAO8oF,GAA0BW,EAAW3nB,CAAS,EACrDxgF,EAAK89B,EAAQpf,EAAO,QAAQ,GAAKA,EACvCutE,EAAOjsF,CAAE,EAAIisF,EAAOjsF,CAAE,GAAK,OAAO,OAAO,IAAI,EAC7CwxE,GAAQya,EAAOjsF,CAAE,EAAG,CAChB,CACI,KAAA0e,CACH,EACDqpF,EAAa/nG,CAAE,EACfkoG,EAAoBC,CAAS,CAC7C,CAAa,CACb,CAAS,CACT,CAAK,EACD,OAAO,KAAKlc,CAAM,EAAE,QAASlrF,GAAM,CAC/B,MAAMipF,EAAQiC,EAAOlrF,CAAG,EACxBywE,GAAQwY,EAAO,CACX/4B,GAAS,OAAO+4B,EAAM,IAAI,EAC1B/4B,GAAS,KACrB,CAAS,CACT,CAAK,EACMg7B,CACX,CACA,SAASmc,GAAYrkD,EAAQ,CACzB,MAAMxlD,EAAUwlD,EAAO,UAAYA,EAAO,QAAU,CAAA,GACpDxlD,EAAQ,QAAUgyE,GAAehyE,EAAQ,QAAS,CAAA,CAAE,EACpDA,EAAQ,OAASspG,GAAiB9jD,EAAQxlD,CAAO,CACrD,CACA,SAAS8pG,GAASn4F,EAAM,CACpB,OAAAA,EAAOA,GAAQ,CAAE,EACjBA,EAAK,SAAWA,EAAK,UAAY,CAAE,EACnCA,EAAK,OAASA,EAAK,QAAU,CAAE,EACxBA,CACX,CACA,SAASo4F,GAAWvkD,EAAQ,CACxB,OAAAA,EAASA,GAAU,CAAE,EACrBA,EAAO,KAAOskD,GAAStkD,EAAO,IAAI,EAClCqkD,GAAYrkD,CAAM,EACXA,CACX,CACA,MAAMwkD,GAAW,IAAI,IACfC,GAAa,IAAI,IACvB,SAASC,GAAWrwB,EAAUswB,EAAU,CACpC,IAAI9gG,EAAO2gG,GAAS,IAAInwB,CAAQ,EAChC,OAAKxwE,IACDA,EAAO8gG,EAAU,EACjBH,GAAS,IAAInwB,EAAUxwE,CAAI,EAC3B4gG,GAAW,IAAI5gG,CAAI,GAEhBA,CACX,CACA,MAAM+gG,GAAa,CAAC5hG,EAAKsP,EAAKtV,IAAM,CAChC,MAAMi9D,EAAO8T,GAAiBz7D,EAAKtV,CAAG,EAClCi9D,IAAS,QACTj3D,EAAI,IAAIi3D,CAAI,CAEpB,EACA,IAAA4qC,GAAA,KAAa,CACT,YAAY7kD,EAAO,CACf,KAAK,QAAUukD,GAAWvkD,CAAM,EAChC,KAAK,YAAc,IAAI,IACvB,KAAK,eAAiB,IAAI,GAClC,CACI,IAAI,UAAW,CACX,OAAO,KAAK,QAAQ,QAC5B,CACI,IAAI,MAAO,CACP,OAAO,KAAK,QAAQ,IAC5B,CACI,IAAI,KAAKrwC,EAAM,CACX,KAAK,QAAQ,KAAOA,CAC5B,CACI,IAAI,MAAO,CACP,OAAO,KAAK,QAAQ,IAC5B,CACI,IAAI,KAAKxD,EAAM,CACX,KAAK,QAAQ,KAAOm4F,GAASn4F,CAAI,CACzC,CACI,IAAI,SAAU,CACV,OAAO,KAAK,QAAQ,OAC5B,CACI,IAAI,QAAQ3R,EAAS,CACjB,KAAK,QAAQ,QAAUA,CAC/B,CACI,IAAI,SAAU,CACV,OAAO,KAAK,QAAQ,OAC5B,CACI,QAAS,CACL,MAAMwlD,EAAS,KAAK,QACpB,KAAK,WAAY,EACjBqkD,GAAYrkD,CAAM,CAC1B,CACI,YAAa,CACT,KAAK,YAAY,MAAO,EACxB,KAAK,eAAe,MAAO,CACnC,CACC,iBAAiB8kD,EAAa,CACvB,OAAOJ,GAAWI,EAAa,IAAI,CAC3B,CACI,YAAYA,CAAW,GACvB,EACpB,CACA,CAAa,CACb,CACC,0BAA0BA,EAAa3uE,EAAY,CAC5C,OAAOuuE,GAAW,GAAGI,CAAW,eAAe3uE,CAAU,GAAI,IAAI,CACzD,CACI,YAAY2uE,CAAW,gBAAgB3uE,CAAU,GACjD,eAAeA,CAAU,EAC5B,EACD,CACI,YAAY2uE,CAAW,GACvB,EACpB,CACA,CAAa,CACb,CACC,wBAAwBA,EAAaza,EAAa,CAC3C,OAAOqa,GAAW,GAAGI,CAAW,IAAIza,CAAW,GAAI,IAAI,CAC/C,CACI,YAAYya,CAAW,aAAaza,CAAW,GAC/C,YAAYya,CAAW,GACvB,YAAYza,CAAW,GACvB,EACpB,CACA,CAAa,CACb,CACC,gBAAgBwY,EAAQ,CACjB,MAAM5mG,EAAK4mG,EAAO,GACZlzF,EAAO,KAAK,KAClB,OAAO+0F,GAAW,GAAG/0F,CAAI,WAAW1T,CAAE,GAAI,IAAI,CACtC,CACI,WAAWA,CAAE,GACb,GAAG4mG,EAAO,wBAA0B,CAAA,CACxD,CACA,CAAa,CACb,CACC,cAAckC,EAAWC,EAAY,CAC9B,MAAMC,EAAc,KAAK,YACzB,IAAI7gD,EAAQ6gD,EAAY,IAAIF,CAAS,EACrC,OAAI,CAAC3gD,GAAS4gD,KACV5gD,EAAQ,IAAI,IACZ6gD,EAAY,IAAIF,EAAW3gD,CAAK,GAE7BA,CACf,CACC,gBAAgB2gD,EAAWG,EAAUF,EAAY,CAC1C,KAAM,CAAE,QAAAxqG,EAAU,KAAAmV,CAAI,EAAM,KACtBy0C,EAAQ,KAAK,cAAc2gD,EAAWC,CAAU,EAChD72F,EAASi2C,EAAM,IAAI8gD,CAAQ,EACjC,GAAI/2F,EACA,OAAOA,EAEX,MAAMisE,EAAS,IAAI,IACnB8qB,EAAS,QAASrhG,GAAO,CACjBkhG,IACA3qB,EAAO,IAAI2qB,CAAS,EACpBlhG,EAAK,QAAS7G,GAAM4nG,GAAWxqB,EAAQ2qB,EAAW/nG,CAAG,CAAC,GAE1D6G,EAAK,QAAS7G,GAAM4nG,GAAWxqB,EAAQ5/E,EAASwC,CAAG,CAAC,EACpD6G,EAAK,QAAS7G,GAAM4nG,GAAWxqB,EAAQhF,GAAUzlE,CAAI,GAAK,GAAI3S,CAAG,CAAC,EAClE6G,EAAK,QAAS7G,GAAM4nG,GAAWxqB,EAAQltB,GAAUlwD,CAAG,CAAC,EACrD6G,EAAK,QAAS7G,GAAM4nG,GAAWxqB,EAAQ9lE,GAAatX,CAAG,CAAC,CACpE,CAAS,EACD,MAAM2P,EAAQ,MAAM,KAAKytE,CAAM,EAC/B,OAAIztE,EAAM,SAAW,GACjBA,EAAM,KAAK,OAAO,OAAO,IAAI,CAAC,EAE9B83F,GAAW,IAAIS,CAAQ,GACvB9gD,EAAM,IAAI8gD,EAAUv4F,CAAK,EAEtBA,CACf,CACC,mBAAoB,CACb,KAAM,CAAE,QAAAnS,EAAU,KAAAmV,CAAI,EAAM,KAC5B,MAAO,CACHnV,EACA46E,GAAUzlE,CAAI,GAAK,CAAE,EACrBu9C,GAAS,SAASv9C,CAAI,GAAK,CAAE,EAC7B,CACI,KAAAA,CACH,EACDu9C,GACA54C,EACH,CACT,CACC,oBAAoB8lE,EAAQpP,EAAO5yE,EAAS6lC,EAAW,CAChD,EACR,EAAO,CACC,MAAM//B,EAAS,CACX,QAAS,EACZ,EACK,CAAE,SAAAogE,EAAW,YAAA6mC,GAAiBC,GAAY,KAAK,eAAgBhrB,EAAQn8C,CAAQ,EACrF,IAAIzjC,EAAU8jE,EACd,GAAI+mC,GAAY/mC,EAAU0M,CAAK,EAAG,CAC9B9sE,EAAO,QAAU,GACjB9F,EAAU+b,GAAW/b,CAAO,EAAIA,EAAS,EAAGA,EAC5C,MAAMktG,EAAc,KAAK,eAAelrB,EAAQhiF,EAAS+sG,CAAW,EACpE3qG,EAAUmgF,GAAerc,EAAUlmE,EAASktG,CAAW,CACnE,CACQ,UAAWl+F,KAAQ4jE,EACf9sE,EAAOkJ,CAAI,EAAI5M,EAAQ4M,CAAI,EAE/B,OAAOlJ,CACf,CACC,eAAek8E,EAAQhiF,EAAS6lC,EAAW,CACpC,EACH,EAAE48C,EAAoB,CACnB,KAAM,CAAE,SAAAvc,CAAQ,EAAM8mC,GAAY,KAAK,eAAgBhrB,EAAQn8C,CAAQ,EACvE,OAAO8mB,GAAS3sD,CAAO,EAAIuiF,GAAerc,EAAUlmE,EAAS,OAAWyiF,CAAkB,EAAIvc,CACtG,CACA,EACA,SAAS8mC,GAAYG,EAAenrB,EAAQn8C,EAAU,CAClD,IAAImmB,EAAQmhD,EAAc,IAAInrB,CAAM,EAC/Bh2B,IACDA,EAAQ,IAAI,IACZmhD,EAAc,IAAInrB,EAAQh2B,CAAK,GAEnC,MAAMiwB,EAAWp2C,EAAS,KAAM,EAChC,IAAI9vB,EAASi2C,EAAM,IAAIiwB,CAAQ,EAC/B,OAAKlmE,IAEDA,EAAS,CACL,SAFagsE,GAAgBC,EAAQn8C,CAAQ,EAG7C,YAAaA,EAAS,OAAQlhC,GAAI,CAACA,EAAE,YAAW,EAAG,SAAS,OAAO,CAAC,CACvE,EACDqnD,EAAM,IAAIiwB,EAAUlmE,CAAM,GAEvBA,CACX,CACA,MAAMq3F,GAAejrG,GAAQwqD,GAASxqD,CAAK,GAAK,OAAO,oBAAoBA,CAAK,EAAE,OAAO,CAACqb,EAAK5Y,IAAM4Y,GAAOzB,GAAW5Z,EAAMyC,CAAG,CAAC,EAAG,EAAK,EACzI,SAASqoG,GAAYzhG,EAAOonE,EAAO,CAC/B,KAAM,CAAE,aAAAy6B,EAAe,YAAA9pB,GAAiBnG,GAAa5xE,CAAK,EAC1D,UAAWwD,KAAQ4jE,EAAM,CACrB,MAAM06B,EAAaD,EAAar+F,CAAI,EAC9Bu+F,EAAYhqB,EAAYv0E,CAAI,EAC5B7M,GAASorG,GAAaD,IAAe9hG,EAAMwD,CAAI,EACrD,GAAIs+F,IAAevxF,GAAW5Z,CAAK,GAAKirG,GAAYjrG,CAAK,IAAMorG,GAAa/nG,GAAQrD,CAAK,EACrF,MAAO,EAEnB,CACI,MAAO,EACX,CAEA,IAAIu/D,GAAU,QAEd,MAAM8rC,GAAkB,CACpB,MACA,SACA,OACA,QACA,WACJ,EACA,SAASC,GAAqBzpF,EAAUzB,EAAM,CAC1C,OAAOyB,IAAa,OAASA,IAAa,UAAYwpF,GAAgB,QAAQxpF,CAAQ,IAAM,IAAMzB,IAAS,GAC/G,CACA,SAASmrF,GAAcC,EAAIC,EAAI,CAC3B,OAAO,SAASztG,EAAGC,EAAG,CAClB,OAAOD,EAAEwtG,CAAE,IAAMvtG,EAAEutG,CAAE,EAAIxtG,EAAEytG,CAAE,EAAIxtG,EAAEwtG,CAAE,EAAIztG,EAAEwtG,CAAE,EAAIvtG,EAAEutG,CAAE,CACxD,CACL,CACA,SAASE,GAAqB7tG,EAAS,CACnC,MAAMy+E,EAAQz+E,EAAQ,MAChBmtF,EAAmB1O,EAAM,QAAQ,UACvCA,EAAM,cAAc,aAAa,EACjCh6C,GAAS0oD,GAAoBA,EAAiB,WAAY,CACtDntF,CACH,EAAEy+E,CAAK,CACZ,CACA,SAASqvB,GAAoB9tG,EAAS,CAClC,MAAMy+E,EAAQz+E,EAAQ,MAChBmtF,EAAmB1O,EAAM,QAAQ,UACvCh6C,GAAS0oD,GAAoBA,EAAiB,WAAY,CACtDntF,CACH,EAAEy+E,CAAK,CACZ,CACC,SAASsvB,GAAUtjG,EAAM,CACtB,OAAIi8E,GAAiB,GAAI,OAAOj8E,GAAS,SACrCA,EAAO,SAAS,eAAeA,CAAI,EAC5BA,GAAQA,EAAK,SACpBA,EAAOA,EAAK,CAAC,GAEbA,GAAQA,EAAK,SACbA,EAAOA,EAAK,QAETA,CACX,CACA,MAAMujG,GAAY,CAAE,EACdC,GAAYrpG,GAAM,CACpB,MAAMk6E,EAASivB,GAAUnpG,CAAG,EAC5B,OAAO,OAAO,OAAOopG,EAAS,EAAE,OAAQtrG,GAAIA,EAAE,SAAWo8E,CAAM,EAAE,IAAK,CAC1E,EACA,SAASovB,GAAgBh0F,EAAK5P,EAAOmoF,EAAM,CACvC,MAAMhnF,EAAO,OAAO,KAAKyO,CAAG,EAC5B,UAAWtV,KAAO6G,EAAK,CACnB,MAAM0iG,EAAS,CAACvpG,EAChB,GAAIupG,GAAU7jG,EAAO,CACjB,MAAMnI,EAAQ+X,EAAItV,CAAG,EACrB,OAAOsV,EAAItV,CAAG,GACV6tF,EAAO,GAAK0b,EAAS7jG,KACrB4P,EAAIi0F,EAAS1b,CAAI,EAAItwF,EAErC,CACA,CACA,CACC,SAASisG,GAAmB,EAAGC,EAAWC,EAAaC,EAAS,CAC7D,MAAI,CAACD,GAAe,EAAE,OAAS,WACpB,KAEPC,EACOF,EAEJ,CACX,CACA,SAASG,GAAel3F,EAAM,CAC1B,KAAM,CAAE,OAAAyjE,EAAS,OAAAC,CAAM,EAAM1jE,EAC7B,GAAIyjE,GAAUC,EACV,MAAO,CACH,KAAMD,EAAO,KACb,MAAOA,EAAO,MACd,IAAKC,EAAO,IACZ,OAAQA,EAAO,MAClB,CAET,CACA,MAAMyzB,EAAM,CACR,OAAO,SAAW35C,GAClB,OAAO,UAAYk5C,GACnB,OAAO,UAAYhxB,GACnB,OAAO,SAAWqtB,GAClB,OAAO,QAAU3oC,GACjB,OAAO,SAAWusC,GAClB,OAAO,YAAYvkG,EAAO,CACtB2gG,GAAS,IAAI,GAAG3gG,CAAK,EACrBglG,GAAmB,CAC3B,CACI,OAAO,cAAchlG,EAAO,CACxB2gG,GAAS,OAAO,GAAG3gG,CAAK,EACxBglG,GAAmB,CAC3B,CACI,YAAYjkG,EAAMkkG,EAAW,CACzB,MAAM/mD,EAAS,KAAK,OAAS,IAAIgnD,GAAOD,CAAU,EAC5CE,EAAgBd,GAAUtjG,CAAI,EAC9BqkG,EAAgBb,GAASY,CAAa,EAC5C,GAAIC,EACA,MAAM,IAAI,MAAM,4CAA+CA,EAAc,GAAK,kDAA2DA,EAAc,OAAO,GAAK,kBAAmB,EAE9L,MAAM1sG,EAAUwlD,EAAO,eAAeA,EAAO,oBAAqB,KAAK,YAAY,EACnF,KAAK,SAAW,IAAKA,EAAO,UAAYq4C,GAAgB4O,CAAa,GACrE,KAAK,SAAS,aAAajnD,CAAM,EACjC,MAAM5nD,EAAU,KAAK,SAAS,eAAe6uG,EAAezsG,EAAQ,WAAW,EACzE08E,EAAS9+E,GAAWA,EAAQ,OAC5BogB,EAAS0+D,GAAUA,EAAO,OAC1B3+D,EAAQ2+D,GAAUA,EAAO,MA6B/B,GA5BA,KAAK,GAAK9K,GAAK,EACf,KAAK,IAAMh0E,EACX,KAAK,OAAS8+E,EACd,KAAK,MAAQ3+D,EACb,KAAK,OAASC,EACd,KAAK,SAAWhe,EAChB,KAAK,aAAe,KAAK,YACzB,KAAK,QAAU,CAAE,EACjB,KAAK,UAAY,CAAE,EACnB,KAAK,QAAU,OACf,KAAK,MAAQ,CAAE,EACf,KAAK,wBAA0B,OAC/B,KAAK,UAAY,OACjB,KAAK,QAAU,CAAE,EACjB,KAAK,WAAa,OAClB,KAAK,WAAa,CAAE,EACnB,KAAK,qBAAuB,OAC7B,KAAK,gBAAkB,CAAE,EACzB,KAAK,OAAS,CAAE,EAChB,KAAK,SAAW,IAAImoG,GACpB,KAAK,SAAW,CAAE,EAClB,KAAK,eAAiB,CAAE,EACxB,KAAK,SAAW,GAChB,KAAK,oBAAsB,OAC3B,KAAK,SAAW,OAChB,KAAK,UAAYp5E,GAAU6uD,GAAO,KAAK,OAAOA,CAAI,EAAG59E,EAAQ,aAAe,CAAC,EAC7E,KAAK,aAAe,CAAE,EACtB4rG,GAAU,KAAK,EAAE,EAAI,KACjB,CAAChuG,GAAW,CAAC8+E,EAAQ,CACrB,QAAQ,MAAM,mEAAmE,EACjF,MACZ,CACQ0N,GAAS,OAAO,KAAM,WAAYqhB,EAAoB,EACtDrhB,GAAS,OAAO,KAAM,WAAYshB,EAAmB,EACrD,KAAK,YAAa,EACd,KAAK,UACL,KAAK,OAAQ,CAEzB,CACI,IAAI,aAAc,CACd,KAAM,CAAE,QAAS,CAAE,YAAAxlB,EAAc,oBAAAymB,CAAsB,EAAG,MAAA5uF,EAAQ,OAAAC,EAAS,aAAA4uF,CAAY,EAAM,KAC7F,OAAK/6B,GAAcqU,CAAW,EAG1BymB,GAAuBC,EAChBA,EAEJ5uF,EAASD,EAAQC,EAAS,KALtBkoE,CAMnB,CACI,IAAI,MAAO,CACP,OAAO,KAAK,OAAO,IAC3B,CACI,IAAI,KAAKv0E,EAAM,CACX,KAAK,OAAO,KAAOA,CAC3B,CACI,IAAI,SAAU,CACV,OAAO,KAAK,QACpB,CACI,IAAI,QAAQ3R,EAAS,CACjB,KAAK,OAAO,QAAUA,CAC9B,CACI,IAAI,UAAW,CACX,OAAOioG,EACf,CACC,aAAc,CACP,YAAK,cAAc,YAAY,EAC3B,KAAK,QAAQ,WACb,KAAK,OAAQ,EAEb7hB,GAAY,KAAM,KAAK,QAAQ,gBAAgB,EAEnD,KAAK,WAAY,EACjB,KAAK,cAAc,WAAW,EACvB,IACf,CACI,OAAQ,CACJ,OAAA3J,GAAY,KAAK,OAAQ,KAAK,GAAG,EAC1B,IACf,CACI,MAAO,CACH,OAAA2N,GAAS,KAAK,IAAI,EACX,IACf,CACC,OAAOrsE,EAAOC,EAAQ,CACVosE,GAAS,QAAQ,IAAI,EAGtB,KAAK,kBAAoB,CACrB,MAAArsE,EACA,OAAAC,CACH,EALD,KAAK,QAAQD,EAAOC,CAAM,CAOtC,CACI,QAAQD,EAAOC,EAAQ,CACnB,MAAMhe,EAAU,KAAK,QACf08E,EAAS,KAAK,OACdwJ,EAAclmF,EAAQ,qBAAuB,KAAK,YAClD6sG,EAAU,KAAK,SAAS,eAAenwB,EAAQ3+D,EAAOC,EAAQkoE,CAAW,EACzE4mB,EAAW9sG,EAAQ,kBAAoB,KAAK,SAAS,oBAAqB,EAC1E49E,EAAO,KAAK,MAAQ,SAAW,SACrC,KAAK,MAAQivB,EAAQ,MACrB,KAAK,OAASA,EAAQ,OACtB,KAAK,aAAe,KAAK,YACpBzmB,GAAY,KAAM0mB,EAAU,EAAI,IAGrC,KAAK,cAAc,SAAU,CACzB,KAAMD,CAClB,CAAS,EACDxqE,GAASriC,EAAQ,SAAU,CACvB,KACA6sG,CACH,EAAE,IAAI,EACH,KAAK,UACD,KAAK,UAAUjvB,CAAI,GACnB,KAAK,OAAQ,EAG7B,CACI,qBAAsB,CAElB,MAAMmvB,EADU,KAAK,QACS,QAAU,CAAE,EAC1C3xD,GAAK2xD,EAAe,CAACC,EAAa/F,IAAS,CACvC+F,EAAY,GAAK/F,CAC7B,CAAS,CACT,CACC,qBAAsB,CACf,MAAMjnG,EAAU,KAAK,QACfitG,EAAYjtG,EAAQ,OACpB0tF,EAAS,KAAK,OACdwf,EAAU,OAAO,KAAKxf,CAAM,EAAE,OAAO,CAAC51E,EAAKrW,KAC7CqW,EAAIrW,CAAE,EAAI,GACHqW,GACR,EAAE,EACL,IAAIxQ,EAAQ,CAAE,EACV2lG,IACA3lG,EAAQA,EAAM,OAAO,OAAO,KAAK2lG,CAAS,EAAE,IAAKxrG,GAAK,CAClD,MAAM4nG,EAAe4D,EAAUxrG,CAAE,EAC3B0e,EAAOipF,GAAc3nG,EAAI4nG,CAAY,EACrC8D,EAAWhtF,IAAS,IACpBgiF,EAAehiF,IAAS,IAC9B,MAAO,CACH,QAASkpF,EACT,UAAW8D,EAAW,YAAchL,EAAe,SAAW,OAC9D,MAAOgL,EAAW,eAAiBhL,EAAe,WAAa,QAClE,CACjB,CAAa,CAAC,GAEN/mD,GAAK9zC,EAAQe,GAAO,CAChB,MAAMghG,EAAehhG,EAAK,QACpB5G,EAAK4nG,EAAa,GAClBlpF,EAAOipF,GAAc3nG,EAAI4nG,CAAY,EACrC+D,EAAYp7B,GAAeq3B,EAAa,KAAMhhG,EAAK,KAAK,GAC1DghG,EAAa,WAAa,QAAagC,GAAqBhC,EAAa,SAAUlpF,CAAI,IAAMkrF,GAAqBhjG,EAAK,SAAS,KAChIghG,EAAa,SAAWhhG,EAAK,WAEjC6kG,EAAQzrG,CAAE,EAAI,GACd,IAAIgqF,EAAQ,KACZ,GAAIhqF,KAAMisF,GAAUA,EAAOjsF,CAAE,EAAE,OAAS2rG,EACpC3hB,EAAQiC,EAAOjsF,CAAE,MACd,CACH,MAAM4rG,EAAapF,GAAS,SAASmF,CAAS,EAC9C3hB,EAAQ,IAAI4hB,EAAW,CACnB,GAAA5rG,EACA,KAAM2rG,EACN,IAAK,KAAK,IACV,MAAO,IAC3B,CAAiB,EACD1f,EAAOjC,EAAM,EAAE,EAAIA,CACnC,CACYA,EAAM,KAAK4d,EAAcrpG,CAAO,CAC5C,CAAS,EACDo7C,GAAK8xD,EAAS,CAACI,EAAY7rG,IAAK,CACvB6rG,GACD,OAAO5f,EAAOjsF,CAAE,CAEhC,CAAS,EACD25C,GAAKsyC,EAASjC,GAAQ,CAClBgO,GAAQ,UAAU,KAAMhO,EAAOA,EAAM,OAAO,EAC5CgO,GAAQ,OAAO,KAAMhO,CAAK,CACtC,CAAS,CACT,CACC,iBAAkB,CACX,MAAMM,EAAW,KAAK,UAChBqE,EAAU,KAAK,KAAK,SAAS,OAC7BD,EAAUpE,EAAS,OAEzB,GADAA,EAAS,KAAK,CAAChuF,EAAGC,IAAID,EAAE,MAAQC,EAAE,KAAK,EACnCmyF,EAAUC,EAAS,CACnB,QAAQ,EAAIA,EAAS,EAAID,EAAS,EAAE,EAChC,KAAK,oBAAoB,CAAC,EAE9BpE,EAAS,OAAOqE,EAASD,EAAUC,CAAO,CACtD,CACQ,KAAK,gBAAkBrE,EAAS,MAAM,CAAC,EAAE,KAAKuf,GAAc,QAAS,OAAO,CAAC,CACrF,CACC,6BAA8B,CACvB,KAAM,CAAE,UAAWvf,EAAW,KAAM,CAAE,SAAAwhB,CAAW,CAAA,EAAM,KACnDxhB,EAAS,OAASwhB,EAAS,QAC3B,OAAO,KAAK,QAEhBxhB,EAAS,QAAQ,CAAC72E,EAAMvO,IAAQ,CACxB4mG,EAAS,OAAQl5F,GAAIA,IAAMa,EAAK,QAAQ,EAAE,SAAW,GACrD,KAAK,oBAAoBvO,CAAK,CAE9C,CAAS,CACT,CACI,0BAA2B,CACvB,MAAM6mG,EAAiB,CAAE,EACnBD,EAAW,KAAK,KAAK,SAC3B,IAAI9pG,EAAG+uE,EAEP,IADA,KAAK,4BAA6B,EAC9B/uE,EAAI,EAAG+uE,EAAO+6B,EAAS,OAAQ9pG,EAAI+uE,EAAM/uE,IAAI,CAC7C,MAAM87B,EAAUguE,EAAS9pG,CAAC,EAC1B,IAAIyR,EAAO,KAAK,eAAezR,CAAC,EAChC,MAAM0R,EAAOoqB,EAAQ,MAAQ,KAAK,OAAO,KAWzC,GAVIrqB,EAAK,MAAQA,EAAK,OAASC,IAC3B,KAAK,oBAAoB1R,CAAC,EAC1ByR,EAAO,KAAK,eAAezR,CAAC,GAEhCyR,EAAK,KAAOC,EACZD,EAAK,UAAYqqB,EAAQ,WAAawpE,GAAa5zF,EAAM,KAAK,OAAO,EACrED,EAAK,MAAQqqB,EAAQ,OAAS,EAC9BrqB,EAAK,MAAQzR,EACbyR,EAAK,MAAQ,GAAKqqB,EAAQ,MAC1BrqB,EAAK,QAAU,KAAK,iBAAiBzR,CAAC,EAClCyR,EAAK,WACLA,EAAK,WAAW,YAAYzR,CAAC,EAC7ByR,EAAK,WAAW,WAAY,MACzB,CACH,MAAMu4F,EAAkBxF,GAAS,cAAc9yF,CAAI,EAC7C,CAAE,mBAAAu4F,EAAqB,gBAAAC,CAAe,EAAMj7C,GAAS,SAASv9C,CAAI,EACxE,OAAO,OAAOs4F,EAAiB,CAC3B,gBAAiBxF,GAAS,WAAW0F,CAAe,EACpD,mBAAoBD,GAAsBzF,GAAS,WAAWyF,CAAkB,CACpG,CAAiB,EACDx4F,EAAK,WAAa,IAAIu4F,EAAgB,KAAMhqG,CAAC,EAC7C+pG,EAAe,KAAKt4F,EAAK,UAAU,CACnD,CACA,CACQ,YAAK,gBAAiB,EACfs4F,CACf,CACC,gBAAiB,CACVpyD,GAAK,KAAK,KAAK,SAAU,CAAC7b,EAASiqD,IAAe,CAC9C,KAAK,eAAeA,CAAY,EAAE,WAAW,MAAO,CACvD,EAAE,IAAI,CACf,CACC,OAAQ,CACD,KAAK,eAAgB,EACrB,KAAK,cAAc,OAAO,CAClC,CACI,OAAO5L,EAAM,CACT,MAAMp4B,EAAS,KAAK,OACpBA,EAAO,OAAQ,EACf,MAAMxlD,EAAU,KAAK,SAAWwlD,EAAO,eAAeA,EAAO,kBAAmB,EAAE,KAAK,YAAY,EAC7FooD,EAAgB,KAAK,oBAAsB,CAAC5tG,EAAQ,UAK1D,GAJA,KAAK,cAAe,EACpB,KAAK,oBAAqB,EAC1B,KAAK,qBAAsB,EAC3B,KAAK,SAAS,WAAY,EACtB,KAAK,cAAc,eAAgB,CACnC,KAAA49E,EACA,WAAY,EACf,CAAA,IAAM,GACH,OAEJ,MAAM4vB,EAAiB,KAAK,yBAA0B,EACtD,KAAK,cAAc,sBAAsB,EACzC,IAAI/R,EAAa,EACjB,QAAQh4F,EAAI,EAAG+uE,EAAO,KAAK,KAAK,SAAS,OAAQ/uE,EAAI+uE,EAAM/uE,IAAI,CAC3D,KAAM,CAAE,WAAAm4D,CAAa,EAAG,KAAK,eAAen4D,CAAC,EACvCqD,EAAQ,CAAC8mG,GAAiBJ,EAAe,QAAQ5xC,CAAU,IAAM,GACvEA,EAAW,sBAAsB90D,CAAK,EACtC20F,EAAa,KAAK,IAAI,CAAC7/B,EAAW,eAAgB,EAAE6/B,CAAU,CAC1E,CACQA,EAAa,KAAK,YAAcz7F,EAAQ,OAAO,YAAcy7F,EAAa,EAC1E,KAAK,cAAcA,CAAU,EACxBmS,GACDxyD,GAAKoyD,EAAiB5xC,GAAa,CAC/BA,EAAW,MAAO,CAClC,CAAa,EAEL,KAAK,gBAAgBgiB,CAAI,EACzB,KAAK,cAAc,cAAe,CAC9B,KAAAA,CACZ,CAAS,EACD,KAAK,QAAQ,KAAK0tB,GAAc,IAAK,MAAM,CAAC,EAC5C,KAAM,CAAE,QAAAuC,EAAU,WAAAC,CAAU,EAAM,KAC9BA,EACA,KAAK,cAAcA,EAAY,EAAI,EAC5BD,EAAQ,QACf,KAAK,mBAAmBA,EAASA,EAAS,EAAI,EAElD,KAAK,OAAQ,CACrB,CACC,eAAgB,CACTzyD,GAAK,KAAK,OAASqwC,GAAQ,CACvBgO,GAAQ,UAAU,KAAMhO,CAAK,CACzC,CAAS,EACD,KAAK,oBAAqB,EAC1B,KAAK,oBAAqB,CAClC,CACC,qBAAsB,CACf,MAAMzrF,EAAU,KAAK,QACf+tG,EAAiB,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,EACrDC,EAAY,IAAI,IAAIhuG,EAAQ,MAAM,GACpC,CAACyzE,GAAUs6B,EAAgBC,CAAS,GAAK,CAAC,CAAC,KAAK,uBAAyBhuG,EAAQ,cACjF,KAAK,aAAc,EACnB,KAAK,WAAY,EAE7B,CACC,sBAAuB,CAChB,KAAM,CAAE,eAAAiuG,CAAc,EAAM,KACtBC,EAAU,KAAK,uBAAsB,GAAM,CAAE,EACnD,SAAW,CAAE,OAAA96C,EAAS,MAAAlrD,EAAQ,MAAA1K,CAAK,IAAO0wG,EAAQ,CAC9C,MAAM7d,EAAOj9B,IAAW,kBAAoB,CAAC51D,EAAQA,EACrDsuG,GAAgBmC,EAAgB/lG,EAAOmoF,CAAI,CACvD,CACA,CACC,wBAAyB,CAClB,MAAM8d,EAAe,KAAK,aAC1B,GAAI,CAACA,GAAgB,CAACA,EAAa,OAC/B,OAEJ,KAAK,aAAe,CAAE,EACtB,MAAMC,EAAe,KAAK,KAAK,SAAS,OAClCC,EAAWzK,GAAM,IAAI,IAAIuK,EAAa,OAAQ7tG,GAAIA,EAAE,CAAC,IAAMsjG,CAAG,EAAE,IAAI,CAACtjG,EAAGmD,IAAIA,EAAI,IAAMnD,EAAE,OAAO,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAC5GguG,EAAYD,EAAQ,CAAC,EAC3B,QAAQ5qG,EAAI,EAAGA,EAAI2qG,EAAc3qG,IAC7B,GAAI,CAACgwE,GAAU66B,EAAWD,EAAQ5qG,CAAC,CAAC,EAChC,OAGR,OAAO,MAAM,KAAK6qG,CAAS,EAAE,IAAKhuG,GAAIA,EAAE,MAAM,GAAG,CAAC,EAAE,IAAKvC,IAAK,CACtD,OAAQA,EAAE,CAAC,EACX,MAAO,CAACA,EAAE,CAAC,EACX,MAAO,CAACA,EAAE,CAAC,CAC3B,EAAc,CACd,CACC,cAAc09F,EAAY,CACnB,GAAI,KAAK,cAAc,eAAgB,CACnC,WAAY,EACf,CAAA,IAAM,GACH,OAEJhC,GAAQ,OAAO,KAAM,KAAK,MAAO,KAAK,OAAQgC,CAAU,EACxD,MAAMle,EAAO,KAAK,UACZgxB,EAAShxB,EAAK,OAAS,GAAKA,EAAK,QAAU,EACjD,KAAK,QAAU,CAAE,EACjBniC,GAAK,KAAK,MAAQ+pC,GAAM,CAChBopB,GAAUppB,EAAI,WAAa,cAG3BA,EAAI,WACJA,EAAI,UAAW,EAEnB,KAAK,QAAQ,KAAK,GAAGA,EAAI,QAAO,CAAE,EACrC,EAAE,IAAI,EACP,KAAK,QAAQ,QAAQ,CAAC98E,EAAM1B,IAAQ,CAChC0B,EAAK,KAAO1B,CACxB,CAAS,EACD,KAAK,cAAc,aAAa,CACxC,CACC,gBAAgBi3E,EAAM,CACf,GAAI,KAAK,cAAc,uBAAwB,CAC3C,KAAAA,EACA,WAAY,EACf,CAAA,IAAM,GAGP,SAAQn6E,EAAI,EAAG+uE,EAAO,KAAK,KAAK,SAAS,OAAQ/uE,EAAI+uE,EAAM,EAAE/uE,EACzD,KAAK,eAAeA,CAAC,EAAE,WAAW,UAAW,EAEjD,QAAQmlG,EAAK,EAAG4F,EAAQ,KAAK,KAAK,SAAS,OAAQ5F,EAAK4F,EAAO,EAAE5F,EAC7D,KAAK,eAAeA,EAAIjvF,GAAWikE,CAAI,EAAIA,EAAK,CAC5C,aAAcgrB,CACjB,CAAA,EAAIhrB,CAAI,EAEb,KAAK,cAAc,sBAAuB,CACtC,KAAAA,CACZ,CAAS,EACT,CACC,eAAej3E,EAAOi3E,EAAM,CACrB,MAAM1oE,EAAO,KAAK,eAAevO,CAAK,EAChC6S,EAAO,CACT,KAAAtE,EACA,MAAAvO,EACA,KAAAi3E,EACA,WAAY,EACf,EACG,KAAK,cAAc,sBAAuBpkE,CAAI,IAAM,KAGxDtE,EAAK,WAAW,QAAQ0oE,CAAI,EAC5BpkE,EAAK,WAAa,GAClB,KAAK,cAAc,qBAAsBA,CAAI,EACrD,CACI,QAAS,CACD,KAAK,cAAc,eAAgB,CACnC,WAAY,EACf,CAAA,IAAM,KAGH4wE,GAAS,IAAI,IAAI,EACb,KAAK,UAAY,CAACA,GAAS,QAAQ,IAAI,GACvCA,GAAS,MAAM,IAAI,GAGvB,KAAK,KAAM,EACXqhB,GAAqB,CACjB,MAAO,IACvB,CAAa,GAEb,CACI,MAAO,CACH,IAAIhoG,EACJ,GAAI,KAAK,kBAAmB,CACxB,KAAM,CAAE,MAAAsa,EAAQ,OAAAC,CAAS,EAAG,KAAK,kBACjC,KAAK,QAAQD,EAAOC,CAAM,EAC1B,KAAK,kBAAoB,IACrC,CAKQ,GAJA,KAAK,MAAO,EACR,KAAK,OAAS,GAAK,KAAK,QAAU,GAGlC,KAAK,cAAc,aAAc,CACjC,WAAY,EACf,CAAA,IAAM,GACH,OAEJ,MAAMywF,EAAS,KAAK,QACpB,IAAIhrG,EAAI,EAAGA,EAAIgrG,EAAO,QAAUA,EAAOhrG,CAAC,EAAE,GAAK,EAAG,EAAEA,EAChDgrG,EAAOhrG,CAAC,EAAE,KAAK,KAAK,SAAS,EAGjC,IADA,KAAK,cAAe,EACdA,EAAIgrG,EAAO,OAAQ,EAAEhrG,EACvBgrG,EAAOhrG,CAAC,EAAE,KAAK,KAAK,SAAS,EAEjC,KAAK,cAAc,WAAW,CACtC,CACC,uBAAuBqoF,EAAe,CAC/B,MAAMC,EAAW,KAAK,gBAChBroF,EAAS,CAAE,EACjB,IAAI,EAAG8uE,EACP,IAAI,EAAI,EAAGA,EAAOuZ,EAAS,OAAQ,EAAIvZ,EAAM,EAAE,EAAE,CAC7C,MAAMt9D,EAAO62E,EAAS,CAAC,GACnB,CAACD,GAAiB52E,EAAK,UACvBxR,EAAO,KAAKwR,CAAI,CAEhC,CACQ,OAAOxR,CACf,CACC,8BAA+B,CACxB,OAAO,KAAK,uBAAuB,EAAI,CAC/C,CACC,eAAgB,CACT,GAAI,KAAK,cAAc,qBAAsB,CACzC,WAAY,EACf,CAAA,IAAM,GACH,OAEJ,MAAMqoF,EAAW,KAAK,6BAA8B,EACpD,QAAQtoF,EAAIsoF,EAAS,OAAS,EAAGtoF,GAAK,EAAG,EAAEA,EACvC,KAAK,aAAasoF,EAAStoF,CAAC,CAAC,EAEjC,KAAK,cAAc,mBAAmB,CAC9C,CACC,aAAayR,EAAM,CACZ,MAAMtJ,EAAM,KAAK,IACX8iG,EAAOx5F,EAAK,MACZy5F,EAAU,CAACD,EAAK,SAChBnxB,EAAO6uB,GAAel3F,CAAI,GAAK,KAAK,UACpCsE,EAAO,CACT,KAAAtE,EACA,MAAOA,EAAK,MACZ,WAAY,EACf,EACG,KAAK,cAAc,oBAAqBsE,CAAI,IAAM,KAGlDm1F,GACAlxB,GAAS7xE,EAAK,CACV,KAAM8iG,EAAK,OAAS,GAAQ,EAAInxB,EAAK,KAAOmxB,EAAK,KACjD,MAAOA,EAAK,QAAU,GAAQ,KAAK,MAAQnxB,EAAK,MAAQmxB,EAAK,MAC7D,IAAKA,EAAK,MAAQ,GAAQ,EAAInxB,EAAK,IAAMmxB,EAAK,IAC9C,OAAQA,EAAK,SAAW,GAAQ,KAAK,OAASnxB,EAAK,OAASmxB,EAAK,MACjF,CAAa,EAELx5F,EAAK,WAAW,KAAM,EAClBy5F,GACAjxB,GAAW9xE,CAAG,EAElB4N,EAAK,WAAa,GAClB,KAAK,cAAc,mBAAoBA,CAAI,EACnD,CACC,cAAc8jE,EAAO,CACd,OAAOD,GAAeC,EAAO,KAAK,UAAW,KAAK,WAAW,CACrE,CACI,0BAA0Bt6E,EAAG46E,EAAM59E,EAASo4F,EAAkB,CAC1D,MAAMhlC,EAAS2lC,GAAY,MAAMnb,CAAI,EACrC,OAAI,OAAOxqB,GAAW,WACXA,EAAO,KAAMpwD,EAAGhD,EAASo4F,CAAgB,EAE7C,CAAE,CACjB,CACI,eAAe5O,EAAc,CACzB,MAAMjqD,EAAU,KAAK,KAAK,SAASiqD,CAAY,EACzCuC,EAAW,KAAK,UACtB,IAAI72E,EAAO62E,EAAS,OAAQ13E,GAAIA,GAAKA,EAAE,WAAakrB,CAAO,EAAE,IAAK,EAClE,OAAKrqB,IACDA,EAAO,CACH,KAAM,KACN,KAAM,CAAE,EACR,QAAS,KACT,WAAY,KACZ,OAAQ,KACR,QAAS,KACT,QAAS,KACT,MAAOqqB,GAAWA,EAAQ,OAAS,EACnC,MAAOiqD,EACP,SAAUjqD,EACV,QAAS,CAAE,EACX,QAAS,EACZ,EACDwsD,EAAS,KAAK72E,CAAI,GAEfA,CACf,CACI,YAAa,CACT,OAAO,KAAK,WAAa,KAAK,SAAWtQ,GAAc,KAAM,CACzD,MAAO,KACP,KAAM,OAClB,CAAS,EACT,CACI,wBAAyB,CACrB,OAAO,KAAK,6BAA4B,EAAG,MACnD,CACI,iBAAiB4kF,EAAc,CAC3B,MAAMjqD,EAAU,KAAK,KAAK,SAASiqD,CAAY,EAC/C,GAAI,CAACjqD,EACD,MAAO,GAEX,MAAMrqB,EAAO,KAAK,eAAes0E,CAAY,EAC7C,OAAO,OAAOt0E,EAAK,QAAW,UAAY,CAACA,EAAK,OAAS,CAACqqB,EAAQ,MAC1E,CACI,qBAAqBiqD,EAAcolB,EAAS,CACxC,MAAM15F,EAAO,KAAK,eAAes0E,CAAY,EAC7Ct0E,EAAK,OAAS,CAAC05F,CACvB,CACI,qBAAqBjoG,EAAO,CACxB,KAAK,eAAeA,CAAK,EAAI,CAAC,KAAK,eAAeA,CAAK,CAC/D,CACI,kBAAkBA,EAAO,CACrB,MAAO,CAAC,KAAK,eAAeA,CAAK,CACzC,CACC,kBAAkB6iF,EAAcyJ,EAAW2b,EAAS,CAC7C,MAAMhxB,EAAOgxB,EAAU,OAAS,OAC1B15F,EAAO,KAAK,eAAes0E,CAAY,EACvCM,EAAQ50E,EAAK,WAAW,mBAAmB,OAAW0oE,CAAI,EAC5Dr0E,GAAQ0pF,CAAS,GACjB/9E,EAAK,KAAK+9E,CAAS,EAAE,OAAS,CAAC2b,EAC/B,KAAK,OAAQ,IAEb,KAAK,qBAAqBplB,EAAcolB,CAAO,EAC/C9kB,EAAM,OAAO50E,EAAM,CACf,QAAA05F,CAChB,CAAa,EACD,KAAK,OAAQhjG,GAAMA,EAAI,eAAiB49E,EAAe5L,EAAO,MAAS,EAEnF,CACI,KAAK4L,EAAcyJ,EAAW,CAC1B,KAAK,kBAAkBzJ,EAAcyJ,EAAW,EAAK,CAC7D,CACI,KAAKzJ,EAAcyJ,EAAW,CAC1B,KAAK,kBAAkBzJ,EAAcyJ,EAAW,EAAI,CAC5D,CACC,oBAAoBzJ,EAAc,CAC3B,MAAMt0E,EAAO,KAAK,UAAUs0E,CAAY,EACpCt0E,GAAQA,EAAK,YACbA,EAAK,WAAW,SAAU,EAE9B,OAAO,KAAK,UAAUs0E,CAAY,CAC1C,CACI,OAAQ,CACJ,IAAI/lF,EAAG+uE,EAGP,IAFA,KAAK,KAAM,EACX4X,GAAS,OAAO,IAAI,EAChB3mF,EAAI,EAAG+uE,EAAO,KAAK,KAAK,SAAS,OAAQ/uE,EAAI+uE,EAAM,EAAE/uE,EACrD,KAAK,oBAAoBA,CAAC,CAEtC,CACI,SAAU,CACN,KAAK,cAAc,eAAe,EAClC,KAAM,CAAE,OAAAi5E,EAAS,IAAA9wE,CAAG,EAAM,KAC1B,KAAK,MAAO,EACZ,KAAK,OAAO,WAAY,EACpB8wE,IACA,KAAK,aAAc,EACnBD,GAAYC,EAAQ9wE,CAAG,EACvB,KAAK,SAAS,eAAeA,CAAG,EAChC,KAAK,OAAS,KACd,KAAK,IAAM,MAEf,OAAOggG,GAAU,KAAK,EAAE,EACxB,KAAK,cAAc,cAAc,CACzC,CACI,iBAAiBpyF,EAAM,CACnB,OAAO,KAAK,OAAO,UAAU,GAAGA,CAAI,CAC5C,CACC,YAAa,CACN,KAAK,eAAgB,EACjB,KAAK,QAAQ,WACb,KAAK,qBAAsB,EAE3B,KAAK,SAAW,EAE5B,CACC,gBAAiB,CACV,MAAM+iC,EAAY,KAAK,WACjBuV,EAAW,KAAK,SAChB+8C,EAAO,CAAC15F,EAAM9V,IAAW,CAC3ByyD,EAAS,iBAAiB,KAAM38C,EAAM9V,CAAQ,EAC9Ck9C,EAAUpnC,CAAI,EAAI9V,CACrB,EACKA,EAAW,CAAC2D,EAAGqR,EAAGJ,IAAI,CACxBjR,EAAE,QAAUqR,EACZrR,EAAE,QAAUiR,EACZ,KAAK,cAAcjR,CAAC,CACvB,EACDo4C,GAAK,KAAK,QAAQ,OAASjmC,GAAO05F,EAAK15F,EAAM9V,CAAQ,CAAC,CAC9D,CACC,sBAAuB,CACX,KAAK,uBACN,KAAK,qBAAuB,CAAE,GAElC,MAAMk9C,EAAY,KAAK,qBACjBuV,EAAW,KAAK,SAChB+8C,EAAO,CAAC15F,EAAM9V,IAAW,CAC3ByyD,EAAS,iBAAiB,KAAM38C,EAAM9V,CAAQ,EAC9Ck9C,EAAUpnC,CAAI,EAAI9V,CACrB,EACKyvG,EAAU,CAAC35F,EAAM9V,IAAW,CAC1Bk9C,EAAUpnC,CAAI,IACd28C,EAAS,oBAAoB,KAAM38C,EAAM9V,CAAQ,EACjD,OAAOk9C,EAAUpnC,CAAI,EAE5B,EACK9V,EAAW,CAAC0e,EAAOC,IAAS,CAC1B,KAAK,QACL,KAAK,OAAOD,EAAOC,CAAM,CAEhC,EACD,IAAI+wF,EACJ,MAAMC,EAAW,IAAI,CACjBF,EAAQ,SAAUE,CAAQ,EAC1B,KAAK,SAAW,GAChB,KAAK,OAAQ,EACbH,EAAK,SAAUxvG,CAAQ,EACvBwvG,EAAK,SAAUE,CAAQ,CAC1B,EACDA,EAAW,IAAI,CACX,KAAK,SAAW,GAChBD,EAAQ,SAAUzvG,CAAQ,EAC1B,KAAK,MAAO,EACZ,KAAK,QAAQ,EAAG,CAAC,EACjBwvG,EAAK,SAAUG,CAAQ,CAC1B,EACGl9C,EAAS,WAAW,KAAK,MAAM,EAC/Bk9C,EAAU,EAEVD,EAAU,CAEtB,CACC,cAAe,CACR3zD,GAAK,KAAK,WAAY,CAAC/7C,EAAU8V,IAAO,CACpC,KAAK,SAAS,oBAAoB,KAAMA,EAAM9V,CAAQ,CAClE,CAAS,EACD,KAAK,WAAa,CAAE,EACpB+7C,GAAK,KAAK,qBAAsB,CAAC/7C,EAAU8V,IAAO,CAC9C,KAAK,SAAS,oBAAoB,KAAMA,EAAM9V,CAAQ,CAClE,CAAS,EACD,KAAK,qBAAuB,MACpC,CACI,iBAAiBiI,EAAOs2E,EAAMxsD,EAAS,CACnC,MAAMwS,EAASxS,EAAU,MAAQ,SACjC,IAAIlc,EAAM7M,EAAM5E,EAAG+uE,EAKnB,IAJIoL,IAAS,YACT1oE,EAAO,KAAK,eAAe5N,EAAM,CAAC,EAAE,YAAY,EAChD4N,EAAK,WAAW,IAAM0uB,EAAS,mBAAmB,EAAG,GAErDngC,EAAI,EAAG+uE,EAAOlrE,EAAM,OAAQ7D,EAAI+uE,EAAM,EAAE/uE,EAAE,CAC1C4E,EAAOf,EAAM7D,CAAC,EACd,MAAMm4D,EAAavzD,GAAQ,KAAK,eAAeA,EAAK,YAAY,EAAE,WAC9DuzD,GACAA,EAAWh4B,EAAS,YAAY,EAAEv7B,EAAK,QAASA,EAAK,aAAcA,EAAK,KAAK,CAE7F,CACA,CACC,mBAAoB,CACb,OAAO,KAAK,SAAW,CAAE,CACjC,CACC,kBAAkB4mG,EAAgB,CAC3B,MAAMC,EAAa,KAAK,SAAW,CAAE,EAC/Bp5E,EAASm5E,EAAe,IAAI,CAAC,CAAE,aAAAzlB,EAAe,MAAA7iF,KAAW,CAC3D,MAAMuO,EAAO,KAAK,eAAes0E,CAAY,EAC7C,GAAI,CAACt0E,EACD,MAAM,IAAI,MAAM,6BAA+Bs0E,CAAY,EAE/D,MAAO,CACH,aAAAA,EACA,QAASt0E,EAAK,KAAKvO,CAAK,EACxB,MAAAA,CACH,CACb,CAAS,EACe,CAAC0rE,GAAev8C,EAAQo5E,CAAU,IAE9C,KAAK,QAAUp5E,EACf,KAAK,WAAa,KAClB,KAAK,mBAAmBA,EAAQo5E,CAAU,EAEtD,CACC,cAAc9G,EAAM5uF,EAAMylC,EAAQ,CAC3B,OAAO,KAAK,SAAS,OAAO,KAAMmpD,EAAM5uF,EAAMylC,CAAM,CAC5D,CACC,gBAAgBkwD,EAAU,CACnB,OAAO,KAAK,SAAS,OAAO,OAAQ5sG,GAAIA,EAAE,OAAO,KAAO4sG,CAAQ,EAAE,SAAW,CACrF,CACC,mBAAmBr5E,EAAQo5E,EAAYE,EAAQ,CACxC,MAAMC,EAAe,KAAK,QAAQ,MAC5BhQ,EAAO,CAACthG,EAAGC,IAAID,EAAE,OAAQsW,GAAI,CAACrW,EAAE,KAAMiW,GAAII,EAAE,eAAiBJ,EAAE,cAAgBI,EAAE,QAAUJ,EAAE,KAAK,CAAC,EACnGq7F,EAAcjQ,EAAK6P,EAAYp5E,CAAM,EACrCy5E,EAAYH,EAASt5E,EAASupE,EAAKvpE,EAAQo5E,CAAU,EACvDI,EAAY,QACZ,KAAK,iBAAiBA,EAAaD,EAAa,KAAM,EAAK,EAE3DE,EAAU,QAAUF,EAAa,MACjC,KAAK,iBAAiBE,EAAWF,EAAa,KAAM,EAAI,CAEpE,CACC,cAAcrsG,EAAGosG,EAAQ,CAClB,MAAM51F,EAAO,CACT,MAAOxW,EACP,OAAAosG,EACA,WAAY,GACZ,YAAa,KAAK,cAAcpsG,CAAC,CACpC,EACKwsG,EAAenH,IAAUA,EAAO,QAAQ,QAAU,KAAK,QAAQ,QAAQ,SAASrlG,EAAE,OAAO,IAAI,EACnG,GAAI,KAAK,cAAc,cAAewW,EAAMg2F,CAAW,IAAM,GACzD,OAEJ,MAAMz2B,EAAU,KAAK,aAAa/1E,EAAGosG,EAAQ51F,EAAK,WAAW,EAC7D,OAAAA,EAAK,WAAa,GAClB,KAAK,cAAc,aAAcA,EAAMg2F,CAAW,GAC9Cz2B,GAAWv/D,EAAK,UAChB,KAAK,OAAQ,EAEV,IACf,CACC,aAAaxW,EAAGosG,EAAQlD,EAAa,CAC9B,KAAM,CAAE,QAASgD,EAAa,CAAA,EAAK,QAAAlvG,CAAU,EAAG,KAC1Co4F,EAAmBgX,EACnBt5E,EAAS,KAAK,mBAAmB9yB,EAAGksG,EAAYhD,EAAa9T,CAAgB,EAC7E+T,EAAUz4B,GAAc1wE,CAAC,EACzBipG,EAAYD,GAAmBhpG,EAAG,KAAK,WAAYkpG,EAAaC,CAAO,EACzED,IACA,KAAK,WAAa,KAClB7pE,GAASriC,EAAQ,QAAS,CACtBgD,EACA8yB,EACA,IACH,EAAE,IAAI,EACHq2E,GACA9pE,GAASriC,EAAQ,QAAS,CACtBgD,EACA8yB,EACA,IACH,EAAE,IAAI,GAGf,MAAMijD,EAAU,CAAC1G,GAAev8C,EAAQo5E,CAAU,EAClD,OAAIn2B,GAAWq2B,KACX,KAAK,QAAUt5E,EACf,KAAK,mBAAmBA,EAAQo5E,EAAYE,CAAM,GAEtD,KAAK,WAAanD,EACXlzB,CACf,CACC,mBAAmB/1E,EAAGksG,EAAYhD,EAAa9T,EAAkB,CAC1D,GAAIp1F,EAAE,OAAS,WACX,MAAO,CAAE,EAEb,GAAI,CAACkpG,EACD,OAAOgD,EAEX,MAAMG,EAAe,KAAK,QAAQ,MAClC,OAAO,KAAK,0BAA0BrsG,EAAGqsG,EAAa,KAAMA,EAAcjX,CAAgB,CAClG,CACA,CACA,SAASkU,IAAoB,CACzB,OAAOlxD,GAAKixD,GAAM,UAAYhwB,GAAQA,EAAM,SAAS,YAAY,CACrE,CAEA,SAASozB,GAAQ7jG,EAAKkC,EAASqmF,EAAU,CACrC,KAAM,CAAE,WAAAD,EAAa,YAAAwb,EAAc,EAAAr7F,EAAI,EAAAJ,EAAI,YAAAwhF,EAAc,YAAAC,CAAW,EAAM5nF,EAC1E,IAAI6hG,EAAcD,EAAcja,EAGhC7pF,EAAI,UAAW,EACfA,EAAI,IAAIyI,EAAGJ,EAAGwhF,EAAavB,EAAayb,EAAaxb,EAAWwb,CAAW,EACvEja,EAAcga,GACdC,EAAcD,EAAcha,EAC5B9pF,EAAI,IAAIyI,EAAGJ,EAAGyhF,EAAavB,EAAWwb,EAAazb,EAAayb,EAAa,EAAI,GAEjF/jG,EAAI,IAAIyI,EAAGJ,EAAGy7F,EAAavb,EAAWngB,GAASkgB,EAAalgB,EAAO,EAEvEpoE,EAAI,UAAW,EACfA,EAAI,KAAM,CACd,CACA,SAASgkG,GAAgB7vG,EAAO,CAC5B,OAAO8+E,GAAkB9+E,EAAO,CAC5B,aACA,WACA,aACA,UACR,CAAK,CACL,CAGI,SAAS8vG,GAAoB7Z,EAAKN,EAAaD,EAAaqa,EAAY,CACxE,MAAM9rG,EAAI4rG,GAAgB5Z,EAAI,QAAQ,YAAY,EAC5C+Z,GAAiBta,EAAcC,GAAe,EAC9Csa,EAAa,KAAK,IAAID,EAAeD,EAAapa,EAAc,CAAC,EAQjEua,EAAqB/lD,GAAM,CAC7B,MAAMgmD,GAAiBza,EAAc,KAAK,IAAIsa,EAAe7lD,CAAG,GAAK4lD,EAAa,EAClF,OAAOv5B,GAAYrsB,EAAK,EAAG,KAAK,IAAI6lD,EAAeG,CAAa,CAAC,CACpE,EACD,MAAO,CACH,WAAYD,EAAkBjsG,EAAE,UAAU,EAC1C,SAAUisG,EAAkBjsG,EAAE,QAAQ,EACtC,WAAYuyE,GAAYvyE,EAAE,WAAY,EAAGgsG,CAAU,EACnD,SAAUz5B,GAAYvyE,EAAE,SAAU,EAAGgsG,CAAU,CAClD,CACL,CAGI,SAASG,GAAW1wE,EAAG2wE,EAAO/7F,EAAGJ,EAAG,CACpC,MAAO,CACH,EAAGI,EAAIorB,EAAI,KAAK,IAAI2wE,CAAK,EACzB,EAAGn8F,EAAIwrB,EAAI,KAAK,IAAI2wE,CAAK,CAC5B,CACL,CAcI,SAASC,GAAQzkG,EAAKkC,EAASgT,EAAQu0E,EAASltF,EAAKmoG,EAAU,CAC/D,KAAM,CAAE,EAAAj8F,EAAI,EAAAJ,EAAI,WAAY/L,EAAQ,YAAAwnG,EAAc,YAAaa,CAAM,EAAMziG,EACrE2nF,EAAc,KAAK,IAAI3nF,EAAQ,YAAcunF,EAAUv0E,EAAS4uF,EAAa,CAAC,EAC9Eha,EAAc6a,EAAS,EAAIA,EAASlb,EAAUv0E,EAAS4uF,EAAc,EAC3E,IAAIc,EAAgB,EACpB,MAAMxhC,EAAQ7mE,EAAMD,EACpB,GAAImtF,EAAS,CAIT,MAAMob,EAAuBF,EAAS,EAAIA,EAASlb,EAAU,EACvDqb,EAAuBjb,EAAc,EAAIA,EAAcJ,EAAU,EACjEsb,GAAsBF,EAAuBC,GAAwB,EACrEE,EAAgBD,IAAuB,EAAI3hC,EAAQ2hC,GAAsBA,EAAqBtb,GAAWrmB,EAC/GwhC,GAAiBxhC,EAAQ4hC,GAAiB,CAClD,CACI,MAAMC,EAAO,KAAK,IAAI,KAAO7hC,EAAQymB,EAAc30E,EAAS6yD,EAAE,EAAI8hB,EAC5Dqb,GAAe9hC,EAAQ6hC,GAAQ,EAC/B3c,EAAahsF,EAAQ4oG,EAAcN,EACnCrc,EAAWhsF,EAAM2oG,EAAcN,EAC/B,CAAE,WAAAO,EAAa,SAAAC,EAAW,WAAAC,EAAa,SAAAC,CAAW,EAAGrB,GAAoB/hG,EAAS4nF,EAAaD,EAAatB,EAAWD,CAAU,EACjIid,EAA2B1b,EAAcsb,EACzCK,EAAyB3b,EAAcub,EACvCK,EAA0Bnd,EAAa6c,EAAaI,EACpDG,EAAwBnd,EAAW6c,EAAWI,EAC9CG,EAA2B7b,EAAcub,EACzCO,EAAyB9b,EAAcwb,EACvCO,EAA0Bvd,EAAa+c,EAAaM,EACpDG,EAAwBvd,EAAW+c,EAAWM,EAEpD,GADA5lG,EAAI,UAAW,EACX0kG,EAAU,CAEV,MAAMqB,GAAyBN,EAA0BC,GAAyB,EAIlF,GAHA1lG,EAAI,IAAIyI,EAAGJ,EAAGwhF,EAAa4b,EAAyBM,CAAqB,EACzE/lG,EAAI,IAAIyI,EAAGJ,EAAGwhF,EAAakc,EAAuBL,CAAqB,EAEnEN,EAAW,EAAG,CACd,MAAMY,EAAUzB,GAAWiB,EAAwBE,EAAuBj9F,EAAGJ,CAAC,EAC9ErI,EAAI,IAAIgmG,EAAQ,EAAGA,EAAQ,EAAGZ,EAAUM,EAAuBnd,EAAWngB,EAAO,CAC7F,CAEQ,MAAM69B,EAAK1B,GAAWqB,EAAwBrd,EAAU9/E,EAAGJ,CAAC,EAG5D,GAFArI,EAAI,OAAOimG,EAAG,EAAGA,EAAG,CAAC,EAEjBX,EAAW,EAAG,CACd,MAAMY,EAAW3B,GAAWqB,EAAwBE,EAAuBr9F,EAAGJ,CAAC,EAC/ErI,EAAI,IAAIkmG,EAAS,EAAGA,EAAS,EAAGZ,EAAU/c,EAAWngB,GAAS09B,EAAwB,KAAK,EAAE,CACzG,CAEQ,MAAMK,GAAyB5d,EAAW+c,EAAWxb,GAAexB,EAAa+c,EAAavb,IAAgB,EAI9G,GAHA9pF,EAAI,IAAIyI,EAAGJ,EAAGyhF,EAAavB,EAAW+c,EAAWxb,EAAaqc,EAAuB,EAAI,EACzFnmG,EAAI,IAAIyI,EAAGJ,EAAGyhF,EAAaqc,EAAuB7d,EAAa+c,EAAavb,EAAa,EAAI,EAEzFub,EAAa,EAAG,CAChB,MAAMe,EAAW7B,GAAWoB,EAA0BE,EAAyBp9F,EAAGJ,CAAC,EACnFrI,EAAI,IAAIomG,EAAS,EAAGA,EAAS,EAAGf,EAAYQ,EAA0B,KAAK,GAAIvd,EAAalgB,EAAO,CAC/G,CAEQ,MAAMi+B,EAAK9B,GAAWgB,EAA0Bjd,EAAY7/E,EAAGJ,CAAC,EAGhE,GAFArI,EAAI,OAAOqmG,EAAG,EAAGA,EAAG,CAAC,EAEjBlB,EAAa,EAAG,CAChB,MAAMmB,EAAW/B,GAAWgB,EAA0BE,EAAyBh9F,EAAGJ,CAAC,EACnFrI,EAAI,IAAIsmG,EAAS,EAAGA,EAAS,EAAGnB,EAAY7c,EAAalgB,GAASq9B,CAAuB,CACrG,CACA,KAAW,CACHzlG,EAAI,OAAOyI,EAAGJ,CAAC,EACf,MAAMk+F,EAAc,KAAK,IAAId,CAAuB,EAAI5b,EAAcphF,EAChE+9F,EAAc,KAAK,IAAIf,CAAuB,EAAI5b,EAAcxhF,EACtErI,EAAI,OAAOumG,EAAaC,CAAW,EACnC,MAAMC,EAAY,KAAK,IAAIf,CAAqB,EAAI7b,EAAcphF,EAC5Di+F,EAAY,KAAK,IAAIhB,CAAqB,EAAI7b,EAAcxhF,EAClErI,EAAI,OAAOymG,EAAWC,CAAS,CACvC,CACI1mG,EAAI,UAAW,CACnB,CACA,SAAS2mG,GAAQ3mG,EAAKkC,EAASgT,EAAQu0E,EAASib,EAAU,CACtD,KAAM,CAAE,YAAAkC,EAAc,WAAAte,EAAa,cAAAJ,CAAgB,EAAGhmF,EACtD,IAAIqmF,EAAWrmF,EAAQ,SACvB,GAAI0kG,EAAa,CACbnC,GAAQzkG,EAAKkC,EAASgT,EAAQu0E,EAASlB,EAAUmc,CAAQ,EACzD,QAAQ7sG,EAAI,EAAGA,EAAI+uG,EAAa,EAAE/uG,EAC9BmI,EAAI,KAAM,EAET,MAAMkoF,CAAa,IACpBK,EAAWD,GAAcJ,EAAgBlgB,IAAOA,IAE5D,CACI,OAAAy8B,GAAQzkG,EAAKkC,EAASgT,EAAQu0E,EAASlB,EAAUmc,CAAQ,EACzD1kG,EAAI,KAAM,EACHuoF,CACX,CACA,SAASse,GAAW7mG,EAAKkC,EAASgT,EAAQu0E,EAASib,EAAU,CACzD,KAAM,CAAE,YAAAkC,EAAc,WAAAte,EAAa,cAAAJ,EAAgB,QAAA9zF,CAAU,EAAG8N,EAC1D,CAAE,YAAA4kG,EAAc,gBAAAC,CAAe,EAAM3yG,EACrC4yG,EAAQ5yG,EAAQ,cAAgB,QACtC,GAAI,CAAC0yG,EACD,OAEAE,GACAhnG,EAAI,UAAY8mG,EAAc,EAC9B9mG,EAAI,SAAW+mG,GAAmB,UAElC/mG,EAAI,UAAY8mG,EAChB9mG,EAAI,SAAW+mG,GAAmB,SAEtC,IAAIxe,EAAWrmF,EAAQ,SACvB,GAAI0kG,EAAa,CACbnC,GAAQzkG,EAAKkC,EAASgT,EAAQu0E,EAASlB,EAAUmc,CAAQ,EACzD,QAAQ7sG,EAAI,EAAGA,EAAI+uG,EAAa,EAAE/uG,EAC9BmI,EAAI,OAAQ,EAEX,MAAMkoF,CAAa,IACpBK,EAAWD,GAAcJ,EAAgBlgB,IAAOA,IAE5D,CACQg/B,GACAnD,GAAQ7jG,EAAKkC,EAASqmF,CAAQ,EAE7Bqe,IACDnC,GAAQzkG,EAAKkC,EAASgT,EAAQu0E,EAASlB,EAAUmc,CAAQ,EACzD1kG,EAAI,OAAQ,EAEpB,CACA,MAAMinG,WAAmB/R,EAAQ,CAC7B,OAAO,GAAK,MACZ,OAAO,SAAW,CACd,YAAa,SACb,YAAa,OACb,gBAAiB,OACjB,aAAc,EACd,YAAa,EACb,OAAQ,EACR,QAAS,EACT,MAAO,OACP,SAAU,EACb,EACD,OAAO,cAAgB,CACnB,gBAAiB,iBACpB,EACD,YAAYpW,EAAI,CACZ,MAAO,EACP,KAAK,QAAU,OACf,KAAK,cAAgB,OACrB,KAAK,WAAa,OAClB,KAAK,SAAW,OAChB,KAAK,YAAc,OACnB,KAAK,YAAc,OACnB,KAAK,YAAc,EACnB,KAAK,YAAc,EACfA,GACA,OAAO,OAAO,KAAMA,CAAG,CAEnC,CACI,QAAQooB,EAAQC,EAAQ3a,EAAkB,CACtC,MAAM9a,EAAQ,KAAK,SAAS,CACxB,IACA,GACH,EAAE8a,CAAgB,EACb,CAAE,MAAAziB,EAAQ,SAAA5qD,GAAcsqD,GAAkBiI,EAAO,CACnD,EAAGw1B,EACH,EAAGC,CACf,CAAS,EACK,CAAE,WAAA7e,EAAa,SAAAC,EAAW,YAAAuB,EAAc,YAAAD,EAAc,cAAA3B,CAAgB,EAAG,KAAK,SAAS,CACzF,aACA,WACA,cACA,cACA,eACH,EAAEsE,CAAgB,EACb4a,EAAU,KAAK,QAAQ,QAAU,EAEjCC,EADiBjhC,GAAe8hB,EAAeK,EAAWD,CAAU,GAClCtgB,IAAOqC,GAAcN,EAAOue,EAAYC,CAAQ,EAClF+e,EAAez8B,GAAW1rD,EAAU2qE,EAAcsd,EAASvd,EAAcud,CAAO,EACtF,OAAOC,GAAiBC,CAChC,CACI,eAAe9a,EAAkB,CAC7B,KAAM,CAAE,EAAA/jF,EAAI,EAAAJ,EAAI,WAAAigF,EAAa,SAAAC,EAAW,YAAAuB,EAAc,YAAAD,CAAW,EAAM,KAAK,SAAS,CACjF,IACA,IACA,aACA,WACA,cACA,cACA,eACH,EAAE2C,CAAgB,EACb,CAAE,OAAAt3E,EAAS,QAAAu0E,CAAU,EAAG,KAAK,QAC7B8d,GAAajf,EAAaC,GAAY,EACtCif,GAAc1d,EAAcD,EAAcJ,EAAUv0E,GAAU,EACpE,MAAO,CACH,EAAGzM,EAAI,KAAK,IAAI8+F,CAAS,EAAIC,EAC7B,EAAGn/F,EAAI,KAAK,IAAIk/F,CAAS,EAAIC,CAChC,CACT,CACI,gBAAgBhb,EAAkB,CAC9B,OAAO,KAAK,eAAeA,CAAgB,CACnD,CACI,KAAKxsF,EAAK,CACN,KAAM,CAAE,QAAA5L,EAAU,cAAA8zF,CAAa,EAAM,KAC/BhzE,GAAU9gB,EAAQ,QAAU,GAAK,EACjCq1F,GAAWr1F,EAAQ,SAAW,GAAK,EACnCswG,EAAWtwG,EAAQ,SAGzB,GAFA,KAAK,YAAcA,EAAQ,cAAgB,QAAU,IAAO,EAC5D,KAAK,YAAc8zF,EAAgBlgB,GAAM,KAAK,MAAMkgB,EAAgBlgB,EAAG,EAAI,EACvEkgB,IAAkB,GAAK,KAAK,YAAc,GAAK,KAAK,YAAc,EAClE,OAEJloF,EAAI,KAAM,EACV,MAAMunG,GAAa,KAAK,WAAa,KAAK,UAAY,EACtDvnG,EAAI,UAAU,KAAK,IAAIunG,CAAS,EAAIryF,EAAQ,KAAK,IAAIqyF,CAAS,EAAIryF,CAAM,EACxE,MAAMuyF,EAAM,EAAI,KAAK,IAAI,KAAK,IAAI1/B,GAAImgB,GAAiB,CAAC,CAAC,EACnDwf,EAAexyF,EAASuyF,EAC9BznG,EAAI,UAAY5L,EAAQ,gBACxB4L,EAAI,YAAc5L,EAAQ,YAC1BuyG,GAAQ3mG,EAAK,KAAM0nG,EAAcje,EAASib,CAAQ,EAClDmC,GAAW7mG,EAAK,KAAM0nG,EAAcje,EAASib,CAAQ,EACrD1kG,EAAI,QAAS,CACrB,CACA,CAEA,SAASyoC,GAASzoC,EAAK5L,EAASyP,EAAQzP,EAAS,CAC7C4L,EAAI,QAAUomE,GAAeviE,EAAM,eAAgBzP,EAAQ,cAAc,EACzE4L,EAAI,YAAYomE,GAAeviE,EAAM,WAAYzP,EAAQ,UAAU,CAAC,EACpE4L,EAAI,eAAiBomE,GAAeviE,EAAM,iBAAkBzP,EAAQ,gBAAgB,EACpF4L,EAAI,SAAWomE,GAAeviE,EAAM,gBAAiBzP,EAAQ,eAAe,EAC5E4L,EAAI,UAAYomE,GAAeviE,EAAM,YAAazP,EAAQ,WAAW,EACrE4L,EAAI,YAAcomE,GAAeviE,EAAM,YAAazP,EAAQ,WAAW,CAC3E,CACA,SAASuzG,GAAO3nG,EAAKyO,EAAU3Q,EAAQ,CACnCkC,EAAI,OAAOlC,EAAO,EAAGA,EAAO,CAAC,CACjC,CACA,SAAS8pG,GAAcxzG,EAAS,CAC5B,OAAIA,EAAQ,QACD29E,GAEP39E,EAAQ,SAAWA,EAAQ,yBAA2B,WAC/C89E,GAEJy1B,EACX,CACA,SAASE,GAASt7B,EAAQt5B,EAASZ,EAAS,CAAA,EAAI,CAC5C,MAAMzgD,EAAQ26E,EAAO,OACf,CAAE,MAAOu7B,EAAc,EAAI,IAAKC,EAAYn2G,EAAQ,CAAC,EAAMygD,EAC3D,CAAE,MAAO21D,EAAe,IAAKC,CAAa,EAAGh1D,EAC7C32C,EAAQ,KAAK,IAAIwrG,EAAaE,CAAY,EAC1CzrG,EAAM,KAAK,IAAIwrG,EAAWE,CAAU,EACpCC,EAAUJ,EAAcE,GAAgBD,EAAYC,GAAgBF,EAAcG,GAAcF,EAAYE,EAClH,MAAO,CACH,MAAAr2G,EACA,MAAA0K,EACA,KAAM22C,EAAQ,KACd,KAAM12C,EAAMD,GAAS,CAAC4rG,EAAUt2G,EAAQ2K,EAAMD,EAAQC,EAAMD,CAC/D,CACL,CACC,SAAS6rG,GAAYnoG,EAAK6nD,EAAM5U,EAASZ,EAAQ,CAC9C,KAAM,CAAE,OAAAk6B,EAAS,QAAAn4E,CAAO,EAAMyzD,EACxB,CAAE,MAAAj2D,EAAQ,MAAA0K,EAAQ,KAAAk8E,EAAO,KAAA5R,CAAO,EAAGihC,GAASt7B,EAAQt5B,EAASZ,CAAM,EACnE+1D,EAAaR,GAAcxzG,CAAO,EACxC,GAAI,CAAE,KAAAqwF,EAAM,GAAO,QAAAje,CAAU,EAAGn0B,GAAU,CAAE,EACxCx6C,EAAG65E,EAAOr5E,EACd,IAAIR,EAAI,EAAGA,GAAK+uE,EAAM,EAAE/uE,EACpB65E,EAAQnF,GAAQjwE,GAASkqE,EAAUI,EAAO/uE,EAAIA,IAAMjG,CAAK,EACrD,CAAA8/E,EAAM,OAEC+S,GACPzkF,EAAI,OAAO0xE,EAAM,EAAGA,EAAM,CAAC,EAC3B+S,EAAO,IAEP2jB,EAAWpoG,EAAK3H,EAAMq5E,EAAOlL,EAASpyE,EAAQ,OAAO,EAEzDiE,EAAOq5E,GAEX,OAAI8G,IACA9G,EAAQnF,GAAQjwE,GAASkqE,EAAUI,EAAO,IAAMh1E,CAAK,EACrDw2G,EAAWpoG,EAAK3H,EAAMq5E,EAAOlL,EAASpyE,EAAQ,OAAO,GAElD,CAAC,CAACokF,CACb,CACC,SAAS6vB,GAAgBroG,EAAK6nD,EAAM5U,EAASZ,EAAQ,CAClD,MAAMk6B,EAAS1kB,EAAK,OACd,CAAE,MAAAj2D,EAAQ,MAAA0K,EAAQ,KAAAsqE,CAAI,EAAMihC,GAASt7B,EAAQt5B,EAASZ,CAAM,EAC5D,CAAE,KAAAoyC,EAAM,GAAO,QAAAje,CAAU,EAAGn0B,GAAU,CAAE,EAC9C,IAAIi2D,EAAO,EACPC,EAAS,EACT1wG,EAAG65E,EAAO82B,EAAOvf,EAAMF,EAAM0f,EACjC,MAAMC,EAAc3tG,IAASuB,GAASkqE,EAAUI,EAAO7rE,EAAQA,IAAUnJ,EACnE+2G,EAAQ,IAAI,CACV1f,IAASF,IACT/oF,EAAI,OAAOsoG,EAAMvf,CAAI,EACrB/oF,EAAI,OAAOsoG,EAAMrf,CAAI,EACrBjpF,EAAI,OAAOsoG,EAAMG,CAAK,EAE7B,EAKD,IAJIhkB,IACA/S,EAAQnF,EAAOm8B,EAAW,CAAC,CAAC,EAC5B1oG,EAAI,OAAO0xE,EAAM,EAAGA,EAAM,CAAC,GAE3B75E,EAAI,EAAGA,GAAK+uE,EAAM,EAAE/uE,EAAE,CAEtB,GADA65E,EAAQnF,EAAOm8B,EAAW7wG,CAAC,CAAC,EACxB65E,EAAM,KACN,SAEJ,MAAMjpE,EAAIipE,EAAM,EACVrpE,EAAIqpE,EAAM,EACVk3B,EAASngG,EAAI,EACfmgG,IAAWJ,GACPngG,EAAI4gF,EACJA,EAAO5gF,EACAA,EAAI0gF,IACXA,EAAO1gF,GAEXigG,GAAQC,EAASD,EAAO7/F,GAAK,EAAE8/F,IAE/BI,EAAO,EACP3oG,EAAI,OAAOyI,EAAGJ,CAAC,EACfmgG,EAAQI,EACRL,EAAS,EACTtf,EAAOF,EAAO1gF,GAElBogG,EAAQpgG,CAChB,CACIsgG,EAAO,CACX,CACC,SAASE,GAAkBhhD,EAAM,CAC9B,MAAMgM,EAAOhM,EAAK,QACZ8xC,EAAa9lC,EAAK,YAAcA,EAAK,WAAW,OAEtD,MADoB,CAAChM,EAAK,YAAc,CAACA,EAAK,OAAS,CAACgM,EAAK,SAAWA,EAAK,yBAA2B,YAAc,CAACA,EAAK,SAAW,CAAC8lC,EACnH0O,GAAkBF,EAC3C,CACC,SAASW,GAAwB10G,EAAS,CACvC,OAAIA,EAAQ,QACD8mF,GAEP9mF,EAAQ,SAAWA,EAAQ,yBAA2B,WAC/C+mF,GAEJF,EACX,CACA,SAAS8tB,GAAoB/oG,EAAK6nD,EAAMvrD,EAAO1K,EAAO,CAClD,IAAIqU,EAAO4hD,EAAK,MACX5hD,IACDA,EAAO4hD,EAAK,MAAQ,IAAI,OACpBA,EAAK,KAAK5hD,EAAM3J,EAAO1K,CAAK,GAC5BqU,EAAK,UAAW,GAGxBwiC,GAASzoC,EAAK6nD,EAAK,OAAO,EAC1B7nD,EAAI,OAAOiG,CAAI,CACnB,CACA,SAAS+iG,GAAiBhpG,EAAK6nD,EAAMvrD,EAAO1K,EAAO,CAC/C,KAAM,CAAE,SAAA+gD,EAAW,QAAAv+C,CAAO,EAAMyzD,EAC1BohD,EAAgBJ,GAAkBhhD,CAAI,EAC5C,UAAW5U,KAAWN,EAClBlK,GAASzoC,EAAK5L,EAAS6+C,EAAQ,KAAK,EACpCjzC,EAAI,UAAW,EACXipG,EAAcjpG,EAAK6nD,EAAM5U,EAAS,CAClC,MAAA32C,EACA,IAAKA,EAAQ1K,EAAQ,CACjC,CAAS,GACGoO,EAAI,UAAW,EAEnBA,EAAI,OAAQ,CAEpB,CACA,MAAMkpG,GAAY,OAAO,QAAW,WACpC,SAAS5qB,GAAKt+E,EAAK6nD,EAAMvrD,EAAO1K,EAAO,CAC/Bs3G,IAAa,CAACrhD,EAAK,QAAQ,QAC3BkhD,GAAoB/oG,EAAK6nD,EAAMvrD,EAAO1K,CAAK,EAE3Co3G,GAAiBhpG,EAAK6nD,EAAMvrD,EAAO1K,CAAK,CAEhD,CACA,MAAMu3G,WAAoBjU,EAAQ,CAC9B,OAAO,GAAK,OACf,OAAO,SAAW,CACX,eAAgB,OAChB,WAAY,CAAE,EACd,iBAAkB,EAClB,gBAAiB,QACjB,YAAa,EACb,gBAAiB,GACjB,uBAAwB,UACxB,KAAM,GACN,SAAU,GACV,QAAS,GACT,QAAS,CACZ,EACJ,OAAO,cAAgB,CAChB,gBAAiB,kBACjB,YAAa,aAChB,EACD,OAAO,YAAc,CACjB,YAAa,GACb,WAAav2F,GAAOA,IAAS,cAAgBA,IAAS,MACzD,EACD,YAAYmgF,EAAI,CACZ,MAAO,EACP,KAAK,SAAW,GAChB,KAAK,QAAU,OACf,KAAK,OAAS,OACd,KAAK,MAAQ,OACb,KAAK,UAAY,OACjB,KAAK,MAAQ,OACb,KAAK,QAAU,OACf,KAAK,UAAY,OACjB,KAAK,WAAa,GAClB,KAAK,eAAiB,GACtB,KAAK,cAAgB,OACjBA,GACA,OAAO,OAAO,KAAMA,CAAG,CAEnC,CACI,oBAAoByK,EAAWlT,EAAW,CACtC,MAAMjiF,EAAU,KAAK,QACrB,IAAKA,EAAQ,SAAWA,EAAQ,yBAA2B,aAAe,CAACA,EAAQ,SAAW,CAAC,KAAK,eAAgB,CAChH,MAAMokF,EAAOpkF,EAAQ,SAAW,KAAK,MAAQ,KAAK,UAClDmkF,GAA2B,KAAK,QAASnkF,EAASm1F,EAAW/Q,EAAMnC,CAAS,EAC5E,KAAK,eAAiB,EAClC,CACA,CACI,IAAI,OAAO9J,EAAQ,CACf,KAAK,QAAUA,EACf,OAAO,KAAK,UACZ,OAAO,KAAK,MACZ,KAAK,eAAiB,EAC9B,CACI,IAAI,QAAS,CACT,OAAO,KAAK,OACpB,CACI,IAAI,UAAW,CACX,OAAO,KAAK,YAAc,KAAK,UAAY6Q,GAAiB,KAAM,KAAK,QAAQ,OAAO,EAC9F,CACC,OAAQ,CACD,MAAMzqC,EAAW,KAAK,SAChB45B,EAAS,KAAK,OACpB,OAAO55B,EAAS,QAAU45B,EAAO55B,EAAS,CAAC,EAAE,KAAK,CAC1D,CACC,MAAO,CACA,MAAMA,EAAW,KAAK,SAChB45B,EAAS,KAAK,OACd36E,EAAQ+gD,EAAS,OACvB,OAAO/gD,GAAS26E,EAAO55B,EAAS/gD,EAAQ,CAAC,EAAE,GAAG,CACtD,CACC,YAAY8/E,EAAOx0E,EAAU,CACtB,MAAM9I,EAAU,KAAK,QACfD,EAAQu9E,EAAMx0E,CAAQ,EACtBqvE,EAAS,KAAK,OACd55B,EAAWmqC,GAAe,KAAM,CAClC,SAAA5/E,EACA,MAAO/I,EACP,IAAKA,CACjB,CAAS,EACD,GAAI,CAACw+C,EAAS,OACV,OAEJ,MAAM76C,EAAS,CAAE,EACXsxG,EAAeN,GAAwB10G,CAAO,EACpD,IAAIyD,EAAG+uE,EACP,IAAI/uE,EAAI,EAAG+uE,EAAOj0B,EAAS,OAAQ96C,EAAI+uE,EAAM,EAAE/uE,EAAE,CAC7C,KAAM,CAAE,MAAAyE,EAAQ,IAAAC,GAASo2C,EAAS96C,CAAC,EAC7B0pD,EAAKgrB,EAAOjwE,CAAK,EACjBklD,EAAK+qB,EAAOhwE,CAAG,EACrB,GAAIglD,IAAOC,EAAI,CACX1pD,EAAO,KAAKypD,CAAE,EACd,QAChB,CACY,MAAM7oD,EAAI,KAAK,KAAKvE,EAAQotD,EAAGrkD,CAAQ,IAAMskD,EAAGtkD,CAAQ,EAAIqkD,EAAGrkD,CAAQ,EAAE,EACnEmsG,EAAeD,EAAa7nD,EAAIC,EAAI9oD,EAAGtE,EAAQ,OAAO,EAC5Di1G,EAAansG,CAAQ,EAAIw0E,EAAMx0E,CAAQ,EACvCpF,EAAO,KAAKuxG,CAAY,CACpC,CACQ,OAAOvxG,EAAO,SAAW,EAAIA,EAAO,CAAC,EAAIA,CACjD,CACC,YAAYkI,EAAKizC,EAASZ,EAAQ,CAE3B,OADsBw2D,GAAkB,IAAI,EACvB7oG,EAAK,KAAMizC,EAASZ,CAAM,CACvD,CACC,KAAKryC,EAAK1D,EAAO1K,EAAO,CACjB,MAAM+gD,EAAW,KAAK,SAChBs2D,EAAgBJ,GAAkB,IAAI,EAC5C,IAAIrwB,EAAO,KAAK,MAChBl8E,EAAQA,GAAS,EACjB1K,EAAQA,GAAS,KAAK,OAAO,OAAS0K,EACtC,UAAW22C,KAAWN,EAClB6lC,GAAQywB,EAAcjpG,EAAK,KAAMizC,EAAS,CACtC,MAAA32C,EACA,IAAKA,EAAQ1K,EAAQ,CACrC,CAAa,EAEL,MAAO,CAAC,CAAC4mF,CACjB,CACC,KAAKx4E,EAAKupF,EAAWjtF,EAAO1K,EAAO,CAC5B,MAAMwC,EAAU,KAAK,SAAW,CAAE,GACnB,KAAK,QAAU,CAAE,GACrB,QAAUA,EAAQ,cACzB4L,EAAI,KAAM,EACVs+E,GAAKt+E,EAAK,KAAM1D,EAAO1K,CAAK,EAC5BoO,EAAI,QAAS,GAEb,KAAK,WACL,KAAK,eAAiB,GACtB,KAAK,MAAQ,OAEzB,CACA,CAEA,SAASspG,GAAU7jG,EAAI+qD,EAAKj8C,EAAMi4E,EAAkB,CAChD,MAAMp4F,EAAUqR,EAAG,QACb,CAAE,CAAC8O,CAAI,EAAGpgB,CAAK,EAAMsR,EAAG,SAAS,CACnC8O,CACH,EAAEi4E,CAAgB,EACnB,OAAO,KAAK,IAAIh8B,EAAMr8D,CAAK,EAAIC,EAAQ,OAASA,EAAQ,SAC5D,CACA,MAAMm1G,WAAqBrU,EAAQ,CAC/B,OAAO,GAAK,QAGV,OAAO,SAAW,CAChB,YAAa,EACb,UAAW,EACX,iBAAkB,EAClB,YAAa,EACb,WAAY,SACZ,OAAQ,EACR,SAAU,CACb,EAGC,OAAO,cAAgB,CACrB,gBAAiB,kBACjB,YAAa,aAChB,EACD,YAAYpW,EAAI,CACZ,MAAO,EACP,KAAK,QAAU,OACf,KAAK,OAAS,OACd,KAAK,KAAO,OACZ,KAAK,KAAO,OACRA,GACA,OAAO,OAAO,KAAMA,CAAG,CAEnC,CACI,QAAQ0qB,EAAQC,EAAQjd,EAAkB,CACtC,MAAMp4F,EAAU,KAAK,QACf,CAAE,EAAAqU,EAAI,EAAAJ,GAAO,KAAK,SAAS,CAC7B,IACA,GACH,EAAEmkF,CAAgB,EACnB,OAAO,KAAK,IAAIgd,EAAS/gG,EAAG,CAAC,EAAI,KAAK,IAAIghG,EAASphG,EAAG,CAAC,EAAI,KAAK,IAAIjU,EAAQ,UAAYA,EAAQ,OAAQ,CAAC,CACjH,CACI,SAASo1G,EAAQhd,EAAkB,CAC/B,OAAO8c,GAAU,KAAME,EAAQ,IAAKhd,CAAgB,CAC5D,CACI,SAASid,EAAQjd,EAAkB,CAC/B,OAAO8c,GAAU,KAAMG,EAAQ,IAAKjd,CAAgB,CAC5D,CACI,eAAeA,EAAkB,CAC7B,KAAM,CAAE,EAAA/jF,EAAI,EAAAJ,GAAO,KAAK,SAAS,CAC7B,IACA,GACH,EAAEmkF,CAAgB,EACnB,MAAO,CACH,EAAA/jF,EACA,EAAAJ,CACH,CACT,CACI,KAAKjU,EAAS,CACVA,EAAUA,GAAW,KAAK,SAAW,CAAE,EACvC,IAAIm9E,EAASn9E,EAAQ,QAAU,EAC/Bm9E,EAAS,KAAK,IAAIA,EAAQA,GAAUn9E,EAAQ,aAAe,CAAC,EAC5D,MAAM0yG,EAAcv1B,GAAUn9E,EAAQ,aAAe,EACrD,OAAQm9E,EAASu1B,GAAe,CACxC,CACI,KAAK9mG,EAAK2xE,EAAM,CACZ,MAAMv9E,EAAU,KAAK,QACjB,KAAK,MAAQA,EAAQ,OAAS,IAAO,CAACq9E,GAAe,KAAME,EAAM,KAAK,KAAKv9E,CAAO,EAAI,CAAC,IAG3F4L,EAAI,YAAc5L,EAAQ,YAC1B4L,EAAI,UAAY5L,EAAQ,YACxB4L,EAAI,UAAY5L,EAAQ,gBACxB28E,GAAU/wE,EAAK5L,EAAS,KAAK,EAAG,KAAK,CAAC,EAC9C,CACI,UAAW,CACP,MAAMA,EAAU,KAAK,SAAW,CAAE,EAElC,OAAOA,EAAQ,OAASA,EAAQ,SACxC,CACA,CAEA,SAASs1G,GAAaC,EAAKnd,EAAkB,CACzC,KAAM,CAAE,EAAA/jF,EAAI,EAAAJ,EAAI,KAAAwpC,EAAO,MAAA1/B,EAAQ,OAAAC,CAAS,EAAIu3F,EAAI,SAAS,CACrD,IACA,IACA,OACA,QACA,QACH,EAAEnd,CAAgB,EACnB,IAAIx9E,EAAMD,EAAOzU,EAAKwU,EAAQ86F,EAC9B,OAAID,EAAI,YACJC,EAAOx3F,EAAS,EAChBpD,EAAO,KAAK,IAAIvG,EAAGopC,CAAI,EACvB9iC,EAAQ,KAAK,IAAItG,EAAGopC,CAAI,EACxBv3C,EAAM+N,EAAIuhG,EACV96F,EAASzG,EAAIuhG,IAEbA,EAAOz3F,EAAQ,EACfnD,EAAOvG,EAAImhG,EACX76F,EAAQtG,EAAImhG,EACZtvG,EAAM,KAAK,IAAI+N,EAAGwpC,CAAI,EACtB/iC,EAAS,KAAK,IAAIzG,EAAGwpC,CAAI,GAEtB,CACH,KAAA7iC,EACA,IAAA1U,EACA,MAAAyU,EACA,OAAAD,CACH,CACL,CACA,SAAS+6F,GAAY7W,EAAM7+F,EAAOmd,EAAKD,EAAK,CACxC,OAAO2hF,EAAO,EAAIroB,GAAYx2E,EAAOmd,EAAKD,CAAG,CACjD,CACA,SAASy4F,GAAiBH,EAAKI,EAAMC,EAAM,CACvC,MAAM71G,EAAQw1G,EAAI,QAAQ,YACpB3W,EAAO2W,EAAI,cACXvxG,EAAI+6E,GAAOh/E,CAAK,EACtB,MAAO,CACH,EAAG01G,GAAY7W,EAAK,IAAK56F,EAAE,IAAK,EAAG4xG,CAAI,EACvC,EAAGH,GAAY7W,EAAK,MAAO56F,EAAE,MAAO,EAAG2xG,CAAI,EAC3C,EAAGF,GAAY7W,EAAK,OAAQ56F,EAAE,OAAQ,EAAG4xG,CAAI,EAC7C,EAAGH,GAAY7W,EAAK,KAAM56F,EAAE,KAAM,EAAG2xG,CAAI,CAC5C,CACL,CACA,SAASE,GAAkBN,EAAKI,EAAMC,EAAM,CACxC,KAAM,CAAE,mBAAAE,CAAkB,EAAMP,EAAI,SAAS,CACzC,oBACR,CAAK,EACKx1G,EAAQw1G,EAAI,QAAQ,aACpBvxG,EAAIg7E,GAAcj/E,CAAK,EACvBg2G,EAAO,KAAK,IAAIJ,EAAMC,CAAI,EAC1BhX,EAAO2W,EAAI,cACXS,EAAeF,GAAsBvrD,GAASxqD,CAAK,EACzD,MAAO,CACH,QAAS01G,GAAY,CAACO,GAAgBpX,EAAK,KAAOA,EAAK,KAAM56F,EAAE,QAAS,EAAG+xG,CAAI,EAC/E,SAAUN,GAAY,CAACO,GAAgBpX,EAAK,KAAOA,EAAK,MAAO56F,EAAE,SAAU,EAAG+xG,CAAI,EAClF,WAAYN,GAAY,CAACO,GAAgBpX,EAAK,QAAUA,EAAK,KAAM56F,EAAE,WAAY,EAAG+xG,CAAI,EACxF,YAAaN,GAAY,CAACO,GAAgBpX,EAAK,QAAUA,EAAK,MAAO56F,EAAE,YAAa,EAAG+xG,CAAI,CAC9F,CACL,CACA,SAASE,GAAcV,EAAK,CACxB,MAAMztB,EAASwtB,GAAaC,CAAG,EACzBx3F,EAAQ+pE,EAAO,MAAQA,EAAO,KAC9B9pE,EAAS8pE,EAAO,OAASA,EAAO,IAChC58C,EAASwqE,GAAiBH,EAAKx3F,EAAQ,EAAGC,EAAS,CAAC,EACpDm/D,EAAS04B,GAAkBN,EAAKx3F,EAAQ,EAAGC,EAAS,CAAC,EAC3D,MAAO,CACH,MAAO,CACH,EAAG8pE,EAAO,KACV,EAAGA,EAAO,IACV,EAAG/pE,EACH,EAAGC,EACH,OAAAm/D,CACH,EACD,MAAO,CACH,EAAG2K,EAAO,KAAO58C,EAAO,EACxB,EAAG48C,EAAO,IAAM58C,EAAO,EACvB,EAAGntB,EAAQmtB,EAAO,EAAIA,EAAO,EAC7B,EAAGltB,EAASktB,EAAO,EAAIA,EAAO,EAC9B,OAAQ,CACJ,QAAS,KAAK,IAAI,EAAGiyC,EAAO,QAAU,KAAK,IAAIjyC,EAAO,EAAGA,EAAO,CAAC,CAAC,EAClE,SAAU,KAAK,IAAI,EAAGiyC,EAAO,SAAW,KAAK,IAAIjyC,EAAO,EAAGA,EAAO,CAAC,CAAC,EACpE,WAAY,KAAK,IAAI,EAAGiyC,EAAO,WAAa,KAAK,IAAIjyC,EAAO,EAAGA,EAAO,CAAC,CAAC,EACxE,YAAa,KAAK,IAAI,EAAGiyC,EAAO,YAAc,KAAK,IAAIjyC,EAAO,EAAGA,EAAO,CAAC,CAAC,CAC1F,CACA,CACK,CACL,CACA,SAASgtB,GAAQq9C,EAAKlhG,EAAGJ,EAAGmkF,EAAkB,CAC1C,MAAM8d,EAAQ7hG,IAAM,KACd8hG,EAAQliG,IAAM,KAEd6zE,EAASytB,GAAO,EADLW,GAASC,IACSb,GAAaC,EAAKnd,CAAgB,EACrE,OAAOtQ,IAAWouB,GAASz/B,GAAWpiE,EAAGyzE,EAAO,KAAMA,EAAO,KAAK,KAAOquB,GAAS1/B,GAAWxiE,EAAG6zE,EAAO,IAAKA,EAAO,MAAM,EAC7H,CACA,SAASsuB,GAAUj5B,EAAQ,CACvB,OAAOA,EAAO,SAAWA,EAAO,UAAYA,EAAO,YAAcA,EAAO,WAC5E,CACC,SAASk5B,GAAkBzqG,EAAK2Z,EAAM,CACnC3Z,EAAI,KAAK2Z,EAAK,EAAGA,EAAK,EAAGA,EAAK,EAAGA,EAAK,CAAC,CAC3C,CACA,SAAS+wF,GAAY/wF,EAAMgxF,EAAQC,EAAU,CAAA,EAAI,CAC7C,MAAMniG,EAAIkR,EAAK,IAAMixF,EAAQ,EAAI,CAACD,EAAS,EACrCtiG,EAAIsR,EAAK,IAAMixF,EAAQ,EAAI,CAACD,EAAS,EACrC5lG,GAAK4U,EAAK,EAAIA,EAAK,IAAMixF,EAAQ,EAAIA,EAAQ,EAAID,EAAS,GAAKliG,EAC/DlD,GAAKoU,EAAK,EAAIA,EAAK,IAAMixF,EAAQ,EAAIA,EAAQ,EAAID,EAAS,GAAKtiG,EACrE,MAAO,CACH,EAAGsR,EAAK,EAAIlR,EACZ,EAAGkR,EAAK,EAAItR,EACZ,EAAGsR,EAAK,EAAI5U,EACZ,EAAG4U,EAAK,EAAIpU,EACZ,OAAQoU,EAAK,MAChB,CACL,CACA,MAAMkxF,WAAmB3V,EAAQ,CAC7B,OAAO,GAAK,MACf,OAAO,SAAW,CACX,cAAe,QACf,YAAa,EACb,aAAc,EACd,cAAe,OACf,WAAY,MACf,EACJ,OAAO,cAAgB,CAChB,gBAAiB,kBACjB,YAAa,aAChB,EACD,YAAYpW,EAAI,CACZ,MAAO,EACP,KAAK,QAAU,OACf,KAAK,WAAa,OAClB,KAAK,KAAO,OACZ,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,cAAgB,OACjBA,GACA,OAAO,OAAO,KAAMA,CAAG,CAEnC,CACI,KAAK9+E,EAAK,CACN,KAAM,CAAE,cAAA6mF,EAAgB,QAAS,CAAE,YAAAikB,EAAc,gBAAAhQ,CAAkB,CAAA,EAAM,KACnE,CAAE,MAAAkM,EAAQ,MAAA+D,GAAWV,GAAc,IAAI,EACvCW,EAAcR,GAAUO,EAAM,MAAM,EAAIn4B,GAAqB63B,GACnEzqG,EAAI,KAAM,GACN+qG,EAAM,IAAM/D,EAAM,GAAK+D,EAAM,IAAM/D,EAAM,KACzChnG,EAAI,UAAW,EACfgrG,EAAYhrG,EAAK0qG,GAAYK,EAAOlkB,EAAemgB,CAAK,CAAC,EACzDhnG,EAAI,KAAM,EACVgrG,EAAYhrG,EAAK0qG,GAAY1D,EAAO,CAACngB,EAAekkB,CAAK,CAAC,EAC1D/qG,EAAI,UAAY8qG,EAChB9qG,EAAI,KAAK,SAAS,GAEtBA,EAAI,UAAW,EACfgrG,EAAYhrG,EAAK0qG,GAAY1D,EAAOngB,CAAa,CAAC,EAClD7mF,EAAI,UAAY86F,EAChB96F,EAAI,KAAM,EACVA,EAAI,QAAS,CACrB,CACI,QAAQwpG,EAAQC,EAAQjd,EAAkB,CACtC,OAAOlgC,GAAQ,KAAMk9C,EAAQC,EAAQjd,CAAgB,CAC7D,CACI,SAASgd,EAAQhd,EAAkB,CAC/B,OAAOlgC,GAAQ,KAAMk9C,EAAQ,KAAMhd,CAAgB,CAC3D,CACI,SAASid,EAAQjd,EAAkB,CAC/B,OAAOlgC,GAAQ,KAAM,KAAMm9C,EAAQjd,CAAgB,CAC3D,CACI,eAAeA,EAAkB,CAC7B,KAAM,CAAE,EAAA/jF,EAAI,EAAAJ,EAAI,KAAAwpC,EAAO,WAAAq1C,CAAa,EAAI,KAAK,SAAS,CAClD,IACA,IACA,OACA,YACH,EAAEsF,CAAgB,EACnB,MAAO,CACH,EAAGtF,GAAcz+E,EAAIopC,GAAQ,EAAIppC,EACjC,EAAGy+E,EAAa7+E,GAAKA,EAAIwpC,GAAQ,CACpC,CACT,CACI,SAASt9B,EAAM,CACX,OAAOA,IAAS,IAAM,KAAK,MAAQ,EAAI,KAAK,OAAS,CAC7D,CACA,CAEA,IAAIwvE,GAAwB,OAAO,OAAO,CAC1C,UAAW,KACX,WAAYkjB,GACZ,YAAakC,GACb,aAAcI,GACd,WAAYsB,EACZ,CAAC,EAED,MAAMI,GAAgB,CAClB,oBACA,oBACA,oBACA,oBACA,oBACA,qBACA,oBACJ,EAEMC,GAAoCD,GAAc,IAAKvlC,GAAQA,EAAM,QAAQ,OAAQ,OAAO,EAAE,QAAQ,IAAK,QAAQ,CAAC,EAC1H,SAASylC,GAAetzG,EAAG,CACvB,OAAOozG,GAAcpzG,EAAIozG,GAAc,MAAM,CACjD,CACA,SAASG,GAAmBvzG,EAAG,CAC3B,OAAOqzG,GAAkBrzG,EAAIqzG,GAAkB,MAAM,CACzD,CACA,SAASG,GAAuB13E,EAAS97B,EAAG,CACxC,OAAA87B,EAAQ,YAAcw3E,GAAetzG,CAAC,EACtC87B,EAAQ,gBAAkBy3E,GAAmBvzG,CAAC,EACvC,EAAEA,CACb,CACA,SAASyzG,GAAwB33E,EAAS97B,EAAG,CACzC,OAAA87B,EAAQ,gBAAkBA,EAAQ,KAAK,IAAI,IAAIw3E,GAAetzG,GAAG,CAAC,EAC3DA,CACX,CACA,SAAS0zG,GAAyB53E,EAAS97B,EAAG,CAC1C,OAAA87B,EAAQ,gBAAkBA,EAAQ,KAAK,IAAI,IAAIy3E,GAAmBvzG,GAAG,CAAC,EAC/DA,CACX,CACA,SAAS2zG,GAAa/6B,EAAO,CACzB,IAAI54E,EAAI,EACR,MAAO,CAAC87B,EAASiqD,IAAe,CAC5B,MAAM5tB,EAAaygB,EAAM,eAAemN,CAAY,EAAE,WAClD5tB,aAAsBk5B,GACtBrxF,EAAIyzG,GAAwB33E,EAAS97B,CAAC,EAC/Bm4D,aAAsB+6B,GAC7BlzF,EAAI0zG,GAAyB53E,EAAS97B,CAAC,EAChCm4D,IACPn4D,EAAIwzG,GAAuB13E,EAAS97B,CAAC,EAE5C,CACL,CACA,SAAS4zG,GAA0Bv9F,EAAa,CAC5C,IAAIhQ,EACJ,IAAIA,KAAKgQ,EACL,GAAIA,EAAYhQ,CAAC,EAAE,aAAegQ,EAAYhQ,CAAC,EAAE,gBAC7C,MAAO,GAGf,MAAO,EACX,CACA,SAASwtG,GAAyB5pD,EAAY,CAC1C,OAAOA,IAAeA,EAAW,aAAeA,EAAW,gBAC/D,CACA,IAAI6pD,GAAgB,CAChB,GAAI,SACJ,SAAU,CACN,QAAS,GACT,cAAe,EAClB,EACD,aAAcl7B,EAAOm7B,EAAOx3G,EAAS,CACjC,GAAI,CAACA,EAAQ,QACT,OAEJ,KAAM,CAAE,KAAM,CAAE,SAAAutG,CAAQ,EAAM,QAASkK,CAAY,EAAMp7B,EAAM,OACzD,CAAE,SAAAsT,CAAQ,EAAM8nB,EACtB,GAAI,CAACz3G,EAAQ,gBAAkBq3G,GAA0B9J,CAAQ,GAAK+J,GAAyBG,CAAY,GAAK9nB,GAAY0nB,GAA0B1nB,CAAQ,GAC1J,OAEJ,MAAM+nB,EAAYN,GAAa/6B,CAAK,EACpCkxB,EAAS,QAAQmK,CAAS,CAClC,CACA,EAEA,SAASC,GAAehmG,EAAMzJ,EAAO1K,EAAOk+F,EAAgB17F,EAAS,CACpE,MAAM43G,EAAU53G,EAAQ,SAAW07F,EAChC,GAAIkc,GAAWp6G,EACX,OAAOmU,EAAK,MAAMzJ,EAAOA,EAAQ1K,CAAK,EAE1C,MAAMq6G,EAAY,CAAE,EACdC,GAAet6G,EAAQ,IAAMo6G,EAAU,GAC7C,IAAIG,EAAe,EACnB,MAAMC,EAAW9vG,EAAQ1K,EAAQ,EACjC,IAAIO,EAAImK,EACJzE,EAAGw0G,EAAcC,EAAS36B,EAAM46B,EAEpC,IADAN,EAAUE,GAAc,EAAIpmG,EAAK5T,CAAC,EAC9B0F,EAAI,EAAGA,EAAIm0G,EAAU,EAAGn0G,IAAI,CAC5B,IAAIywG,EAAO,EACPkE,EAAO,EACPxwG,EACJ,MAAMywG,EAAgB,KAAK,OAAO50G,EAAI,GAAKq0G,CAAW,EAAI,EAAI5vG,EACxDowG,EAAc,KAAK,IAAI,KAAK,OAAO70G,EAAI,GAAKq0G,CAAW,EAAI,EAAGt6G,CAAK,EAAI0K,EACvEqwG,EAAiBD,EAAcD,EACrC,IAAIzwG,EAAIywG,EAAezwG,EAAI0wG,EAAa1wG,IACpCssG,GAAQviG,EAAK/J,CAAC,EAAE,EAChBwwG,GAAQzmG,EAAK/J,CAAC,EAAE,EAEpBssG,GAAQqE,EACRH,GAAQG,EACR,MAAMC,EAAY,KAAK,MAAM/0G,EAAIq0G,CAAW,EAAI,EAAI5vG,EAC9CuwG,EAAU,KAAK,IAAI,KAAK,OAAOh1G,EAAI,GAAKq0G,CAAW,EAAI,EAAGt6G,CAAK,EAAI0K,EACnE,CAAE,EAAGwwG,EAAU,EAAGC,CAAU,EAAGhnG,EAAK5T,CAAC,EAE3C,IADAm6G,EAAU36B,EAAO,GACb31E,EAAI4wG,EAAW5wG,EAAI6wG,EAAS7wG,IAC5B21E,EAAO,GAAM,KAAK,KAAKm7B,EAAUxE,IAASviG,EAAK/J,CAAC,EAAE,EAAI+wG,IAAYD,EAAU/mG,EAAK/J,CAAC,EAAE,IAAMwwG,EAAOO,EAAQ,EACrGp7B,EAAO26B,IACPA,EAAU36B,EACV06B,EAAetmG,EAAK/J,CAAC,EACrBuwG,EAAQvwG,GAGhBiwG,EAAUE,GAAc,EAAIE,EAC5Bl6G,EAAIo6G,CACZ,CACI,OAAAN,EAAUE,GAAc,EAAIpmG,EAAKqmG,CAAQ,EAClCH,CACX,CACA,SAASe,GAAiBjnG,EAAMzJ,EAAO1K,EAAOk+F,EAAgB,CAC1D,IAAIwY,EAAO,EACPC,EAAS,EACT1wG,EAAG65E,EAAOjpE,EAAGJ,EAAGmgG,EAAOyE,EAAUC,EAAUC,EAAYlkB,EAAMF,EACjE,MAAMkjB,EAAY,CAAE,EACdG,EAAW9vG,EAAQ1K,EAAQ,EAC3Bw7G,EAAOrnG,EAAKzJ,CAAK,EAAE,EAEnB+wG,EADOtnG,EAAKqmG,CAAQ,EAAE,EACVgB,EAClB,IAAIv1G,EAAIyE,EAAOzE,EAAIyE,EAAQ1K,EAAO,EAAEiG,EAAE,CAClC65E,EAAQ3rE,EAAKlO,CAAC,EACd4Q,GAAKipE,EAAM,EAAI07B,GAAQC,EAAKvd,EAC5BznF,EAAIqpE,EAAM,EACV,MAAMk3B,EAASngG,EAAI,EACnB,GAAImgG,IAAWJ,EACPngG,EAAI4gF,GACJA,EAAO5gF,EACP4kG,EAAWp1G,GACJwQ,EAAI0gF,IACXA,EAAO1gF,EACP6kG,EAAWr1G,GAEfywG,GAAQC,EAASD,EAAO52B,EAAM,GAAK,EAAE62B,MAClC,CACH,MAAM3nD,EAAY/oD,EAAI,EACtB,GAAI,CAACouE,GAAcgnC,CAAQ,GAAK,CAAChnC,GAAcinC,CAAQ,EAAG,CACtD,MAAMI,EAAqB,KAAK,IAAIL,EAAUC,CAAQ,EAChDK,EAAqB,KAAK,IAAIN,EAAUC,CAAQ,EAClDI,IAAuBH,GAAcG,IAAuB1sD,GAC5DqrD,EAAU,KAAK,CACX,GAAGlmG,EAAKunG,CAAkB,EAC1B,EAAGhF,CAC3B,CAAqB,EAEDiF,IAAuBJ,GAAcI,IAAuB3sD,GAC5DqrD,EAAU,KAAK,CACX,GAAGlmG,EAAKwnG,CAAkB,EAC1B,EAAGjF,CAC3B,CAAqB,CAErB,CACgBzwG,EAAI,GAAK+oD,IAAcusD,GACvBlB,EAAU,KAAKlmG,EAAK66C,CAAS,CAAC,EAElCqrD,EAAU,KAAKv6B,CAAK,EACpB82B,EAAQI,EACRL,EAAS,EACTtf,EAAOF,EAAO1gF,EACd4kG,EAAWC,EAAWC,EAAat1G,CAC/C,CACA,CACI,OAAOo0G,CACX,CACA,SAASuB,GAAsB75E,EAAS,CACpC,GAAIA,EAAQ,WAAY,CACpB,MAAM5tB,EAAO4tB,EAAQ,MACrB,OAAOA,EAAQ,WACf,OAAOA,EAAQ,MACf,OAAO,eAAeA,EAAS,OAAQ,CACnC,MAAO5tB,CACnB,CAAS,CACT,CACA,CACA,SAAS0nG,GAAmBh9B,EAAO,CAC/BA,EAAM,KAAK,SAAS,QAAS98C,GAAU,CACnC65E,GAAsB75E,CAAO,CACrC,CAAK,CACL,CACA,SAAS+5E,GAA0CpkG,EAAMijE,EAAQ,CAC7D,MAAME,EAAaF,EAAO,OAC1B,IAAIjwE,EAAQ,EACR1K,EACJ,KAAM,CAAE,OAAA86E,CAAM,EAAMpjE,EACd,CAAE,IAAAgI,EAAM,IAAAD,EAAM,WAAAu7D,EAAa,WAAAC,CAAa,EAAGH,EAAO,cAAe,EACvE,OAAIE,IACAtwE,EAAQquE,GAAYQ,GAAaoB,EAAQG,EAAO,KAAMp7D,CAAG,EAAE,GAAI,EAAGm7D,EAAa,CAAC,GAEhFI,EACAj7E,EAAQ+4E,GAAYQ,GAAaoB,EAAQG,EAAO,KAAMr7D,CAAG,EAAE,GAAK,EAAG/U,EAAOmwE,CAAU,EAAInwE,EAExF1K,EAAQ66E,EAAanwE,EAElB,CACH,MAAAA,EACA,MAAA1K,CACH,CACL,CACA,IAAI+7G,GAAoB,CACpB,GAAI,aACJ,SAAU,CACN,UAAW,UACX,QAAS,EACZ,EACD,qBAAsB,CAACl9B,EAAO7iE,EAAMxZ,IAAU,CAC1C,GAAI,CAACA,EAAQ,QAAS,CAClBq5G,GAAmBh9B,CAAK,EACxB,MACZ,CACQ,MAAMqf,EAAiBrf,EAAM,MAC7BA,EAAM,KAAK,SAAS,QAAQ,CAAC98C,EAASiqD,IAAe,CACjD,KAAM,CAAE,MAAAkF,EAAQ,UAAAzM,CAAS,EAAM1iD,EACzBrqB,EAAOmnE,EAAM,eAAemN,CAAY,EACxC73E,EAAO+8E,GAASnvD,EAAQ,KAO9B,GANItQ,GAAQ,CACRgzD,EACA5F,EAAM,QAAQ,SACjB,CAAA,IAAM,KAGH,CAACnnE,EAAK,WAAW,mBACjB,OAEJ,MAAMskG,EAAQn9B,EAAM,OAAOnnE,EAAK,OAAO,EAIvC,GAHIskG,EAAM,OAAS,UAAYA,EAAM,OAAS,QAG1Cn9B,EAAM,QAAQ,QACd,OAEJ,GAAI,CAAE,MAAAn0E,EAAQ,MAAA1K,CAAK,EAAM87G,GAA0CpkG,EAAMvD,CAAI,EAC7E,MAAM2lD,EAAYt3D,EAAQ,WAAa,EAAI07F,EAC3C,GAAIl+F,GAAS85D,EAAW,CACpB8hD,GAAsB75E,CAAO,EAC7B,MAChB,CACgBsyC,GAAc6c,CAAK,IACnBnvD,EAAQ,MAAQ5tB,EAChB,OAAO4tB,EAAQ,KACf,OAAO,eAAeA,EAAS,OAAQ,CACnC,aAAc,GACd,WAAY,GACZ,IAAK,UAAW,CACZ,OAAO,KAAK,UACf,EACD,IAAK,SAASh5B,EAAG,CACb,KAAK,MAAQA,CACrC,CACA,CAAiB,GAEL,IAAIsxG,EACJ,OAAO73G,EAAQ,UAAS,CACpB,IAAK,OACD63G,EAAYF,GAAehmG,EAAMzJ,EAAO1K,EAAOk+F,EAAgB17F,CAAO,EACtE,MACJ,IAAK,UACD63G,EAAYe,GAAiBjnG,EAAMzJ,EAAO1K,EAAOk+F,CAAc,EAC/D,MACJ,QACI,MAAM,IAAI,MAAM,qCAAqC17F,EAAQ,SAAS,GAAG,CAC7F,CACYu/B,EAAQ,WAAas4E,CACjC,CAAS,CACJ,EACD,QAASx7B,EAAO,CACZg9B,GAAmBh9B,CAAK,CAChC,CACA,EAEA,SAASo9B,GAAUhmD,EAAM/pD,EAAQZ,EAAU,CACvC,MAAMy1C,EAAWkV,EAAK,SAChB0kB,EAAS1kB,EAAK,OACdimD,EAAUhwG,EAAO,OACjB2pE,EAAQ,CAAE,EAChB,UAAWx0B,KAAWN,EAAS,CAC3B,GAAI,CAAE,MAAAr2C,EAAQ,IAAAC,CAAG,EAAM02C,EACvB12C,EAAMwxG,GAAgBzxG,EAAOC,EAAKgwE,CAAM,EACxC,MAAM2P,EAAS8xB,GAAW9wG,EAAUqvE,EAAOjwE,CAAK,EAAGiwE,EAAOhwE,CAAG,EAAG02C,EAAQ,IAAI,EAC5E,GAAI,CAACn1C,EAAO,SAAU,CAClB2pE,EAAM,KAAK,CACP,OAAQx0B,EACR,OAAQipC,EACR,MAAO3P,EAAOjwE,CAAK,EACnB,IAAKiwE,EAAOhwE,CAAG,CAC/B,CAAa,EACD,QACZ,CACQ,MAAM0xG,EAAiBnxB,GAAeh/E,EAAQo+E,CAAM,EACpD,UAAWgyB,KAAOD,EAAe,CAC7B,MAAME,EAAYH,GAAW9wG,EAAU4wG,EAAQI,EAAI,KAAK,EAAGJ,EAAQI,EAAI,GAAG,EAAGA,EAAI,IAAI,EAC/EE,EAAc9xB,GAAcrpC,EAASs5B,EAAQ4hC,CAAS,EAC5D,UAAWE,KAAcD,EACrB3mC,EAAM,KAAK,CACP,OAAQ4mC,EACR,OAAQH,EACR,MAAO,CACH,CAAChxG,CAAQ,EAAGoxG,GAASpyB,EAAQiyB,EAAW,QAAS,KAAK,GAAG,CAC5D,EACD,IAAK,CACD,CAACjxG,CAAQ,EAAGoxG,GAASpyB,EAAQiyB,EAAW,MAAO,KAAK,GAAG,CAC/E,CACA,CAAiB,CAEjB,CACA,CACI,OAAO1mC,CACX,CACA,SAASumC,GAAW9wG,EAAU+uB,EAAOm/C,EAAMoN,EAAM,CAC7C,GAAIA,EACA,OAEJ,IAAIl8E,EAAQ2vB,EAAM/uB,CAAQ,EACtBX,EAAM6uE,EAAKluE,CAAQ,EACvB,OAAIA,IAAa,UACbZ,EAAQ8tE,GAAgB9tE,CAAK,EAC7BC,EAAM6tE,GAAgB7tE,CAAG,GAEtB,CACH,SAAAW,EACA,MAAAZ,EACA,IAAAC,CACH,CACL,CACA,SAASgyG,GAAoBp0F,EAAU0tC,EAAM,CACzC,KAAM,CAAE,EAAAp/C,EAAG,KAAO,EAAAJ,EAAG,IAAI,EAAM8R,GAAY,CAAE,EACvCq0F,EAAa3mD,EAAK,OAClB0kB,EAAS,CAAE,EACjB,OAAA1kB,EAAK,SAAS,QAAQ,CAAC,CAAE,MAAAvrD,EAAQ,IAAAC,CAAG,IAAM,CACtCA,EAAMwxG,GAAgBzxG,EAAOC,EAAKiyG,CAAU,EAC5C,MAAMviF,EAAQuiF,EAAWlyG,CAAK,EACxB8uE,EAAOojC,EAAWjyG,CAAG,EACvB8L,IAAM,MACNkkE,EAAO,KAAK,CACR,EAAGtgD,EAAM,EACT,EAAA5jB,CAChB,CAAa,EACDkkE,EAAO,KAAK,CACR,EAAGnB,EAAK,EACR,EAAA/iE,CAChB,CAAa,GACMI,IAAM,OACb8jE,EAAO,KAAK,CACR,EAAA9jE,EACA,EAAGwjB,EAAM,CACzB,CAAa,EACDsgD,EAAO,KAAK,CACR,EAAA9jE,EACA,EAAG2iE,EAAK,CACxB,CAAa,EAEb,CAAK,EACMmB,CACX,CACA,SAASwhC,GAAgBzxG,EAAOC,EAAKgwE,EAAQ,CACzC,KAAMhwE,EAAMD,EAAOC,IAAM,CACrB,MAAMm1E,EAAQnF,EAAOhwE,CAAG,EACxB,GAAI,CAAC,MAAMm1E,EAAM,CAAC,GAAK,CAAC,MAAMA,EAAM,CAAC,EACjC,KAEZ,CACI,OAAOn1E,CACX,CACA,SAAS+xG,GAASn8G,EAAGC,EAAG4O,EAAMzN,EAAI,CAC9B,OAAIpB,GAAKC,EACEmB,EAAGpB,EAAE6O,CAAI,EAAG5O,EAAE4O,CAAI,CAAC,EAEvB7O,EAAIA,EAAE6O,CAAI,EAAI5O,EAAIA,EAAE4O,CAAI,EAAI,CACvC,CAEA,SAASytG,GAAoBt0F,EAAU0tC,EAAM,CACzC,IAAI0kB,EAAS,CAAE,EACXzuD,EAAQ,GACZ,OAAItmB,GAAQ2iB,CAAQ,GAChB2D,EAAQ,GACRyuD,EAASpyD,GAEToyD,EAASgiC,GAAoBp0F,EAAU0tC,CAAI,EAExC0kB,EAAO,OAAS,IAAI48B,GAAY,CACnC,OAAA58B,EACA,QAAS,CACL,QAAS,CACZ,EACD,MAAAzuD,EACA,UAAWA,CACd,CAAA,EAAI,IACT,CACA,SAAS4wF,GAAiBj5G,EAAQ,CAC9B,OAAOA,GAAUA,EAAO,OAAS,EACrC,CAEA,SAASk5G,GAAel0G,EAASM,EAAO6zG,EAAW,CAE/C,IAAI5jE,EADWvwC,EAAQM,CAAK,EACV,KAClB,MAAM2nB,EAAU,CACZ3nB,CACH,EACD,IAAI+C,EACJ,GAAI,CAAC8wG,EACD,OAAO5jE,EAEX,KAAMA,IAAS,IAAStoB,EAAQ,QAAQsoB,CAAI,IAAM,IAAG,CACjD,GAAI,CAACk7B,GAAel7B,CAAI,EACpB,OAAOA,EAGX,GADAltC,EAASrD,EAAQuwC,CAAI,EACjB,CAACltC,EACD,MAAO,GAEX,GAAIA,EAAO,QACP,OAAOktC,EAEXtoB,EAAQ,KAAKsoB,CAAI,EACjBA,EAAOltC,EAAO,IACtB,CACI,MAAO,EACX,CACC,SAAS+wG,GAAYhnD,EAAM9sD,EAAOnJ,EAAO,CACrC,MAAMo5C,EAAO8jE,GAAgBjnD,CAAI,EAClC,GAAIlJ,GAAS3T,CAAI,EACb,OAAO,MAAMA,EAAK,KAAK,EAAI,GAAQA,EAEvC,IAAIltC,EAAS,WAAWktC,CAAI,EAC5B,OAAIk7B,GAAepoE,CAAM,GAAK,KAAK,MAAMA,CAAM,IAAMA,EAC1CixG,GAAkB/jE,EAAK,CAAC,EAAGjwC,EAAO+C,EAAQlM,CAAK,EAEnD,CACH,SACA,QACA,MACA,QACA,OACH,EAAC,QAAQo5C,CAAI,GAAK,GAAKA,CAC5B,CACA,SAAS+jE,GAAkBC,EAASj0G,EAAO+C,EAAQlM,EAAO,CAItD,OAHIo9G,IAAY,KAAOA,IAAY,OAC/BlxG,EAAS/C,EAAQ+C,GAEjBA,IAAW/C,GAAS+C,EAAS,GAAKA,GAAUlM,EACrC,GAEJkM,CACX,CACC,SAASmxG,GAAgBjkE,EAAM60C,EAAO,CACnC,IAAInP,EAAQ,KACZ,OAAI1lC,IAAS,QACT0lC,EAAQmP,EAAM,OACP70C,IAAS,MAChB0lC,EAAQmP,EAAM,IACPlhC,GAAS3T,CAAI,EACpB0lC,EAAQmP,EAAM,iBAAiB70C,EAAK,KAAK,EAClC60C,EAAM,eACbnP,EAAQmP,EAAM,aAAc,GAEzBnP,CACX,CACC,SAASw+B,GAAgBlkE,EAAM60C,EAAO6F,EAAY,CAC/C,IAAIvxF,EACJ,OAAI62C,IAAS,QACT72C,EAAQuxF,EACD16C,IAAS,MAChB72C,EAAQ0rF,EAAM,QAAQ,QAAUA,EAAM,IAAMA,EAAM,IAC3ClhC,GAAS3T,CAAI,EACpB72C,EAAQ62C,EAAK,MAEb72C,EAAQ0rF,EAAM,aAAc,EAEzB1rF,CACX,CACC,SAAS26G,GAAgBjnD,EAAM,CAC5B,MAAMzzD,EAAUyzD,EAAK,QACfsnD,EAAa/6G,EAAQ,KAC3B,IAAI42C,EAAOo7B,GAAe+oC,GAAcA,EAAW,OAAQA,CAAU,EAIrE,OAHInkE,IAAS,SACTA,EAAO,CAAC,CAAC52C,EAAQ,iBAEjB42C,IAAS,IAASA,IAAS,KACpB,GAEPA,IAAS,GACF,SAEJA,CACX,CAEA,SAASokE,GAAgB35G,EAAQ,CAC7B,KAAM,CAAE,MAAAoqF,EAAQ,MAAA9kF,EAAQ,KAAA8sD,CAAO,EAAGpyD,EAC5B82E,EAAS,CAAE,EACX55B,EAAWkV,EAAK,SAChBwnD,EAAexnD,EAAK,OACpBynD,EAAaC,GAAc1vB,EAAO9kF,CAAK,EAC7Cu0G,EAAW,KAAKb,GAAoB,CAChC,EAAG,KACH,EAAG5uB,EAAM,MACZ,EAAEh4B,CAAI,CAAC,EACR,QAAQhwD,EAAI,EAAGA,EAAI86C,EAAS,OAAQ96C,IAAI,CACpC,MAAMo7C,EAAUN,EAAS96C,CAAC,EAC1B,QAAQmE,EAAIi3C,EAAQ,MAAOj3C,GAAKi3C,EAAQ,IAAKj3C,IACzCwzG,GAAejjC,EAAQ8iC,EAAarzG,CAAC,EAAGszG,CAAU,CAE9D,CACI,OAAO,IAAInG,GAAY,CACnB,OAAA58B,EACA,QAAS,CAAA,CACjB,CAAK,CACL,CACC,SAASgjC,GAAc1vB,EAAO9kF,EAAO,CAClC,MAAM00G,EAAQ,CAAE,EACVja,EAAQ3V,EAAM,wBAAwB,MAAM,EAClD,QAAQ,EAAI,EAAG,EAAI2V,EAAM,OAAQ,IAAI,CACjC,MAAMlsF,EAAOksF,EAAM,CAAC,EACpB,GAAIlsF,EAAK,QAAUvO,EACf,MAECuO,EAAK,QACNmmG,EAAM,QAAQnmG,EAAK,OAAO,CAEtC,CACI,OAAOmmG,CACX,CACC,SAASD,GAAejjC,EAAQmjC,EAAaJ,EAAY,CACtD,MAAMK,EAAY,CAAE,EACpB,QAAQ3zG,EAAI,EAAGA,EAAIszG,EAAW,OAAQtzG,IAAI,CACtC,MAAM6rD,EAAOynD,EAAWtzG,CAAC,EACnB,CAAE,MAAAiwB,EAAQ,KAAAm/C,EAAO,MAAAsG,CAAK,EAAMk+B,GAAU/nD,EAAM6nD,EAAa,GAAG,EAClE,GAAI,GAACh+B,GAASzlD,GAASm/C,IAGvB,GAAIn/C,EACA0jF,EAAU,QAAQj+B,CAAK,UAEvBnF,EAAO,KAAKmF,CAAK,EACb,CAACtG,EACD,MAGhB,CACImB,EAAO,KAAK,GAAGojC,CAAS,CAC5B,CACC,SAASC,GAAU/nD,EAAM6nD,EAAaxyG,EAAU,CAC7C,MAAMw0E,EAAQ7pB,EAAK,YAAY6nD,EAAaxyG,CAAQ,EACpD,GAAI,CAACw0E,EACD,MAAO,CAAE,EAEb,MAAMm+B,EAAan+B,EAAMx0E,CAAQ,EAC3By1C,EAAWkV,EAAK,SAChB2mD,EAAa3mD,EAAK,OACxB,IAAI57B,EAAQ,GACRm/C,EAAO,GACX,QAAQvzE,EAAI,EAAGA,EAAI86C,EAAS,OAAQ96C,IAAI,CACpC,MAAMo7C,EAAUN,EAAS96C,CAAC,EACpBi4G,EAAatB,EAAWv7D,EAAQ,KAAK,EAAE/1C,CAAQ,EAC/C6yG,EAAYvB,EAAWv7D,EAAQ,GAAG,EAAE/1C,CAAQ,EAClD,GAAI2tE,GAAWglC,EAAYC,EAAYC,CAAS,EAAG,CAC/C9jF,EAAQ4jF,IAAeC,EACvB1kC,EAAOykC,IAAeE,EACtB,KACZ,CACA,CACI,MAAO,CACH,MAAA9jF,EACA,KAAAm/C,EACA,MAAAsG,CACH,CACL,CAEA,MAAMs+B,EAAU,CACZ,YAAYn8C,EAAK,CACb,KAAK,EAAIA,EAAK,EACd,KAAK,EAAIA,EAAK,EACd,KAAK,OAASA,EAAK,MAC3B,CACI,YAAY7zD,EAAKk8E,EAAQroB,EAAM,CAC3B,KAAM,CAAE,EAAAprD,EAAI,EAAAJ,EAAI,OAAAkpE,CAAS,EAAG,KAC5B,OAAA2K,EAASA,GAAU,CACf,MAAO,EACP,IAAKlU,EACR,EACDhoE,EAAI,IAAIyI,EAAGJ,EAAGkpE,EAAQ2K,EAAO,IAAKA,EAAO,MAAO,EAAI,EAC7C,CAACroB,EAAK,MACrB,CACI,YAAY6d,EAAO,CACf,KAAM,CAAE,EAAAjpE,EAAI,EAAAJ,EAAI,OAAAkpE,CAAS,EAAG,KACtBxH,EAAQ2H,EAAM,MACpB,MAAO,CACH,EAAGjpE,EAAI,KAAK,IAAIshE,CAAK,EAAIwH,EACzB,EAAGlpE,EAAI,KAAK,IAAI0hE,CAAK,EAAIwH,EACzB,MAAAxH,CACH,CACT,CACA,CAEA,SAASkmC,GAAWx6G,EAAQ,CACxB,KAAM,CAAE,MAAAg7E,EAAQ,KAAAzlC,EAAO,KAAA6c,CAAO,EAAGpyD,EACjC,GAAIywE,GAAel7B,CAAI,EACnB,OAAOklE,GAAez/B,EAAOzlC,CAAI,EAErC,GAAIA,IAAS,QACT,OAAOokE,GAAgB35G,CAAM,EAEjC,GAAIu1C,IAAS,QACT,MAAO,GAEX,MAAM7wB,EAAWg2F,GAAgB16G,CAAM,EACvC,OAAI0kB,aAAoB61F,GACb71F,EAEJs0F,GAAoBt0F,EAAU0tC,CAAI,CAC7C,CACC,SAASqoD,GAAez/B,EAAO11E,EAAO,CACnC,MAAMuO,EAAOmnE,EAAM,eAAe11E,CAAK,EAEvC,OADgBuO,GAAQmnE,EAAM,iBAAiB11E,CAAK,EACnCuO,EAAK,QAAU,IACpC,CACA,SAAS6mG,GAAgB16G,EAAQ,CAE7B,OADcA,EAAO,OAAS,CAAE,GACtB,yBACC26G,GAAwB36G,CAAM,EAElC46G,GAAsB56G,CAAM,CACvC,CACA,SAAS46G,GAAsB56G,EAAQ,CACnC,KAAM,CAAE,MAAAoqF,EAAO,GAAK,KAAA70C,CAAO,EAAGv1C,EACxBi7E,EAAQu+B,GAAgBjkE,EAAM60C,CAAK,EACzC,GAAI3Z,GAAewK,CAAK,EAAG,CACvB,MAAMwW,EAAarH,EAAM,aAAc,EACvC,MAAO,CACH,EAAGqH,EAAaxW,EAAQ,KACxB,EAAGwW,EAAa,KAAOxW,CAC1B,CACT,CACI,OAAO,IACX,CACA,SAAS0/B,GAAwB36G,EAAQ,CACrC,KAAM,CAAE,MAAAoqF,EAAQ,KAAA70C,CAAI,EAAMv1C,EACpBrB,EAAUyrF,EAAM,QAChBviF,EAASuiF,EAAM,UAAS,EAAG,OAC3BvjF,EAAQlI,EAAQ,QAAUyrF,EAAM,IAAMA,EAAM,IAC5C1rF,EAAQ+6G,GAAgBlkE,EAAM60C,EAAOvjF,CAAK,EAC1CwB,EAAS,CAAE,EACjB,GAAI1J,EAAQ,KAAK,SAAU,CACvB,MAAM6gB,EAAS4qE,EAAM,yBAAyB,EAAGvjF,CAAK,EACtD,OAAO,IAAI0zG,GAAU,CACjB,EAAG/6F,EAAO,EACV,EAAGA,EAAO,EACV,OAAQ4qE,EAAM,8BAA8B1rF,CAAK,CAC7D,CAAS,CACT,CACI,QAAQ0D,EAAI,EAAGA,EAAIyF,EAAQ,EAAEzF,EACzBiG,EAAO,KAAK+hF,EAAM,yBAAyBhoF,EAAG1D,CAAK,CAAC,EAExD,OAAO2J,CACX,CAEA,SAASwyG,GAAUtwG,EAAKvK,EAAQk8E,EAAM,CAClC,MAAM7zE,EAASmyG,GAAWx6G,CAAM,EAC1B,CAAE,KAAAoyD,EAAO,MAAAg4B,EAAQ,KAAAtrE,CAAO,EAAG9e,EAC3B86G,EAAW1oD,EAAK,QAChBsnD,EAAaoB,EAAS,KACtB7qC,EAAQ6qC,EAAS,gBACjB,CAAE,MAAAC,EAAO9qC,EAAQ,MAAA+pC,EAAO/pC,CAAK,EAAMypC,GAAc,CAAE,EACrDrxG,GAAU+pD,EAAK,OAAO,SACtBgqB,GAAS7xE,EAAK2xE,CAAI,EAClB8+B,GAAOzwG,EAAK,CACR,KAAA6nD,EACA,OAAA/pD,EACA,MAAA0yG,EACA,MAAAf,EACA,KAAA99B,EACA,MAAAkO,EACA,KAAAtrE,CACZ,CAAS,EACDu9D,GAAW9xE,CAAG,EAEtB,CACA,SAASywG,GAAOzwG,EAAK8+E,EAAK,CACtB,KAAM,CAAE,KAAAj3B,EAAO,OAAA/pD,EAAS,MAAA0yG,EAAQ,MAAAf,EAAQ,KAAA99B,EAAO,MAAAkO,CAAK,EAAMf,EACpD5hF,EAAW2qD,EAAK,MAAQ,QAAUi3B,EAAI,KAC5C9+E,EAAI,KAAM,EACN9C,IAAa,KAAOuyG,IAAUe,IAC9BE,GAAa1wG,EAAKlC,EAAQ6zE,EAAK,GAAG,EAClC3mC,GAAKhrC,EAAK,CACN,KAAA6nD,EACA,OAAA/pD,EACA,MAAO0yG,EACP,MAAA3wB,EACA,SAAA3iF,CACZ,CAAS,EACD8C,EAAI,QAAS,EACbA,EAAI,KAAM,EACV0wG,GAAa1wG,EAAKlC,EAAQ6zE,EAAK,MAAM,GAEzC3mC,GAAKhrC,EAAK,CACN,KAAA6nD,EACA,OAAA/pD,EACA,MAAO2xG,EACP,MAAA5vB,EACA,SAAA3iF,CACR,CAAK,EACD8C,EAAI,QAAS,CACjB,CACA,SAAS0wG,GAAa1wG,EAAKlC,EAAQ6yG,EAAO,CACtC,KAAM,CAAE,SAAAh+D,EAAW,OAAA45B,CAAM,EAAMzuE,EAC/B,IAAImuB,EAAQ,GACR2kF,EAAW,GACf5wG,EAAI,UAAW,EACf,UAAWizC,KAAWN,EAAS,CAC3B,KAAM,CAAE,MAAAr2C,EAAQ,IAAAC,CAAG,EAAM02C,EACnBsjC,EAAahK,EAAOjwE,CAAK,EACzBwuF,EAAYve,EAAOwhC,GAAgBzxG,EAAOC,EAAKgwE,CAAM,CAAC,EACxDtgD,GACAjsB,EAAI,OAAOu2E,EAAW,EAAGA,EAAW,CAAC,EACrCtqD,EAAQ,KAERjsB,EAAI,OAAOu2E,EAAW,EAAGo6B,CAAK,EAC9B3wG,EAAI,OAAOu2E,EAAW,EAAGA,EAAW,CAAC,GAEzCq6B,EAAW,CAAC,CAAC9yG,EAAO,YAAYkC,EAAKizC,EAAS,CAC1C,KAAM29D,CAClB,CAAS,EACGA,EACA5wG,EAAI,UAAW,EAEfA,EAAI,OAAO8qF,EAAU,EAAG6lB,CAAK,CAEzC,CACI3wG,EAAI,OAAOlC,EAAO,MAAK,EAAG,EAAG6yG,CAAK,EAClC3wG,EAAI,UAAW,EACfA,EAAI,KAAM,CACd,CACA,SAASgrC,GAAKhrC,EAAK8+E,EAAK,CACpB,KAAM,CAAE,KAAAj3B,EAAO,OAAA/pD,EAAS,SAAAZ,EAAW,MAAAwoE,EAAQ,MAAAma,CAAK,EAAMf,EAChDnsC,EAAWk7D,GAAUhmD,EAAM/pD,EAAQZ,CAAQ,EACjD,SAAW,CAAE,OAAQ2zG,EAAM,OAAQ3C,EAAM,MAAA5xG,EAAQ,IAAAC,CAAM,IAAIo2C,EAAS,CAChE,KAAM,CAAE,MAAO,CAAE,gBAAAmoD,EAAiBp1B,CAAQ,EAAG,CAAE,CAAA,EAAMmrC,EAC/CC,EAAWhzG,IAAW,GAC5BkC,EAAI,KAAM,EACVA,EAAI,UAAY86F,EAChBiW,GAAW/wG,EAAK6/E,EAAOixB,GAAY9C,GAAW9wG,EAAUZ,EAAOC,CAAG,CAAC,EACnEyD,EAAI,UAAW,EACf,MAAM4wG,EAAW,CAAC,CAAC/oD,EAAK,YAAY7nD,EAAK6wG,CAAG,EAC5C,IAAIr4B,EACJ,GAAIs4B,EAAU,CACNF,EACA5wG,EAAI,UAAW,EAEfgxG,GAAmBhxG,EAAKlC,EAAQvB,EAAKW,CAAQ,EAEjD,MAAM+zG,EAAa,CAAC,CAACnzG,EAAO,YAAYkC,EAAKkuG,EAAK,CAC9C,KAAM0C,EACN,QAAS,EACzB,CAAa,EACDp4B,EAAOo4B,GAAYK,EACdz4B,GACDw4B,GAAmBhxG,EAAKlC,EAAQxB,EAAOY,CAAQ,CAE/D,CACQ8C,EAAI,UAAW,EACfA,EAAI,KAAKw4E,EAAO,UAAY,SAAS,EACrCx4E,EAAI,QAAS,CACrB,CACA,CACA,SAAS+wG,GAAW/wG,EAAK6/E,EAAO3D,EAAQ,CACpC,KAAM,CAAE,IAAA5hF,EAAM,OAAAwU,CAAS,EAAG+wE,EAAM,MAAM,UAChC,CAAE,SAAA3iF,EAAW,MAAAZ,EAAQ,IAAAC,CAAM,EAAG2/E,GAAU,CAAE,EAC5Ch/E,IAAa,MACb8C,EAAI,UAAW,EACfA,EAAI,KAAK1D,EAAOhC,EAAKiC,EAAMD,EAAOwS,EAASxU,CAAG,EAC9C0F,EAAI,KAAM,EAElB,CACA,SAASgxG,GAAmBhxG,EAAKlC,EAAQ4zE,EAAOx0E,EAAU,CACtD,MAAMg0G,EAAoBpzG,EAAO,YAAY4zE,EAAOx0E,CAAQ,EACxDg0G,GACAlxG,EAAI,OAAOkxG,EAAkB,EAAGA,EAAkB,CAAC,CAE3D,CAEA,IAAIn2G,GAAQ,CACR,GAAI,SACJ,oBAAqB01E,EAAOm7B,EAAOx3G,EAAS,CACxC,MAAMxC,GAAS6+E,EAAM,KAAK,UAAY,CAAE,GAAE,OACpCh2E,EAAU,CAAE,EAClB,IAAI6O,EAAMzR,EAAGgwD,EAAMpyD,EACnB,IAAIoC,EAAI,EAAGA,EAAIjG,EAAO,EAAEiG,EACpByR,EAAOmnE,EAAM,eAAe54E,CAAC,EAC7BgwD,EAAOv+C,EAAK,QACZ7T,EAAS,KACLoyD,GAAQA,EAAK,SAAWA,aAAgBshD,KACxC1zG,EAAS,CACL,QAASg7E,EAAM,iBAAiB54E,CAAC,EACjC,MAAOA,EACP,KAAMg3G,GAAYhnD,EAAMhwD,EAAGjG,CAAK,EAChC,MAAA6+E,EACA,KAAMnnE,EAAK,WAAW,QAAQ,UAC9B,MAAOA,EAAK,OACZ,KAAAu+C,CACH,GAELv+C,EAAK,QAAU7T,EACfgF,EAAQ,KAAKhF,CAAM,EAEvB,IAAIoC,EAAI,EAAGA,EAAIjG,EAAO,EAAEiG,EACpBpC,EAASgF,EAAQ5C,CAAC,EACd,GAACpC,GAAUA,EAAO,OAAS,MAG/BA,EAAO,KAAOk5G,GAAel0G,EAAS5C,EAAGzD,EAAQ,SAAS,EAEjE,EACD,WAAYq8E,EAAOm7B,EAAOx3G,EAAS,CAC/B,MAAMkqF,EAAOlqF,EAAQ,WAAa,aAC5B+rF,EAAW1P,EAAM,6BAA8B,EAC/CkB,EAAOlB,EAAM,UACnB,QAAQ54E,EAAIsoF,EAAS,OAAS,EAAGtoF,GAAK,EAAG,EAAEA,EAAE,CACzC,MAAMpC,EAAS0qF,EAAStoF,CAAC,EAAE,QACtBpC,IAGLA,EAAO,KAAK,oBAAoBk8E,EAAMl8E,EAAO,IAAI,EAC7C6oF,GAAQ7oF,EAAO,MACf66G,GAAU7/B,EAAM,IAAKh7E,EAAQk8E,CAAI,EAEjD,CACK,EACD,mBAAoBlB,EAAOm7B,EAAOx3G,EAAS,CACvC,GAAIA,EAAQ,WAAa,qBACrB,OAEJ,MAAM+rF,EAAW1P,EAAM,6BAA8B,EACrD,QAAQ,EAAI0P,EAAS,OAAS,EAAG,GAAK,EAAG,EAAE,EAAE,CACzC,MAAM1qF,EAAS0qF,EAAS,CAAC,EAAE,QACvBuuB,GAAiBj5G,CAAM,GACvB66G,GAAU7/B,EAAM,IAAKh7E,EAAQg7E,EAAM,SAAS,CAE5D,CACK,EACD,kBAAmBA,EAAO7iE,EAAMxZ,EAAS,CACrC,MAAMqB,EAASmY,EAAK,KAAK,QACrB,CAAC8gG,GAAiBj5G,CAAM,GAAKrB,EAAQ,WAAa,qBAGtDk8G,GAAU7/B,EAAM,IAAKh7E,EAAQg7E,EAAM,SAAS,CAC/C,EACD,SAAU,CACN,UAAW,GACX,SAAU,mBAClB,CACA,EAEA,MAAM0gC,GAAa,CAACC,EAAW9V,IAAW,CACtC,GAAI,CAAE,UAAA+V,EAAW/V,EAAW,SAAAgW,EAAUhW,CAAW,EAAG8V,EACpD,OAAIA,EAAU,gBACVC,EAAY,KAAK,IAAIA,EAAW/V,CAAQ,EACxCgW,EAAWF,EAAU,iBAAmB,KAAK,IAAIE,EAAUhW,CAAQ,GAEhE,CACH,SAAAgW,EACA,UAAAD,EACA,WAAY,KAAK,IAAI/V,EAAU+V,CAAS,CAC3C,CACL,EACME,GAAa,CAACp/G,EAAGC,IAAID,IAAM,MAAQC,IAAM,MAAQD,EAAE,eAAiBC,EAAE,cAAgBD,EAAE,QAAUC,EAAE,MAC1G,MAAMo/G,WAAetc,EAAQ,CAC5B,YAAYt7C,EAAO,CACZ,MAAO,EACP,KAAK,OAAS,GACd,KAAK,eAAiB,CAAE,EAC/B,KAAK,aAAe,KACb,KAAK,aAAe,GACpB,KAAK,MAAQA,EAAO,MACpB,KAAK,QAAUA,EAAO,QACtB,KAAK,IAAMA,EAAO,IAClB,KAAK,YAAc,OACnB,KAAK,YAAc,OACnB,KAAK,WAAa,OAClB,KAAK,UAAY,OACjB,KAAK,SAAW,OAChB,KAAK,IAAM,OACX,KAAK,OAAS,OACd,KAAK,KAAO,OACZ,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,MAAQ,OACb,KAAK,SAAW,OAChB,KAAK,SAAW,OAChB,KAAK,OAAS,OACd,KAAK,SAAW,MACxB,CACI,OAAOkgC,EAAUC,EAAW9/C,EAAS,CACjC,KAAK,SAAW6/C,EAChB,KAAK,UAAYC,EACjB,KAAK,SAAW9/C,EAChB,KAAK,cAAe,EACpB,KAAK,YAAa,EAClB,KAAK,IAAK,CAClB,CACI,eAAgB,CACR,KAAK,gBACL,KAAK,MAAQ,KAAK,SAClB,KAAK,KAAO,KAAK,SAAS,KAC1B,KAAK,MAAQ,KAAK,QAElB,KAAK,OAAS,KAAK,UACnB,KAAK,IAAM,KAAK,SAAS,IACzB,KAAK,OAAS,KAAK,OAE/B,CACI,aAAc,CACV,MAAMm3E,EAAY,KAAK,QAAQ,QAAU,CAAE,EAC3C,IAAIK,EAAch7E,GAAS26E,EAAU,eAAgB,CACjD,KAAK,KACjB,EAAW,IAAI,GAAK,CAAE,EACVA,EAAU,SACVK,EAAcA,EAAY,OAAQh1G,GAAO20G,EAAU,OAAO30G,EAAM,KAAK,MAAM,IAAI,CAAC,GAEhF20G,EAAU,OACVK,EAAcA,EAAY,KAAK,CAACt/G,EAAGC,IAAIg/G,EAAU,KAAKj/G,EAAGC,EAAG,KAAK,MAAM,IAAI,CAAC,GAE5E,KAAK,QAAQ,SACbq/G,EAAY,QAAS,EAEzB,KAAK,YAAcA,CAC3B,CACI,KAAM,CACF,KAAM,CAAE,QAAAr9G,EAAU,IAAA4L,CAAG,EAAM,KAC3B,GAAI,CAAC5L,EAAQ,QAAS,CAClB,KAAK,MAAQ,KAAK,OAAS,EAC3B,MACZ,CACQ,MAAMg9G,EAAYh9G,EAAQ,OACpBs9G,EAAYp+B,GAAO89B,EAAU,IAAI,EACjC9V,EAAWoW,EAAU,KACrBlb,EAAc,KAAK,oBAAqB,EACxC,CAAE,SAAA8a,EAAW,WAAAK,CAAU,EAAMR,GAAWC,EAAW9V,CAAQ,EACjE,IAAInpF,EAAOC,EACXpS,EAAI,KAAO0xG,EAAU,OACjB,KAAK,gBACLv/F,EAAQ,KAAK,SACbC,EAAS,KAAK,SAASokF,EAAa8E,EAAUgW,EAAUK,CAAU,EAAI,KAEtEv/F,EAAS,KAAK,UACdD,EAAQ,KAAK,SAASqkF,EAAakb,EAAWJ,EAAUK,CAAU,EAAI,IAE1E,KAAK,MAAQ,KAAK,IAAIx/F,EAAO/d,EAAQ,UAAY,KAAK,QAAQ,EAC9D,KAAK,OAAS,KAAK,IAAIge,EAAQhe,EAAQ,WAAa,KAAK,SAAS,CAC1E,CACC,SAASoiG,EAAa8E,EAAUgW,EAAUK,EAAY,CAC/C,KAAM,CAAE,IAAA3xG,EAAM,SAAA85E,EAAW,QAAS,CAAE,OAAQ,CAAE,QAAA7lE,EAAa,CAAA,EAAM,KAC3D29F,EAAW,KAAK,eAAiB,CAAE,EACnCC,EAAa,KAAK,WAAa,CACjC,CACH,EACKha,EAAa8Z,EAAa19F,EAChC,IAAI69F,EAActb,EAClBx2F,EAAI,UAAY,OAChBA,EAAI,aAAe,SACnB,IAAI+xG,EAAM,GACNz3G,EAAM,CAACu9F,EACX,YAAK,YAAY,QAAQ,CAACzO,EAAYvxF,IAAI,CACtC,MAAM2jF,EAAY81B,EAAWhW,EAAW,EAAIt7F,EAAI,YAAYopF,EAAW,IAAI,EAAE,OACzEvxF,IAAM,GAAKg6G,EAAWA,EAAW,OAAS,CAAC,EAAIr2B,EAAY,EAAIvnE,EAAU6lE,KACzEg4B,GAAeja,EACfga,EAAWA,EAAW,QAAUh6G,EAAI,EAAI,EAAI,EAAE,EAAI,EAClDyC,GAAOu9F,EACPka,KAEJH,EAAS/5G,CAAC,EAAI,CACV,KAAM,EACN,IAAAyC,EACA,IAAAy3G,EACA,MAAOv2B,EACP,OAAQm2B,CACX,EACDE,EAAWA,EAAW,OAAS,CAAC,GAAKr2B,EAAYvnE,CAC7D,CAAS,EACM69F,CACf,CACI,SAAStb,EAAakb,EAAWJ,EAAUU,EAAa,CACpD,KAAM,CAAE,IAAAhyG,EAAM,UAAA+5E,EAAY,QAAS,CAAE,OAAQ,CAAE,QAAA9lE,EAAa,CAAA,EAAM,KAC5D29F,EAAW,KAAK,eAAiB,CAAE,EACnCK,EAAc,KAAK,YAAc,CAAE,EACnCC,EAAcn4B,EAAYyc,EAChC,IAAI2b,EAAal+F,EACbm+F,EAAkB,EAClBC,EAAmB,EACnBrjG,EAAO,EACPsjG,EAAM,EACV,YAAK,YAAY,QAAQ,CAAClpB,EAAYvxF,IAAI,CACtC,KAAM,CAAE,UAAA2jF,EAAY,WAAAm2B,CAAU,EAAMY,GAAkBjB,EAAUI,EAAW1xG,EAAKopF,EAAY4oB,CAAW,EACnGn6G,EAAI,GAAKw6G,EAAmBV,EAAa,EAAI19F,EAAUi+F,IACvDC,GAAcC,EAAkBn+F,EAChCg+F,EAAY,KAAK,CACb,MAAOG,EACP,OAAQC,CAC5B,CAAiB,EACDrjG,GAAQojG,EAAkBn+F,EAC1Bq+F,IACAF,EAAkBC,EAAmB,GAEzCT,EAAS/5G,CAAC,EAAI,CACV,KAAAmX,EACA,IAAKqjG,EACL,IAAAC,EACA,MAAO92B,EACP,OAAQm2B,CACX,EACDS,EAAkB,KAAK,IAAIA,EAAiB52B,CAAS,EACrD62B,GAAoBV,EAAa19F,CAC7C,CAAS,EACDk+F,GAAcC,EACdH,EAAY,KAAK,CACb,MAAOG,EACP,OAAQC,CACpB,CAAS,EACMF,CACf,CACI,gBAAiB,CACb,GAAI,CAAC,KAAK,QAAQ,QACd,OAEJ,MAAM3b,EAAc,KAAK,oBAAqB,EACxC,CAAE,eAAgBob,EAAW,QAAS,CAAE,MAAAhwE,EAAQ,OAAQ,CAAE,QAAA3tB,CAAO,EAAM,IAAAo4D,CAAG,CAAM,EAAG,KACnFmmC,EAAY72B,GAActP,EAAK,KAAK,KAAM,KAAK,KAAK,EAC1D,GAAI,KAAK,eAAgB,CACrB,IAAI0lC,EAAM,EACN/iG,EAAOm9D,GAAevqC,EAAO,KAAK,KAAO3tB,EAAS,KAAK,MAAQ,KAAK,WAAW89F,CAAG,CAAC,EACvF,UAAWU,KAAUb,EACbG,IAAQU,EAAO,MACfV,EAAMU,EAAO,IACbzjG,EAAOm9D,GAAevqC,EAAO,KAAK,KAAO3tB,EAAS,KAAK,MAAQ,KAAK,WAAW89F,CAAG,CAAC,GAEvFU,EAAO,KAAO,KAAK,IAAMjc,EAAcviF,EACvCw+F,EAAO,KAAOD,EAAU,WAAWA,EAAU,EAAExjG,CAAI,EAAGyjG,EAAO,KAAK,EAClEzjG,GAAQyjG,EAAO,MAAQx+F,CAEvC,KAAe,CACH,IAAIq+F,EAAM,EACNh4G,EAAM6xE,GAAevqC,EAAO,KAAK,IAAM40D,EAAcviF,EAAS,KAAK,OAAS,KAAK,YAAYq+F,CAAG,EAAE,MAAM,EAC5G,UAAWI,KAAWd,EACdc,EAAQ,MAAQJ,IAChBA,EAAMI,EAAQ,IACdp4G,EAAM6xE,GAAevqC,EAAO,KAAK,IAAM40D,EAAcviF,EAAS,KAAK,OAAS,KAAK,YAAYq+F,CAAG,EAAE,MAAM,GAE5GI,EAAQ,IAAMp4G,EACdo4G,EAAQ,MAAQ,KAAK,KAAOz+F,EAC5By+F,EAAQ,KAAOF,EAAU,WAAWA,EAAU,EAAEE,EAAQ,IAAI,EAAGA,EAAQ,KAAK,EAC5Ep4G,GAAOo4G,EAAQ,OAASz+F,CAExC,CACA,CACI,cAAe,CACX,OAAO,KAAK,QAAQ,WAAa,OAAS,KAAK,QAAQ,WAAa,QAC5E,CACI,MAAO,CACH,GAAI,KAAK,QAAQ,QAAS,CACtB,MAAMjU,EAAM,KAAK,IACjB6xE,GAAS7xE,EAAK,IAAI,EAClB,KAAK,MAAO,EACZ8xE,GAAW9xE,CAAG,CAC1B,CACA,CACC,OAAQ,CACD,KAAM,CAAE,QAAS6zD,EAAO,YAAAo+C,EAAc,WAAAJ,EAAa,IAAA7xG,CAAG,EAAM,KACtD,CAAE,MAAA4hC,EAAQ,OAAQwvE,CAAY,EAAGv9C,EACjC8+C,EAAe7rD,GAAS,MACxB0rD,EAAY72B,GAAc9nB,EAAK,IAAK,KAAK,KAAM,KAAK,KAAK,EACzD69C,EAAYp+B,GAAO89B,EAAU,IAAI,EACjC,CAAE,QAAAn9F,CAAO,EAAMm9F,EACf9V,EAAWoW,EAAU,KACrBkB,EAAetX,EAAW,EAChC,IAAIuX,EACJ,KAAK,UAAW,EAChB7yG,EAAI,UAAYwyG,EAAU,UAAU,MAAM,EAC1CxyG,EAAI,aAAe,SACnBA,EAAI,UAAY,GAChBA,EAAI,KAAO0xG,EAAU,OACrB,KAAM,CAAE,SAAAJ,EAAW,UAAAD,EAAY,WAAAM,CAAa,EAAGR,GAAWC,EAAW9V,CAAQ,EACvEwX,EAAgB,SAAS,EAAG,EAAG1pB,EAAY,CAC7C,GAAI,MAAMkoB,CAAQ,GAAKA,GAAY,GAAK,MAAMD,CAAS,GAAKA,EAAY,EACpE,OAEJrxG,EAAI,KAAM,EACV,MAAMy5F,EAAYrzB,GAAegjB,EAAW,UAAW,CAAC,EAQxD,GAPAppF,EAAI,UAAYomE,GAAegjB,EAAW,UAAWupB,CAAY,EACjE3yG,EAAI,QAAUomE,GAAegjB,EAAW,QAAS,MAAM,EACvDppF,EAAI,eAAiBomE,GAAegjB,EAAW,eAAgB,CAAC,EAChEppF,EAAI,SAAWomE,GAAegjB,EAAW,SAAU,OAAO,EAC1DppF,EAAI,UAAYy5F,EAChBz5F,EAAI,YAAcomE,GAAegjB,EAAW,YAAaupB,CAAY,EACrE3yG,EAAI,YAAYomE,GAAegjB,EAAW,SAAU,CAAE,CAAA,CAAC,EACnDgoB,EAAU,cAAe,CACzB,MAAM2B,EAAc,CAChB,OAAQ1B,EAAY,KAAK,MAAQ,EACjC,WAAYjoB,EAAW,WACvB,SAAUA,EAAW,SACrB,YAAaqQ,CAChB,EACKxP,EAAUuoB,EAAU,MAAM,EAAGlB,EAAW,CAAC,EACzCpnB,EAAU,EAAI0oB,EACpB5hC,GAAgBhxE,EAAK+yG,EAAa9oB,EAASC,EAASknB,EAAU,iBAAmBE,CAAQ,CACzG,KAAmB,CACH,MAAM0B,EAAU,EAAI,KAAK,KAAK1X,EAAW+V,GAAa,EAAG,CAAC,EACpD4B,EAAWT,EAAU,WAAW,EAAGlB,CAAQ,EAC3C4B,EAAe9/B,GAAcgW,EAAW,YAAY,EAC1DppF,EAAI,UAAW,EACX,OAAO,OAAOkzG,CAAY,EAAE,KAAM99G,GAAIA,IAAM,CAAC,EAC7Cw9E,GAAmB5yE,EAAK,CACpB,EAAGizG,EACH,EAAGD,EACH,EAAG1B,EACH,EAAGD,EACH,OAAQ6B,CAChC,CAAqB,EAEDlzG,EAAI,KAAKizG,EAAUD,EAAS1B,EAAUD,CAAS,EAEnDrxG,EAAI,KAAM,EACNy5F,IAAc,GACdz5F,EAAI,OAAQ,CAEhC,CACYA,EAAI,QAAS,CAChB,EACKmzG,EAAW,SAAS,EAAG,EAAG/pB,EAAY,CACxCjX,GAAWnyE,EAAKopF,EAAW,KAAM,EAAG,EAAIuoB,EAAa,EAAGD,EAAW,CAC/D,cAAetoB,EAAW,OAC1B,UAAWopB,EAAU,UAAUppB,EAAW,SAAS,CACnE,CAAa,CACJ,EACKmN,EAAe,KAAK,aAAc,EAClCC,EAAc,KAAK,oBAAqB,EAC1CD,EACAsc,EAAS,CACL,EAAG1mC,GAAevqC,EAAO,KAAK,KAAO3tB,EAAS,KAAK,MAAQ49F,EAAW,CAAC,CAAC,EACxE,EAAG,KAAK,IAAM59F,EAAUuiF,EACxB,KAAM,CACT,EAEDqc,EAAS,CACL,EAAG,KAAK,KAAO5+F,EACf,EAAGk4D,GAAevqC,EAAO,KAAK,IAAM40D,EAAcviF,EAAS,KAAK,OAASg+F,EAAY,CAAC,EAAE,MAAM,EAC9F,KAAM,CACT,EAELr2B,GAAsB,KAAK,IAAK/nB,EAAK,aAAa,EAClD,MAAMgkC,EAAa8Z,EAAa19F,EAChC,KAAK,YAAY,QAAQ,CAACm1E,EAAYvxF,IAAI,CACtCmI,EAAI,YAAcopF,EAAW,UAC7BppF,EAAI,UAAYopF,EAAW,UAC3B,MAAMlZ,EAAYlwE,EAAI,YAAYopF,EAAW,IAAI,EAAE,MAC7CgR,EAAYoY,EAAU,UAAUppB,EAAW,YAAcA,EAAW,UAAYgoB,EAAU,UAAU,EACpGj/F,EAAQm/F,EAAWsB,EAAe1iC,EACxC,IAAIznE,EAAIoqG,EAAO,EACXxqG,EAAIwqG,EAAO,EACfL,EAAU,SAAS,KAAK,KAAK,EACzBjc,EACI1+F,EAAI,GAAK4Q,EAAI0J,EAAQ8B,EAAU,KAAK,QACpC5L,EAAIwqG,EAAO,GAAKhb,EAChBgb,EAAO,OACPpqG,EAAIoqG,EAAO,EAAI1mC,GAAevqC,EAAO,KAAK,KAAO3tB,EAAS,KAAK,MAAQ49F,EAAWgB,EAAO,IAAI,CAAC,GAE3Fh7G,EAAI,GAAKwQ,EAAIwvF,EAAa,KAAK,SACtCpvF,EAAIoqG,EAAO,EAAIpqG,EAAIwpG,EAAYY,EAAO,IAAI,EAAE,MAAQ5+F,EACpD4+F,EAAO,OACPxqG,EAAIwqG,EAAO,EAAI1mC,GAAevqC,EAAO,KAAK,IAAM40D,EAAcviF,EAAS,KAAK,OAASg+F,EAAYY,EAAO,IAAI,EAAE,MAAM,GAExH,MAAMO,EAAQZ,EAAU,EAAE/pG,CAAC,EAI3B,GAHAqqG,EAAcM,EAAO/qG,EAAG+gF,CAAU,EAClC3gF,EAAI2jE,GAAOguB,EAAW3xF,EAAI6oG,EAAWsB,EAAcrc,EAAe9tF,EAAI0J,EAAQ,KAAK,MAAO0hD,EAAK,GAAG,EAClGs/C,EAASX,EAAU,EAAE/pG,CAAC,EAAGJ,EAAG+gF,CAAU,EAClCmN,EACAsc,EAAO,GAAK1gG,EAAQ8B,UACb,OAAOm1E,EAAW,MAAS,SAAU,CAC5C,MAAMiqB,EAAiB3B,EAAU,WACjCmB,EAAO,GAAKS,GAA0BlqB,EAAYiqB,CAAc,CAChF,MACgBR,EAAO,GAAKhb,CAE5B,CAAS,EACD/b,GAAqB,KAAK,IAAKjoB,EAAK,aAAa,CACzD,CACC,WAAY,CACL,MAAMA,EAAO,KAAK,QACZwiC,EAAYxiC,EAAK,MACjB0/C,EAAYjgC,GAAO+iB,EAAU,IAAI,EACjCmd,EAAengC,GAAUgjB,EAAU,OAAO,EAChD,GAAI,CAACA,EAAU,QACX,OAEJ,MAAMmc,EAAY72B,GAAc9nB,EAAK,IAAK,KAAK,KAAM,KAAK,KAAK,EACzD7zD,EAAM,KAAK,IACXgW,EAAWqgF,EAAU,SACrBuc,EAAeW,EAAU,KAAO,EAChCE,EAA6BD,EAAa,IAAMZ,EACtD,IAAIvqG,EACA2G,EAAO,KAAK,KACZ8qE,EAAW,KAAK,MACpB,GAAI,KAAK,eACLA,EAAW,KAAK,IAAI,GAAG,KAAK,UAAU,EACtCzxE,EAAI,KAAK,IAAMorG,EACfzkG,EAAOm9D,GAAetY,EAAK,MAAO7kD,EAAM,KAAK,MAAQ8qE,CAAQ,MAC1D,CACH,MAAMC,EAAY,KAAK,YAAY,OAAO,CAACvqE,EAAK8uB,IAAO,KAAK,IAAI9uB,EAAK8uB,EAAK,MAAM,EAAG,CAAC,EACpFj2B,EAAIorG,EAA6BtnC,GAAetY,EAAK,MAAO,KAAK,IAAK,KAAK,OAASkmB,EAAYlmB,EAAK,OAAO,QAAU,KAAK,qBAAqB,CAC5J,CACQ,MAAMprD,EAAI0jE,GAAen2D,EAAUhH,EAAMA,EAAO8qE,CAAQ,EACxD95E,EAAI,UAAYwyG,EAAU,UAAUtmC,GAAmBl2D,CAAQ,CAAC,EAChEhW,EAAI,aAAe,SACnBA,EAAI,YAAcq2F,EAAU,MAC5Br2F,EAAI,UAAYq2F,EAAU,MAC1Br2F,EAAI,KAAOuzG,EAAU,OACrBphC,GAAWnyE,EAAKq2F,EAAU,KAAM5tF,EAAGJ,EAAGkrG,CAAS,CACvD,CACC,qBAAsB,CACf,MAAMld,EAAY,KAAK,QAAQ,MACzBkd,EAAYjgC,GAAO+iB,EAAU,IAAI,EACjCmd,EAAengC,GAAUgjB,EAAU,OAAO,EAChD,OAAOA,EAAU,QAAUkd,EAAU,WAAaC,EAAa,OAAS,CAChF,CACC,iBAAiB/qG,EAAGJ,EAAG,CAChB,IAAIxQ,EAAG67G,EAAQC,EACf,GAAI9oC,GAAWpiE,EAAG,KAAK,KAAM,KAAK,KAAK,GAAKoiE,GAAWxiE,EAAG,KAAK,IAAK,KAAK,MAAM,GAE3E,IADAsrG,EAAK,KAAK,eACN97G,EAAI,EAAGA,EAAI87G,EAAG,OAAQ,EAAE97G,EAExB,GADA67G,EAASC,EAAG97G,CAAC,EACTgzE,GAAWpiE,EAAGirG,EAAO,KAAMA,EAAO,KAAOA,EAAO,KAAK,GAAK7oC,GAAWxiE,EAAGqrG,EAAO,IAAKA,EAAO,IAAMA,EAAO,MAAM,EAC9G,OAAO,KAAK,YAAY77G,CAAC,EAIrC,OAAO,IACf,CACC,YAAYT,EAAG,CACR,MAAMy8D,EAAO,KAAK,QAClB,GAAI,CAAC+/C,GAAWx8G,EAAE,KAAMy8D,CAAI,EACxB,OAEJ,MAAMggD,EAAc,KAAK,iBAAiBz8G,EAAE,EAAGA,EAAE,CAAC,EAClD,GAAIA,EAAE,OAAS,aAAeA,EAAE,OAAS,WAAY,CACjD,MAAMqX,EAAW,KAAK,aAChBqlG,EAAWvC,GAAW9iG,EAAUolG,CAAW,EAC7CplG,GAAY,CAACqlG,GACbr9E,GAASo9B,EAAK,QAAS,CACnBz8D,EACAqX,EACA,IACH,EAAE,IAAI,EAEX,KAAK,aAAeolG,EAChBA,GAAe,CAACC,GAChBr9E,GAASo9B,EAAK,QAAS,CACnBz8D,EACAy8G,EACA,IACH,EAAE,IAAI,CAEd,MAAUA,GACPp9E,GAASo9B,EAAK,QAAS,CACnBz8D,EACAy8G,EACA,IACH,EAAE,IAAI,CAEnB,CACA,CACA,SAAStB,GAAkBjB,EAAUI,EAAW1xG,EAAKopF,EAAY4oB,EAAa,CAC1E,MAAMx2B,EAAYu4B,GAAmB3qB,EAAYkoB,EAAUI,EAAW1xG,CAAG,EACnE2xG,EAAaqC,GAAoBhC,EAAa5oB,EAAYsoB,EAAU,UAAU,EACpF,MAAO,CACH,UAAAl2B,EACA,WAAAm2B,CACH,CACL,CACA,SAASoC,GAAmB3qB,EAAYkoB,EAAUI,EAAW1xG,EAAK,CAC9D,IAAIi0G,EAAiB7qB,EAAW,KAChC,OAAI6qB,GAAkB,OAAOA,GAAmB,WAC5CA,EAAiBA,EAAe,OAAO,CAAC9hH,EAAGC,IAAID,EAAE,OAASC,EAAE,OAASD,EAAIC,CAAC,GAEvEk/G,EAAWI,EAAU,KAAO,EAAI1xG,EAAI,YAAYi0G,CAAc,EAAE,KAC3E,CACA,SAASD,GAAoBhC,EAAa5oB,EAAYiqB,EAAgB,CAClE,IAAI1B,EAAaK,EACjB,OAAI,OAAO5oB,EAAW,MAAS,WAC3BuoB,EAAa2B,GAA0BlqB,EAAYiqB,CAAc,GAE9D1B,CACX,CACA,SAAS2B,GAA0BlqB,EAAYiqB,EAAgB,CAC3D,MAAMtc,EAAc3N,EAAW,KAAOA,EAAW,KAAK,OAAS,GAAM,EACrE,OAAOiqB,EAAiBtc,CAC5B,CACA,SAAS6c,GAAWrqG,EAAMsqD,EAAM,CAI5B,MAHK,IAAAtqD,IAAS,aAAeA,IAAS,cAAgBsqD,EAAK,SAAWA,EAAK,UAGvEA,EAAK,UAAYtqD,IAAS,SAAWA,IAAS,WAItD,CACA,IAAI2qG,GAAgB,CAChB,GAAI,SACP,SAAU1C,GACP,MAAO/gC,EAAOm7B,EAAOx3G,EAAS,CAC1B,MAAMi1F,EAAS5Y,EAAM,OAAS,IAAI+gC,GAAO,CACrC,IAAK/gC,EAAM,IACX,QAAAr8E,EACA,MAAAq8E,CACZ,CAAS,EACDod,GAAQ,UAAUpd,EAAO4Y,EAAQj1F,CAAO,EACxCy5F,GAAQ,OAAOpd,EAAO4Y,CAAM,CAC/B,EACD,KAAM5Y,EAAO,CACTod,GAAQ,UAAUpd,EAAOA,EAAM,MAAM,EACrC,OAAOA,EAAM,MAChB,EACD,aAAcA,EAAOm7B,EAAOx3G,EAAS,CACjC,MAAMi1F,EAAS5Y,EAAM,OACrBod,GAAQ,UAAUpd,EAAO4Y,EAAQj1F,CAAO,EACxCi1F,EAAO,QAAUj1F,CACpB,EACD,YAAaq8E,EAAO,CAChB,MAAM4Y,EAAS5Y,EAAM,OACrB4Y,EAAO,YAAa,EACpBA,EAAO,eAAgB,CAC1B,EACD,WAAY5Y,EAAO7iE,EAAM,CAChBA,EAAK,QACN6iE,EAAM,OAAO,YAAY7iE,EAAK,KAAK,CAE1C,EACD,SAAU,CACN,QAAS,GACT,SAAU,MACV,MAAO,SACP,SAAU,GACV,QAAS,GACT,OAAQ,IACR,QAAS,EAAGw7E,EAAYC,EAAQ,CAC5B,MAAMtuF,EAAQquF,EAAW,aACnB+qB,EAAK9qB,EAAO,MACd8qB,EAAG,iBAAiBp5G,CAAK,GACzBo5G,EAAG,KAAKp5G,CAAK,EACbquF,EAAW,OAAS,KAEpB+qB,EAAG,KAAKp5G,CAAK,EACbquF,EAAW,OAAS,GAE3B,EACD,QAAS,KACT,QAAS,KACT,OAAQ,CACJ,MAAQppF,GAAMA,EAAI,MAAM,QAAQ,MAChC,SAAU,GACV,QAAS,GACT,eAAgBywE,EAAO,CACnB,MAAMkxB,EAAWlxB,EAAM,KAAK,SACtB,CAAE,OAAQ,CAAE,cAAA2jC,EAAgB,WAAAjrB,EAAa,UAAAiR,EAAY,MAAA10B,EAAQ,gBAAA2uC,EAAkB,aAAAnB,CAAe,CAAA,EAAMziC,EAAM,OAAO,QACvH,OAAOA,EAAM,uBAAsB,EAAG,IAAKnnE,GAAO,CAC9C,MAAMzF,EAAQyF,EAAK,WAAW,SAAS8qG,EAAgB,EAAI,MAAS,EAC9DtN,EAAczzB,GAAUxvE,EAAM,WAAW,EAC/C,MAAO,CACH,KAAM89F,EAASr4F,EAAK,KAAK,EAAE,MAC3B,UAAWzF,EAAM,gBACjB,UAAW6hE,EACX,OAAQ,CAACp8D,EAAK,QACd,QAASzF,EAAM,eACf,SAAUA,EAAM,WAChB,eAAgBA,EAAM,iBACtB,SAAUA,EAAM,gBAChB,WAAYijG,EAAY,MAAQA,EAAY,QAAU,EACtD,YAAajjG,EAAM,YACnB,WAAYslF,GAActlF,EAAM,WAChC,SAAUA,EAAM,SAChB,UAAWu2F,GAAav2F,EAAM,UAC9B,aAAcwwG,IAAoBnB,GAAgBrvG,EAAM,cACxD,aAAcyF,EAAK,KACtB,CACJ,EAAE,IAAI,CACvB,CACS,EACD,MAAO,CACH,MAAQtJ,GAAMA,EAAI,MAAM,QAAQ,MAChC,QAAS,GACT,SAAU,SACV,KAAM,EAClB,CACK,EACD,YAAa,CACT,YAAcrB,GAAO,CAACA,EAAK,WAAW,IAAI,EAC1C,OAAQ,CACJ,YAAcA,GAAO,CAAC,CACd,iBACA,SACA,MACH,EAAC,SAASA,CAAI,CAC/B,CACA,CACA,EAEA,MAAM8gC,WAAcy1D,EAAQ,CAC3B,YAAYt7C,EAAO,CACZ,MAAO,EACP,KAAK,MAAQA,EAAO,MACpB,KAAK,QAAUA,EAAO,QACtB,KAAK,IAAMA,EAAO,IAClB,KAAK,SAAW,OAChB,KAAK,IAAM,OACX,KAAK,OAAS,OACd,KAAK,KAAO,OACZ,KAAK,MAAQ,OACb,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,SAAW,OAChB,KAAK,OAAS,OACd,KAAK,SAAW,MACxB,CACI,OAAOkgC,EAAUC,EAAW,CACxB,MAAMlmB,EAAO,KAAK,QAGlB,GAFA,KAAK,KAAO,EACZ,KAAK,IAAM,EACP,CAACA,EAAK,QAAS,CACf,KAAK,MAAQ,KAAK,OAAS,KAAK,MAAQ,KAAK,OAAS,EACtD,MACZ,CACQ,KAAK,MAAQ,KAAK,MAAQimB,EAC1B,KAAK,OAAS,KAAK,OAASC,EAC5B,MAAMsgB,EAAY7iG,GAAQq8D,EAAK,IAAI,EAAIA,EAAK,KAAK,OAAS,EAC1D,KAAK,SAAWwf,GAAUxf,EAAK,OAAO,EACtC,MAAMygD,EAAWja,EAAY/mB,GAAOzf,EAAK,IAAI,EAAE,WAAa,KAAK,SAAS,OACtE,KAAK,eACL,KAAK,OAASygD,EAEd,KAAK,MAAQA,CAEzB,CACI,cAAe,CACX,MAAM9jD,EAAM,KAAK,QAAQ,SACzB,OAAOA,IAAQ,OAASA,IAAQ,QACxC,CACI,UAAUt7C,EAAQ,CACd,KAAM,CAAE,IAAA5a,EAAM,KAAA0U,EAAO,OAAAF,EAAS,MAAAC,EAAQ,QAAA3a,CAAO,EAAM,KAC7CwtC,EAAQxtC,EAAQ,MACtB,IAAIk9E,EAAW,EACXwI,EAAU8a,EAAQC,EACtB,OAAI,KAAK,gBACLD,EAASzoB,GAAevqC,EAAO5yB,EAAMD,CAAK,EAC1C8lF,EAASv6F,EAAM4a,EACf4kE,EAAW/qE,EAAQC,IAEf5a,EAAQ,WAAa,QACrBwgG,EAAS5lF,EAAOkG,EAChB2/E,EAAS1oB,GAAevqC,EAAO9yB,EAAQxU,CAAG,EAC1Cg3E,EAAWvJ,GAAK,MAEhB6sB,EAAS7lF,EAAQmG,EACjB2/E,EAAS1oB,GAAevqC,EAAOtnC,EAAKwU,CAAM,EAC1CwiE,EAAWvJ,GAAK,IAEpB+R,EAAWhrE,EAASxU,GAEjB,CACH,OAAAs6F,EACA,OAAAC,EACA,SAAA/a,EACA,SAAAxI,CACH,CACT,CACI,MAAO,CACH,MAAMtxE,EAAM,KAAK,IACX6zD,EAAO,KAAK,QAClB,GAAI,CAACA,EAAK,QACN,OAEJ,MAAM0gD,EAAWjhC,GAAOzf,EAAK,IAAI,EAE3B3+C,EADaq/F,EAAS,WACA,EAAI,KAAK,SAAS,IACxC,CAAE,OAAA3f,EAAS,OAAAC,EAAS,SAAA/a,EAAW,SAAAxI,CAAQ,EAAM,KAAK,UAAUp8D,CAAM,EACxEi9D,GAAWnyE,EAAK6zD,EAAK,KAAM,EAAG,EAAG0gD,EAAU,CACvC,MAAO1gD,EAAK,MACZ,SAAAimB,EACA,SAAAxI,EACA,UAAWpF,GAAmBrY,EAAK,KAAK,EACxC,aAAc,SACd,YAAa,CACT+gC,EACAC,CAChB,CACA,CAAS,CACT,CACA,CACA,SAAS2f,GAAY/jC,EAAO4lB,EAAW,CACnC,MAAM5xD,EAAQ,IAAIhF,GAAM,CACpB,IAAKgxC,EAAM,IACX,QAAS4lB,EACT,MAAA5lB,CACR,CAAK,EACDod,GAAQ,UAAUpd,EAAOhsC,EAAO4xD,CAAS,EACzCxI,GAAQ,OAAOpd,EAAOhsC,CAAK,EAC3BgsC,EAAM,WAAahsC,CACvB,CACA,IAAIgwE,GAAe,CACf,GAAI,QACP,SAAUh1E,GACP,MAAOgxC,EAAOm7B,EAAOx3G,EAAS,CAC1BogH,GAAY/jC,EAAOr8E,CAAO,CAC7B,EACD,KAAMq8E,EAAO,CACT,MAAMikC,EAAajkC,EAAM,WACzBod,GAAQ,UAAUpd,EAAOikC,CAAU,EACnC,OAAOjkC,EAAM,UAChB,EACD,aAAcA,EAAOm7B,EAAOx3G,EAAS,CACjC,MAAMqwC,EAAQgsC,EAAM,WACpBod,GAAQ,UAAUpd,EAAOhsC,EAAOrwC,CAAO,EACvCqwC,EAAM,QAAUrwC,CACnB,EACD,SAAU,CACN,MAAO,SACP,QAAS,GACT,KAAM,CACF,OAAQ,MACX,EACD,SAAU,GACV,QAAS,GACT,SAAU,MACV,KAAM,GACN,OAAQ,GACX,EACD,cAAe,CACX,MAAO,OACV,EACD,YAAa,CACT,YAAa,GACb,WAAY,EACpB,CACA,EAEA,MAAMyN,GAAM,IAAI,QAChB,IAAI8yG,GAAkB,CAClB,GAAI,WACJ,MAAOlkC,EAAOm7B,EAAOx3G,EAAS,CAC1B,MAAMqwC,EAAQ,IAAIhF,GAAM,CACpB,IAAKgxC,EAAM,IACX,QAAAr8E,EACA,MAAAq8E,CACZ,CAAS,EACDod,GAAQ,UAAUpd,EAAOhsC,EAAOrwC,CAAO,EACvCy5F,GAAQ,OAAOpd,EAAOhsC,CAAK,EAC3B5iC,GAAI,IAAI4uE,EAAOhsC,CAAK,CACvB,EACD,KAAMgsC,EAAO,CACTod,GAAQ,UAAUpd,EAAO5uE,GAAI,IAAI4uE,CAAK,CAAC,EACvC5uE,GAAI,OAAO4uE,CAAK,CACnB,EACD,aAAcA,EAAOm7B,EAAOx3G,EAAS,CACjC,MAAMqwC,EAAQ5iC,GAAI,IAAI4uE,CAAK,EAC3Bod,GAAQ,UAAUpd,EAAOhsC,EAAOrwC,CAAO,EACvCqwC,EAAM,QAAUrwC,CACnB,EACD,SAAU,CACN,MAAO,SACP,QAAS,GACT,KAAM,CACF,OAAQ,QACX,EACD,SAAU,GACV,QAAS,EACT,SAAU,MACV,KAAM,GACN,OAAQ,IACX,EACD,cAAe,CACX,MAAO,OACV,EACD,YAAa,CACT,YAAa,GACb,WAAY,EACpB,CACA,EAEA,MAAMwgH,GAAc,CACnB,QAASl5G,EAAO,CACT,GAAI,CAACA,EAAM,OACP,MAAO,GAEX,IAAI7D,EAAG/F,EACH2W,EAAI,EACJJ,EAAI,EACJzW,EAAQ,EACZ,IAAIiG,EAAI,EAAG/F,EAAM4J,EAAM,OAAQ7D,EAAI/F,EAAK,EAAE+F,EAAE,CACxC,MAAM4N,EAAK/J,EAAM7D,CAAC,EAAE,QACpB,GAAI4N,GAAMA,EAAG,WAAY,CACrB,MAAM+qD,EAAM/qD,EAAG,gBAAiB,EAChCgD,GAAK+nD,EAAI,EACTnoD,GAAKmoD,EAAI,EACT,EAAE5+D,CAClB,CACA,CACQ,MAAO,CACH,EAAG6W,EAAI7W,EACP,EAAGyW,EAAIzW,CACV,CACJ,EACJ,QAAS8J,EAAOm5G,EAAe,CACxB,GAAI,CAACn5G,EAAM,OACP,MAAO,GAEX,IAAI+M,EAAIosG,EAAc,EAClBxsG,EAAIwsG,EAAc,EAClB/nB,EAAc,OAAO,kBACrBj1F,EAAG/F,EAAKgjH,EACZ,IAAIj9G,EAAI,EAAG/F,EAAM4J,EAAM,OAAQ7D,EAAI/F,EAAK,EAAE+F,EAAE,CACxC,MAAM4N,EAAK/J,EAAM7D,CAAC,EAAE,QACpB,GAAI4N,GAAMA,EAAG,WAAY,CACrB,MAAMwP,EAASxP,EAAG,eAAgB,EAC5B9K,EAAIqvE,GAAsB6qC,EAAe5/F,CAAM,EACjDta,EAAImyF,IACJA,EAAcnyF,EACdm6G,EAAiBrvG,EAErC,CACA,CACQ,GAAIqvG,EAAgB,CAChB,MAAMC,EAAKD,EAAe,gBAAiB,EAC3CrsG,EAAIssG,EAAG,EACP1sG,EAAI0sG,EAAG,CACnB,CACQ,MAAO,CACH,EAAAtsG,EACA,EAAAJ,CACH,CACT,CACA,EACA,SAAS2sG,GAAanjE,EAAMojE,EAAQ,CAChC,OAAIA,IACIz9G,GAAQy9G,CAAM,EACd,MAAM,UAAU,KAAK,MAAMpjE,EAAMojE,CAAM,EAEvCpjE,EAAK,KAAKojE,CAAM,GAGjBpjE,CACX,CACC,SAASqjE,GAAc5sG,EAAK,CACzB,OAAK,OAAOA,GAAQ,UAAYA,aAAe,SAAWA,EAAI,QAAQ;AAAA,CAAI,EAAI,GACnEA,EAAI,MAAM;AAAA,CAAI,EAElBA,CACX,CACC,SAAS6sG,GAAkB1kC,EAAOh0E,EAAM,CACrC,KAAM,CAAE,QAAAyF,EAAU,aAAA07E,EAAe,MAAA7iF,CAAQ,EAAG0B,EACtCuzD,EAAaygB,EAAM,eAAemN,CAAY,EAAE,WAChD,CAAE,MAAA/5C,EAAQ,MAAA1vC,CAAK,EAAM67D,EAAW,iBAAiBj1D,CAAK,EAC5D,MAAO,CACH,MAAA01E,EACA,MAAA5sC,EACA,OAAQmsB,EAAW,UAAUj1D,CAAK,EAClC,IAAK01E,EAAM,KAAK,SAASmN,CAAY,EAAE,KAAK7iF,CAAK,EACjD,eAAgB5G,EAChB,QAAS67D,EAAW,WAAY,EAChC,UAAWj1D,EACX,aAAA6iF,EACA,QAAA17E,CACH,CACL,CACC,SAASkzG,GAAe7xE,EAASnvC,EAAS,CACvC,MAAM4L,EAAMujC,EAAQ,MAAM,IACpB,CAAE,KAAAvqB,EAAO,OAAAq8F,EAAS,MAAA5wE,CAAQ,EAAGlB,EAC7B,CAAE,SAAA+tE,EAAW,UAAAD,CAAS,EAAMj9G,EAC5BkhH,EAAWhiC,GAAOl/E,EAAQ,QAAQ,EAClCm/G,EAAYjgC,GAAOl/E,EAAQ,SAAS,EACpCmhH,EAAajiC,GAAOl/E,EAAQ,UAAU,EACtCohH,EAAiB/wE,EAAM,OACvBgxE,EAAkBJ,EAAO,OACzBK,EAAoB18F,EAAK,OACzB/E,EAAUo/D,GAAUj/E,EAAQ,OAAO,EACzC,IAAIge,EAAS6B,EAAQ,OACjB9B,EAAQ,EACRwjG,EAAqB38F,EAAK,OAAO,CAACpnB,EAAOgkH,IAAWhkH,EAAQgkH,EAAS,OAAO,OAASA,EAAS,MAAM,OAASA,EAAS,MAAM,OAAQ,CAAC,EAKzI,GAJAD,GAAsBpyE,EAAQ,WAAW,OAASA,EAAQ,UAAU,OAChEiyE,IACApjG,GAAUojG,EAAiBjC,EAAU,YAAciC,EAAiB,GAAKphH,EAAQ,aAAeA,EAAQ,mBAExGuhH,EAAoB,CACpB,MAAME,EAAiBzhH,EAAQ,cAAgB,KAAK,IAAIi9G,EAAWiE,EAAS,UAAU,EAAIA,EAAS,WACnGljG,GAAUsjG,EAAoBG,GAAkBF,EAAqBD,GAAqBJ,EAAS,YAAcK,EAAqB,GAAKvhH,EAAQ,WAC3J,CACQqhH,IACArjG,GAAUhe,EAAQ,gBAAkBqhH,EAAkBF,EAAW,YAAcE,EAAkB,GAAKrhH,EAAQ,eAElH,IAAI0hH,EAAe,EACnB,MAAMC,EAAe,SAASluD,EAAM,CAChC11C,EAAQ,KAAK,IAAIA,EAAOnS,EAAI,YAAY6nD,CAAI,EAAE,MAAQiuD,CAAY,CACrE,EACD,OAAA91G,EAAI,KAAM,EACVA,EAAI,KAAOuzG,EAAU,OACrB/jE,GAAKjM,EAAQ,MAAOwyE,CAAY,EAChC/1G,EAAI,KAAOs1G,EAAS,OACpB9lE,GAAKjM,EAAQ,WAAW,OAAOA,EAAQ,SAAS,EAAGwyE,CAAY,EAC/DD,EAAe1hH,EAAQ,cAAgBk9G,EAAW,EAAIl9G,EAAQ,WAAa,EAC3Eo7C,GAAKx2B,EAAO48F,GAAW,CACnBpmE,GAAKomE,EAAS,OAAQG,CAAY,EAClCvmE,GAAKomE,EAAS,MAAOG,CAAY,EACjCvmE,GAAKomE,EAAS,MAAOG,CAAY,CACzC,CAAK,EACDD,EAAe,EACf91G,EAAI,KAAOu1G,EAAW,OACtB/lE,GAAKjM,EAAQ,OAAQwyE,CAAY,EACjC/1G,EAAI,QAAS,EACbmS,GAAS8B,EAAQ,MACV,CACH,MAAA9B,EACA,OAAAC,CACH,CACL,CACA,SAAS4jG,GAAgBvlC,EAAOnyC,EAAM,CAClC,KAAM,CAAE,EAAAj2B,EAAI,OAAA+J,CAAM,EAAMksB,EACxB,OAAIj2B,EAAI+J,EAAS,EACN,MACA/J,EAAIooE,EAAM,OAASr+D,EAAS,EAC5B,SAEJ,QACX,CACA,SAAS6jG,GAAoBC,EAAQzlC,EAAOr8E,EAASkqC,EAAM,CACvD,KAAM,CAAE,EAAA71B,EAAI,MAAA0J,CAAK,EAAMmsB,EACjB63E,EAAQ/hH,EAAQ,UAAYA,EAAQ,aAI1C,GAHI8hH,IAAW,QAAUztG,EAAI0J,EAAQgkG,EAAQ1lC,EAAM,OAG/CylC,IAAW,SAAWztG,EAAI0J,EAAQgkG,EAAQ,EAC1C,MAAO,EAEf,CACA,SAASC,GAAgB3lC,EAAOr8E,EAASkqC,EAAM+3E,EAAQ,CACnD,KAAM,CAAE,EAAA5tG,EAAI,MAAA0J,CAAK,EAAMmsB,EACjB,CAAE,MAAOg4E,EAAa,UAAW,CAAE,KAAAtnG,EAAO,MAAAD,CAAQ,CAAA,EAAM0hE,EAC9D,IAAIylC,EAAS,SACb,OAAIG,IAAW,SACXH,EAASztG,IAAMuG,EAAOD,GAAS,EAAI,OAAS,QACrCtG,GAAK0J,EAAQ,EACpB+jG,EAAS,OACFztG,GAAK6tG,EAAankG,EAAQ,IACjC+jG,EAAS,SAETD,GAAoBC,EAAQzlC,EAAOr8E,EAASkqC,CAAI,IAChD43E,EAAS,UAENA,CACX,CACC,SAASK,GAAmB9lC,EAAOr8E,EAASkqC,EAAM,CAC/C,MAAM+3E,EAAS/3E,EAAK,QAAUlqC,EAAQ,QAAU4hH,GAAgBvlC,EAAOnyC,CAAI,EAC3E,MAAO,CACH,OAAQA,EAAK,QAAUlqC,EAAQ,QAAUgiH,GAAgB3lC,EAAOr8E,EAASkqC,EAAM+3E,CAAM,EACrF,OAAAA,CACH,CACL,CACA,SAASG,GAAOl4E,EAAM43E,EAAQ,CAC1B,GAAI,CAAE,EAAAztG,EAAI,MAAA0J,CAAK,EAAMmsB,EACrB,OAAI43E,IAAW,QACXztG,GAAK0J,EACE+jG,IAAW,WAClBztG,GAAK0J,EAAQ,GAEV1J,CACX,CACA,SAASguG,GAAOn4E,EAAM+3E,EAAQK,EAAgB,CAC1C,GAAI,CAAE,EAAAruG,EAAI,OAAA+J,CAAM,EAAMksB,EACtB,OAAI+3E,IAAW,MACXhuG,GAAKquG,EACEL,IAAW,SAClBhuG,GAAK+J,EAASskG,EAEdruG,GAAK+J,EAAS,EAEX/J,CACX,CACC,SAASsuG,GAAmBviH,EAASkqC,EAAMs4E,EAAWnmC,EAAO,CAC1D,KAAM,CAAE,UAAAomC,EAAY,aAAAC,EAAe,aAAA3lC,CAAe,EAAG/8E,EAC/C,CAAE,OAAA8hH,EAAS,OAAAG,CAAM,EAAMO,EACvBF,EAAiBG,EAAYC,EAC7B,CAAE,QAAAC,EAAU,SAAAC,EAAW,WAAAC,EAAa,YAAAC,CAAc,EAAG9jC,GAAcjC,CAAY,EACrF,IAAI1oE,EAAI+tG,GAAOl4E,EAAM43E,CAAM,EAC3B,MAAM7tG,EAAIouG,GAAOn4E,EAAM+3E,EAAQK,CAAc,EAC7C,OAAIL,IAAW,SACPH,IAAW,OACXztG,GAAKiuG,EACER,IAAW,UAClBztG,GAAKiuG,GAEFR,IAAW,OAClBztG,GAAK,KAAK,IAAIsuG,EAASE,CAAU,EAAIJ,EAC9BX,IAAW,UAClBztG,GAAK,KAAK,IAAIuuG,EAAUE,CAAW,EAAIL,GAEpC,CACH,EAAGlsC,GAAYliE,EAAG,EAAGgoE,EAAM,MAAQnyC,EAAK,KAAK,EAC7C,EAAGqsC,GAAYtiE,EAAG,EAAGooE,EAAM,OAASnyC,EAAK,MAAM,CAClD,CACL,CACA,SAAS64E,GAAY5zE,EAAS3B,EAAOxtC,EAAS,CAC1C,MAAM6f,EAAUo/D,GAAUj/E,EAAQ,OAAO,EACzC,OAAOwtC,IAAU,SAAW2B,EAAQ,EAAIA,EAAQ,MAAQ,EAAI3B,IAAU,QAAU2B,EAAQ,EAAIA,EAAQ,MAAQtvB,EAAQ,MAAQsvB,EAAQ,EAAItvB,EAAQ,IACpJ,CACC,SAASmjG,GAAwB3gF,EAAU,CACxC,OAAOu+E,GAAa,CAAA,EAAIE,GAAcz+E,CAAQ,CAAC,CACnD,CACA,SAAS4gF,GAAqB/yG,EAAQi/B,EAAS+zE,EAAc,CACzD,OAAOt+G,GAAcsL,EAAQ,CACzB,QAAAi/B,EACA,aAAA+zE,EACA,KAAM,SACd,CAAK,CACL,CACA,SAASC,GAAkBv0D,EAAWhxD,EAAS,CAC3C,MAAMwpG,EAAWxpG,GAAWA,EAAQ,SAAWA,EAAQ,QAAQ,SAAWA,EAAQ,QAAQ,QAAQ,UAClG,OAAOwpG,EAAWx4C,EAAU,SAASw4C,CAAQ,EAAIx4C,CACrD,CACA,MAAMw0D,GAAmB,CACrB,YAAavxF,GACb,MAAOqxF,EAAc,CACjB,GAAIA,EAAa,OAAS,EAAG,CACzB,MAAM76G,EAAO66G,EAAa,CAAC,EACrBh0B,EAAS7mF,EAAK,MAAM,KAAK,OACzBg7G,EAAan0B,EAASA,EAAO,OAAS,EAC5C,GAAI,MAAQ,KAAK,SAAW,KAAK,QAAQ,OAAS,UAC9C,OAAO7mF,EAAK,QAAQ,OAAS,GAC1B,GAAIA,EAAK,MACZ,OAAOA,EAAK,MACT,GAAIg7G,EAAa,GAAKh7G,EAAK,UAAYg7G,EAC1C,OAAOn0B,EAAO7mF,EAAK,SAAS,CAE5C,CACQ,MAAO,EACV,EACD,WAAYwpB,GACZ,WAAYA,GACZ,YAAaA,GACb,MAAOyxF,EAAa,CAChB,GAAI,MAAQ,KAAK,SAAW,KAAK,QAAQ,OAAS,UAC9C,OAAOA,EAAY,MAAQ,KAAOA,EAAY,gBAAkBA,EAAY,eAEhF,IAAI7zE,EAAQ6zE,EAAY,QAAQ,OAAS,GACrC7zE,IACAA,GAAS,MAEb,MAAM1vC,EAAQujH,EAAY,eAC1B,OAAKzxC,GAAc9xE,CAAK,IACpB0vC,GAAS1vC,GAEN0vC,CACV,EACD,WAAY6zE,EAAa,CAErB,MAAMtjH,EADOsjH,EAAY,MAAM,eAAeA,EAAY,YAAY,EACjD,WAAW,SAASA,EAAY,SAAS,EAC9D,MAAO,CACH,YAAatjH,EAAQ,YACrB,gBAAiBA,EAAQ,gBACzB,YAAaA,EAAQ,YACrB,WAAYA,EAAQ,WACpB,iBAAkBA,EAAQ,iBAC1B,aAAc,CACjB,CACJ,EACD,gBAAkB,CACd,OAAO,KAAK,QAAQ,SACvB,EACD,gBAAiBsjH,EAAa,CAE1B,MAAMtjH,EADOsjH,EAAY,MAAM,eAAeA,EAAY,YAAY,EACjD,WAAW,SAASA,EAAY,SAAS,EAC9D,MAAO,CACH,WAAYtjH,EAAQ,WACpB,SAAUA,EAAQ,QACrB,CACJ,EACD,WAAY6xB,GACZ,UAAWA,GACX,aAAcA,GACd,OAAQA,GACR,YAAaA,EACjB,EACC,SAAS0xF,GAA2B30D,EAAWrkD,EAAMqB,EAAKqE,EAAK,CAC5D,MAAMvM,EAASkrD,EAAUrkD,CAAI,EAAE,KAAKqB,EAAKqE,CAAG,EAC5C,OAAI,OAAOvM,EAAW,IACX0/G,GAAiB74G,CAAI,EAAE,KAAKqB,EAAKqE,CAAG,EAExCvM,CACX,QACA,cAAsBo9F,EAAQ,CAC7B,OAAO,YAAc0f,GAClB,YAAYh7D,EAAO,CACf,MAAO,EACP,KAAK,QAAU,EACf,KAAK,QAAU,CAAE,EACjB,KAAK,eAAiB,OACtB,KAAK,MAAQ,OACb,KAAK,kBAAoB,OACzB,KAAK,cAAgB,CAAE,EACvB,KAAK,YAAc,OACnB,KAAK,SAAW,OAChB,KAAK,MAAQA,EAAO,MACpB,KAAK,QAAUA,EAAO,QACtB,KAAK,WAAa,OAClB,KAAK,MAAQ,OACb,KAAK,WAAa,OAClB,KAAK,KAAO,OACZ,KAAK,UAAY,OACjB,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,EAAI,OACT,KAAK,EAAI,OACT,KAAK,OAAS,OACd,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,YAAc,OACnB,KAAK,iBAAmB,OACxB,KAAK,gBAAkB,MAC/B,CACI,WAAWxlD,EAAS,CAChB,KAAK,QAAUA,EACf,KAAK,kBAAoB,OACzB,KAAK,SAAW,MACxB,CACC,oBAAqB,CACd,MAAM2T,EAAS,KAAK,kBACpB,GAAIA,EACA,OAAOA,EAEX,MAAM0oE,EAAQ,KAAK,MACbr8E,EAAU,KAAK,QAAQ,WAAW,KAAK,YAAY,EACnDy/D,EAAOz/D,EAAQ,SAAWq8E,EAAM,QAAQ,WAAar8E,EAAQ,WAC7DmrF,EAAa,IAAIL,GAAW,KAAK,MAAOrrB,CAAI,EAClD,OAAIA,EAAK,aACL,KAAK,kBAAoB,OAAO,OAAO0rB,CAAU,GAE9CA,CACf,CACC,YAAa,CACN,OAAO,KAAK,WAAa,KAAK,SAAW83B,GAAqB,KAAK,MAAM,WAAU,EAAI,KAAM,KAAK,aAAa,EACvH,CACI,SAASrlH,EAASoC,EAAS,CACvB,KAAM,CAAE,UAAA4uD,CAAS,EAAM5uD,EACjBwjH,EAAcD,GAA2B30D,EAAW,cAAe,KAAMhxD,CAAO,EAChFyyC,EAAQkzE,GAA2B30D,EAAW,QAAS,KAAMhxD,CAAO,EACpE6lH,EAAaF,GAA2B30D,EAAW,aAAc,KAAMhxD,CAAO,EACpF,IAAIogF,EAAQ,CAAE,EACd,OAAAA,EAAQ4iC,GAAa5iC,EAAO8iC,GAAc0C,CAAW,CAAC,EACtDxlC,EAAQ4iC,GAAa5iC,EAAO8iC,GAAczwE,CAAK,CAAC,EAChD2tC,EAAQ4iC,GAAa5iC,EAAO8iC,GAAc2C,CAAU,CAAC,EAC9CzlC,CACf,CACI,cAAcklC,EAAcljH,EAAS,CACjC,OAAOgjH,GAAwBO,GAA2BvjH,EAAQ,UAAW,aAAc,KAAMkjH,CAAY,CAAC,CACtH,CACI,QAAQA,EAAcljH,EAAS,CAC3B,KAAM,CAAE,UAAA4uD,CAAS,EAAM5uD,EACjB0jH,EAAY,CAAE,EACpB,OAAAtoE,GAAK8nE,EAAetlH,GAAU,CAC1B,MAAM4jH,EAAW,CACb,OAAQ,CAAE,EACV,MAAO,CAAE,EACT,MAAO,CAAA,CACV,EACKmC,EAASR,GAAkBv0D,EAAWhxD,CAAO,EACnDgjH,GAAaY,EAAS,OAAQV,GAAcyC,GAA2BI,EAAQ,cAAe,KAAM/lH,CAAO,CAAC,CAAC,EAC7GgjH,GAAaY,EAAS,MAAO+B,GAA2BI,EAAQ,QAAS,KAAM/lH,CAAO,CAAC,EACvFgjH,GAAaY,EAAS,MAAOV,GAAcyC,GAA2BI,EAAQ,aAAc,KAAM/lH,CAAO,CAAC,CAAC,EAC3G8lH,EAAU,KAAKlC,CAAQ,CACnC,CAAS,EACMkC,CACf,CACI,aAAaR,EAAcljH,EAAS,CAChC,OAAOgjH,GAAwBO,GAA2BvjH,EAAQ,UAAW,YAAa,KAAMkjH,CAAY,CAAC,CACrH,CACI,UAAUA,EAAcljH,EAAS,CAC7B,KAAM,CAAE,UAAA4uD,CAAS,EAAM5uD,EACjB4jH,EAAeL,GAA2B30D,EAAW,eAAgB,KAAMs0D,CAAY,EACvFjC,EAASsC,GAA2B30D,EAAW,SAAU,KAAMs0D,CAAY,EAC3EW,EAAcN,GAA2B30D,EAAW,cAAe,KAAMs0D,CAAY,EAC3F,IAAIllC,EAAQ,CAAE,EACd,OAAAA,EAAQ4iC,GAAa5iC,EAAO8iC,GAAc8C,CAAY,CAAC,EACvD5lC,EAAQ4iC,GAAa5iC,EAAO8iC,GAAcG,CAAM,CAAC,EACjDjjC,EAAQ4iC,GAAa5iC,EAAO8iC,GAAc+C,CAAW,CAAC,EAC/C7lC,CACf,CACC,aAAah+E,EAAS,CACf,MAAM81B,EAAS,KAAK,QACdnkB,EAAO,KAAK,MAAM,KAClBmyG,EAAc,CAAE,EAChBC,EAAmB,CAAE,EACrBC,EAAkB,CAAE,EAC1B,IAAId,EAAe,CAAE,EACjBz/G,EAAG/F,EACP,IAAI+F,EAAI,EAAG/F,EAAMo4B,EAAO,OAAQryB,EAAI/F,EAAK,EAAE+F,EACvCy/G,EAAa,KAAKnC,GAAkB,KAAK,MAAOjrF,EAAOryB,CAAC,CAAC,CAAC,EAE9D,OAAIzD,EAAQ,SACRkjH,EAAeA,EAAa,OAAO,CAACp1G,EAASnH,EAAOwL,IAAQnS,EAAQ,OAAO8N,EAASnH,EAAOwL,EAAOR,CAAI,CAAC,GAEvG3R,EAAQ,WACRkjH,EAAeA,EAAa,KAAK,CAACnlH,EAAGC,IAAIgC,EAAQ,SAASjC,EAAGC,EAAG2T,CAAI,CAAC,GAEzEypC,GAAK8nE,EAAetlH,GAAU,CAC1B,MAAM+lH,EAASR,GAAkBnjH,EAAQ,UAAWpC,CAAO,EAC3DkmH,EAAY,KAAKP,GAA2BI,EAAQ,aAAc,KAAM/lH,CAAO,CAAC,EAChFmmH,EAAiB,KAAKR,GAA2BI,EAAQ,kBAAmB,KAAM/lH,CAAO,CAAC,EAC1FomH,EAAgB,KAAKT,GAA2BI,EAAQ,iBAAkB,KAAM/lH,CAAO,CAAC,CACpG,CAAS,EACD,KAAK,YAAckmH,EACnB,KAAK,iBAAmBC,EACxB,KAAK,gBAAkBC,EACvB,KAAK,WAAad,EACXA,CACf,CACI,OAAOnqC,EAASq2B,EAAQ,CACpB,MAAMpvG,EAAU,KAAK,QAAQ,WAAW,KAAK,YAAY,EACnD81B,EAAS,KAAK,QACpB,IAAIw1D,EACA43B,EAAe,CAAE,EACrB,GAAI,CAACptF,EAAO,OACJ,KAAK,UAAY,IACjBw1D,EAAa,CACT,QAAS,CACZ,OAEF,CACH,MAAM1pE,EAAW4+F,GAAYxgH,EAAQ,QAAQ,EAAE,KAAK,KAAM81B,EAAQ,KAAK,cAAc,EACrFotF,EAAe,KAAK,aAAaljH,CAAO,EACxC,KAAK,MAAQ,KAAK,SAASkjH,EAAcljH,CAAO,EAChD,KAAK,WAAa,KAAK,cAAckjH,EAAcljH,CAAO,EAC1D,KAAK,KAAO,KAAK,QAAQkjH,EAAcljH,CAAO,EAC9C,KAAK,UAAY,KAAK,aAAakjH,EAAcljH,CAAO,EACxD,KAAK,OAAS,KAAK,UAAUkjH,EAAcljH,CAAO,EAClD,MAAMkqC,EAAO,KAAK,MAAQ82E,GAAe,KAAMhhH,CAAO,EAChDikH,EAAkB,OAAO,OAAO,CAAA,EAAIriG,EAAUsoB,CAAI,EAClDs4E,EAAYL,GAAmB,KAAK,MAAOniH,EAASikH,CAAe,EACnEC,EAAkB3B,GAAmBviH,EAASikH,EAAiBzB,EAAW,KAAK,KAAK,EAC1F,KAAK,OAASA,EAAU,OACxB,KAAK,OAASA,EAAU,OACxBl3B,EAAa,CACT,QAAS,EACT,EAAG44B,EAAgB,EACnB,EAAGA,EAAgB,EACnB,MAAOh6E,EAAK,MACZ,OAAQA,EAAK,OACb,OAAQtoB,EAAS,EACjB,OAAQA,EAAS,CACpB,CACb,CACQ,KAAK,cAAgBshG,EACrB,KAAK,SAAW,OACZ53B,GACA,KAAK,mBAAoB,EAAC,OAAO,KAAMA,CAAU,EAEjDvS,GAAW/4E,EAAQ,UACnBA,EAAQ,SAAS,KAAK,KAAM,CACxB,MAAO,KAAK,MACZ,QAAS,KACT,OAAAovG,CAChB,CAAa,CAEb,CACI,UAAU+U,EAAcv4G,EAAKs+B,EAAMlqC,EAAS,CACxC,MAAMokH,EAAgB,KAAK,iBAAiBD,EAAcj6E,EAAMlqC,CAAO,EACvE4L,EAAI,OAAOw4G,EAAc,GAAIA,EAAc,EAAE,EAC7Cx4G,EAAI,OAAOw4G,EAAc,GAAIA,EAAc,EAAE,EAC7Cx4G,EAAI,OAAOw4G,EAAc,GAAIA,EAAc,EAAE,CACrD,CACI,iBAAiBD,EAAcj6E,EAAMlqC,EAAS,CAC1C,KAAM,CAAE,OAAA8hH,EAAS,OAAAG,CAAM,EAAM,KACvB,CAAE,UAAAQ,EAAY,aAAA1lC,CAAY,EAAM/8E,EAChC,CAAE,QAAA2iH,EAAU,SAAAC,EAAW,WAAAC,EAAa,YAAAC,CAAc,EAAG9jC,GAAcjC,CAAY,EAC/E,CAAE,EAAGsnC,EAAM,EAAGC,CAAM,EAAGH,EACvB,CAAE,MAAApmG,EAAQ,OAAAC,CAAM,EAAMksB,EAC5B,IAAI26D,EAAIE,EAAIwf,EAAIzf,EAAIE,EAAIwf,EACxB,OAAIvC,IAAW,UACXjd,EAAKsf,EAAMtmG,EAAS,EAChB8jG,IAAW,QACXjd,EAAKwf,EACLtf,EAAKF,EAAK4d,EACV3d,EAAKE,EAAKyd,EACV+B,EAAKxf,EAAKyd,IAEV5d,EAAKwf,EAAMtmG,EACXgnF,EAAKF,EAAK4d,EACV3d,EAAKE,EAAKyd,EACV+B,EAAKxf,EAAKyd,GAEd8B,EAAK1f,IAEDid,IAAW,OACX/c,EAAKsf,EAAM,KAAK,IAAI1B,EAASE,CAAU,EAAIJ,EACpCX,IAAW,QAClB/c,EAAKsf,EAAMtmG,EAAQ,KAAK,IAAI6kG,EAAUE,CAAW,EAAIL,EAErD1d,EAAK,KAAK,OAEVkd,IAAW,OACXnd,EAAKwf,EACLtf,EAAKF,EAAK2d,EACV5d,EAAKE,EAAK0d,EACV8B,EAAKxf,EAAK0d,IAEV3d,EAAKwf,EAAMtmG,EACXgnF,EAAKF,EAAK2d,EACV5d,EAAKE,EAAK0d,EACV8B,EAAKxf,EAAK0d,GAEd+B,EAAK1f,GAEF,CACH,GAAAD,EACA,GAAAE,EACA,GAAAwf,EACA,GAAAzf,EACA,GAAAE,EACA,GAAAwf,CACH,CACT,CACI,UAAU1gC,EAAIl4E,EAAK5L,EAAS,CACxB,MAAMqwC,EAAQ,KAAK,MACbnnC,EAASmnC,EAAM,OACrB,IAAI8uE,EAAWsF,EAAchhH,EAC7B,GAAIyF,EAAQ,CACR,MAAMk1G,EAAY72B,GAAcvnF,EAAQ,IAAK,KAAK,EAAG,KAAK,KAAK,EAQ/D,IAPA8jF,EAAG,EAAIi/B,GAAY,KAAM/iH,EAAQ,WAAYA,CAAO,EACpD4L,EAAI,UAAYwyG,EAAU,UAAUp+G,EAAQ,UAAU,EACtD4L,EAAI,aAAe,SACnBuzG,EAAYjgC,GAAOl/E,EAAQ,SAAS,EACpCykH,EAAezkH,EAAQ,aACvB4L,EAAI,UAAY5L,EAAQ,WACxB4L,EAAI,KAAOuzG,EAAU,OACjB17G,EAAI,EAAGA,EAAIyF,EAAQ,EAAEzF,EACrBmI,EAAI,SAASykC,EAAM5sC,CAAC,EAAG26G,EAAU,EAAEt6B,EAAG,CAAC,EAAGA,EAAG,EAAIq7B,EAAU,WAAa,CAAC,EACzEr7B,EAAG,GAAKq7B,EAAU,WAAasF,EAC3BhhH,EAAI,IAAMyF,IACV46E,EAAG,GAAK9jF,EAAQ,kBAAoBykH,EAGxD,CACA,CACC,cAAc74G,EAAKk4E,EAAIrgF,EAAG26G,EAAWp+G,EAAS,CACvC,MAAM8jH,EAAc,KAAK,YAAYrgH,CAAC,EAChCihH,EAAkB,KAAK,iBAAiBjhH,CAAC,EACzC,CAAE,UAAAw5G,EAAY,SAAAC,EAAW,WAAA7iB,CAAa,EAAGr6F,EACzCkhH,EAAWhiC,GAAOl/E,EAAQ,QAAQ,EAClC2kH,EAAS5B,GAAY,KAAM,OAAQ/iH,CAAO,EAC1C4kH,EAAYxG,EAAU,EAAEuG,CAAM,EAC9BE,EAAU5H,EAAYiE,EAAS,YAAcA,EAAS,WAAajE,GAAa,EAAI,EACpF6H,EAAShhC,EAAG,EAAI+gC,EACtB,GAAI7kH,EAAQ,cAAe,CACvB,MAAM2+G,EAAc,CAChB,OAAQ,KAAK,IAAIzB,EAAUD,CAAS,EAAI,EACxC,WAAYyH,EAAgB,WAC5B,SAAUA,EAAgB,SAC1B,YAAa,CAChB,EACK7uB,EAAUuoB,EAAU,WAAWwG,EAAW1H,CAAQ,EAAIA,EAAW,EACjEpnB,EAAUgvB,EAAS7H,EAAY,EACrCrxG,EAAI,YAAc5L,EAAQ,mBAC1B4L,EAAI,UAAY5L,EAAQ,mBACxB28E,GAAU/wE,EAAK+yG,EAAa9oB,EAASC,CAAO,EAC5ClqF,EAAI,YAAck4G,EAAY,YAC9Bl4G,EAAI,UAAYk4G,EAAY,gBAC5BnnC,GAAU/wE,EAAK+yG,EAAa9oB,EAASC,CAAO,CACxD,KAAe,CACHlqF,EAAI,UAAY2+C,GAASu5D,EAAY,WAAW,EAAI,KAAK,IAAI,GAAG,OAAO,OAAOA,EAAY,WAAW,CAAC,EAAIA,EAAY,aAAe,EACrIl4G,EAAI,YAAck4G,EAAY,YAC9Bl4G,EAAI,YAAYk4G,EAAY,YAAc,CAAA,CAAE,EAC5Cl4G,EAAI,eAAiBk4G,EAAY,kBAAoB,EACrD,MAAMiB,EAAS3G,EAAU,WAAWwG,EAAW1H,EAAW7iB,CAAU,EAC9D2qB,EAAS5G,EAAU,WAAWA,EAAU,MAAMwG,EAAW,CAAC,EAAG1H,EAAW7iB,EAAa,CAAC,EACtFykB,EAAe9/B,GAAc8kC,EAAY,YAAY,EACvD,OAAO,OAAOhF,CAAY,EAAE,KAAM99G,GAAIA,IAAM,CAAC,GAC7C4K,EAAI,UAAW,EACfA,EAAI,UAAY5L,EAAQ,mBACxBw+E,GAAmB5yE,EAAK,CACpB,EAAGm5G,EACH,EAAGD,EACH,EAAG5H,EACH,EAAGD,EACH,OAAQ6B,CAC5B,CAAiB,EACDlzG,EAAI,KAAM,EACVA,EAAI,OAAQ,EACZA,EAAI,UAAYk4G,EAAY,gBAC5Bl4G,EAAI,UAAW,EACf4yE,GAAmB5yE,EAAK,CACpB,EAAGo5G,EACH,EAAGF,EAAS,EACZ,EAAG5H,EAAW,EACd,EAAGD,EAAY,EACf,OAAQ6B,CAC5B,CAAiB,EACDlzG,EAAI,KAAM,IAEVA,EAAI,UAAY5L,EAAQ,mBACxB4L,EAAI,SAASm5G,EAAQD,EAAQ5H,EAAUD,CAAS,EAChDrxG,EAAI,WAAWm5G,EAAQD,EAAQ5H,EAAUD,CAAS,EAClDrxG,EAAI,UAAYk4G,EAAY,gBAC5Bl4G,EAAI,SAASo5G,EAAQF,EAAS,EAAG5H,EAAW,EAAGD,EAAY,CAAC,EAE5E,CACQrxG,EAAI,UAAY,KAAK,gBAAgBnI,CAAC,CAC9C,CACI,SAASqgF,EAAIl4E,EAAK5L,EAAS,CACvB,KAAM,CAAE,KAAA4kB,CAAI,EAAM,KACZ,CAAE,YAAAqgG,EAAc,UAAAC,EAAY,cAAAC,EAAgB,UAAAlI,EAAY,SAAAC,EAAW,WAAA7iB,CAAU,EAAMr6F,EACnFkhH,EAAWhiC,GAAOl/E,EAAQ,QAAQ,EACxC,IAAIyhH,EAAiBP,EAAS,WAC1BkE,EAAe,EACnB,MAAMhH,EAAY72B,GAAcvnF,EAAQ,IAAK,KAAK,EAAG,KAAK,KAAK,EACzDqlH,EAAiB,SAAS5xD,EAAM,CAClC7nD,EAAI,SAAS6nD,EAAM2qD,EAAU,EAAEt6B,EAAG,EAAIshC,CAAY,EAAGthC,EAAG,EAAI29B,EAAiB,CAAC,EAC9E39B,EAAG,GAAK29B,EAAiBwD,CAC5B,EACKK,EAA0BlH,EAAU,UAAU8G,CAAS,EAC7D,IAAI1D,EAAU+D,EAAWvnC,EAAOv6E,EAAGmE,EAAG4qE,EAAMyJ,EAQ5C,IAPArwE,EAAI,UAAYs5G,EAChBt5G,EAAI,aAAe,SACnBA,EAAI,KAAOs1G,EAAS,OACpBp9B,EAAG,EAAIi/B,GAAY,KAAMuC,EAAyBtlH,CAAO,EACzD4L,EAAI,UAAY5L,EAAQ,UACxBo7C,GAAK,KAAK,WAAYiqE,CAAc,EACpCD,EAAeD,GAAiBG,IAA4B,QAAUJ,IAAc,SAAWhI,EAAW,EAAI7iB,EAAa6iB,EAAW,EAAI7iB,EAAa,EACnJ52F,EAAI,EAAG+uE,EAAO5tD,EAAK,OAAQnhB,EAAI+uE,EAAM,EAAE/uE,EAAE,CAUzC,IATA+9G,EAAW58F,EAAKnhB,CAAC,EACjB8hH,EAAY,KAAK,gBAAgB9hH,CAAC,EAClCmI,EAAI,UAAY25G,EAChBnqE,GAAKomE,EAAS,OAAQ6D,CAAc,EACpCrnC,EAAQwjC,EAAS,MACb2D,GAAiBnnC,EAAM,SACvB,KAAK,cAAcpyE,EAAKk4E,EAAIrgF,EAAG26G,EAAWp+G,CAAO,EACjDyhH,EAAiB,KAAK,IAAIP,EAAS,WAAYjE,CAAS,GAExDr1G,EAAI,EAAGq0E,EAAO+B,EAAM,OAAQp2E,EAAIq0E,EAAM,EAAEr0E,EACxCy9G,EAAernC,EAAMp2E,CAAC,CAAC,EACvB65G,EAAiBP,EAAS,WAE9B9lE,GAAKomE,EAAS,MAAO6D,CAAc,CAC/C,CACQD,EAAe,EACf3D,EAAiBP,EAAS,WAC1B9lE,GAAK,KAAK,UAAWiqE,CAAc,EACnCvhC,EAAG,GAAKmhC,CAChB,CACI,WAAWnhC,EAAIl4E,EAAK5L,EAAS,CACzB,MAAMihH,EAAS,KAAK,OACd/3G,EAAS+3G,EAAO,OACtB,IAAIE,EAAY19G,EAChB,GAAIyF,EAAQ,CACR,MAAMk1G,EAAY72B,GAAcvnF,EAAQ,IAAK,KAAK,EAAG,KAAK,KAAK,EAQ/D,IAPA8jF,EAAG,EAAIi/B,GAAY,KAAM/iH,EAAQ,YAAaA,CAAO,EACrD8jF,EAAG,GAAK9jF,EAAQ,gBAChB4L,EAAI,UAAYwyG,EAAU,UAAUp+G,EAAQ,WAAW,EACvD4L,EAAI,aAAe,SACnBu1G,EAAajiC,GAAOl/E,EAAQ,UAAU,EACtC4L,EAAI,UAAY5L,EAAQ,YACxB4L,EAAI,KAAOu1G,EAAW,OAClB19G,EAAI,EAAGA,EAAIyF,EAAQ,EAAEzF,EACrBmI,EAAI,SAASq1G,EAAOx9G,CAAC,EAAG26G,EAAU,EAAEt6B,EAAG,CAAC,EAAGA,EAAG,EAAIq9B,EAAW,WAAa,CAAC,EAC3Er9B,EAAG,GAAKq9B,EAAW,WAAanhH,EAAQ,aAExD,CACA,CACI,eAAe8jF,EAAIl4E,EAAK45G,EAAaxlH,EAAS,CAC1C,KAAM,CAAE,OAAA8hH,EAAS,OAAAG,CAAM,EAAM,KACvB,CAAE,EAAA5tG,EAAI,EAAAJ,CAAC,EAAM6vE,EACb,CAAE,MAAA/lE,EAAQ,OAAAC,CAAM,EAAMwnG,EACtB,CAAE,QAAA7C,EAAU,SAAAC,EAAW,WAAAC,EAAa,YAAAC,CAAW,EAAM9jC,GAAch/E,EAAQ,YAAY,EAC7F4L,EAAI,UAAY5L,EAAQ,gBACxB4L,EAAI,YAAc5L,EAAQ,YAC1B4L,EAAI,UAAY5L,EAAQ,YACxB4L,EAAI,UAAW,EACfA,EAAI,OAAOyI,EAAIsuG,EAAS1uG,CAAC,EACrBguG,IAAW,OACX,KAAK,UAAUn+B,EAAIl4E,EAAK45G,EAAaxlH,CAAO,EAEhD4L,EAAI,OAAOyI,EAAI0J,EAAQ6kG,EAAU3uG,CAAC,EAClCrI,EAAI,iBAAiByI,EAAI0J,EAAO9J,EAAGI,EAAI0J,EAAO9J,EAAI2uG,CAAQ,EACtDX,IAAW,UAAYH,IAAW,SAClC,KAAK,UAAUh+B,EAAIl4E,EAAK45G,EAAaxlH,CAAO,EAEhD4L,EAAI,OAAOyI,EAAI0J,EAAO9J,EAAI+J,EAAS8kG,CAAW,EAC9Cl3G,EAAI,iBAAiByI,EAAI0J,EAAO9J,EAAI+J,EAAQ3J,EAAI0J,EAAQ+kG,EAAa7uG,EAAI+J,CAAM,EAC3EikG,IAAW,UACX,KAAK,UAAUn+B,EAAIl4E,EAAK45G,EAAaxlH,CAAO,EAEhD4L,EAAI,OAAOyI,EAAIwuG,EAAY5uG,EAAI+J,CAAM,EACrCpS,EAAI,iBAAiByI,EAAGJ,EAAI+J,EAAQ3J,EAAGJ,EAAI+J,EAAS6kG,CAAU,EAC1DZ,IAAW,UAAYH,IAAW,QAClC,KAAK,UAAUh+B,EAAIl4E,EAAK45G,EAAaxlH,CAAO,EAEhD4L,EAAI,OAAOyI,EAAGJ,EAAI0uG,CAAO,EACzB/2G,EAAI,iBAAiByI,EAAGJ,EAAGI,EAAIsuG,EAAS1uG,CAAC,EACzCrI,EAAI,UAAW,EACfA,EAAI,KAAM,EACN5L,EAAQ,YAAc,GACtB4L,EAAI,OAAQ,CAExB,CACC,uBAAuB5L,EAAS,CACzB,MAAMq8E,EAAQ,KAAK,MACbyN,EAAQ,KAAK,YACb27B,EAAQ37B,GAASA,EAAM,EACvB47B,EAAQ57B,GAASA,EAAM,EAC7B,GAAI27B,GAASC,EAAO,CAChB,MAAM9jG,EAAW4+F,GAAYxgH,EAAQ,QAAQ,EAAE,KAAK,KAAM,KAAK,QAAS,KAAK,cAAc,EAC3F,GAAI,CAAC4hB,EACD,OAEJ,MAAMsoB,EAAO,KAAK,MAAQ82E,GAAe,KAAMhhH,CAAO,EAChDikH,EAAkB,OAAO,OAAO,CAAE,EAAEriG,EAAU,KAAK,KAAK,EACxD4gG,EAAYL,GAAmB9lC,EAAOr8E,EAASikH,CAAe,EAC9D3mC,EAAQilC,GAAmBviH,EAASikH,EAAiBzB,EAAWnmC,CAAK,GACvEopC,EAAM,MAAQnoC,EAAM,GAAKooC,EAAM,MAAQpoC,EAAM,KAC7C,KAAK,OAASklC,EAAU,OACxB,KAAK,OAASA,EAAU,OACxB,KAAK,MAAQt4E,EAAK,MAClB,KAAK,OAASA,EAAK,OACnB,KAAK,OAAStoB,EAAS,EACvB,KAAK,OAASA,EAAS,EACvB,KAAK,mBAAoB,EAAC,OAAO,KAAM07D,CAAK,EAE5D,CACA,CACC,aAAc,CACP,MAAO,CAAC,CAAC,KAAK,OACtB,CACI,KAAK1xE,EAAK,CACN,MAAM5L,EAAU,KAAK,QAAQ,WAAW,KAAK,YAAY,EACzD,IAAI2lH,EAAU,KAAK,QACnB,GAAI,CAACA,EACD,OAEJ,KAAK,uBAAuB3lH,CAAO,EACnC,MAAMwlH,EAAc,CAChB,MAAO,KAAK,MACZ,OAAQ,KAAK,MAChB,EACK1hC,EAAK,CACP,EAAG,KAAK,EACR,EAAG,KAAK,CACX,EACD6hC,EAAU,KAAK,IAAIA,CAAO,EAAI,KAAO,EAAIA,EACzC,MAAM9lG,EAAUo/D,GAAUj/E,EAAQ,OAAO,EACnC4lH,EAAoB,KAAK,MAAM,QAAU,KAAK,WAAW,QAAU,KAAK,KAAK,QAAU,KAAK,UAAU,QAAU,KAAK,OAAO,OAC9H5lH,EAAQ,SAAW4lH,IACnBh6G,EAAI,KAAM,EACVA,EAAI,YAAc+5G,EAClB,KAAK,eAAe7hC,EAAIl4E,EAAK45G,EAAaxlH,CAAO,EACjDwnF,GAAsB57E,EAAK5L,EAAQ,aAAa,EAChD8jF,EAAG,GAAKjkE,EAAQ,IAChB,KAAK,UAAUikE,EAAIl4E,EAAK5L,CAAO,EAC/B,KAAK,SAAS8jF,EAAIl4E,EAAK5L,CAAO,EAC9B,KAAK,WAAW8jF,EAAIl4E,EAAK5L,CAAO,EAChC0nF,GAAqB97E,EAAK5L,EAAQ,aAAa,EAC/C4L,EAAI,QAAS,EAEzB,CACC,mBAAoB,CACb,OAAO,KAAK,SAAW,CAAE,CACjC,CACC,kBAAkBqjG,EAAgBwR,EAAe,CAC1C,MAAMvR,EAAa,KAAK,QAClBp5E,EAASm5E,EAAe,IAAI,CAAC,CAAE,aAAAzlB,EAAe,MAAA7iF,KAAW,CAC3D,MAAMuO,EAAO,KAAK,MAAM,eAAes0E,CAAY,EACnD,GAAI,CAACt0E,EACD,MAAM,IAAI,MAAM,kCAAoCs0E,CAAY,EAEpE,MAAO,CACH,aAAAA,EACA,QAASt0E,EAAK,KAAKvO,CAAK,EACxB,MAAAA,CACH,CACb,CAAS,EACKoyE,EAAU,CAAC1G,GAAe68B,EAAYp5E,CAAM,EAC5C+vF,EAAkB,KAAK,iBAAiB/vF,EAAQ2qF,CAAa,GAC/D1nC,GAAW8sC,KACX,KAAK,QAAU/vF,EACf,KAAK,eAAiB2qF,EACtB,KAAK,oBAAsB,GAC3B,KAAK,OAAO,EAAI,EAE5B,CACC,YAAYz9G,EAAGosG,EAAQlD,EAAc,GAAM,CACpC,GAAIkD,GAAU,KAAK,oBACf,MAAO,GAEX,KAAK,oBAAsB,GAC3B,MAAMpvG,EAAU,KAAK,QACfkvG,EAAa,KAAK,SAAW,CAAE,EAC/Bp5E,EAAS,KAAK,mBAAmB9yB,EAAGksG,EAAYE,EAAQlD,CAAW,EACnE2Z,EAAkB,KAAK,iBAAiB/vF,EAAQ9yB,CAAC,EACjD+1E,EAAUq2B,GAAU,CAAC/8B,GAAev8C,EAAQo5E,CAAU,GAAK2W,EACjE,OAAI9sC,IACA,KAAK,QAAUjjD,GACX91B,EAAQ,SAAWA,EAAQ,YAC3B,KAAK,eAAiB,CAClB,EAAGgD,EAAE,EACL,EAAGA,EAAE,CACR,EACD,KAAK,OAAO,GAAMosG,CAAM,IAGzBr2B,CACf,CACC,mBAAmB/1E,EAAGksG,EAAYE,EAAQlD,EAAa,CAChD,MAAMlsG,EAAU,KAAK,QACrB,GAAIgD,EAAE,OAAS,WACX,MAAO,CAAE,EAEb,GAAI,CAACkpG,EACD,OAAOgD,EAEX,MAAMp5E,EAAS,KAAK,MAAM,0BAA0B9yB,EAAGhD,EAAQ,KAAMA,EAASovG,CAAM,EACpF,OAAIpvG,EAAQ,SACR81B,EAAO,QAAS,EAEbA,CACf,CACC,iBAAiBA,EAAQ9yB,EAAG,CACrB,KAAM,CAAE,OAAA8iH,EAAS,OAAAC,EAAS,QAAA/lH,CAAU,EAAG,KACjC4hB,EAAW4+F,GAAYxgH,EAAQ,QAAQ,EAAE,KAAK,KAAM81B,EAAQ9yB,CAAC,EACnE,OAAO4e,IAAa,KAAUkkG,IAAWlkG,EAAS,GAAKmkG,IAAWnkG,EAAS,EACnF,CACA,EACA,IAAIokG,GAAiB,CACjB,GAAI,UACJ,SAAUC,GACV,YAAAzF,GACA,UAAWnkC,EAAOm7B,EAAOx3G,EAAS,CAC1BA,IACAq8E,EAAM,QAAU,IAAI4pC,GAAQ,CACxB,MAAA5pC,EACA,QAAAr8E,CAChB,CAAa,EAER,EACD,aAAcq8E,EAAOm7B,EAAOx3G,EAAS,CAC7Bq8E,EAAM,SACNA,EAAM,QAAQ,WAAWr8E,CAAO,CAEvC,EACD,MAAOq8E,EAAOm7B,EAAOx3G,EAAS,CACtBq8E,EAAM,SACNA,EAAM,QAAQ,WAAWr8E,CAAO,CAEvC,EACD,UAAWq8E,EAAO,CACd,MAAMltC,EAAUktC,EAAM,QACtB,GAAIltC,GAAWA,EAAQ,cAAe,CAClC,MAAM31B,EAAO,CACT,QAAA21B,CACH,EACD,GAAIktC,EAAM,cAAc,oBAAqB,CACzC,GAAG7iE,EACH,WAAY,EACf,CAAA,IAAM,GACH,OAEJ21B,EAAQ,KAAKktC,EAAM,GAAG,EACtBA,EAAM,cAAc,mBAAoB7iE,CAAI,CACxD,CACK,EACD,WAAY6iE,EAAO7iE,EAAM,CACrB,GAAI6iE,EAAM,QAAS,CACf,MAAM+b,EAAmB5+E,EAAK,OAC1B6iE,EAAM,QAAQ,YAAY7iE,EAAK,MAAO4+E,EAAkB5+E,EAAK,WAAW,IACxEA,EAAK,QAAU,GAE/B,CACK,EACD,SAAU,CACN,QAAS,GACT,SAAU,KACV,SAAU,UACV,gBAAiB,kBACjB,WAAY,OACZ,UAAW,CACP,OAAQ,MACX,EACD,aAAc,EACd,kBAAmB,EACnB,WAAY,OACZ,UAAW,OACX,YAAa,EACb,SAAU,CAAE,EACZ,UAAW,OACX,YAAa,OACb,cAAe,EACf,gBAAiB,EACjB,WAAY,CACR,OAAQ,MACX,EACD,YAAa,OACb,QAAS,EACT,aAAc,EACd,UAAW,EACX,aAAc,EACd,UAAW,CAAC5N,EAAK6zD,IAAOA,EAAK,SAAS,KACtC,SAAU,CAAC7zD,EAAK6zD,IAAOA,EAAK,SAAS,KACrC,mBAAoB,OACpB,cAAe,GACf,WAAY,EACZ,YAAa,gBACb,YAAa,EACb,UAAW,CACP,SAAU,IACV,OAAQ,cACX,EACD,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,IACA,IACA,QACA,SACA,SACA,QACpB,CACa,EACD,QAAS,CACL,OAAQ,SACR,SAAU,GAC1B,CACS,EACD,UAAW2jD,EACd,EACD,cAAe,CACX,SAAU,OACV,WAAY,OACZ,UAAW,MACd,EACD,YAAa,CACT,YAAc74G,GAAOA,IAAS,UAAYA,IAAS,YAAcA,IAAS,WAC1E,WAAY,GACZ,UAAW,CACP,YAAa,GACb,WAAY,EACf,EACD,UAAW,CACP,UAAW,EACd,EACD,WAAY,CACR,UAAW,WACvB,CACK,EACD,uBAAwB,CACpB,aACR,CACA,EAEIg+F,GAAuB,OAAO,OAAO,CACzC,UAAW,KACX,OAAQgP,GACR,WAAYgC,GACZ,OAAQ5yG,GACR,OAAQm5G,GACR,SAAUS,GACV,MAAOF,GACP,QAAS2F,EACT,CAAC,EAED,MAAME,GAAc,CAACh3B,EAAQ6R,EAAKp6F,EAAOw/G,KACjC,OAAOplB,GAAQ,UACfp6F,EAAQuoF,EAAO,KAAK6R,CAAG,EAAI,EAC3BolB,EAAY,QAAQ,CAChB,MAAAx/G,EACA,MAAOo6F,CACnB,CAAS,GACM,MAAMA,CAAG,IAChBp6F,EAAQ,MAELA,GAEX,SAASy/G,GAAel3B,EAAQ6R,EAAKp6F,EAAOw/G,EAAa,CACrD,MAAMtuF,EAAQq3D,EAAO,QAAQ6R,CAAG,EAChC,GAAIlpE,IAAU,GACV,OAAOquF,GAAYh3B,EAAQ6R,EAAKp6F,EAAOw/G,CAAW,EAEtD,MAAMnvC,EAAOkY,EAAO,YAAY6R,CAAG,EACnC,OAAOlpE,IAAUm/C,EAAOrwE,EAAQkxB,CACpC,CACA,MAAMgoE,GAAa,CAACl5F,EAAOsW,IAAMtW,IAAU,KAAO,KAAO4vE,GAAY,KAAK,MAAM5vE,CAAK,EAAG,EAAGsW,CAAG,EAC9F,SAASopG,GAAkBtmH,EAAO,CAC9B,MAAMmvF,EAAS,KAAK,UAAW,EAC/B,OAAInvF,GAAS,GAAKA,EAAQmvF,EAAO,OACtBA,EAAOnvF,CAAK,EAEhBA,CACX,CACA,MAAMumH,WAAsBzlB,EAAM,CAC9B,OAAO,GAAK,WACf,OAAO,SAAW,CACX,MAAO,CACH,SAAUwlB,EACtB,CACK,EACD,YAAY37B,EAAI,CACZ,MAAMA,CAAG,EACR,KAAK,YAAc,OACpB,KAAK,YAAc,EACnB,KAAK,aAAe,CAAE,CAC9B,CACI,KAAK2e,EAAc,CACf,MAAMkd,EAAQ,KAAK,aACnB,GAAIA,EAAM,OAAQ,CACd,MAAMr3B,EAAS,KAAK,UAAW,EAC/B,SAAW,CAAE,MAAAvoF,EAAQ,MAAA8oC,CAAK,IAAO82E,EACzBr3B,EAAOvoF,CAAK,IAAM8oC,GAClBy/C,EAAO,OAAOvoF,EAAO,CAAC,EAG9B,KAAK,aAAe,CAAE,CAClC,CACQ,MAAM,KAAK0iG,CAAY,CAC/B,CACI,MAAMtI,EAAKp6F,EAAO,CACd,GAAIkrE,GAAckvB,CAAG,EACjB,OAAO,KAEX,MAAM7R,EAAS,KAAK,UAAW,EAC/B,OAAAvoF,EAAQ,SAASA,CAAK,GAAKuoF,EAAOvoF,CAAK,IAAMo6F,EAAMp6F,EAAQy/G,GAAel3B,EAAQ6R,EAAK/uB,GAAerrE,EAAOo6F,CAAG,EAAG,KAAK,YAAY,EAC7HlB,GAAWl5F,EAAOuoF,EAAO,OAAS,CAAC,CAClD,CACI,qBAAsB,CAClB,KAAM,CAAE,WAAA1W,EAAa,WAAAC,GAAgB,KAAK,cAAe,EACzD,GAAI,CAAE,IAAAv7D,EAAM,IAAAD,CAAG,EAAM,KAAK,UAAU,EAAI,EACpC,KAAK,QAAQ,SAAW,UACnBu7D,IACDt7D,EAAM,GAELu7D,IACDx7D,EAAM,KAAK,UAAW,EAAC,OAAS,IAGxC,KAAK,IAAMC,EACX,KAAK,IAAMD,CACnB,CACI,YAAa,CACT,MAAMC,EAAM,KAAK,IACXD,EAAM,KAAK,IACX6D,EAAS,KAAK,QAAQ,OACtBo5D,EAAQ,CAAE,EAChB,IAAIgV,EAAS,KAAK,UAAW,EAC7BA,EAAShyE,IAAQ,GAAKD,IAAQiyE,EAAO,OAAS,EAAIA,EAASA,EAAO,MAAMhyE,EAAKD,EAAM,CAAC,EACpF,KAAK,YAAc,KAAK,IAAIiyE,EAAO,QAAUpuE,EAAS,EAAI,GAAI,CAAC,EAC/D,KAAK,YAAc,KAAK,KAAOA,EAAS,GAAM,GAC9C,QAAQ/gB,EAAQmd,EAAKnd,GAASkd,EAAKld,IAC/Bm6E,EAAM,KAAK,CACP,MAAAn6E,CAChB,CAAa,EAEL,OAAOm6E,CACf,CACI,iBAAiBn6E,EAAO,CACpB,OAAOsmH,GAAkB,KAAK,KAAMtmH,CAAK,CACjD,CACC,WAAY,CACL,MAAM,UAAW,EACZ,KAAK,iBACN,KAAK,eAAiB,CAAC,KAAK,eAExC,CACI,iBAAiBA,EAAO,CACpB,OAAI,OAAOA,GAAU,WACjBA,EAAQ,KAAK,MAAMA,CAAK,GAErBA,IAAU,KAAO,IAAM,KAAK,oBAAoBA,EAAQ,KAAK,aAAe,KAAK,WAAW,CAC3G,CACI,gBAAgB4G,EAAO,CACnB,MAAMuzE,EAAQ,KAAK,MACnB,OAAIvzE,EAAQ,GAAKA,EAAQuzE,EAAM,OAAS,EAC7B,KAEJ,KAAK,iBAAiBA,EAAMvzE,CAAK,EAAE,KAAK,CACvD,CACI,iBAAiB21E,EAAO,CACpB,OAAO,KAAK,MAAM,KAAK,YAAc,KAAK,mBAAmBA,CAAK,EAAI,KAAK,WAAW,CAC9F,CACI,cAAe,CACX,OAAO,KAAK,MACpB,CACA,CAEA,SAASkqC,GAAgBC,EAAmBC,EAAW,CACnD,MAAMxsC,EAAQ,CAAE,EAEV,CAAE,OAAA4N,EAAS,KAAAod,EAAO,IAAAhoF,EAAM,IAAAD,EAAM,UAAA0pG,EAAY,MAAAnpH,EAAQ,SAAAopH,EAAW,UAAAC,EAAY,cAAAC,CAAgB,EAAGL,EAC5FpgD,EAAO6+B,GAAQ,EACf6hB,EAAYH,EAAW,EACvB,CAAE,IAAKI,EAAO,IAAKC,CAAO,EAAGP,EAC7BluC,EAAa,CAAC3G,GAAc30D,CAAG,EAC/Bu7D,EAAa,CAAC5G,GAAc50D,CAAG,EAC/BiqG,EAAe,CAACr1C,GAAcr0E,CAAK,EACnC2pH,GAAcF,EAAOD,IAASH,EAAY,GAChD,IAAIxxB,EAAU9gB,IAAS0yC,EAAOD,GAAQD,EAAY1gD,CAAI,EAAIA,EACtDkkB,EAAQ68B,EAASC,EAASC,EAC9B,GAAIjyB,EAAU,OAAe,CAAC7c,GAAc,CAACC,EACzC,MAAO,CACH,CACI,MAAOuuC,CACV,EACD,CACI,MAAOC,CACvB,CACS,EAELK,EAAY,KAAK,KAAKL,EAAO5xB,CAAO,EAAI,KAAK,MAAM2xB,EAAO3xB,CAAO,EAC7DiyB,EAAYP,IACZ1xB,EAAU9gB,GAAQ+yC,EAAYjyB,EAAU0xB,EAAY1gD,CAAI,EAAIA,GAE3DwL,GAAc80C,CAAS,IACxBp8B,EAAS,KAAK,IAAI,GAAIo8B,CAAS,EAC/BtxB,EAAU,KAAK,KAAKA,EAAU9K,CAAM,EAAIA,GAExCzC,IAAW,SACXs/B,EAAU,KAAK,MAAMJ,EAAO3xB,CAAO,EAAIA,EACvCgyB,EAAU,KAAK,KAAKJ,EAAO5xB,CAAO,EAAIA,IAEtC+xB,EAAUJ,EACVK,EAAUJ,GAEVzuC,GAAcC,GAAcysB,GAAQrwB,IAAa53D,EAAMC,GAAOgoF,EAAM7P,EAAU,GAAI,GAClFiyB,EAAY,KAAK,MAAM,KAAK,KAAKrqG,EAAMC,GAAOm4E,EAASuxB,CAAQ,CAAC,EAChEvxB,GAAWp4E,EAAMC,GAAOoqG,EACxBF,EAAUlqG,EACVmqG,EAAUpqG,GACHiqG,GACPE,EAAU5uC,EAAat7D,EAAMkqG,EAC7BC,EAAU5uC,EAAax7D,EAAMoqG,EAC7BC,EAAY9pH,EAAQ,EACpB63F,GAAWgyB,EAAUD,GAAWE,IAEhCA,GAAaD,EAAUD,GAAW/xB,EAC9BhhB,GAAaizC,EAAW,KAAK,MAAMA,CAAS,EAAGjyB,EAAU,GAAI,EAC7DiyB,EAAY,KAAK,MAAMA,CAAS,EAEhCA,EAAY,KAAK,KAAKA,CAAS,GAGvC,MAAMC,EAAgB,KAAK,IAAInyC,GAAeigB,CAAO,EAAGjgB,GAAegyC,CAAO,CAAC,EAC/E78B,EAAS,KAAK,IAAI,GAAI1Y,GAAc80C,CAAS,EAAIY,EAAgBZ,CAAS,EAC1ES,EAAU,KAAK,MAAMA,EAAU78B,CAAM,EAAIA,EACzC88B,EAAU,KAAK,MAAMA,EAAU98B,CAAM,EAAIA,EACzC,IAAI3iF,EAAI,EAgBR,IAfI4wE,IACIsuC,GAAiBM,IAAYlqG,GAC7Bg9D,EAAM,KAAK,CACP,MAAOh9D,CACvB,CAAa,EACGkqG,EAAUlqG,GACVtV,IAEAysE,GAAa,KAAK,OAAO+yC,EAAUx/G,EAAIytF,GAAW9K,CAAM,EAAIA,EAAQrtE,EAAKsqG,GAAkBtqG,EAAKiqG,EAAYV,CAAiB,CAAC,GAC9H7+G,KAEGw/G,EAAUlqG,GACjBtV,KAGFA,EAAI0/G,EAAW,EAAE1/G,EACnBsyE,EAAM,KAAK,CACP,MAAO,KAAK,OAAOktC,EAAUx/G,EAAIytF,GAAW9K,CAAM,EAAIA,CAClE,CAAS,EAEL,OAAI9R,GAAcquC,GAAiBO,IAAYpqG,EACvCi9D,EAAM,QAAU7F,GAAa6F,EAAMA,EAAM,OAAS,CAAC,EAAE,MAAOj9D,EAAKuqG,GAAkBvqG,EAAKkqG,EAAYV,CAAiB,CAAC,EACtHvsC,EAAMA,EAAM,OAAS,CAAC,EAAE,MAAQj9D,EAEhCi9D,EAAM,KAAK,CACP,MAAOj9D,CACvB,CAAa,GAEE,CAACw7D,GAAc4uC,IAAYpqG,IAClCi9D,EAAM,KAAK,CACP,MAAOmtC,CACnB,CAAS,EAEEntC,CACX,CACA,SAASstC,GAAkBznH,EAAOonH,EAAY,CAAE,WAAAr0B,EAAa,YAAA2O,CAAW,EAAK,CACzE,MAAMrkB,EAAMpI,GAAUysB,CAAW,EAC3BxwB,GAAS6hB,EAAa,KAAK,IAAI1V,CAAG,EAAI,KAAK,IAAIA,CAAG,IAAM,KACxDl0E,EAAS,IAAOi+G,GAAc,GAAKpnH,GAAO,OAChD,OAAO,KAAK,IAAIonH,EAAal2C,EAAO/nE,CAAM,CAC9C,CACA,MAAMu+G,WAAwB5mB,EAAM,CAChC,YAAYnW,EAAI,CACZ,MAAMA,CAAG,EACR,KAAK,MAAQ,OACb,KAAK,IAAM,OACX,KAAK,YAAc,OACnB,KAAK,UAAY,OAClB,KAAK,YAAc,CAC3B,CACI,MAAMqW,EAAKp6F,EAAO,CAId,OAHIkrE,GAAckvB,CAAG,IAGhB,OAAOA,GAAQ,UAAYA,aAAe,SAAW,CAAC,SAAS,CAACA,CAAG,EAC7D,KAEJ,CAACA,CAChB,CACI,wBAAyB,CACrB,KAAM,CAAE,YAAAxhB,GAAiB,KAAK,QACxB,CAAE,WAAA/G,EAAa,WAAAC,GAAgB,KAAK,cAAe,EACzD,GAAI,CAAE,IAAAv7D,EAAM,IAAAD,CAAG,EAAM,KACrB,MAAMyqG,EAAU1mH,GAAIkc,EAAMs7D,EAAat7D,EAAMlc,EACvC2mH,EAAU3mH,GAAIic,EAAMw7D,EAAax7D,EAAMjc,EAC7C,GAAIu+E,EAAa,CACb,MAAMqoC,EAAUxzC,GAAKl3D,CAAG,EAClB2qG,EAAUzzC,GAAKn3D,CAAG,EACpB2qG,EAAU,GAAKC,EAAU,EACzBF,EAAO,CAAC,EACDC,EAAU,GAAKC,EAAU,GAChCH,EAAO,CAAC,CAExB,CACQ,GAAIxqG,IAAQD,EAAK,CACb,IAAI6D,EAAS7D,IAAQ,EAAI,EAAI,KAAK,IAAIA,EAAM,GAAI,EAChD0qG,EAAO1qG,EAAM6D,CAAM,EACdy+D,GACDmoC,EAAOxqG,EAAM4D,CAAM,CAEnC,CACQ,KAAK,IAAM5D,EACX,KAAK,IAAMD,CACnB,CACI,cAAe,CACX,MAAMghF,EAAW,KAAK,QAAQ,MAC9B,GAAI,CAAE,cAAA6pB,EAAgB,SAAAC,CAAQ,EAAM9pB,EAChC2oB,EACJ,OAAImB,GACAnB,EAAW,KAAK,KAAK,KAAK,IAAMmB,CAAQ,EAAI,KAAK,MAAM,KAAK,IAAMA,CAAQ,EAAI,EAC1EnB,EAAW,MACX,QAAQ,KAAK,UAAU,KAAK,EAAE,oBAAoBmB,CAAQ,kCAAkCnB,CAAQ,2BAA2B,EAC/HA,EAAW,OAGfA,EAAW,KAAK,iBAAkB,EAClCkB,EAAgBA,GAAiB,IAEjCA,IACAlB,EAAW,KAAK,IAAIkB,EAAelB,CAAQ,GAExCA,CACf,CACC,kBAAmB,CACZ,OAAO,OAAO,iBACtB,CACI,YAAa,CACT,MAAMnnD,EAAO,KAAK,QACZw+B,EAAWx+B,EAAK,MACtB,IAAImnD,EAAW,KAAK,aAAc,EAClCA,EAAW,KAAK,IAAI,EAAGA,CAAQ,EAC/B,MAAMoB,EAA0B,CAC5B,SAAApB,EACA,OAAQnnD,EAAK,OACb,IAAKA,EAAK,IACV,IAAKA,EAAK,IACV,UAAWw+B,EAAS,UACpB,KAAMA,EAAS,SACf,MAAOA,EAAS,MAChB,UAAW,KAAK,WAAY,EAC5B,WAAY,KAAK,aAAc,EAC/B,YAAaA,EAAS,aAAe,EACrC,cAAeA,EAAS,gBAAkB,EAC7C,EACKyoB,EAAY,KAAK,QAAU,KAC3BxsC,EAAQssC,GAAgBwB,EAAyBtB,CAAS,EAChE,OAAIjnD,EAAK,SAAW,SAChBsV,GAAmBmF,EAAO,KAAM,OAAO,EAEvCza,EAAK,SACLya,EAAM,QAAS,EACf,KAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,MAEhB,KAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,KAEbA,CACf,CACC,WAAY,CACL,MAAMA,EAAQ,KAAK,MACnB,IAAIhyE,EAAQ,KAAK,IACbC,EAAM,KAAK,IAEf,GADA,MAAM,UAAW,EACb,KAAK,QAAQ,QAAU+xE,EAAM,OAAQ,CACrC,MAAMp5D,GAAU3Y,EAAMD,GAAS,KAAK,IAAIgyE,EAAM,OAAS,EAAG,CAAC,EAAI,EAC/DhyE,GAAS4Y,EACT3Y,GAAO2Y,CACnB,CACQ,KAAK,YAAc5Y,EACnB,KAAK,UAAYC,EACjB,KAAK,YAAcA,EAAMD,CACjC,CACI,iBAAiBnI,EAAO,CACpB,OAAOg6E,GAAah6E,EAAO,KAAK,MAAM,QAAQ,OAAQ,KAAK,QAAQ,MAAM,MAAM,CACvF,CACA,CAEA,MAAMkoH,WAAoBR,EAAgB,CACtC,OAAO,GAAK,SACf,OAAO,SAAW,CACX,MAAO,CACH,SAAUhtC,GAAM,WAAW,OACvC,CACK,EACD,qBAAsB,CAClB,KAAM,CAAE,IAAAv9D,EAAM,IAAAD,CAAG,EAAM,KAAK,UAAU,EAAI,EAC1C,KAAK,IAAM60D,GAAe50D,CAAG,EAAIA,EAAM,EACvC,KAAK,IAAM40D,GAAe70D,CAAG,EAAIA,EAAM,EACvC,KAAK,uBAAwB,CACrC,CACC,kBAAmB,CACZ,MAAM61E,EAAa,KAAK,aAAc,EAChC5pF,EAAS4pF,EAAa,KAAK,MAAQ,KAAK,OACxC2O,EAAczsB,GAAU,KAAK,QAAQ,MAAM,WAAW,EACtD/D,GAAS6hB,EAAa,KAAK,IAAI2O,CAAW,EAAI,KAAK,IAAIA,CAAW,IAAM,KACxE8B,EAAW,KAAK,wBAAwB,CAAC,EAC/C,OAAO,KAAK,KAAKr6F,EAAS,KAAK,IAAI,GAAIq6F,EAAS,WAAatyB,CAAK,CAAC,CAC3E,CACI,iBAAiBlxE,EAAO,CACpB,OAAOA,IAAU,KAAO,IAAM,KAAK,oBAAoBA,EAAQ,KAAK,aAAe,KAAK,WAAW,CAC3G,CACI,iBAAiBu8E,EAAO,CACpB,OAAO,KAAK,YAAc,KAAK,mBAAmBA,CAAK,EAAI,KAAK,WACxE,CACA,CAEA,MAAM4rC,GAAclnH,GAAI,KAAK,MAAMmzE,GAAMnzE,CAAC,CAAC,EACrCmnH,GAAiB,CAACnnH,EAAGkvB,IAAI,KAAK,IAAI,GAAIg4F,GAAWlnH,CAAC,EAAIkvB,CAAC,EAC7D,SAASk4F,GAAQC,EAAS,CAEtB,OADeA,EAAU,KAAK,IAAI,GAAIH,GAAWG,CAAO,CAAC,IACvC,CACtB,CACA,SAASC,GAAMprG,EAAKD,EAAKsrG,EAAU,CAC/B,MAAMC,EAAY,KAAK,IAAI,GAAID,CAAQ,EACjCrgH,EAAQ,KAAK,MAAMgV,EAAMsrG,CAAS,EAExC,OADY,KAAK,KAAKvrG,EAAMurG,CAAS,EACxBtgH,CACjB,CACA,SAASugH,GAASvrG,EAAKD,EAAK,CACxB,MAAMmvD,EAAQnvD,EAAMC,EACpB,IAAIqrG,EAAWL,GAAW97C,CAAK,EAC/B,KAAMk8C,GAAMprG,EAAKD,EAAKsrG,CAAQ,EAAI,IAC9BA,IAEJ,KAAMD,GAAMprG,EAAKD,EAAKsrG,CAAQ,EAAI,IAC9BA,IAEJ,OAAO,KAAK,IAAIA,EAAUL,GAAWhrG,CAAG,CAAC,CAC7C,CACC,SAASwrG,GAAcjC,EAAmB,CAAE,IAAAvpG,EAAM,IAAAD,CAAG,EAAK,CACvDC,EAAM60D,GAAgB00C,EAAkB,IAAKvpG,CAAG,EAChD,MAAMg9D,EAAQ,CAAE,EACVyuC,EAAST,GAAWhrG,CAAG,EAC7B,IAAI0rG,EAAMH,GAASvrG,EAAKD,CAAG,EACvB0pG,EAAYiC,EAAM,EAAI,KAAK,IAAI,GAAI,KAAK,IAAIA,CAAG,CAAC,EAAI,EACxD,MAAMb,EAAW,KAAK,IAAI,GAAIa,CAAG,EAC3BnrE,EAAOkrE,EAASC,EAAM,KAAK,IAAI,GAAID,CAAM,EAAI,EAC7CzgH,EAAQ,KAAK,OAAOgV,EAAMugC,GAAQkpE,CAAS,EAAIA,EAC/C7lG,EAAS,KAAK,OAAO5D,EAAMugC,GAAQsqE,EAAW,EAAE,EAAIA,EAAW,GACrE,IAAIc,EAAc,KAAK,OAAO3gH,EAAQ4Y,GAAU,KAAK,IAAI,GAAI8nG,CAAG,CAAC,EAC7D7oH,EAAQgyE,GAAgB00C,EAAkB,IAAK,KAAK,OAAOhpE,EAAO38B,EAAS+nG,EAAc,KAAK,IAAI,GAAID,CAAG,GAAKjC,CAAS,EAAIA,CAAS,EACxI,KAAM5mH,EAAQkd,GACVi9D,EAAM,KAAK,CACP,MAAAn6E,EACA,MAAOqoH,GAAQroH,CAAK,EACpB,YAAA8oH,CACZ,CAAS,EACGA,GAAe,GACfA,EAAcA,EAAc,GAAK,GAAK,GAEtCA,IAEAA,GAAe,KACfD,IACAC,EAAc,EACdlC,EAAYiC,GAAO,EAAI,EAAIjC,GAE/B5mH,EAAQ,KAAK,OAAO09C,EAAO38B,EAAS+nG,EAAc,KAAK,IAAI,GAAID,CAAG,GAAKjC,CAAS,EAAIA,EAExF,MAAMmC,EAAW/2C,GAAgB00C,EAAkB,IAAK1mH,CAAK,EAC7D,OAAAm6E,EAAM,KAAK,CACP,MAAO4uC,EACP,MAAOV,GAAQU,CAAQ,EACvB,YAAAD,CACR,CAAK,EACM3uC,CACX,CACA,MAAM6uC,WAAyBloB,EAAM,CACjC,OAAO,GAAK,cACf,OAAO,SAAW,CACX,MAAO,CACH,SAAUpmB,GAAM,WAAW,YAC3B,MAAO,CACH,QAAS,EACzB,CACA,CACK,EACD,YAAYiQ,EAAI,CACZ,MAAMA,CAAG,EACR,KAAK,MAAQ,OACb,KAAK,IAAM,OACX,KAAK,YAAc,OACpB,KAAK,YAAc,CAC3B,CACI,MAAMqW,EAAKp6F,EAAO,CACd,MAAM5G,EAAQ0nH,GAAgB,UAAU,MAAM,MAAM,KAAM,CACtD1mB,EACAp6F,CACZ,CAAS,EACD,GAAI5G,IAAU,EAAG,CACb,KAAK,MAAQ,GACb,MACZ,CACQ,OAAO+xE,GAAe/xE,CAAK,GAAKA,EAAQ,EAAIA,EAAQ,IAC5D,CACI,qBAAsB,CAClB,KAAM,CAAE,IAAAmd,EAAM,IAAAD,CAAG,EAAM,KAAK,UAAU,EAAI,EAC1C,KAAK,IAAM60D,GAAe50D,CAAG,EAAI,KAAK,IAAI,EAAGA,CAAG,EAAI,KACpD,KAAK,IAAM40D,GAAe70D,CAAG,EAAI,KAAK,IAAI,EAAGA,CAAG,EAAI,KAChD,KAAK,QAAQ,cACb,KAAK,MAAQ,IAEb,KAAK,OAAS,KAAK,MAAQ,KAAK,eAAiB,CAAC60D,GAAe,KAAK,QAAQ,IAC9E,KAAK,IAAM50D,IAAQirG,GAAe,KAAK,IAAK,CAAC,EAAIA,GAAe,KAAK,IAAK,EAAE,EAAIA,GAAe,KAAK,IAAK,CAAC,GAE9G,KAAK,uBAAwB,CACrC,CACI,wBAAyB,CACrB,KAAM,CAAE,WAAA3vC,EAAa,WAAAC,GAAgB,KAAK,cAAe,EACzD,IAAIv7D,EAAM,KAAK,IACXD,EAAM,KAAK,IACf,MAAMyqG,EAAU1mH,GAAIkc,EAAMs7D,EAAat7D,EAAMlc,EACvC2mH,EAAU3mH,GAAIic,EAAMw7D,EAAax7D,EAAMjc,EACzCkc,IAAQD,IACJC,GAAO,GACPwqG,EAAO,CAAC,EACRC,EAAO,EAAE,IAETD,EAAOS,GAAejrG,EAAK,EAAE,CAAC,EAC9ByqG,EAAOQ,GAAelrG,EAAK,CAAE,CAAC,IAGlCC,GAAO,GACPwqG,EAAOS,GAAelrG,EAAK,EAAE,CAAC,EAE9BA,GAAO,GACP0qG,EAAOQ,GAAejrG,EAAK,CAAE,CAAC,EAElC,KAAK,IAAMA,EACX,KAAK,IAAMD,CACnB,CACI,YAAa,CACT,MAAMwiD,EAAO,KAAK,QACZgnD,EAAoB,CACtB,IAAK,KAAK,SACV,IAAK,KAAK,QACb,EACKvsC,EAAQwuC,GAAcjC,EAAmB,IAAI,EACnD,OAAIhnD,EAAK,SAAW,SAChBsV,GAAmBmF,EAAO,KAAM,OAAO,EAEvCza,EAAK,SACLya,EAAM,QAAS,EACf,KAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,MAEhB,KAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,KAEbA,CACf,CACC,iBAAiBn6E,EAAO,CACjB,OAAOA,IAAU,OAAY,IAAMg6E,GAAah6E,EAAO,KAAK,MAAM,QAAQ,OAAQ,KAAK,QAAQ,MAAM,MAAM,CACnH,CACC,WAAY,CACL,MAAMmI,EAAQ,KAAK,IACnB,MAAM,UAAW,EACjB,KAAK,YAAcisE,GAAMjsE,CAAK,EAC9B,KAAK,YAAcisE,GAAM,KAAK,GAAG,EAAIA,GAAMjsE,CAAK,CACxD,CACI,iBAAiBnI,EAAO,CAIpB,OAHIA,IAAU,QAAaA,IAAU,KACjCA,EAAQ,KAAK,KAEbA,IAAU,MAAQ,MAAMA,CAAK,EACtB,IAEJ,KAAK,mBAAmBA,IAAU,KAAK,IAAM,GAAKo0E,GAAMp0E,CAAK,EAAI,KAAK,aAAe,KAAK,WAAW,CACpH,CACI,iBAAiBu8E,EAAO,CACpB,MAAMunB,EAAU,KAAK,mBAAmBvnB,CAAK,EAC7C,OAAO,KAAK,IAAI,GAAI,KAAK,YAAcunB,EAAU,KAAK,WAAW,CACzE,CACA,CAEA,SAASmlB,GAAsBvpD,EAAM,CACjC,MAAMw+B,EAAWx+B,EAAK,MACtB,GAAIw+B,EAAS,SAAWx+B,EAAK,QAAS,CAClC,MAAM5/C,EAAUo/D,GAAUgf,EAAS,eAAe,EAClD,OAAOjsB,GAAeisB,EAAS,MAAQA,EAAS,KAAK,KAAMvrC,GAAS,KAAK,IAAI,EAAI7yC,EAAQ,MACjG,CACI,MAAO,EACX,CACA,SAASopG,GAAiBr9G,EAAK8vE,EAAMjsC,EAAO,CACxC,OAAAA,EAAQrsC,GAAQqsC,CAAK,EAAIA,EAAQ,CAC7BA,CACH,EACM,CACH,EAAGssC,GAAanwE,EAAK8vE,EAAK,OAAQjsC,CAAK,EACvC,EAAGA,EAAM,OAASisC,EAAK,UAC1B,CACL,CACA,SAASwtC,GAAgBvzC,EAAOvZ,EAAKlyB,EAAMhtB,EAAKD,EAAK,CACjD,OAAI04D,IAAUz4D,GAAOy4D,IAAU14D,EACpB,CACH,MAAOm/C,EAAMlyB,EAAO,EACpB,IAAKkyB,EAAMlyB,EAAO,CACrB,EACMyrC,EAAQz4D,GAAOy4D,EAAQ14D,EACvB,CACH,MAAOm/C,EAAMlyB,EACb,IAAKkyB,CACR,EAEE,CACH,MAAOA,EACP,IAAKA,EAAMlyB,CACd,CACL,CACC,SAASi/E,GAAmB19B,EAAO,CAChC,MAAM6G,EAAO,CACT,EAAG7G,EAAM,KAAOA,EAAM,SAAS,KAC/B,EAAGA,EAAM,MAAQA,EAAM,SAAS,MAChC,EAAGA,EAAM,IAAMA,EAAM,SAAS,IAC9B,EAAGA,EAAM,OAASA,EAAM,SAAS,MACpC,EACK29B,EAAS,OAAO,OAAO,CAAA,EAAI92B,CAAI,EAC/BwP,EAAa,CAAE,EACfjiF,EAAU,CAAE,EACZwpG,EAAa59B,EAAM,aAAa,OAChC69B,EAAiB79B,EAAM,QAAQ,YAC/B89B,EAAkBD,EAAe,kBAAoB31C,GAAK01C,EAAa,EAC7E,QAAQ5lH,EAAI,EAAGA,EAAI4lH,EAAY5lH,IAAI,CAC/B,MAAMg8D,EAAO6pD,EAAe,WAAW79B,EAAM,qBAAqBhoF,CAAC,CAAC,EACpEoc,EAAQpc,CAAC,EAAIg8D,EAAK,QAClB,MAAMw3B,EAAgBxL,EAAM,iBAAiBhoF,EAAGgoF,EAAM,YAAc5rE,EAAQpc,CAAC,EAAG8lH,CAAe,EACzFC,EAAStqC,GAAOzf,EAAK,IAAI,EACzBygD,EAAW+I,GAAiBx9B,EAAM,IAAK+9B,EAAQ/9B,EAAM,aAAahoF,CAAC,CAAC,EAC1Eq+F,EAAWr+F,CAAC,EAAIy8G,EAChB,MAAM1d,EAAexsB,GAAgByV,EAAM,cAAchoF,CAAC,EAAI8lH,CAAe,EACvE5zC,EAAQ,KAAK,MAAMT,GAAUstB,CAAY,CAAC,EAC1CinB,EAAUP,GAAgBvzC,EAAOshB,EAAc,EAAGipB,EAAS,EAAG,EAAG,GAAG,EACpEwJ,EAAUR,GAAgBvzC,EAAOshB,EAAc,EAAGipB,EAAS,EAAG,GAAI,GAAG,EAC3EyJ,GAAaP,EAAQ92B,EAAMkQ,EAAcinB,EAASC,CAAO,CACjE,CACIj+B,EAAM,eAAe6G,EAAK,EAAI82B,EAAO,EAAGA,EAAO,EAAI92B,EAAK,EAAGA,EAAK,EAAI82B,EAAO,EAAGA,EAAO,EAAI92B,EAAK,CAAC,EAC/F7G,EAAM,iBAAmBm+B,GAAqBn+B,EAAOqW,EAAYjiF,CAAO,CAC5E,CACA,SAAS8pG,GAAaP,EAAQ92B,EAAM3c,EAAO8zC,EAASC,EAAS,CACzD,MAAMhnB,EAAM,KAAK,IAAI,KAAK,IAAI/sB,CAAK,CAAC,EAC9B8sB,EAAM,KAAK,IAAI,KAAK,IAAI9sB,CAAK,CAAC,EACpC,IAAIthE,EAAI,EACJJ,EAAI,EACJw1G,EAAQ,MAAQn3B,EAAK,GACrBj+E,GAAKi+E,EAAK,EAAIm3B,EAAQ,OAAS/mB,EAC/B0mB,EAAO,EAAI,KAAK,IAAIA,EAAO,EAAG92B,EAAK,EAAIj+E,CAAC,GACjCo1G,EAAQ,IAAMn3B,EAAK,IAC1Bj+E,GAAKo1G,EAAQ,IAAMn3B,EAAK,GAAKoQ,EAC7B0mB,EAAO,EAAI,KAAK,IAAIA,EAAO,EAAG92B,EAAK,EAAIj+E,CAAC,GAExCq1G,EAAQ,MAAQp3B,EAAK,GACrBr+E,GAAKq+E,EAAK,EAAIo3B,EAAQ,OAASjnB,EAC/B2mB,EAAO,EAAI,KAAK,IAAIA,EAAO,EAAG92B,EAAK,EAAIr+E,CAAC,GACjCy1G,EAAQ,IAAMp3B,EAAK,IAC1Br+E,GAAKy1G,EAAQ,IAAMp3B,EAAK,GAAKmQ,EAC7B2mB,EAAO,EAAI,KAAK,IAAIA,EAAO,EAAG92B,EAAK,EAAIr+E,CAAC,EAEhD,CACA,SAAS21G,GAAqBn+B,EAAOqW,EAAYjiF,EAAS,CACtD,MAAMvY,EAAQ,CAAE,EACV+hH,EAAa59B,EAAM,aAAa,OAChChsB,EAAOgsB,EAAM,QACbo+B,EAAQb,GAAsBvpD,CAAI,EAAI,EACtCqqD,EAAgBr+B,EAAM,YACtB89B,EAAkB9pD,EAAK,YAAY,kBAAoBkU,GAAK01C,EAAa,EAC/E,QAAQ5lH,EAAI,EAAGA,EAAI4lH,EAAY5lH,IAAI,CAC/B,MAAMsmH,EAAqBt+B,EAAM,iBAAiBhoF,EAAGqmH,EAAgBD,EAAQhqG,EAAQpc,CAAC,EAAG8lH,CAAe,EAClG5zC,EAAQ,KAAK,MAAMT,GAAUc,GAAgB+zC,EAAmB,MAAQ/1C,EAAO,CAAC,CAAC,EACjF9pC,EAAO43D,EAAWr+F,CAAC,EACnBwQ,EAAI+1G,GAAUD,EAAmB,EAAG7/E,EAAK,EAAGyrC,CAAK,EACjDqwB,EAAYikB,GAAqBt0C,CAAK,EACtC/6D,EAAOsvG,GAAiBH,EAAmB,EAAG7/E,EAAK,EAAG87D,CAAS,EACrE1+F,EAAM,KAAK,CACP,EAAGyiH,EAAmB,EACtB,EAAA91G,EACA,UAAA+xF,EACA,KAAAprF,EACA,IAAK3G,EACL,MAAO2G,EAAOsvB,EAAK,EACnB,OAAQj2B,EAAIi2B,EAAK,CAC7B,CAAS,CACT,CACI,OAAO5iC,CACX,CACA,SAAS2iH,GAAqBt0C,EAAO,CACjC,OAAIA,IAAU,GAAKA,IAAU,IAClB,SACAA,EAAQ,IACR,OAEJ,OACX,CACA,SAASu0C,GAAiB71G,EAAG1D,EAAG68B,EAAO,CACnC,OAAIA,IAAU,QACVn5B,GAAK1D,EACE68B,IAAU,WACjBn5B,GAAK1D,EAAI,GAEN0D,CACX,CACA,SAAS21G,GAAU/1G,EAAG9C,EAAGwkE,EAAO,CAC5B,OAAIA,IAAU,IAAMA,IAAU,IAC1B1hE,GAAK9C,EAAI,GACFwkE,EAAQ,KAAOA,EAAQ,MAC9B1hE,GAAK9C,GAEF8C,CACX,CACA,SAASk2G,GAAgB1+B,EAAO43B,EAAY,CACxC,KAAM,CAAE,IAAAz3G,EAAM,QAAS,CAAE,YAAAw+G,CAAW,CAAM,EAAG3+B,EAC7C,QAAQ,EAAI43B,EAAa,EAAG,GAAK,EAAG,IAAI,CACpC,MAAMle,EAAcilB,EAAY,WAAW3+B,EAAM,qBAAqB,CAAC,CAAC,EAClE+9B,EAAStqC,GAAOimB,EAAY,IAAI,EAChC,CAAE,EAAA9wF,EAAI,EAAAJ,EAAI,UAAA+xF,EAAY,KAAAprF,EAAO,IAAA1U,EAAM,MAAAyU,EAAQ,OAAAD,CAAS,EAAG+wE,EAAM,iBAAiB,CAAC,EAC/E,CAAE,cAAA4+B,CAAa,EAAMllB,EAC3B,GAAI,CAACtzB,GAAcw4C,CAAa,EAAG,CAC/B,MAAMvL,EAAe9/B,GAAcmmB,EAAY,YAAY,EACrDtlF,EAAUo/D,GAAUkmB,EAAY,eAAe,EACrDv5F,EAAI,UAAYy+G,EAChB,MAAMC,EAAe1vG,EAAOiF,EAAQ,KAC9B0qG,EAAcrkH,EAAM2Z,EAAQ,IAC5B2qG,EAAgB7vG,EAAQC,EAAOiF,EAAQ,MACvC4qG,EAAiB/vG,EAASxU,EAAM2Z,EAAQ,OAC1C,OAAO,OAAOi/F,CAAY,EAAE,KAAM99G,GAAIA,IAAM,CAAC,GAC7C4K,EAAI,UAAW,EACf4yE,GAAmB5yE,EAAK,CACpB,EAAG0+G,EACH,EAAGC,EACH,EAAGC,EACH,EAAGC,EACH,OAAQ3L,CAC5B,CAAiB,EACDlzG,EAAI,KAAM,GAEVA,EAAI,SAAS0+G,EAAcC,EAAaC,EAAeC,CAAc,CAErF,CACQ1sC,GAAWnyE,EAAK6/E,EAAM,aAAa,CAAC,EAAGp3E,EAAGJ,EAAIu1G,EAAO,WAAa,EAAGA,EAAQ,CACzE,MAAOrkB,EAAY,MACnB,UAAWa,EACX,aAAc,QAC1B,CAAS,CACT,CACA,CACA,SAAS0kB,GAAej/B,EAAOtO,EAAQmzB,EAAU+S,EAAY,CACzD,KAAM,CAAE,IAAAz3G,CAAG,EAAM6/E,EACjB,GAAI6kB,EACA1kG,EAAI,IAAI6/E,EAAM,QAASA,EAAM,QAAStO,EAAQ,EAAGvJ,EAAG,MACjD,CACH,IAAIqjB,EAAgBxL,EAAM,iBAAiB,EAAGtO,CAAM,EACpDvxE,EAAI,OAAOqrF,EAAc,EAAGA,EAAc,CAAC,EAC3C,QAAQxzF,EAAI,EAAGA,EAAI4/G,EAAY5/G,IAC3BwzF,EAAgBxL,EAAM,iBAAiBhoF,EAAG05E,CAAM,EAChDvxE,EAAI,OAAOqrF,EAAc,EAAGA,EAAc,CAAC,CAEvD,CACA,CACA,SAAS0zB,GAAel/B,EAAOm/B,EAAcztC,EAAQkmC,EAAYlf,EAAY,CACzE,MAAMv4F,EAAM6/E,EAAM,IACZ6kB,EAAWsa,EAAa,SACxB,CAAE,MAAAt5C,EAAQ,UAAA+zB,CAAS,EAAMulB,EAC3B,CAACta,GAAY,CAAC+S,GAAc,CAAC/xC,GAAS,CAAC+zB,GAAaloB,EAAS,IAGjEvxE,EAAI,KAAM,EACVA,EAAI,YAAc0lE,EAClB1lE,EAAI,UAAYy5F,EAChBz5F,EAAI,YAAYu4F,EAAW,IAAI,EAC/Bv4F,EAAI,eAAiBu4F,EAAW,WAChCv4F,EAAI,UAAW,EACf8+G,GAAej/B,EAAOtO,EAAQmzB,EAAU+S,CAAU,EAClDz3G,EAAI,UAAW,EACfA,EAAI,OAAQ,EACZA,EAAI,QAAS,EACjB,CACA,SAASi/G,GAAwB36G,EAAQvJ,EAAO8oC,EAAO,CACnD,OAAO7qC,GAAcsL,EAAQ,CACzB,MAAAu/B,EACA,MAAA9oC,EACA,KAAM,YACd,CAAK,CACL,CACA,MAAMmkH,WAA0BrD,EAAgB,CAC5C,OAAO,GAAK,eACf,OAAO,SAAW,CACX,QAAS,GACT,QAAS,GACT,SAAU,YACV,WAAY,CACR,QAAS,GACT,UAAW,EACX,WAAY,CAAE,EACd,iBAAkB,CACrB,EACD,KAAM,CACF,SAAU,EACb,EACD,WAAY,EACZ,MAAO,CACH,kBAAmB,GACnB,SAAUhtC,GAAM,WAAW,OAC9B,EACD,YAAa,CACT,cAAe,OACf,gBAAiB,EACjB,QAAS,GACT,KAAM,CACF,KAAM,EACT,EACD,SAAUhrC,EAAO,CACb,OAAOA,CACV,EACD,QAAS,EACT,kBAAmB,EAC/B,CACK,EACD,OAAO,cAAgB,CACnB,mBAAoB,cACpB,oBAAqB,QACrB,cAAe,OAClB,EACD,OAAO,YAAc,CACjB,WAAY,CACR,UAAW,MACvB,CACK,EACD,YAAYi7C,EAAI,CACZ,MAAMA,CAAG,EACR,KAAK,QAAU,OACf,KAAK,QAAU,OACf,KAAK,YAAc,OACnB,KAAK,aAAe,CAAE,EACvB,KAAK,iBAAmB,CAAE,CAClC,CACI,eAAgB,CACZ,MAAM7qE,EAAU,KAAK,SAAWo/D,GAAU+pC,GAAsB,KAAK,OAAO,EAAI,CAAC,EAC3Er4G,EAAI,KAAK,MAAQ,KAAK,SAAWkP,EAAQ,MACzC1O,EAAI,KAAK,OAAS,KAAK,UAAY0O,EAAQ,OACjD,KAAK,QAAU,KAAK,MAAM,KAAK,KAAOlP,EAAI,EAAIkP,EAAQ,IAAI,EAC1D,KAAK,QAAU,KAAK,MAAM,KAAK,IAAM1O,EAAI,EAAI0O,EAAQ,GAAG,EACxD,KAAK,YAAc,KAAK,MAAM,KAAK,IAAIlP,EAAGQ,CAAC,EAAI,CAAC,CACxD,CACI,qBAAsB,CAClB,KAAM,CAAE,IAAA+L,EAAM,IAAAD,CAAG,EAAM,KAAK,UAAU,EAAK,EAC3C,KAAK,IAAM60D,GAAe50D,CAAG,GAAK,CAAC,MAAMA,CAAG,EAAIA,EAAM,EACtD,KAAK,IAAM40D,GAAe70D,CAAG,GAAK,CAAC,MAAMA,CAAG,EAAIA,EAAM,EACtD,KAAK,uBAAwB,CACrC,CACC,kBAAmB,CACZ,OAAO,KAAK,KAAK,KAAK,YAAc+rG,GAAsB,KAAK,OAAO,CAAC,CAC/E,CACI,mBAAmB9uC,EAAO,CACtButC,GAAgB,UAAU,mBAAmB,KAAK,KAAMvtC,CAAK,EAC7D,KAAK,aAAe,KAAK,UAAW,EAAC,IAAI,CAACn6E,EAAO4G,IAAQ,CACrD,MAAM8oC,EAAQpN,GAAS,KAAK,QAAQ,YAAY,SAAU,CACtDtiC,EACA4G,CACH,EAAE,IAAI,EACP,OAAO8oC,GAASA,IAAU,EAAIA,EAAQ,EAClD,CAAS,EAAE,OAAO,CAACzuC,EAAGyC,IAAI,KAAK,MAAM,kBAAkBA,CAAC,CAAC,CACzD,CACI,KAAM,CACF,MAAMg8D,EAAO,KAAK,QACdA,EAAK,SAAWA,EAAK,YAAY,QACjC0pD,GAAmB,IAAI,EAEvB,KAAK,eAAe,EAAG,EAAG,EAAG,CAAC,CAE1C,CACI,eAAe4B,EAAcC,EAAeC,EAAaC,EAAgB,CACrE,KAAK,SAAW,KAAK,OAAOH,EAAeC,GAAiB,CAAC,EAC7D,KAAK,SAAW,KAAK,OAAOC,EAAcC,GAAkB,CAAC,EAC7D,KAAK,aAAe,KAAK,IAAI,KAAK,YAAc,EAAG,KAAK,IAAIH,EAAcC,EAAeC,EAAaC,CAAc,CAAC,CAC7H,CACI,cAAcvkH,EAAO,CACjB,MAAMwkH,EAAkBv3C,IAAO,KAAK,aAAa,QAAU,GACrDsgB,EAAa,KAAK,QAAQ,YAAc,EAC9C,OAAOle,GAAgBrvE,EAAQwkH,EAAkBn2C,GAAUkf,CAAU,CAAC,CAC9E,CACI,8BAA8Bn0F,EAAO,CACjC,GAAI8xE,GAAc9xE,CAAK,EACnB,MAAO,KAEX,MAAMqrH,EAAgB,KAAK,aAAe,KAAK,IAAM,KAAK,KAC1D,OAAI,KAAK,QAAQ,SACL,KAAK,IAAMrrH,GAASqrH,GAExBrrH,EAAQ,KAAK,KAAOqrH,CACpC,CACI,8BAA8BrgG,EAAU,CACpC,GAAI8mD,GAAc9mD,CAAQ,EACtB,MAAO,KAEX,MAAMsgG,EAAiBtgG,GAAY,KAAK,aAAe,KAAK,IAAM,KAAK,MACvE,OAAO,KAAK,QAAQ,QAAU,KAAK,IAAMsgG,EAAiB,KAAK,IAAMA,CAC7E,CACI,qBAAqB1kH,EAAO,CACxB,MAAMyjH,EAAc,KAAK,cAAgB,CAAE,EAC3C,GAAIzjH,GAAS,GAAKA,EAAQyjH,EAAY,OAAQ,CAC1C,MAAMkB,EAAalB,EAAYzjH,CAAK,EACpC,OAAOkkH,GAAwB,KAAK,WAAU,EAAIlkH,EAAO2kH,CAAU,CAC/E,CACA,CACI,iBAAiB3kH,EAAO4kH,EAAoBhC,EAAkB,EAAG,CAC7D,MAAM5zC,EAAQ,KAAK,cAAchvE,CAAK,EAAIqtE,GAAUu1C,EACpD,MAAO,CACH,EAAG,KAAK,IAAI5zC,CAAK,EAAI41C,EAAqB,KAAK,QAC/C,EAAG,KAAK,IAAI51C,CAAK,EAAI41C,EAAqB,KAAK,QAC/C,MAAA51C,CACH,CACT,CACI,yBAAyBhvE,EAAO5G,EAAO,CACnC,OAAO,KAAK,iBAAiB4G,EAAO,KAAK,8BAA8B5G,CAAK,CAAC,CACrF,CACI,gBAAgB4G,EAAO,CACnB,OAAO,KAAK,yBAAyBA,GAAS,EAAG,KAAK,cAAc,CAC5E,CACI,sBAAsBA,EAAO,CACzB,KAAM,CAAE,KAAAiU,EAAO,IAAA1U,EAAM,MAAAyU,EAAQ,OAAAD,CAAM,EAAM,KAAK,iBAAiB/T,CAAK,EACpE,MAAO,CACH,KAAAiU,EACA,IAAA1U,EACA,MAAAyU,EACA,OAAAD,CACH,CACT,CACC,gBAAiB,CACV,KAAM,CAAE,gBAAAgsF,EAAkB,KAAM,CAAE,SAAA4J,CAAW,CAAA,EAAM,KAAK,QACxD,GAAI5J,EAAiB,CACjB,MAAM96F,EAAM,KAAK,IACjBA,EAAI,KAAM,EACVA,EAAI,UAAW,EACf8+G,GAAe,KAAM,KAAK,8BAA8B,KAAK,SAAS,EAAGpa,EAAU,KAAK,aAAa,MAAM,EAC3G1kG,EAAI,UAAW,EACfA,EAAI,UAAY86F,EAChB96F,EAAI,KAAM,EACVA,EAAI,QAAS,CACzB,CACA,CACC,UAAW,CACJ,MAAMA,EAAM,KAAK,IACX6zD,EAAO,KAAK,QACZ,CAAE,WAAA+rD,EAAa,KAAAxnB,EAAO,OAAA94D,CAAS,EAAGu0B,EAClC4jD,EAAa,KAAK,aAAa,OACrC,IAAI5/G,EAAGqd,EAAQc,EAef,GAdI69C,EAAK,YAAY,SACjB0qD,GAAgB,KAAM9G,CAAU,EAEhCrf,EAAK,SACL,KAAK,MAAM,QAAQ,CAAC3D,EAAM15F,IAAQ,CAC9B,GAAIA,IAAU,EAAG,CACbma,EAAS,KAAK,8BAA8Bu/E,EAAK,KAAK,EACtD,MAAMziG,EAAU,KAAK,WAAW+I,CAAK,EAC/Bw+F,EAAcnB,EAAK,WAAWpmG,CAAO,EACrCwnG,EAAoBl6D,EAAO,WAAWttC,CAAO,EACnD+sH,GAAe,KAAMxlB,EAAarkF,EAAQuiG,EAAYje,CAAiB,CAC3F,CACA,CAAa,EAEDomB,EAAW,QAAS,CAEpB,IADA5/G,EAAI,KAAM,EACNnI,EAAI4/G,EAAa,EAAG5/G,GAAK,EAAGA,IAAI,CAChC,MAAM0hG,EAAcqmB,EAAW,WAAW,KAAK,qBAAqB/nH,CAAC,CAAC,EAChE,CAAE,MAAA6tE,EAAQ,UAAA+zB,CAAS,EAAMF,EAC3B,CAACE,GAAa,CAAC/zB,IAGnB1lE,EAAI,UAAYy5F,EAChBz5F,EAAI,YAAc0lE,EAClB1lE,EAAI,YAAYu5F,EAAY,UAAU,EACtCv5F,EAAI,eAAiBu5F,EAAY,iBACjCrkF,EAAS,KAAK,8BAA8B2+C,EAAK,MAAM,QAAU,KAAK,IAAM,KAAK,GAAG,EACpF79C,EAAW,KAAK,iBAAiBne,EAAGqd,CAAM,EAC1ClV,EAAI,UAAW,EACfA,EAAI,OAAO,KAAK,QAAS,KAAK,OAAO,EACrCA,EAAI,OAAOgW,EAAS,EAAGA,EAAS,CAAC,EACjChW,EAAI,OAAQ,EAC5B,CACYA,EAAI,QAAS,CACzB,CACA,CACC,YAAa,CAAA,CACb,YAAa,CACN,MAAMA,EAAM,KAAK,IACX6zD,EAAO,KAAK,QACZw+B,EAAWx+B,EAAK,MACtB,GAAI,CAACw+B,EAAS,QACV,OAEJ,MAAM/J,EAAa,KAAK,cAAc,CAAC,EACvC,IAAIpzE,EAAQ/C,EACZnS,EAAI,KAAM,EACVA,EAAI,UAAU,KAAK,QAAS,KAAK,OAAO,EACxCA,EAAI,OAAOsoF,CAAU,EACrBtoF,EAAI,UAAY,SAChBA,EAAI,aAAe,SACnB,KAAK,MAAM,QAAQ,CAACy0F,EAAM15F,IAAQ,CAC9B,GAAIA,IAAU,GAAK,CAAC84D,EAAK,QACrB,OAEJ,MAAM0lC,EAAclH,EAAS,WAAW,KAAK,WAAWt3F,CAAK,CAAC,EACxD48F,EAAWrkB,GAAOimB,EAAY,IAAI,EAExC,GADArkF,EAAS,KAAK,8BAA8B,KAAK,MAAMna,CAAK,EAAE,KAAK,EAC/Dw+F,EAAY,kBAAmB,CAC/Bv5F,EAAI,KAAO23F,EAAS,OACpBxlF,EAAQnS,EAAI,YAAYy0F,EAAK,KAAK,EAAE,MACpCz0F,EAAI,UAAYu5F,EAAY,cAC5B,MAAMtlF,EAAUo/D,GAAUkmB,EAAY,eAAe,EACrDv5F,EAAI,SAAS,CAACmS,EAAQ,EAAI8B,EAAQ,KAAM,CAACiB,EAASyiF,EAAS,KAAO,EAAI1jF,EAAQ,IAAK9B,EAAQ8B,EAAQ,MAAO0jF,EAAS,KAAO1jF,EAAQ,MAAM,CACxJ,CACYk+D,GAAWnyE,EAAKy0F,EAAK,MAAO,EAAG,CAACv/E,EAAQyiF,EAAU,CAC9C,MAAO4B,EAAY,KACnC,CAAa,CACb,CAAS,EACDv5F,EAAI,QAAS,CACrB,CACC,WAAY,CAAA,CACb,CAEA,MAAM6/G,GAAY,CACd,YAAa,CACT,OAAQ,GACR,KAAM,EACN,MAAO,GACV,EACD,OAAQ,CACJ,OAAQ,GACR,KAAM,IACN,MAAO,EACV,EACD,OAAQ,CACJ,OAAQ,GACR,KAAM,IACN,MAAO,EACV,EACD,KAAM,CACF,OAAQ,GACR,KAAM,KACN,MAAO,EACV,EACD,IAAK,CACD,OAAQ,GACR,KAAM,MACN,MAAO,EACV,EACD,KAAM,CACF,OAAQ,GACR,KAAM,OACN,MAAO,CACV,EACD,MAAO,CACH,OAAQ,GACR,KAAM,OACN,MAAO,EACV,EACD,QAAS,CACL,OAAQ,GACR,KAAM,OACN,MAAO,CACV,EACD,KAAM,CACF,OAAQ,GACR,KAAM,MACd,CACA,EACOC,GAAyB,OAAO,KAAKD,EAAS,EACpD,SAASE,GAAO5tH,EAAGC,EAAG,CACnB,OAAOD,EAAIC,CACf,CACC,SAAS4tH,GAAMngC,EAAOjoF,EAAO,CAC1B,GAAIquE,GAAcruE,CAAK,EACnB,OAAO,KAEX,MAAMk7D,EAAU+sB,EAAM,SAChB,CAAE,OAAAh5B,EAAS,MAAAt1C,EAAQ,WAAA0uG,CAAa,EAAGpgC,EAAM,WAC/C,IAAI1rF,EAAQyD,EAOZ,OANI,OAAOivD,GAAW,aAClB1yD,EAAQ0yD,EAAO1yD,CAAK,GAEnB+xE,GAAe/xE,CAAK,IACrBA,EAAQ,OAAO0yD,GAAW,SAAWiM,EAAQ,MAAM3+D,EAAQ0yD,CAAM,EAAIiM,EAAQ,MAAM3+D,CAAK,GAExFA,IAAU,KACH,MAEPod,IACApd,EAAQod,IAAU,SAAWmtC,GAASuhE,CAAU,GAAKA,IAAe,IAAQntD,EAAQ,QAAQ3+D,EAAO,UAAW8rH,CAAU,EAAIntD,EAAQ,QAAQ3+D,EAAOod,CAAK,GAErJ,CAACpd,EACZ,CACC,SAAS+rH,GAA0BC,EAAS7uG,EAAKD,EAAK+uG,EAAU,CAC7D,MAAMx5C,EAAOk5C,GAAM,OACnB,QAAQjoH,EAAIioH,GAAM,QAAQK,CAAO,EAAGtoH,EAAI+uE,EAAO,EAAG,EAAE/uE,EAAE,CAClD,MAAMwoH,EAAWR,GAAUC,GAAMjoH,CAAC,CAAC,EAC7B8mF,EAAS0hC,EAAS,MAAQA,EAAS,MAAQ,OAAO,iBACxD,GAAIA,EAAS,QAAU,KAAK,MAAMhvG,EAAMC,IAAQqtE,EAAS0hC,EAAS,KAAK,GAAKD,EACxE,OAAON,GAAMjoH,CAAC,CAE1B,CACI,OAAOioH,GAAMl5C,EAAO,CAAC,CACzB,CACC,SAAS05C,GAA2BzgC,EAAO+V,EAAUuqB,EAAS7uG,EAAKD,EAAK,CACrE,QAAQxZ,EAAIioH,GAAM,OAAS,EAAGjoH,GAAKioH,GAAM,QAAQK,CAAO,EAAGtoH,IAAI,CAC3D,MAAM4iE,EAAOqlD,GAAMjoH,CAAC,EACpB,GAAIgoH,GAAUplD,CAAI,EAAE,QAAUolB,EAAM,SAAS,KAAKxuE,EAAKC,EAAKmpD,CAAI,GAAKm7B,EAAW,EAC5E,OAAOn7B,CAEnB,CACI,OAAOqlD,GAAMK,EAAUL,GAAM,QAAQK,CAAO,EAAI,CAAC,CACrD,CACC,SAASI,GAAmB9lD,EAAM,CAC/B,QAAQ5iE,EAAIioH,GAAM,QAAQrlD,CAAI,EAAI,EAAGmM,EAAOk5C,GAAM,OAAQjoH,EAAI+uE,EAAM,EAAE/uE,EAClE,GAAIgoH,GAAUC,GAAMjoH,CAAC,CAAC,EAAE,OACpB,OAAOioH,GAAMjoH,CAAC,CAG1B,CACC,SAAS2oH,GAAQlyC,EAAOv0E,EAAMgxD,EAAY,CACvC,GAAI,CAACA,EACDujB,EAAMv0E,CAAI,EAAI,WACPgxD,EAAW,OAAQ,CAC1B,KAAM,CAAE,GAAAkgB,EAAK,GAAAD,CAAE,EAAMF,GAAQ/f,EAAYhxD,CAAI,EACvC0xD,EAAYV,EAAWkgB,CAAE,GAAKlxE,EAAOgxD,EAAWkgB,CAAE,EAAIlgB,EAAWigB,CAAE,EACzEsD,EAAM7iB,CAAS,EAAI,EAC3B,CACA,CACC,SAASg1D,GAAc5gC,EAAOvR,EAAOzsE,EAAK6+G,EAAW,CAClD,MAAM5tD,EAAU+sB,EAAM,SAChB5zD,EAAQ,CAAC6mC,EAAQ,QAAQwb,EAAM,CAAC,EAAE,MAAOoyC,CAAS,EAClDt1C,EAAOkD,EAAMA,EAAM,OAAS,CAAC,EAAE,MACrC,IAAIqyC,EAAO5lH,EACX,IAAI4lH,EAAQ10F,EAAO00F,GAASv1C,EAAMu1C,EAAQ,CAAC7tD,EAAQ,IAAI6tD,EAAO,EAAGD,CAAS,EACtE3lH,EAAQ8G,EAAI8+G,CAAK,EACb5lH,GAAS,IACTuzE,EAAMvzE,CAAK,EAAE,MAAQ,IAG7B,OAAOuzE,CACX,CACC,SAASsyC,GAAoB/gC,EAAOrU,EAAQk1C,EAAW,CACpD,MAAMpyC,EAAQ,CAAE,EACTzsE,EAAM,CAAE,EACT+kE,EAAO4E,EAAO,OACpB,IAAI3zE,EAAG1D,EACP,IAAI0D,EAAI,EAAGA,EAAI+uE,EAAM,EAAE/uE,EACnB1D,EAAQq3E,EAAO3zE,CAAC,EAChBgK,EAAI1N,CAAK,EAAI0D,EACby2E,EAAM,KAAK,CACP,MAAAn6E,EACA,MAAO,EACnB,CAAS,EAEL,OAAOyyE,IAAS,GAAK,CAAC85C,EAAYpyC,EAAQmyC,GAAc5gC,EAAOvR,EAAOzsE,EAAK6+G,CAAS,CACxF,CACA,MAAMG,WAAkB5rB,EAAM,CAC1B,OAAO,GAAK,OACf,OAAO,SAAW,CAClB,OAAQ,OACD,SAAU,CAAE,EACZ,KAAM,CACF,OAAQ,GACR,KAAM,GACN,MAAO,GACP,WAAY,GACZ,QAAS,cACT,eAAgB,CAAA,CACnB,EACD,MAAO,CACd,OAAQ,OACG,SAAU,GACV,MAAO,CACH,QAAS,EACzB,CACA,CACK,EACJ,YAAY75F,EAAM,CACX,MAAMA,CAAK,EACV,KAAK,OAAS,CACX,KAAM,CAAE,EACR,OAAQ,CAAE,EACV,IAAK,CAAA,CACR,EACA,KAAK,MAAQ,MACb,KAAK,WAAa,OACnB,KAAK,SAAW,CAAE,EAClB,KAAK,YAAc,GACnB,KAAK,WAAa,MAC1B,CACI,KAAKimG,EAAWxtC,EAAO,GAAI,CACvB,MAAM95D,EAAOsnG,EAAU,OAASA,EAAU,KAAO,CAAA,GAC1CvuC,EAAU,KAAK,SAAW,IAAIE,GAAS,MAAMquC,EAAU,SAAS,IAAI,EAC3EvuC,EAAQ,KAAKe,CAAI,EACjBwT,GAAQttE,EAAK,eAAgB+4D,EAAQ,QAAO,CAAE,EAC9C,KAAK,WAAa,CACd,OAAQ/4D,EAAK,OACb,MAAOA,EAAK,MACZ,WAAYA,EAAK,UACpB,EACD,MAAM,KAAKsnG,CAAS,EACpB,KAAK,YAAcxtC,EAAK,UAChC,CACC,MAAMshC,EAAKp6F,EAAO,CACX,OAAIo6F,IAAQ,OACD,KAEJ6qB,GAAM,KAAM7qB,CAAG,CAC9B,CACI,cAAe,CACX,MAAM,aAAc,EACpB,KAAK,OAAS,CACV,KAAM,CAAE,EACR,OAAQ,CAAE,EACV,IAAK,CAAA,CACR,CACT,CACI,qBAAsB,CAClB,MAAM/gG,EAAU,KAAK,QACf0+D,EAAU,KAAK,SACf2H,EAAOrmE,EAAQ,KAAK,MAAQ,MAClC,GAAI,CAAE,IAAAkd,EAAM,IAAAD,EAAM,WAAAu7D,EAAa,WAAAC,CAAa,EAAG,KAAK,cAAe,EAC1E,SAASi0C,EAAa5kC,EAAQ,CACf,CAACtP,GAAc,CAAC,MAAMsP,EAAO,GAAG,IAChC5qE,EAAM,KAAK,IAAIA,EAAK4qE,EAAO,GAAG,GAE9B,CAACrP,GAAc,CAAC,MAAMqP,EAAO,GAAG,IAChC7qE,EAAM,KAAK,IAAIA,EAAK6qE,EAAO,GAAG,EAE9C,EACY,CAACtP,GAAc,CAACC,KAChBi0C,EAAa,KAAK,iBAAiB,GAC/B1sH,EAAQ,SAAW,SAAWA,EAAQ,MAAM,SAAW,WACvD0sH,EAAa,KAAK,UAAU,EAAK,CAAC,GAG1CxvG,EAAM40D,GAAe50D,CAAG,GAAK,CAAC,MAAMA,CAAG,EAAIA,EAAM,CAACwhD,EAAQ,QAAQ,KAAK,IAAG,EAAI2H,CAAI,EAClFppD,EAAM60D,GAAe70D,CAAG,GAAK,CAAC,MAAMA,CAAG,EAAIA,EAAM,CAACyhD,EAAQ,MAAM,KAAK,IAAG,EAAI2H,CAAI,EAAI,EACpF,KAAK,IAAM,KAAK,IAAInpD,EAAKD,EAAM,CAAC,EAChC,KAAK,IAAM,KAAK,IAAIC,EAAM,EAAGD,CAAG,CACxC,CACC,iBAAkB,CACX,MAAMwvC,EAAM,KAAK,mBAAoB,EACrC,IAAIvvC,EAAM,OAAO,kBACbD,EAAM,OAAO,kBACjB,OAAIwvC,EAAI,SACJvvC,EAAMuvC,EAAI,CAAC,EACXxvC,EAAMwvC,EAAIA,EAAI,OAAS,CAAC,GAErB,CACH,IAAAvvC,EACA,IAAAD,CACH,CACT,CACC,YAAa,CACN,MAAMjd,EAAU,KAAK,QACf2sH,EAAW3sH,EAAQ,KACnBi+F,EAAWj+F,EAAQ,MACnB22D,EAAasnC,EAAS,SAAW,SAAW,KAAK,mBAAkB,EAAK,KAAK,UAAW,EAC1Fj+F,EAAQ,SAAW,SAAW22D,EAAW,SACzC,KAAK,IAAM,KAAK,UAAYA,EAAW,CAAC,EACxC,KAAK,IAAM,KAAK,UAAYA,EAAWA,EAAW,OAAS,CAAC,GAEhE,MAAMz5C,EAAM,KAAK,IACXD,EAAM,KAAK,IACXi9D,EAAQ/C,GAAexgB,EAAYz5C,EAAKD,CAAG,EACjD,YAAK,MAAQ0vG,EAAS,OAAS1uB,EAAS,SAAW6tB,GAA0Ba,EAAS,QAAS,KAAK,IAAK,KAAK,IAAK,KAAK,kBAAkBzvG,CAAG,CAAC,EAAIgvG,GAA2B,KAAMhyC,EAAM,OAAQyyC,EAAS,QAAS,KAAK,IAAK,KAAK,GAAG,GACrO,KAAK,WAAa,CAAC1uB,EAAS,MAAM,SAAW,KAAK,QAAU,OAAS,OAAYkuB,GAAmB,KAAK,KAAK,EAC9G,KAAK,YAAYx1D,CAAU,EACvB32D,EAAQ,SACRk6E,EAAM,QAAS,EAEZsyC,GAAoB,KAAMtyC,EAAO,KAAK,UAAU,CAC/D,CACI,eAAgB,CACR,KAAK,QAAQ,qBACb,KAAK,YAAY,KAAK,MAAM,IAAKmmB,GAAO,CAACA,EAAK,KAAK,CAAC,CAEhE,CACC,YAAY1pC,EAAa,GAAI,CACtB,IAAIzuD,EAAQ,EACRC,EAAM,EACN0vB,EAAOm/C,EACP,KAAK,QAAQ,QAAUrgB,EAAW,SAClC9+B,EAAQ,KAAK,mBAAmB8+B,EAAW,CAAC,CAAC,EACzCA,EAAW,SAAW,EACtBzuD,EAAQ,EAAI2vB,EAEZ3vB,GAAS,KAAK,mBAAmByuD,EAAW,CAAC,CAAC,EAAI9+B,GAAS,EAE/Dm/C,EAAO,KAAK,mBAAmBrgB,EAAWA,EAAW,OAAS,CAAC,CAAC,EAC5DA,EAAW,SAAW,EACtBxuD,EAAM6uE,EAEN7uE,GAAO6uE,EAAO,KAAK,mBAAmBrgB,EAAWA,EAAW,OAAS,CAAC,CAAC,GAAK,GAGpF,MAAMsuC,EAAQtuC,EAAW,OAAS,EAAI,GAAM,IAC5CzuD,EAAQquE,GAAYruE,EAAO,EAAG+8F,CAAK,EACnC98F,EAAMouE,GAAYpuE,EAAK,EAAG88F,CAAK,EAC/B,KAAK,SAAW,CACZ,MAAA/8F,EACA,IAAAC,EACA,OAAQ,GAAKD,EAAQ,EAAIC,EAC5B,CACT,CACC,WAAY,CACL,MAAMu2D,EAAU,KAAK,SACfxhD,EAAM,KAAK,IACXD,EAAM,KAAK,IACXjd,EAAU,KAAK,QACf2sH,EAAW3sH,EAAQ,KACnB4sH,EAAQD,EAAS,MAAQb,GAA0Ba,EAAS,QAASzvG,EAAKD,EAAK,KAAK,kBAAkBC,CAAG,CAAC,EAC1G6qG,EAAW/1C,GAAehyE,EAAQ,MAAM,SAAU,CAAC,EACnD6sH,EAAUD,IAAU,OAASD,EAAS,WAAa,GACnDG,EAAaxiE,GAASuiE,CAAO,GAAKA,IAAY,GAC9C3yC,EAAQ,CAAE,EAChB,IAAIriD,EAAQ3a,EACRvX,EAAMnI,EAKV,GAJIsvH,IACAj1F,EAAQ,CAAC6mC,EAAQ,QAAQ7mC,EAAO,UAAWg1F,CAAO,GAEtDh1F,EAAQ,CAAC6mC,EAAQ,QAAQ7mC,EAAOi1F,EAAa,MAAQF,CAAK,EACtDluD,EAAQ,KAAKzhD,EAAKC,EAAK0vG,CAAK,EAAI,IAAS7E,EACzC,MAAM,IAAI,MAAM7qG,EAAM,QAAUD,EAAM,uCAAyC8qG,EAAW,IAAM6E,CAAK,EAEzG,MAAMj2D,EAAa32D,EAAQ,MAAM,SAAW,QAAU,KAAK,kBAAmB,EAC9E,IAAI2F,EAAOkyB,EAAOr6B,EAAQ,EAAGmI,EAAOsX,EAAKtX,EAAO,CAAC+4D,EAAQ,IAAI/4D,EAAMoiH,EAAU6E,CAAK,EAAGpvH,IACjF4uH,GAAQlyC,EAAOv0E,EAAMgxD,CAAU,EAEnC,OAAIhxD,IAASsX,GAAOjd,EAAQ,SAAW,SAAWxC,IAAU,IACxD4uH,GAAQlyC,EAAOv0E,EAAMgxD,CAAU,EAE5B,OAAO,KAAKujB,CAAK,EAAE,KAAK,CAACn8E,EAAG,IAAIA,EAAI,CAAC,EAAE,IAAKsW,GAAI,CAACA,CAAC,CACjE,CACC,iBAAiBtU,EAAO,CACjB,MAAM2+D,EAAU,KAAK,SACfiuD,EAAW,KAAK,QAAQ,KAC9B,OAAIA,EAAS,cACFjuD,EAAQ,OAAO3+D,EAAO4sH,EAAS,aAAa,EAEhDjuD,EAAQ,OAAO3+D,EAAO4sH,EAAS,eAAe,QAAQ,CACrE,CACC,OAAO5sH,EAAO01D,EAAQ,CAEf,MAAMs3D,EADU,KAAK,QACG,KAAK,eACvB1mD,EAAO,KAAK,MACZ2mD,EAAMv3D,GAAUs3D,EAAQ1mD,CAAI,EAClC,OAAO,KAAK,SAAS,OAAOtmE,EAAOitH,CAAG,CAC9C,CACC,oBAAoBrnH,EAAMgB,EAAOuzE,EAAOzkB,EAAQ,CACzC,MAAMz1D,EAAU,KAAK,QACf85E,EAAY95E,EAAQ,MAAM,SAChC,GAAI85E,EACA,OAAOz3C,GAASy3C,EAAW,CACvBn0E,EACAgB,EACAuzE,CACH,EAAE,IAAI,EAEX,MAAM6yC,EAAU/sH,EAAQ,KAAK,eACvBqmE,EAAO,KAAK,MACZimD,EAAY,KAAK,WACjBW,EAAc5mD,GAAQ0mD,EAAQ1mD,CAAI,EAClC6mD,EAAcZ,GAAaS,EAAQT,CAAS,EAC5CjsB,EAAOnmB,EAAMvzE,CAAK,EAClB4lH,EAAQD,GAAaY,GAAe7sB,GAAQA,EAAK,MACvD,OAAO,KAAK,SAAS,OAAO16F,EAAM8vD,IAAW82D,EAAQW,EAAcD,EAAY,CACvF,CACC,mBAAmB/yC,EAAO,CACnB,IAAIz2E,EAAG+uE,EAAM6tB,EACb,IAAI58F,EAAI,EAAG+uE,EAAO0H,EAAM,OAAQz2E,EAAI+uE,EAAM,EAAE/uE,EACxC48F,EAAOnmB,EAAMz2E,CAAC,EACd48F,EAAK,MAAQ,KAAK,oBAAoBA,EAAK,MAAO58F,EAAGy2E,CAAK,CAEtE,CACC,mBAAmBn6E,EAAO,CACnB,OAAOA,IAAU,KAAO,KAAOA,EAAQ,KAAK,MAAQ,KAAK,IAAM,KAAK,IAC5E,CACC,iBAAiBA,EAAO,CACjB,MAAM4hB,EAAU,KAAK,SACfy6C,EAAM,KAAK,mBAAmBr8D,CAAK,EACzC,OAAO,KAAK,oBAAoB4hB,EAAQ,MAAQy6C,GAAOz6C,EAAQ,MAAM,CAC7E,CACC,iBAAiB26D,EAAO,CACjB,MAAM36D,EAAU,KAAK,SACfy6C,EAAM,KAAK,mBAAmBkgB,CAAK,EAAI36D,EAAQ,OAASA,EAAQ,IACtE,OAAO,KAAK,IAAMy6C,GAAO,KAAK,IAAM,KAAK,IACjD,CACC,cAAc3sB,EAAO,CACd,MAAM09E,EAAY,KAAK,QAAQ,MACzBC,EAAiB,KAAK,IAAI,YAAY39E,CAAK,EAAE,MAC7CkmC,EAAQX,GAAU,KAAK,aAAc,EAAGm4C,EAAU,YAAcA,EAAU,WAAW,EACrFE,EAAc,KAAK,IAAI13C,CAAK,EAC5B23C,EAAc,KAAK,IAAI33C,CAAK,EAC5B43C,EAAe,KAAK,wBAAwB,CAAC,EAAE,KACrD,MAAO,CACH,EAAGH,EAAiBC,EAAcE,EAAeD,EACjD,EAAGF,EAAiBE,EAAcC,EAAeF,CACpD,CACT,CACC,kBAAkBG,EAAa,CACxB,MAAMb,EAAW,KAAK,QAAQ,KACxBc,EAAiBd,EAAS,eAC1Bl3D,EAASg4D,EAAed,EAAS,IAAI,GAAKc,EAAe,YACzDC,EAAe,KAAK,oBAAoBF,EAAa,EAAGhB,GAAoB,KAAM,CACpFgB,CACZ,EAAW,KAAK,UAAU,EAAG/3D,CAAM,EACrBvrB,EAAO,KAAK,cAAcwjF,CAAY,EACtC1B,EAAW,KAAK,MAAM,KAAK,aAAc,EAAG,KAAK,MAAQ9hF,EAAK,EAAI,KAAK,OAASA,EAAK,CAAC,EAAI,EAChG,OAAO8hF,EAAW,EAAIA,EAAW,CACzC,CACC,mBAAoB,CACb,IAAIr1D,EAAa,KAAK,OAAO,MAAQ,CAAE,EACnClzD,EAAG+uE,EACP,GAAI7b,EAAW,OACX,OAAOA,EAEX,MAAMyqC,EAAQ,KAAK,wBAAyB,EAC5C,GAAI,KAAK,aAAeA,EAAM,OAC1B,OAAO,KAAK,OAAO,KAAOA,EAAM,CAAC,EAAE,WAAW,mBAAmB,IAAI,EAEzE,IAAI39F,EAAI,EAAG+uE,EAAO4uB,EAAM,OAAQ39F,EAAI+uE,EAAM,EAAE/uE,EACxCkzD,EAAaA,EAAW,OAAOyqC,EAAM39F,CAAC,EAAE,WAAW,mBAAmB,IAAI,CAAC,EAE/E,OAAO,KAAK,OAAO,KAAO,KAAK,UAAUkzD,CAAU,CAC3D,CACC,oBAAqB,CACd,MAAMA,EAAa,KAAK,OAAO,QAAU,CAAE,EAC3C,IAAIlzD,EAAG+uE,EACP,GAAI7b,EAAW,OACX,OAAOA,EAEX,MAAMu4B,EAAS,KAAK,UAAW,EAC/B,IAAIzrF,EAAI,EAAG+uE,EAAO0c,EAAO,OAAQzrF,EAAI+uE,EAAM,EAAE/uE,EACzCkzD,EAAW,KAAKi1D,GAAM,KAAM18B,EAAOzrF,CAAC,CAAC,CAAC,EAE1C,OAAO,KAAK,OAAO,OAAS,KAAK,YAAckzD,EAAa,KAAK,UAAUA,CAAU,CAC7F,CACC,UAAUygB,EAAQ,CACX,OAAOM,GAAaN,EAAO,KAAKu0C,EAAM,CAAC,CAC/C,CACA,CAEA,SAAS96C,GAAYr2B,EAAO0P,EAAKkoB,EAAS,CACtC,IAAIyE,EAAK,EACLD,EAAKp8B,EAAM,OAAS,EACpBmzE,EAAYC,EAAYC,EAAYC,EACpC17C,GACIloB,GAAO1P,EAAMq8B,CAAE,EAAE,KAAO3sB,GAAO1P,EAAMo8B,CAAE,EAAE,MACxC,CAAE,GAAAC,EAAK,GAAAD,CAAK,EAAGG,GAAav8B,EAAO,MAAO0P,CAAG,GAEjD,CAAE,IAAKyjE,EAAa,KAAME,CAAa,EAAGrzE,EAAMq8B,CAAE,EAClD,CAAE,IAAK+2C,EAAa,KAAME,CAAa,EAAGtzE,EAAMo8B,CAAE,IAE/C1sB,GAAO1P,EAAMq8B,CAAE,EAAE,MAAQ3sB,GAAO1P,EAAMo8B,CAAE,EAAE,OACzC,CAAE,GAAAC,EAAK,GAAAD,CAAK,EAAGG,GAAav8B,EAAO,OAAQ0P,CAAG,GAElD,CAAE,KAAMyjE,EAAa,IAAKE,CAAa,EAAGrzE,EAAMq8B,CAAE,EAClD,CAAE,KAAM+2C,EAAa,IAAKE,CAAa,EAAGtzE,EAAMo8B,CAAE,GAEvD,MAAM5qC,EAAO4hF,EAAaD,EAC1B,OAAO3hF,EAAO6hF,GAAcC,EAAaD,IAAe3jE,EAAMyjE,GAAc3hF,EAAO6hF,CACvF,CACA,MAAME,WAAwBtB,EAAU,CACpC,OAAO,GAAK,aACf,OAAO,SAAWA,GAAU,SAC5B,YAAYzlH,EAAM,CACX,MAAMA,CAAK,EACV,KAAK,OAAS,CAAE,EAChB,KAAK,QAAU,OACf,KAAK,YAAc,MAC5B,CACC,aAAc,CACP,MAAM2vD,EAAa,KAAK,uBAAwB,EAC1Cnc,EAAQ,KAAK,OAAS,KAAK,iBAAiBmc,CAAU,EAC5D,KAAK,QAAUka,GAAYr2B,EAAO,KAAK,GAAG,EAC1C,KAAK,YAAcq2B,GAAYr2B,EAAO,KAAK,GAAG,EAAI,KAAK,QACvD,MAAM,YAAYmc,CAAU,CACpC,CACC,iBAAiBA,EAAY,CACtB,KAAM,CAAE,IAAAz5C,EAAM,IAAAD,CAAG,EAAM,KACjB3V,EAAQ,CAAE,EACVkzC,EAAQ,CAAE,EAChB,IAAI/2C,EAAG+uE,EAAMvuE,EAAM0sF,EAAM/3E,EACzB,IAAInV,EAAI,EAAG+uE,EAAO7b,EAAW,OAAQlzD,EAAI+uE,EAAM,EAAE/uE,EAC7CktF,EAAOh6B,EAAWlzD,CAAC,EACfktF,GAAQzzE,GAAOyzE,GAAQ1zE,GACvB3V,EAAM,KAAKqpF,CAAI,EAGvB,GAAIrpF,EAAM,OAAS,EACf,MAAO,CACH,CACI,KAAM4V,EACN,IAAK,CACR,EACD,CACI,KAAMD,EACN,IAAK,CACzB,CACa,EAEL,IAAIxZ,EAAI,EAAG+uE,EAAOlrE,EAAM,OAAQ7D,EAAI+uE,EAAM,EAAE/uE,EACxCmV,EAAOtR,EAAM7D,EAAI,CAAC,EAClBQ,EAAOqD,EAAM7D,EAAI,CAAC,EAClBktF,EAAOrpF,EAAM7D,CAAC,EACV,KAAK,OAAOmV,EAAO3U,GAAQ,CAAC,IAAM0sF,GAClCn2C,EAAM,KAAK,CACP,KAAMm2C,EACN,IAAKltF,GAAK+uE,EAAO,EACrC,CAAiB,EAGT,OAAOh4B,CACf,CACC,wBAAyB,CAClB,IAAImc,EAAa,KAAK,OAAO,KAAO,CAAE,EACtC,GAAIA,EAAW,OACX,OAAOA,EAEX,MAAMhlD,EAAO,KAAK,kBAAmB,EAC/B89B,EAAQ,KAAK,mBAAoB,EACvC,OAAI99B,EAAK,QAAU89B,EAAM,OACrBknB,EAAa,KAAK,UAAUhlD,EAAK,OAAO89B,CAAK,CAAC,EAE9CknB,EAAahlD,EAAK,OAASA,EAAO89B,EAEtCknB,EAAa,KAAK,OAAO,IAAMA,EACxBA,CACf,CACC,mBAAmB52D,EAAO,CACnB,OAAQ8wE,GAAY,KAAK,OAAQ9wE,CAAK,EAAI,KAAK,SAAW,KAAK,WACvE,CACC,iBAAiBu8E,EAAO,CACjB,MAAM36D,EAAU,KAAK,SACfkiF,EAAU,KAAK,mBAAmBvnB,CAAK,EAAI36D,EAAQ,OAASA,EAAQ,IAC1E,OAAOkvD,GAAY,KAAK,OAAQgzB,EAAU,KAAK,YAAc,KAAK,QAAS,EAAI,CACvF,CACA,CAEA,IAAInW,GAAsB,OAAO,OAAO,CACxC,UAAW,KACX,cAAe44B,GACf,YAAa2B,GACb,iBAAkBc,GAClB,kBAAmB+B,GACnB,UAAW2B,GACX,gBAAiBsB,EACjB,CAAC,EAED,MAAMC,GAAgB,CAClB52B,GACAzH,GACA4Y,GACA7a,EACJ,ECljWMugC,GAAgB,QAET,CAACC,GAAkBC,EAAmB,EACjDruH,EAAamuH,EAAa,EAErB,SAASG,GAAS7jH,EAAc,CAC5B,SAAA,eAAe,OAAO,GAAG,OAAO,EACrC,IAAAvH,EAAI,SAAS,cAAc,OAAO,EAEtC,OADAA,EAAE,GAAK,QACCuH,EAAM,CACZ,IAAK,OACH,SAAS,cAAc,MAAM,GAAG,aAAa,gBAAiB,MAAM,EACpE8hG,GAAM,SAAS,MAAQ,OAChB9hG,EAAA,OACP,MACF,QACSA,EAAA,QACP8hG,GAAM,SAAS,MAAQ,OACvB,SAAS,cAAc,MAAM,GAAG,aAAa,gBAAiB,OAAO,EACrE,KAAA,CAEK,SAAA,KAAK,YAAYrpG,CAAC,EACd,aAAA,QAAQ,QAASuH,CAAI,EAClC4jH,GAAoB5jH,CAAI,CAC1B,CAEO,SAAS8jH,IAAmB,CAEjC,OADmB,aAAa,QAAQ,OAAO,EAC3B,CAClB,IAAK,OACHD,GAAS,MAAM,EACf,MACF,QACEA,GAAS,OAAO,EAChB,KAAA,CAEN,CAEO,SAASE,GAAYpkF,EAAuB,CACjD,aAAa,QAAQ,YAAa,GAAGA,CAAI,EAAE,CAC7C,CAEO,SAASqkF,IAA+B,CAC7C,MAAMC,EAAgB,aAAa,QAAQ,WAAW,GAAK,MAC3D,OAAQA,EAAe,CACrB,IAAK,MACI,MAAA,MACT,QACE,MAAO,CAACA,GAAiB,GAAA,CAE/B,CAEO,SAASC,IAAyC,CACvD,IAAIlmD,EAAasE,GAAW,EAC5B,GAAItE,IAAe,OACjB,OAAOtC,GAAgBsC,CAAU,CAGrC,CC9DA,IAAI12C,GAAO,IAAM,CACjB,EACI68F,GAAiB,CAACr9G,EAAIgqD,IAASA,EAAM,EACzC,SAASszD,GAAuBttH,EAAQrB,EAAS,CAC/C,MAAM4uH,EAAajvH,GAAQ0B,CAAM,EAC3BwtH,EAAeD,EAAa,CAACA,CAAU,EAAI,CAAE,EAI7C,CAAE,QAAAnxF,EAAUixF,GAAgB,OAAAnxF,EAASmxF,EAAgB,EAAG1uH,EACxD,CAAC8uH,EAAUC,CAAW,EAAIjvH,EAC9BE,EAAQ,OAAS,GAAK6uH,CACvB,EACK,CAACG,CAAmB,EAAItqH,GAAe,EAC7C,IAAIkU,EACAq2G,EAAY,GAChB,SAASC,EAAe79G,EAAI7D,EAAO,CACjC,GAAI,CAAC6D,EACH,OAAO7D,GAASA,EAAO,EACzByhH,EAAY,GACZ1xF,EAAOlsB,EAAI,IAAM,CACfpO,GAAM,IAAM,CACVgsH,EAAY,GACZF,EAAaxsH,GAAMA,EAAE,OAAQS,GAAMA,IAAMqO,CAAE,CAAC,EAC5C7D,GAASA,EAAO,CACxB,CAAO,CACP,CAAK,CACL,CACE,SAAS2hH,EAAgB3hH,EAAO,CAC9B,MAAM6D,EAAKuH,EACX,GAAI,CAACvH,EACH,OAAO7D,GAASA,EAAO,EACzBoL,EAAO,OACPm2G,EAAaxsH,GAAM,CAAC8O,EAAI,GAAG9O,CAAC,CAAC,EAC7Bk7B,EAAQpsB,EAAI7D,GAASqkB,EAAI,CAC7B,CACE,MAAMu9F,EAAqBpvH,EAAQ,OAAS,SAEzCiE,GAASgrH,GAAaC,EAAejrH,EAAMkrH,CAAe,EACzDnvH,EAAQ,OAAS,SAElBiE,GAASkrH,EAAgB,IAAMD,EAAejrH,CAAI,CAAC,EAGnDA,GAAS,CACRirH,EAAejrH,CAAI,EACnBkrH,EAAiB,CACvB,EAEE,OAAA9uH,GACG4D,GAAS,CACR,MAAMoN,EAAKhQ,EAAQ,EACnB,OAAI1B,GAAQqvH,CAAmB,GAC7BA,EAAqB,EACd/qH,IAELoN,IAAOpN,IACT2U,EAAOvH,EACPpO,GAAM,IAAMtD,GAAQ,IAAMyvH,EAAmBnrH,CAAI,CAAC,CAAC,GAE9CoN,EACR,EACDrR,EAAQ,OAAS,OAAS4uH,CAC3B,EACME,CACT,CC7DA,IAAIO,GAA0GhnH,GAASA,aAAgB,QA4BvI,SAASinH,GAAcvvH,EAAOwvH,EAAW,CACvC,GAAIA,EAAUxvH,CAAK,EACjB,OAAOA,EACT,GAAI,OAAOA,GAAU,YAAc,CAACA,EAAM,OACxC,OAAOuvH,GAAcvvH,EAAO,EAAEwvH,CAAS,EACzC,GAAI,MAAM,QAAQxvH,CAAK,EACrB,UAAWsI,KAAQtI,EAAO,CACxB,MAAM2D,EAAS4rH,GAAcjnH,EAAMknH,CAAS,EAC5C,GAAI7rH,EACF,OAAOA,CACf,CAEE,OAAO,IACT,CACA,SAAS8rH,GAAarwH,EAAIowH,EAAYF,GAAyBI,EAAkBJ,GAAyB,CACxG,MAAMK,EAAY5uH,EAAW3B,CAAE,EAC/B,OAAO2B,EAAW,IAAMwuH,GAAcI,EAAW,EAA+BH,CAAS,CAAC,CAC5F,CCnDA,SAASI,GAAiB3oH,EAAO,CAC/B,OAAOlG,EAAW,IAAM,CACtB,MAAMyJ,EAAOvD,EAAM,MAAQ,IAC3B,MAAO,CACL,aAAcA,EAAM,kBAAoBuD,EAAO,iBAAiB,MAAM,GAAG,EACzE,OAAQvD,EAAM,YAAcuD,EAAO,UAAU,MAAM,GAAG,EACtD,SAAUvD,EAAM,cAAgBuD,EAAO,aAAa,MAAM,GAAG,EAC7D,YAAavD,EAAM,iBAAmBuD,EAAO,gBAAgB,MAAM,GAAG,EACtE,MAAOvD,EAAM,WAAauD,EAAO,SAAS,MAAM,GAAG,EACnD,QAASvD,EAAM,aAAeuD,EAAO,YAAY,MAAM,GAAG,EAC1D,MAAOvD,EAAM,WAAauD,EAAO,SAAS,MAAM,GAAG,CACpD,CACL,CAAG,CACH,CACA,SAASs1B,GAAU1gC,EAAI,CACrB,sBAAsB,IAAM,sBAAsBA,CAAE,CAAC,CACvD,CACA,SAASgwH,GAAgBh7G,EAAS0uD,EAAQxxD,EAAIgqD,EAAM,CAClD,KAAM,CAAE,cAAAu0D,EAAe,QAAAnyF,EAAS,aAAAoyF,CAAc,EAAGhtD,EACjD+sD,IAAgBv+G,CAAE,EAClBA,EAAG,UAAU,IAAI,GAAG8C,EAAQ,KAAK,EACjC9C,EAAG,UAAU,IAAI,GAAG8C,EAAQ,WAAW,EACvC,eAAe,IAAM,CACnB,GAAI,CAAC9C,EAAG,WACN,OAAOgqD,IAAQ,EACjB59B,IAAUpsB,EAAI,IAAMy+G,GAAe,CACvC,CAAG,EACDjwF,GAAU,IAAM,CACdxuB,EAAG,UAAU,OAAO,GAAG8C,EAAQ,KAAK,EACpC9C,EAAG,UAAU,IAAI,GAAG8C,EAAQ,OAAO,GAC/B,CAACspB,GAAWA,EAAQ,OAAS,KAC/BpsB,EAAG,iBAAiB,gBAAiBy+G,CAAa,EAClDz+G,EAAG,iBAAiB,eAAgBy+G,CAAa,EAEvD,CAAG,EACD,SAASA,EAAc9sH,EAAG,EACpB,CAACA,GAAKA,EAAE,SAAWqO,KACrBgqD,IAAQ,EACRhqD,EAAG,oBAAoB,gBAAiBy+G,CAAa,EACrDz+G,EAAG,oBAAoB,eAAgBy+G,CAAa,EACpDz+G,EAAG,UAAU,OAAO,GAAG8C,EAAQ,WAAW,EAC1C9C,EAAG,UAAU,OAAO,GAAG8C,EAAQ,OAAO,EACtC07G,IAAex+G,CAAE,EAEvB,CACA,CACA,SAAS69G,GAAe/6G,EAAS0uD,EAAQxxD,EAAIgqD,EAAM,CACjD,KAAM,CAAE,aAAA00D,EAAc,OAAAxyF,EAAQ,YAAAyyF,CAAa,EAAGntD,EAC9C,GAAI,CAACxxD,EAAG,WACN,OAAOgqD,IAAQ,EACjB00D,IAAe1+G,CAAE,EACjBA,EAAG,UAAU,IAAI,GAAG8C,EAAQ,IAAI,EAChC9C,EAAG,UAAU,IAAI,GAAG8C,EAAQ,UAAU,EACtCopB,IAASlsB,EAAI,IAAMy+G,GAAe,EAClCjwF,GAAU,IAAM,CACdxuB,EAAG,UAAU,OAAO,GAAG8C,EAAQ,IAAI,EACnC9C,EAAG,UAAU,IAAI,GAAG8C,EAAQ,MAAM,GAC9B,CAACopB,GAAUA,EAAO,OAAS,KAC7BlsB,EAAG,iBAAiB,gBAAiBy+G,CAAa,EAClDz+G,EAAG,iBAAiB,eAAgBy+G,CAAa,EAEvD,CAAG,EACD,SAASA,EAAc9sH,EAAG,EACpB,CAACA,GAAKA,EAAE,SAAWqO,KACrBgqD,IAAQ,EACRhqD,EAAG,oBAAoB,gBAAiBy+G,CAAa,EACrDz+G,EAAG,oBAAoB,eAAgBy+G,CAAa,EACpDz+G,EAAG,UAAU,OAAO,GAAG8C,EAAQ,UAAU,EACzC9C,EAAG,UAAU,OAAO,GAAG8C,EAAQ,MAAM,EACrC67G,IAAc3+G,CAAE,EAEtB,CACA,CAKA,IAAI4+G,GAAsB,CACxB,MAAO,SACP,MAAO,QACT,EACIrxH,GAAcoI,GAAU,CAC1B,MAAMuwC,EAAao4E,GAAiB3oH,CAAK,EACzC,OAAO2nH,GACLa,GAAa,IAAMxoH,EAAM,QAAQ,EACjC,CACE,KAAMipH,GAAoBjpH,EAAM,IAAI,EACpC,OAAQA,EAAM,OACd,QAAQqK,EAAIgqD,EAAM,CAChB8zD,GAAgB53E,EAAY,EAAEvwC,EAAOqK,EAAIgqD,CAAI,CAC9C,EACD,OAAOhqD,EAAIgqD,EAAM,CACf6zD,GAAe33E,EAAY,EAAEvwC,EAAOqK,EAAIgqD,CAAI,CACpD,CACA,CACG,CACH,EC/FgB,SAAA60D,GAAcnhH,EAAmBpI,EAAe,CAC9D,IAAI3E,EAAQ,IAGR2E,IAAU,GACZ,SAAS,EAAG,CAAC,EAGT,MAAAwpH,EAAgB,SAAS,uBAAuBphH,CAAS,EAE3DpI,EAAQ,GAAKwpH,EAAc,OAASxpH,EAAQ,IAC9CA,EAAQwpH,EAAc,OAAS,GAG7B,IAAA9+G,EAAK8+G,EAAcxpH,CAAK,EAC5B,GAAI0K,IAAO,OACT,OAEF,IAAI++G,EAAW/+G,EAAG,UACdg/G,EAAWh/G,EAAG,aACdi/G,EAAe,OAAO,QACtBC,EAAe,OAAO,YAEtBC,EAAWJ,EAAWC,EACtBI,EAAeH,EAAeC,EAElC,GAAIC,EAAWC,EAAezuH,EAAQuuH,EAAe,GAAK,CACxD,IAAIG,EAAYJ,EAAeD,EAK3BG,EAAWE,EAAYH,EAClB,OAAA,SAAS,EAAGD,EAAeD,CAAQ,EAEnC,OAAA,SAAS,EAAGG,CAAQ,CAC7B,MACSF,EAAe,GACpBF,EAAWE,EAAeC,EAAe,IAC3C,OAAO,SAAS,EAAG,KAAK,IAAIH,EAAUE,EAAeD,CAAQ,CAAC,CAGpE,CCxCY,IAAAM,IAAAA,IACVA,EAAA,SAAW,kBACXA,EAAA,UAAY,mBAFFA,IAAAA,IAAA,CAAA,CAAA,EAKL,SAASC,GAAgBt7G,EAAqB,CAC5C,OAAAA,EAAM,QAAQ,MAAQA,EAAM,QAAQ,KAAK,QAAQ,iBAAgB,EAAA,EAC1E,CAEO,SAASu7G,GAAiBv7G,EAA8B,CACzD,MAAA,GAAAA,EAAM,QAAQ,MAAQA,EAAM,QAAQ,KAAK,QAAQ,oBAAiB,GAIxE,CAEA,SAASw7G,GAAmBx7G,EAAqB,CAC1CA,EAAM,QAAQ,OACXA,EAAA,QAAQ,KAAO,CAAC,EAE1B,CAEO,SAASy7G,GAAiBz7G,EAAqB,CAC/Cs7G,GAAgBt7G,CAAK,GACxB07G,GAAY17G,EAAO,iBAAY,CAEnC,CAEO,SAAS27G,GAAkB37G,EAAqB,CACrD07G,GAAY17G,EAAO,kBAAa,CAClC,CAUgB,SAAA07G,GAAY17G,EAAqB47G,EAAa,CAC5DJ,GAAmBx7G,CAAK,EAClBA,EAAA,QAAQ,KAAM,KAAK47G,CAAG,CAC9B,CC3CO,MAAMC,EAAU,CASrB,YAAoBC,EAAa,IAAO,CAApB,KAAA,GAAAA,EAClB,CAAC,KAAK,QAAS,KAAK,UAAU,EAAItxH,EAAa,CAAC,EACzC,OAAA,iBAAiB,YAAa,KAAK,aAAa,EAChD,OAAA,iBAAiB,WAAY,KAAK,aAAa,EACtD,KAAK,WAAW,CAAA,CAZV,WAA4B,KAC7B,QACC,WAAkB,KAElB,cAAgB,IAAM,CAC5B,KAAK,WAAW,CAClB,EASQ,YAAa,CACf,KAAK,aAAe,MACtB,cAAc,KAAK,UAAU,EAE1B,KAAA,WAAa,YAAY,IAAM,CAClC,QAAQ,IAAI,oBAAoB,EAChC,KAAK,WAAY+G,GAAcA,EAAI,CAAC,CAAA,EACnC,KAAK,EAAE,CAAA,CAGL,MAAO,CACL,OAAA,oBAAoB,WAAY,KAAK,aAAa,EAClD,OAAA,oBAAoB,YAAa,KAAK,aAAa,EACtD,KAAK,aAAe,MACtB,cAAc,KAAK,UAAU,CAC/B,CAEJ,CCvBO,MAAMwqH,GAAap3G,GAA0B,CAClD,OAAQ,CAAC,EACT,OAAQ,KACR,WAAY,EACZ,OAAQ,EAER,UAAU6b,EAAsB,CAC9B,KAAK,OAASA,CAChB,EAEA,MAAM+sC,EAAyB,GAAI,CACjC,KAAK,OAASA,EACd,KAAK,OAAS,KACd,KAAK,WAAa,EAClB,KAAK,OAAS,CAAA,CAElB,CAAC,ECzBM,MAAMyuD,EAAO,CAClB,YACU1tF,EACR2tF,EAAoB,GACpB,CAFQ,KAAA,OAAA3tF,EAGJ2tF,GACF,KAAK,IAAI,mDAAmD,CAC9D,CAGF,IAAIC,EAAa,CACf,QAAQ,IAAI,GAAG,KAAK,MAAM,KAAKA,CAAG,EAAE,CAAA,CAExC,CAGsB,eAAAC,GACpBvxH,EACAf,EACA,CACA,IAAI6lC,EAAQ,IACZ,OAAA9kC,EAAQI,IACF0kC,EAAQ,IACVA,EAAQA,EAAQ1kC,GAEXA,EAAI,EACZ,EACMnB,EAAA,EAAK,QAAQ,IAAM,CACxB,WAAW,IAAM,CACRe,EAACI,GAAMA,EAAI,CAAC,GAClB0kC,CAAK,CAAA,CACT,CACH,CAkBO,SAAS0sF,GAAsBjwH,EAAY,CAEzC,OADO,SAAS,eAAeA,CAAE,EACzB,WAAW,IAAI,CAChC,iJCpDO,SAASkwH,GAAa3qH,EAG1B,CACD,KAAM,CAAC4qH,EAASC,CAAU,EAAI/xH,EAAuB,CAAA,CAAE,EACjD,CAACgyH,EAASC,CAAU,EAAIjyH,EAAa,EAAI,EAE/CY,GAAa,IAAM,CACbsoE,GAAAA,WAAAA,EACD6B,KAAmB3b,GAAA,CAClB2iE,EAAW3iE,EAASv9C,IAAI,CAAA,CACzB,EACAqgH,QAAQ,IAAM,CACbD,EAAW,EAAK,CAAA,CACjB,CAAA,CACJ,EACD,SAASE,EAAU38G,EAAY,CACzB48G,IAAAA,EAAS58G,EAAMid,cAAcxyB,MAC7BmyH,IAAW,GACblrH,EAAMmrH,SAASv8G,MAAS,EAExB5O,EAAMmrH,SAASD,CAAM,CACvB,CAGF,OAAA,IAAA,CAAA,IAAA17G,EAAAy/B,KAAAz/B,OAAAA,EAAAi9B,WAAAj9B,EAAAA,EAAAJ,EAGK1L,EAAI,CAAA,IACHszB,MAAI,CAAA,MAAE,CAAC8zF,EAAQ,CAAC,EAAA,IAChBrnH,UAAQ,CAAA,OAAA2L,EACLL,GAAM,CAACixB,QAAS,oBAAqB5xB,SAAQ,GAAA,IAAArQ,UAAA,CAAA,MAAA,CAC3C,WAAUqR,EACVkjC,GAAO,CACNnjC,GAAE,OACF89B,UAAS,OACT/J,KAAI,KACJr0B,KAAI,SAAA,cAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA9Q,UAAA,CAAA,IAAAmpE,EAAAz3D,KAAAy3D,OAAAA,EAAAz6B,WAAAzkC,EAAAA,iBAAA,SAM4BijH,CAAS,EAAA/jD,EAAAA,EAAA93D,EAE5C5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEw2E,EAAQ,CAAC,EAAA7sH,aACV,IAAA,CAAA,IAAAkjD,EAAAJ,GAAA,EAAAI,OAAAA,EAAAloD,MACSmyH,EAAM/0F,EAAA8qB,EAClBiqE,CAAM,EAAAxiF,GAAA,IAAAuY,EAAAmqE,SADwBF,GAAUlrH,EAAMorH,QAAQ,EAAAnqE,CAAA,GAAA,CAG1D,CAAA,EAAA,IAAA,EAAAimB,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAA13D,CAAAA,GAAA,CAMb,CC/DA;AAAA;AAAA;AAAA;AAAA,IAkBA,MAAM67G,GAAa,IAAI,IACjBC,GAAO,CACX,IAAIxkH,EAAStL,EAAK8gB,EAAU,CACrB+uG,GAAW,IAAIvkH,CAAO,GACzBukH,GAAW,IAAIvkH,EAAS,IAAI,GAAK,EAEnC,MAAMykH,EAAcF,GAAW,IAAIvkH,CAAO,EAI1C,GAAI,CAACykH,EAAY,IAAI/vH,CAAG,GAAK+vH,EAAY,OAAS,EAAG,CAEnD,QAAQ,MAAM,+EAA+E,MAAM,KAAKA,EAAY,MAAM,EAAE,CAAC,CAAC,GAAG,EACjI,MACN,CACIA,EAAY,IAAI/vH,EAAK8gB,CAAQ,CAC9B,EACD,IAAIxV,EAAStL,EAAK,CAChB,OAAI6vH,GAAW,IAAIvkH,CAAO,GACjBukH,GAAW,IAAIvkH,CAAO,EAAE,IAAItL,CAAG,GAAK,IAG9C,EACD,OAAOsL,EAAStL,EAAK,CACnB,GAAI,CAAC6vH,GAAW,IAAIvkH,CAAO,EACzB,OAEF,MAAMykH,EAAcF,GAAW,IAAIvkH,CAAO,EAC1CykH,EAAY,OAAO/vH,CAAG,EAGlB+vH,EAAY,OAAS,GACvBF,GAAW,OAAOvkH,CAAO,CAE/B,CACA,EASM0kH,GAAU,IACVC,GAA0B,IAC1BC,GAAiB,gBAOjBC,GAAgB97G,IAChBA,GAAY,OAAO,KAAO,OAAO,IAAI,SAEvCA,EAAWA,EAAS,QAAQ,gBAAiB,CAAC8nC,EAAOl9C,IAAO,IAAI,IAAI,OAAOA,CAAE,CAAC,EAAE,GAE3EoV,GAIH+7G,GAASr7C,GACTA,GAAW,KACN,GAAGA,CAAM,GAEX,OAAO,UAAU,SAAS,KAAKA,CAAM,EAAE,MAAM,aAAa,EAAE,CAAC,EAAE,YAAa,EAO/Es7C,GAASjvF,GAAU,CACvB,GACEA,GAAU,KAAK,MAAM,KAAK,OAAM,EAAK4uF,EAAO,QACrC,SAAS,eAAe5uF,CAAM,GACvC,OAAOA,CACT,EACMkvF,GAAmChlH,GAAW,CAClD,GAAI,CAACA,EACH,MAAO,GAIT,GAAI,CACF,mBAAAilH,EACA,gBAAAC,CACJ,EAAM,OAAO,iBAAiBllH,CAAO,EACnC,MAAMmlH,EAA0B,OAAO,WAAWF,CAAkB,EAC9DG,EAAuB,OAAO,WAAWF,CAAe,EAG9D,MAAI,CAACC,GAA2B,CAACC,EACxB,GAITH,EAAqBA,EAAmB,MAAM,GAAG,EAAE,CAAC,EACpDC,EAAkBA,EAAgB,MAAM,GAAG,EAAE,CAAC,GACtC,OAAO,WAAWD,CAAkB,EAAI,OAAO,WAAWC,CAAe,GAAKP,GACxF,EACMU,GAAuBrlH,GAAW,CACtCA,EAAQ,cAAc,IAAI,MAAM4kH,EAAc,CAAC,CACjD,EACMv2G,GAAYo7D,GACZ,CAACA,GAAU,OAAOA,GAAW,SACxB,IAEL,OAAOA,EAAO,OAAW,MAC3BA,EAASA,EAAO,CAAC,GAEZ,OAAOA,EAAO,SAAa,KAE9B5tC,GAAa4tC,GAEbp7D,GAAUo7D,CAAM,EACXA,EAAO,OAASA,EAAO,CAAC,EAAIA,EAEjC,OAAOA,GAAW,UAAYA,EAAO,OAAS,EACzC,SAAS,cAAco7C,GAAcp7C,CAAM,CAAC,EAE9C,KAEH67C,GAAYtlH,GAAW,CAC3B,GAAI,CAACqO,GAAUrO,CAAO,GAAKA,EAAQ,eAAgB,EAAC,SAAW,EAC7D,MAAO,GAET,MAAMulH,EAAmB,iBAAiBvlH,CAAO,EAAE,iBAAiB,YAAY,IAAM,UAEhFwlH,EAAgBxlH,EAAQ,QAAQ,qBAAqB,EAC3D,GAAI,CAACwlH,EACH,OAAOD,EAET,GAAIC,IAAkBxlH,EAAS,CAC7B,MAAMylH,EAAUzlH,EAAQ,QAAQ,SAAS,EAIzC,GAHIylH,GAAWA,EAAQ,aAAeD,GAGlCC,IAAY,KACd,MAAO,EAEb,CACE,OAAOF,CACT,EACMG,GAAa1lH,GACb,CAACA,GAAWA,EAAQ,WAAa,KAAK,cAGtCA,EAAQ,UAAU,SAAS,UAAU,EAChC,GAEL,OAAOA,EAAQ,SAAa,IACvBA,EAAQ,SAEVA,EAAQ,aAAa,UAAU,GAAKA,EAAQ,aAAa,UAAU,IAAM,QAE5E2lH,GAAiB3lH,GAAW,CAChC,GAAI,CAAC,SAAS,gBAAgB,aAC5B,OAAO,KAIT,GAAI,OAAOA,EAAQ,aAAgB,WAAY,CAC7C,MAAMrO,EAAOqO,EAAQ,YAAa,EAClC,OAAOrO,aAAgB,WAAaA,EAAO,IAC/C,CACE,OAAIqO,aAAmB,WACdA,EAIJA,EAAQ,WAGN2lH,GAAe3lH,EAAQ,UAAU,EAF/B,IAGX,EACM+jB,GAAO,IAAM,CAAE,EAUf6hG,GAAS5lH,GAAW,CACxBA,EAAQ,YACV,EAEM6lH,GAAY,IACZ,OAAO,QAAU,CAAC,SAAS,KAAK,aAAa,mBAAmB,EAC3D,OAAO,OAET,KAEHC,GAA4B,CAAE,EAC9BC,GAAqBxxF,GAAY,CACjC,SAAS,aAAe,WAErBuxF,GAA0B,QAC7B,SAAS,iBAAiB,mBAAoB,IAAM,CAClD,UAAWvxF,KAAYuxF,GACrBvxF,EAAU,CAEpB,CAAO,EAEHuxF,GAA0B,KAAKvxF,CAAQ,GAEvCA,EAAU,CAEd,EACM/I,GAAQ,IAAM,SAAS,gBAAgB,MAAQ,MAC/Cw6F,GAAqBzrB,GAAU,CACnCwrB,GAAmB,IAAM,CACvB,MAAMtuD,EAAIouD,GAAW,EAErB,GAAIpuD,EAAG,CACL,MAAMh7D,EAAO89F,EAAO,KACd0rB,EAAqBxuD,EAAE,GAAGh7D,CAAI,EACpCg7D,EAAE,GAAGh7D,CAAI,EAAI89F,EAAO,gBACpB9iC,EAAE,GAAGh7D,CAAI,EAAE,YAAc89F,EACzB9iC,EAAE,GAAGh7D,CAAI,EAAE,WAAa,KACtBg7D,EAAE,GAAGh7D,CAAI,EAAIwpH,EACN1rB,EAAO,gBAEtB,CACA,CAAG,CACH,EACM2rB,GAAU,CAACC,EAAkBz6G,EAAO,CAAA,EAAI3U,EAAeovH,IACpD,OAAOA,GAAqB,WAAaA,EAAiB,GAAGz6G,CAAI,EAAI3U,EAExEqvH,GAAyB,CAAC7xF,EAAU8xF,EAAmBC,EAAoB,KAAS,CACxF,GAAI,CAACA,EAAmB,CACtBJ,GAAQ3xF,CAAQ,EAChB,MACJ,CAEE,MAAMgyF,EAAmBvB,GAAiCqB,CAAiB,EADnD,EAExB,IAAIxvF,EAAS,GACb,MAAM11B,EAAU,CAAC,CACf,OAAAvF,CACJ,IAAQ,CACAA,IAAWyqH,IAGfxvF,EAAS,GACTwvF,EAAkB,oBAAoBzB,GAAgBzjH,CAAO,EAC7D+kH,GAAQ3xF,CAAQ,EACjB,EACD8xF,EAAkB,iBAAiBzB,GAAgBzjH,CAAO,EAC1D,WAAW,IAAM,CACV01B,GACHwuF,GAAqBgB,CAAiB,CAEzC,EAAEE,CAAgB,CACrB,EAWMC,GAAuB,CAACltH,EAAM8vB,EAAeq9F,EAAeC,IAAmB,CACnF,MAAMC,EAAartH,EAAK,OACxB,IAAIT,EAAQS,EAAK,QAAQ8vB,CAAa,EAItC,OAAIvwB,IAAU,GACL,CAAC4tH,GAAiBC,EAAiBptH,EAAKqtH,EAAa,CAAC,EAAIrtH,EAAK,CAAC,GAEzET,GAAS4tH,EAAgB,EAAI,GACzBC,IACF7tH,GAASA,EAAQ8tH,GAAcA,GAE1BrtH,EAAK,KAAK,IAAI,EAAG,KAAK,IAAIT,EAAO8tH,EAAa,CAAC,CAAC,CAAC,EAC1D,EAcMC,GAAiB,qBACjBC,GAAiB,OACjBC,GAAgB,SAChBC,GAAgB,CAAA,EACtB,IAAIC,GAAW,EACf,MAAMC,GAAe,CACnB,WAAY,YACZ,WAAY,UACd,EACMC,GAAe,IAAI,IAAI,CAAC,QAAS,WAAY,UAAW,YAAa,cAAe,aAAc,iBAAkB,YAAa,WAAY,YAAa,cAAe,YAAa,UAAW,WAAY,QAAS,oBAAqB,aAAc,YAAa,WAAY,cAAe,cAAe,cAAe,YAAa,eAAgB,gBAAiB,eAAgB,gBAAiB,aAAc,QAAS,OAAQ,SAAU,QAAS,SAAU,SAAU,UAAW,WAAY,OAAQ,SAAU,eAAgB,SAAU,OAAQ,mBAAoB,mBAAoB,QAAS,QAAS,QAAQ,CAAC,EAMxmB,SAASC,GAAannH,EAAS8jE,EAAK,CAClC,OAAOA,GAAO,GAAGA,CAAG,KAAKkjD,IAAU,IAAMhnH,EAAQ,UAAYgnH,IAC/D,CACA,SAASI,GAAiBpnH,EAAS,CACjC,MAAM8jE,EAAMqjD,GAAannH,CAAO,EAChC,OAAAA,EAAQ,SAAW8jE,EACnBijD,GAAcjjD,CAAG,EAAIijD,GAAcjjD,CAAG,GAAK,CAAE,EACtCijD,GAAcjjD,CAAG,CAC1B,CACA,SAASujD,GAAiBrnH,EAAS3O,EAAI,CACrC,OAAO,SAAS8P,EAAQqG,EAAO,CAC7B,OAAA8/G,GAAW9/G,EAAO,CAChB,eAAgBxH,CACtB,CAAK,EACGmB,EAAQ,QACVomH,EAAa,IAAIvnH,EAASwH,EAAM,KAAMnW,CAAE,EAEnCA,EAAG,MAAM2O,EAAS,CAACwH,CAAK,CAAC,CACjC,CACH,CACA,SAASggH,GAA2BxnH,EAAS+I,EAAU1X,EAAI,CACzD,OAAO,SAAS8P,EAAQqG,EAAO,CAC7B,MAAMigH,EAAcznH,EAAQ,iBAAiB+I,CAAQ,EACrD,OAAS,CACP,OAAAnN,CACN,EAAQ4L,EAAO5L,GAAUA,IAAW,KAAMA,EAASA,EAAO,WACpD,UAAW8rH,KAAcD,EACvB,GAAIC,IAAe9rH,EAGnB,OAAA0rH,GAAW9/G,EAAO,CAChB,eAAgB5L,CAC1B,CAAS,EACGuF,EAAQ,QACVomH,EAAa,IAAIvnH,EAASwH,EAAM,KAAMuB,EAAU1X,CAAE,EAE7CA,EAAG,MAAMuK,EAAQ,CAAC4L,CAAK,CAAC,CAGpC,CACH,CACA,SAASmgH,GAAY5yD,EAAQ6yD,EAAUC,EAAqB,KAAM,CAChE,OAAO,OAAO,OAAO9yD,CAAM,EAAE,KAAKvtD,GAASA,EAAM,WAAaogH,GAAYpgH,EAAM,qBAAuBqgH,CAAkB,CAC3H,CACA,SAASC,GAAoBC,EAAmB5mH,EAAS6mH,EAAoB,CAC3E,MAAMC,EAAc,OAAO9mH,GAAY,SAEjCymH,EAAWK,EAAcD,EAAqB7mH,GAAW6mH,EAC/D,IAAIE,EAAYC,GAAaJ,CAAiB,EAC9C,OAAKb,GAAa,IAAIgB,CAAS,IAC7BA,EAAYH,GAEP,CAACE,EAAaL,EAAUM,CAAS,CAC1C,CACA,SAASE,GAAWpoH,EAAS+nH,EAAmB5mH,EAAS6mH,EAAoBK,EAAQ,CACnF,GAAI,OAAON,GAAsB,UAAY,CAAC/nH,EAC5C,OAEF,GAAI,CAACioH,EAAaL,EAAUM,CAAS,EAAIJ,GAAoBC,EAAmB5mH,EAAS6mH,CAAkB,EAIvGD,KAAqBd,KAQvBW,GAPqBv2H,GACZ,SAAUmW,EAAO,CACtB,GAAI,CAACA,EAAM,eAAiBA,EAAM,gBAAkBA,EAAM,gBAAkB,CAACA,EAAM,eAAe,SAASA,EAAM,aAAa,EAC5H,OAAOnW,EAAG,KAAK,KAAMmW,CAAK,CAE7B,GAEqBogH,CAAQ,GAElC,MAAM7yD,EAASqyD,GAAiBpnH,CAAO,EACjCu3B,EAAWw9B,EAAOmzD,CAAS,IAAMnzD,EAAOmzD,CAAS,EAAI,IACrDI,EAAmBX,GAAYpwF,EAAUqwF,EAAUK,EAAc9mH,EAAU,IAAI,EACrF,GAAImnH,EAAkB,CACpBA,EAAiB,OAASA,EAAiB,QAAUD,EACrD,MACJ,CACE,MAAMvkD,EAAMqjD,GAAaS,EAAUG,EAAkB,QAAQnB,GAAgB,EAAE,CAAC,EAC1Ev1H,EAAK42H,EAAcT,GAA2BxnH,EAASmB,EAASymH,CAAQ,EAAIP,GAAiBrnH,EAAS4nH,CAAQ,EACpHv2H,EAAG,mBAAqB42H,EAAc9mH,EAAU,KAChD9P,EAAG,SAAWu2H,EACdv2H,EAAG,OAASg3H,EACZh3H,EAAG,SAAWyyE,EACdvsC,EAASusC,CAAG,EAAIzyE,EAChB2O,EAAQ,iBAAiBkoH,EAAW72H,EAAI42H,CAAW,CACrD,CACA,SAASM,GAAcvoH,EAAS+0D,EAAQmzD,EAAW/mH,EAAS0mH,EAAoB,CAC9E,MAAMx2H,EAAKs2H,GAAY5yD,EAAOmzD,CAAS,EAAG/mH,EAAS0mH,CAAkB,EAChEx2H,IAGL2O,EAAQ,oBAAoBkoH,EAAW72H,EAAI,EAAQw2H,CAAmB,EACtE,OAAO9yD,EAAOmzD,CAAS,EAAE72H,EAAG,QAAQ,EACtC,CACA,SAASm3H,GAAyBxoH,EAAS+0D,EAAQmzD,EAAWnnH,EAAW,CACvE,MAAM0nH,EAAoB1zD,EAAOmzD,CAAS,GAAK,CAAE,EACjD,SAAW,CAACQ,EAAYlhH,CAAK,IAAK,OAAO,QAAQihH,CAAiB,EAC5DC,EAAW,SAAS3nH,CAAS,GAC/BwnH,GAAcvoH,EAAS+0D,EAAQmzD,EAAW1gH,EAAM,SAAUA,EAAM,kBAAkB,CAGxF,CACA,SAAS2gH,GAAa3gH,EAAO,CAE3B,OAAAA,EAAQA,EAAM,QAAQq/G,GAAgB,EAAE,EACjCI,GAAaz/G,CAAK,GAAKA,CAChC,CACA,MAAM+/G,EAAe,CACnB,GAAGvnH,EAASwH,EAAOrG,EAAS6mH,EAAoB,CAC9CI,GAAWpoH,EAASwH,EAAOrG,EAAS6mH,EAAoB,EAAK,CAC9D,EACD,IAAIhoH,EAASwH,EAAOrG,EAAS6mH,EAAoB,CAC/CI,GAAWpoH,EAASwH,EAAOrG,EAAS6mH,EAAoB,EAAI,CAC7D,EACD,IAAIhoH,EAAS+nH,EAAmB5mH,EAAS6mH,EAAoB,CAC3D,GAAI,OAAOD,GAAsB,UAAY,CAAC/nH,EAC5C,OAEF,KAAM,CAACioH,EAAaL,EAAUM,CAAS,EAAIJ,GAAoBC,EAAmB5mH,EAAS6mH,CAAkB,EACvGW,EAAcT,IAAcH,EAC5BhzD,EAASqyD,GAAiBpnH,CAAO,EACjCyoH,EAAoB1zD,EAAOmzD,CAAS,GAAK,CAAE,EAC3CU,EAAcb,EAAkB,WAAW,GAAG,EACpD,GAAI,OAAOH,EAAa,IAAa,CAEnC,GAAI,CAAC,OAAO,KAAKa,CAAiB,EAAE,OAClC,OAEFF,GAAcvoH,EAAS+0D,EAAQmzD,EAAWN,EAAUK,EAAc9mH,EAAU,IAAI,EAChF,MACN,CACI,GAAIynH,EACF,UAAWC,KAAgB,OAAO,KAAK9zD,CAAM,EAC3CyzD,GAAyBxoH,EAAS+0D,EAAQ8zD,EAAcd,EAAkB,MAAM,CAAC,CAAC,EAGtF,SAAW,CAACe,EAAathH,CAAK,IAAK,OAAO,QAAQihH,CAAiB,EAAG,CACpE,MAAMC,EAAaI,EAAY,QAAQhC,GAAe,EAAE,GACpD,CAAC6B,GAAeZ,EAAkB,SAASW,CAAU,IACvDH,GAAcvoH,EAAS+0D,EAAQmzD,EAAW1gH,EAAM,SAAUA,EAAM,kBAAkB,CAE1F,CACG,EACD,QAAQxH,EAASwH,EAAOkE,EAAM,CAC5B,GAAI,OAAOlE,GAAU,UAAY,CAACxH,EAChC,OAAO,KAET,MAAMy3D,EAAIouD,GAAW,EACfqC,EAAYC,GAAa3gH,CAAK,EAC9BmhH,EAAcnhH,IAAU0gH,EAC9B,IAAIa,EAAc,KACdxyF,EAAU,GACVyyF,EAAiB,GACjBp6F,EAAmB,GACnB+5F,GAAelxD,IACjBsxD,EAActxD,EAAE,MAAMjwD,EAAOkE,CAAI,EACjC+rD,EAAEz3D,CAAO,EAAE,QAAQ+oH,CAAW,EAC9BxyF,EAAU,CAACwyF,EAAY,qBAAsB,EAC7CC,EAAiB,CAACD,EAAY,8BAA+B,EAC7Dn6F,EAAmBm6F,EAAY,mBAAoB,GAErD,MAAMzwE,EAAMgvE,GAAW,IAAI,MAAM9/G,EAAO,CACtC,QAAA+uB,EACA,WAAY,EACb,CAAA,EAAG7qB,CAAI,EACR,OAAIkjB,GACF0pB,EAAI,eAAgB,EAElB0wE,GACFhpH,EAAQ,cAAcs4C,CAAG,EAEvBA,EAAI,kBAAoBywE,GAC1BA,EAAY,eAAgB,EAEvBzwE,CACX,CACA,EACA,SAASgvE,GAAWt9G,EAAK5C,EAAO,GAAI,CAClC,SAAW,CAAC1S,EAAKzC,CAAK,IAAK,OAAO,QAAQmV,CAAI,EAC5C,GAAI,CACF4C,EAAItV,CAAG,EAAIzC,CACZ,MAAiB,CAChB,OAAO,eAAe+X,EAAKtV,EAAK,CAC9B,aAAc,GACd,KAAM,CACJ,OAAOzC,CACjB,CACA,CAAO,CACP,CAEE,OAAO+X,CACT,CASA,SAASi/G,GAAch3H,EAAO,CAC5B,GAAIA,IAAU,OACZ,MAAO,GAET,GAAIA,IAAU,QACZ,MAAO,GAET,GAAIA,IAAU,OAAOA,CAAK,EAAE,SAAQ,EAClC,OAAO,OAAOA,CAAK,EAErB,GAAIA,IAAU,IAAMA,IAAU,OAC5B,OAAO,KAET,GAAI,OAAOA,GAAU,SACnB,OAAOA,EAET,GAAI,CACF,OAAO,KAAK,MAAM,mBAAmBA,CAAK,CAAC,CAC5C,MAAiB,CAChB,OAAOA,CACX,CACA,CACA,SAASi3H,GAAiBx0H,EAAK,CAC7B,OAAOA,EAAI,QAAQ,SAAUy0H,GAAO,IAAIA,EAAI,YAAa,CAAA,EAAE,CAC7D,CACA,MAAMC,GAAc,CAClB,iBAAiBppH,EAAStL,EAAKzC,EAAO,CACpC+N,EAAQ,aAAa,WAAWkpH,GAAiBx0H,CAAG,CAAC,GAAIzC,CAAK,CAC/D,EACD,oBAAoB+N,EAAStL,EAAK,CAChCsL,EAAQ,gBAAgB,WAAWkpH,GAAiBx0H,CAAG,CAAC,EAAE,CAC3D,EACD,kBAAkBsL,EAAS,CACzB,GAAI,CAACA,EACH,MAAO,CAAE,EAEX,MAAM2O,EAAa,CAAE,EACf06G,EAAS,OAAO,KAAKrpH,EAAQ,OAAO,EAAE,OAAOtL,GAAOA,EAAI,WAAW,IAAI,GAAK,CAACA,EAAI,WAAW,UAAU,CAAC,EAC7G,UAAWA,KAAO20H,EAAQ,CACxB,IAAIC,EAAU50H,EAAI,QAAQ,MAAO,EAAE,EACnC40H,EAAUA,EAAQ,OAAO,CAAC,EAAE,cAAgBA,EAAQ,MAAM,EAAGA,EAAQ,MAAM,EAC3E36G,EAAW26G,CAAO,EAAIL,GAAcjpH,EAAQ,QAAQtL,CAAG,CAAC,CAC9D,CACI,OAAOia,CACR,EACD,iBAAiB3O,EAAStL,EAAK,CAC7B,OAAOu0H,GAAcjpH,EAAQ,aAAa,WAAWkpH,GAAiBx0H,CAAG,CAAC,EAAE,CAAC,CACjF,CACA,EAcA,MAAMgqG,EAAO,CAEX,WAAW,SAAU,CACnB,MAAO,CAAE,CACb,CACE,WAAW,aAAc,CACvB,MAAO,CAAE,CACb,CACE,WAAW,MAAO,CAChB,MAAM,IAAI,MAAM,qEAAqE,CACzF,CACE,WAAWhnD,EAAQ,CACjB,OAAAA,EAAS,KAAK,gBAAgBA,CAAM,EACpCA,EAAS,KAAK,kBAAkBA,CAAM,EACtC,KAAK,iBAAiBA,CAAM,EACrBA,CACX,CACE,kBAAkBA,EAAQ,CACxB,OAAOA,CACX,CACE,gBAAgBA,EAAQ13C,EAAS,CAC/B,MAAMupH,EAAal7G,GAAUrO,CAAO,EAAIopH,GAAY,iBAAiBppH,EAAS,QAAQ,EAAI,GAE1F,MAAO,CACL,GAAG,KAAK,YAAY,QACpB,GAAI,OAAOupH,GAAe,SAAWA,EAAa,CAAA,EAClD,GAAIl7G,GAAUrO,CAAO,EAAIopH,GAAY,kBAAkBppH,CAAO,EAAI,GAClE,GAAI,OAAO03C,GAAW,SAAWA,EAAS,CAAE,CAC7C,CACL,CACE,iBAAiBA,EAAQ8xE,EAAc,KAAK,YAAY,YAAa,CACnE,SAAW,CAACxuH,EAAUyuH,CAAa,IAAK,OAAO,QAAQD,CAAW,EAAG,CACnE,MAAMv3H,EAAQylD,EAAO18C,CAAQ,EACvB0uH,EAAYr7G,GAAUpc,CAAK,EAAI,UAAY6yH,GAAO7yH,CAAK,EAC7D,GAAI,CAAC,IAAI,OAAOw3H,CAAa,EAAE,KAAKC,CAAS,EAC3C,MAAM,IAAI,UAAU,GAAG,KAAK,YAAY,KAAK,YAAW,CAAE,aAAa1uH,CAAQ,oBAAoB0uH,CAAS,wBAAwBD,CAAa,IAAI,CAE7J,CACA,CACA,CAcA,MAAMr4D,GAAU,QAMhB,MAAMu4D,WAAsBjrB,EAAO,CACjC,YAAY1+F,EAAS03C,EAAQ,CAC3B,MAAO,EACP13C,EAAU67B,GAAW77B,CAAO,EACvBA,IAGL,KAAK,SAAWA,EAChB,KAAK,QAAU,KAAK,WAAW03C,CAAM,EACrC8sE,GAAK,IAAI,KAAK,SAAU,KAAK,YAAY,SAAU,IAAI,EAC3D,CAGE,SAAU,CACRA,GAAK,OAAO,KAAK,SAAU,KAAK,YAAY,QAAQ,EACpD+C,EAAa,IAAI,KAAK,SAAU,KAAK,YAAY,SAAS,EAC1D,UAAWqC,KAAgB,OAAO,oBAAoB,IAAI,EACxD,KAAKA,CAAY,EAAI,IAE3B,CACE,eAAer1F,EAAUv0B,EAAS6pH,EAAa,GAAM,CACnDzD,GAAuB7xF,EAAUv0B,EAAS6pH,CAAU,CACxD,CACE,WAAWnyE,EAAQ,CACjB,OAAAA,EAAS,KAAK,gBAAgBA,EAAQ,KAAK,QAAQ,EACnDA,EAAS,KAAK,kBAAkBA,CAAM,EACtC,KAAK,iBAAiBA,CAAM,EACrBA,CACX,CAGE,OAAO,YAAY13C,EAAS,CAC1B,OAAOwkH,GAAK,IAAI3oF,GAAW77B,CAAO,EAAG,KAAK,QAAQ,CACtD,CACE,OAAO,oBAAoBA,EAAS03C,EAAS,GAAI,CAC/C,OAAO,KAAK,YAAY13C,CAAO,GAAK,IAAI,KAAKA,EAAS,OAAO03C,GAAW,SAAWA,EAAS,IAAI,CACpG,CACE,WAAW,SAAU,CACnB,OAAO0Z,EACX,CACE,WAAW,UAAW,CACpB,MAAO,MAAM,KAAK,IAAI,EAC1B,CACE,WAAW,WAAY,CACrB,MAAO,IAAI,KAAK,QAAQ,EAC5B,CACE,OAAO,UAAU30D,EAAM,CACrB,MAAO,GAAGA,CAAI,GAAG,KAAK,SAAS,EACnC,CACA,CASA,MAAMqtH,GAAc9pH,GAAW,CAC7B,IAAI+I,EAAW/I,EAAQ,aAAa,gBAAgB,EACpD,GAAI,CAAC+I,GAAYA,IAAa,IAAK,CACjC,IAAIghH,EAAgB/pH,EAAQ,aAAa,MAAM,EAM/C,GAAI,CAAC+pH,GAAiB,CAACA,EAAc,SAAS,GAAG,GAAK,CAACA,EAAc,WAAW,GAAG,EACjF,OAAO,KAILA,EAAc,SAAS,GAAG,GAAK,CAACA,EAAc,WAAW,GAAG,IAC9DA,EAAgB,IAAIA,EAAc,MAAM,GAAG,EAAE,CAAC,CAAC,IAEjDhhH,EAAWghH,GAAiBA,IAAkB,IAAMlF,GAAckF,EAAc,KAAM,CAAA,EAAI,IAC9F,CACE,OAAOhhH,CACT,EACMihH,GAAiB,CACrB,KAAKjhH,EAAU/I,EAAU,SAAS,gBAAiB,CACjD,MAAO,CAAE,EAAC,OAAO,GAAG,QAAQ,UAAU,iBAAiB,KAAKA,EAAS+I,CAAQ,CAAC,CAC/E,EACD,QAAQA,EAAU/I,EAAU,SAAS,gBAAiB,CACpD,OAAO,QAAQ,UAAU,cAAc,KAAKA,EAAS+I,CAAQ,CAC9D,EACD,SAAS/I,EAAS+I,EAAU,CAC1B,MAAO,GAAG,OAAO,GAAG/I,EAAQ,QAAQ,EAAE,OAAOhD,GAASA,EAAM,QAAQ+L,CAAQ,CAAC,CAC9E,EACD,QAAQ/I,EAAS+I,EAAU,CACzB,MAAMkhH,EAAU,CAAE,EAClB,IAAIC,EAAWlqH,EAAQ,WAAW,QAAQ+I,CAAQ,EAClD,KAAOmhH,GACLD,EAAQ,KAAKC,CAAQ,EACrBA,EAAWA,EAAS,WAAW,QAAQnhH,CAAQ,EAEjD,OAAOkhH,CACR,EACD,KAAKjqH,EAAS+I,EAAU,CACtB,IAAIwD,EAAWvM,EAAQ,uBACvB,KAAOuM,GAAU,CACf,GAAIA,EAAS,QAAQxD,CAAQ,EAC3B,MAAO,CAACwD,CAAQ,EAElBA,EAAWA,EAAS,sBAC1B,CACI,MAAO,CAAE,CACV,EAED,KAAKvM,EAAS+I,EAAU,CACtB,IAAI+B,EAAO9K,EAAQ,mBACnB,KAAO8K,GAAM,CACX,GAAIA,EAAK,QAAQ/B,CAAQ,EACvB,MAAO,CAAC+B,CAAI,EAEdA,EAAOA,EAAK,kBAClB,CACI,MAAO,CAAE,CACV,EACD,kBAAkB9K,EAAS,CACzB,MAAMmqH,EAAa,CAAC,IAAK,SAAU,QAAS,WAAY,SAAU,UAAW,aAAc,0BAA0B,EAAE,IAAIphH,GAAY,GAAGA,CAAQ,uBAAuB,EAAE,KAAK,GAAG,EACnL,OAAO,KAAK,KAAKohH,EAAYnqH,CAAO,EAAE,OAAOuD,GAAM,CAACmiH,GAAWniH,CAAE,GAAK+hH,GAAU/hH,CAAE,CAAC,CACpF,EACD,uBAAuBvD,EAAS,CAC9B,MAAM+I,EAAW+gH,GAAY9pH,CAAO,EACpC,OAAI+I,GACKihH,GAAe,QAAQjhH,CAAQ,EAAIA,EAErC,IACR,EACD,uBAAuB/I,EAAS,CAC9B,MAAM+I,EAAW+gH,GAAY9pH,CAAO,EACpC,OAAO+I,EAAWihH,GAAe,QAAQjhH,CAAQ,EAAI,IACtD,EACD,gCAAgC/I,EAAS,CACvC,MAAM+I,EAAW+gH,GAAY9pH,CAAO,EACpC,OAAO+I,EAAWihH,GAAe,KAAKjhH,CAAQ,EAAI,CAAE,CACxD,CACA,EASMqhH,GAAuB,CAACxkH,EAAW0/C,EAAS,SAAW,CAC3D,MAAM+kE,EAAa,gBAAgBzkH,EAAU,SAAS,GAChDnJ,EAAOmJ,EAAU,KACvB2hH,EAAa,GAAG,SAAU8C,EAAY,qBAAqB5tH,CAAI,KAAM,SAAU+K,EAAO,CAIpF,GAHI,CAAC,IAAK,MAAM,EAAE,SAAS,KAAK,OAAO,GACrCA,EAAM,eAAgB,EAEpBk+G,GAAW,IAAI,EACjB,OAEF,MAAM9pH,EAASouH,GAAe,uBAAuB,IAAI,GAAK,KAAK,QAAQ,IAAIvtH,CAAI,EAAE,EACpEmJ,EAAU,oBAAoBhK,CAAM,EAG5C0pD,CAAM,EAAG,CACtB,CAAG,CACH,EAcMglE,GAAS,QACTC,GAAa,WACbC,GAAc,IAAID,EAAU,GAC5BE,GAAc,QAAQD,EAAW,GACjCE,GAAe,SAASF,EAAW,GACnCG,GAAoB,OACpBC,GAAoB,OAM1B,MAAM/wF,WAAc8vF,EAAc,CAEhC,WAAW,MAAO,CAChB,OAAOW,EACX,CAGE,OAAQ,CAEN,GADmB/C,EAAa,QAAQ,KAAK,SAAUkD,EAAW,EACnD,iBACb,OAEF,KAAK,SAAS,UAAU,OAAOG,EAAiB,EAChD,MAAMf,EAAa,KAAK,SAAS,UAAU,SAASc,EAAiB,EACrE,KAAK,eAAe,IAAM,KAAK,gBAAe,EAAI,KAAK,SAAUd,CAAU,CAC/E,CAGE,iBAAkB,CAChB,KAAK,SAAS,OAAQ,EACtBtC,EAAa,QAAQ,KAAK,SAAUmD,EAAY,EAChD,KAAK,QAAS,CAClB,CAGE,OAAO,gBAAgBhzE,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM7zC,EAAOg2B,GAAM,oBAAoB,IAAI,EAC3C,GAAI,OAAO6d,GAAW,SAGtB,IAAI7zC,EAAK6zC,CAAM,IAAM,QAAaA,EAAO,WAAW,GAAG,GAAKA,IAAW,cACrE,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAEnD7zC,EAAK6zC,CAAM,EAAE,IAAI,EACvB,CAAK,CACL,CACA,CAMA0yE,GAAqBvwF,GAAO,OAAO,EAMnCmsF,GAAmBnsF,EAAK,EAcxB,MAAMgxF,GAAS,SACTC,GAAa,YACbC,GAAc,IAAID,EAAU,GAC5BE,GAAiB,YACjBC,GAAsB,SACtBC,GAAyB,4BACzBC,GAAyB,QAAQJ,EAAW,GAAGC,EAAc,GAMnE,MAAM/iH,WAAe0hH,EAAc,CAEjC,WAAW,MAAO,CAChB,OAAOkB,EACX,CAGE,QAAS,CAEP,KAAK,SAAS,aAAa,eAAgB,KAAK,SAAS,UAAU,OAAOI,EAAmB,CAAC,CAClG,CAGE,OAAO,gBAAgBvzE,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM7zC,EAAOoE,GAAO,oBAAoB,IAAI,EACxCyvC,IAAW,UACb7zC,EAAK6zC,CAAM,EAAG,CAEtB,CAAK,CACL,CACA,CAMA6vE,EAAa,GAAG,SAAU4D,GAAwBD,GAAwB1jH,GAAS,CACjFA,EAAM,eAAgB,EACtB,MAAM4jH,EAAS5jH,EAAM,OAAO,QAAQ0jH,EAAsB,EAC7CjjH,GAAO,oBAAoBmjH,CAAM,EACzC,OAAQ,CACf,CAAC,EAMDpF,GAAmB/9G,EAAM,EAczB,MAAMojH,GAAS,QACTC,GAAc,YACdC,GAAmB,aAAaD,EAAW,GAC3CE,GAAkB,YAAYF,EAAW,GACzCG,GAAiB,WAAWH,EAAW,GACvCI,GAAoB,cAAcJ,EAAW,GAC7CK,GAAkB,YAAYL,EAAW,GACzCM,GAAqB,QACrBC,GAAmB,MACnBC,GAA2B,gBAC3BC,GAAkB,GAClBC,GAAY,CAChB,YAAa,KACb,aAAc,KACd,cAAe,IACjB,EACMC,GAAgB,CACpB,YAAa,kBACb,aAAc,kBACd,cAAe,iBACjB,EAMA,MAAMC,WAAcxtB,EAAO,CACzB,YAAY1+F,EAAS03C,EAAQ,CAC3B,MAAO,EACP,KAAK,SAAW13C,EACZ,GAACA,GAAW,CAACksH,GAAM,YAAW,KAGlC,KAAK,QAAU,KAAK,WAAWx0E,CAAM,EACrC,KAAK,QAAU,EACf,KAAK,sBAAwB,EAAQ,OAAO,aAC5C,KAAK,YAAa,EACtB,CAGE,WAAW,SAAU,CACnB,OAAOs0E,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOZ,EACX,CAGE,SAAU,CACR9D,EAAa,IAAI,KAAK,SAAU+D,EAAW,CAC/C,CAGE,OAAO9jH,EAAO,CACZ,GAAI,CAAC,KAAK,sBAAuB,CAC/B,KAAK,QAAUA,EAAM,QAAQ,CAAC,EAAE,QAChC,MACN,CACQ,KAAK,wBAAwBA,CAAK,IACpC,KAAK,QAAUA,EAAM,QAE3B,CACE,KAAKA,EAAO,CACN,KAAK,wBAAwBA,CAAK,IACpC,KAAK,QAAUA,EAAM,QAAU,KAAK,SAEtC,KAAK,aAAc,EACnB0+G,GAAQ,KAAK,QAAQ,WAAW,CACpC,CACE,MAAM1+G,EAAO,CACX,KAAK,QAAUA,EAAM,SAAWA,EAAM,QAAQ,OAAS,EAAI,EAAIA,EAAM,QAAQ,CAAC,EAAE,QAAU,KAAK,OACnG,CACE,cAAe,CACb,MAAM2kH,EAAY,KAAK,IAAI,KAAK,OAAO,EACvC,GAAIA,GAAaJ,GACf,OAEF,MAAMjsF,EAAYqsF,EAAY,KAAK,QACnC,KAAK,QAAU,EACVrsF,GAGLomF,GAAQpmF,EAAY,EAAI,KAAK,QAAQ,cAAgB,KAAK,QAAQ,YAAY,CAClF,CACE,aAAc,CACR,KAAK,uBACPynF,EAAa,GAAG,KAAK,SAAUmE,GAAmBlkH,GAAS,KAAK,OAAOA,CAAK,CAAC,EAC7E+/G,EAAa,GAAG,KAAK,SAAUoE,GAAiBnkH,GAAS,KAAK,KAAKA,CAAK,CAAC,EACzE,KAAK,SAAS,UAAU,IAAIskH,EAAwB,IAEpDvE,EAAa,GAAG,KAAK,SAAUgE,GAAkB/jH,GAAS,KAAK,OAAOA,CAAK,CAAC,EAC5E+/G,EAAa,GAAG,KAAK,SAAUiE,GAAiBhkH,GAAS,KAAK,MAAMA,CAAK,CAAC,EAC1E+/G,EAAa,GAAG,KAAK,SAAUkE,GAAgBjkH,GAAS,KAAK,KAAKA,CAAK,CAAC,EAE9E,CACE,wBAAwBA,EAAO,CAC7B,OAAO,KAAK,wBAA0BA,EAAM,cAAgBqkH,IAAoBrkH,EAAM,cAAgBokH,GAC1G,CAGE,OAAO,aAAc,CACnB,MAAO,iBAAkB,SAAS,iBAAmB,UAAU,eAAiB,CACpF,CACA,CAcA,MAAMQ,GAAS,WACTC,GAAa,cACbC,GAAc,IAAID,EAAU,GAC5BE,GAAiB,YACjBC,GAAmB,YACnBC,GAAoB,aACpBC,GAAyB,IAEzBC,GAAa,OACbC,GAAa,OACbC,GAAiB,OACjBC,GAAkB,QAClBC,GAAc,QAAQT,EAAW,GACjCU,GAAa,OAAOV,EAAW,GAC/BW,GAAkB,UAAUX,EAAW,GACvCY,GAAqB,aAAaZ,EAAW,GAC7Ca,GAAqB,aAAab,EAAW,GAC7Cc,GAAmB,YAAYd,EAAW,GAC1Ce,GAAwB,OAAOf,EAAW,GAAGC,EAAc,GAC3De,GAAyB,QAAQhB,EAAW,GAAGC,EAAc,GAC7DgB,GAAsB,WACtBC,GAAsB,SACtBC,GAAmB,QACnBC,GAAiB,oBACjBC,GAAmB,sBACnBC,GAAkB,qBAClBC,GAAkB,qBAClBC,GAAkB,UAClBC,GAAgB,iBAChBC,GAAuBF,GAAkBC,GACzCE,GAAoB,qBACpBC,GAAsB,uBACtBC,GAAsB,sCACtBC,GAAqB,4BACrBC,GAAmB,CACvB,CAAC7B,EAAgB,EAAGM,GACpB,CAACL,EAAiB,EAAGI,EACvB,EACMyB,GAAY,CAChB,SAAU,IACV,SAAU,GACV,MAAO,QACP,KAAM,GACN,MAAO,GACP,KAAM,EACR,EACMC,GAAgB,CACpB,SAAU,mBAEV,SAAU,UACV,MAAO,mBACP,KAAM,mBACN,MAAO,UACP,KAAM,SACR,EAMA,MAAMC,WAAiB7E,EAAc,CACnC,YAAY3pH,EAAS03C,EAAQ,CAC3B,MAAM13C,EAAS03C,CAAM,EACrB,KAAK,UAAY,KACjB,KAAK,eAAiB,KACtB,KAAK,WAAa,GAClB,KAAK,aAAe,KACpB,KAAK,aAAe,KACpB,KAAK,mBAAqBsyE,GAAe,QAAQkE,GAAqB,KAAK,QAAQ,EACnF,KAAK,mBAAoB,EACrB,KAAK,QAAQ,OAASX,IACxB,KAAK,MAAO,CAElB,CAGE,WAAW,SAAU,CACnB,OAAOe,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOnC,EACX,CAGE,MAAO,CACL,KAAK,OAAOO,EAAU,CAC1B,CACE,iBAAkB,CAIZ,CAAC,SAAS,QAAUrH,GAAU,KAAK,QAAQ,GAC7C,KAAK,KAAM,CAEjB,CACE,MAAO,CACL,KAAK,OAAOsH,EAAU,CAC1B,CACE,OAAQ,CACF,KAAK,YACPvH,GAAqB,KAAK,QAAQ,EAEpC,KAAK,eAAgB,CACzB,CACE,OAAQ,CACN,KAAK,eAAgB,EACrB,KAAK,gBAAiB,EACtB,KAAK,UAAY,YAAY,IAAM,KAAK,kBAAmB,KAAK,QAAQ,QAAQ,CACpF,CACE,mBAAoB,CAClB,GAAK,KAAK,QAAQ,KAGlB,IAAI,KAAK,WAAY,CACnBkC,EAAa,IAAI,KAAK,SAAUyF,GAAY,IAAM,KAAK,OAAO,EAC9D,MACN,CACI,KAAK,MAAO,EAChB,CACE,GAAGn0H,EAAO,CACR,MAAMW,EAAQ,KAAK,UAAW,EAC9B,GAAIX,EAAQW,EAAM,OAAS,GAAKX,EAAQ,EACtC,OAEF,GAAI,KAAK,WAAY,CACnB0uH,EAAa,IAAI,KAAK,SAAUyF,GAAY,IAAM,KAAK,GAAGn0H,CAAK,CAAC,EAChE,MACN,CACI,MAAM41H,EAAc,KAAK,cAAc,KAAK,WAAU,CAAE,EACxD,GAAIA,IAAgB51H,EAClB,OAEF,MAAMynB,EAAQznB,EAAQ41H,EAAc9B,GAAaC,GACjD,KAAK,OAAOtsG,EAAO9mB,EAAMX,CAAK,CAAC,CACnC,CACE,SAAU,CACJ,KAAK,cACP,KAAK,aAAa,QAAS,EAE7B,MAAM,QAAS,CACnB,CAGE,kBAAkB6+C,EAAQ,CACxB,OAAAA,EAAO,gBAAkBA,EAAO,SACzBA,CACX,CACE,oBAAqB,CACf,KAAK,QAAQ,UACf6vE,EAAa,GAAG,KAAK,SAAU0F,GAAiBzlH,GAAS,KAAK,SAASA,CAAK,CAAC,EAE3E,KAAK,QAAQ,QAAU,UACzB+/G,EAAa,GAAG,KAAK,SAAU2F,GAAoB,IAAM,KAAK,OAAO,EACrE3F,EAAa,GAAG,KAAK,SAAU4F,GAAoB,IAAM,KAAK,mBAAmB,GAE/E,KAAK,QAAQ,OAASjB,GAAM,YAAW,GACzC,KAAK,wBAAyB,CAEpC,CACE,yBAA0B,CACxB,UAAWwC,KAAO1E,GAAe,KAAKiE,GAAmB,KAAK,QAAQ,EACpE1G,EAAa,GAAGmH,EAAKtB,GAAkB5lH,GAASA,EAAM,gBAAgB,EAqBxE,MAAMmnH,EAAc,CAClB,aAAc,IAAM,KAAK,OAAO,KAAK,kBAAkB9B,EAAc,CAAC,EACtE,cAAe,IAAM,KAAK,OAAO,KAAK,kBAAkBC,EAAe,CAAC,EACxE,YAtBkB,IAAM,CACpB,KAAK,QAAQ,QAAU,UAY3B,KAAK,MAAO,EACR,KAAK,cACP,aAAa,KAAK,YAAY,EAEhC,KAAK,aAAe,WAAW,IAAM,KAAK,kBAAmB,EAAEJ,GAAyB,KAAK,QAAQ,QAAQ,EAC9G,CAKA,EACD,KAAK,aAAe,IAAIR,GAAM,KAAK,SAAUyC,CAAW,CAC5D,CACE,SAASnnH,EAAO,CACd,GAAI,kBAAkB,KAAKA,EAAM,OAAO,OAAO,EAC7C,OAEF,MAAMs4B,EAAYuuF,GAAiB7mH,EAAM,GAAG,EACxCs4B,IACFt4B,EAAM,eAAgB,EACtB,KAAK,OAAO,KAAK,kBAAkBs4B,CAAS,CAAC,EAEnD,CACE,cAAc9/B,EAAS,CACrB,OAAO,KAAK,YAAY,QAAQA,CAAO,CAC3C,CACE,2BAA2BnH,EAAO,CAChC,GAAI,CAAC,KAAK,mBACR,OAEF,MAAM+1H,EAAkB5E,GAAe,QAAQ8D,GAAiB,KAAK,kBAAkB,EACvFc,EAAgB,UAAU,OAAOpB,EAAmB,EACpDoB,EAAgB,gBAAgB,cAAc,EAC9C,MAAMC,EAAqB7E,GAAe,QAAQ,sBAAsBnxH,CAAK,KAAM,KAAK,kBAAkB,EACtGg2H,IACFA,EAAmB,UAAU,IAAIrB,EAAmB,EACpDqB,EAAmB,aAAa,eAAgB,MAAM,EAE5D,CACE,iBAAkB,CAChB,MAAM7uH,EAAU,KAAK,gBAAkB,KAAK,WAAY,EACxD,GAAI,CAACA,EACH,OAEF,MAAM8uH,EAAkB,OAAO,SAAS9uH,EAAQ,aAAa,kBAAkB,EAAG,EAAE,EACpF,KAAK,QAAQ,SAAW8uH,GAAmB,KAAK,QAAQ,eAC5D,CACE,OAAOxuG,EAAOtgB,EAAU,KAAM,CAC5B,GAAI,KAAK,WACP,OAEF,MAAMopB,EAAgB,KAAK,WAAY,EACjC2lG,EAASzuG,IAAUqsG,GACnBqC,EAAchvH,GAAWwmH,GAAqB,KAAK,YAAap9F,EAAe2lG,EAAQ,KAAK,QAAQ,IAAI,EAC9G,GAAIC,IAAgB5lG,EAClB,OAEF,MAAM6lG,EAAmB,KAAK,cAAcD,CAAW,EACjD14F,EAAentB,GACZo+G,EAAa,QAAQ,KAAK,SAAUp+G,EAAW,CACpD,cAAe6lH,EACf,UAAW,KAAK,kBAAkB1uG,CAAK,EACvC,KAAM,KAAK,cAAc8I,CAAa,EACtC,GAAI6lG,CACZ,CAAO,EAMH,GAJmB34F,EAAay2F,EAAW,EAC5B,kBAGX,CAAC3jG,GAAiB,CAAC4lG,EAGrB,OAEF,MAAME,EAAY,EAAQ,KAAK,UAC/B,KAAK,MAAO,EACZ,KAAK,WAAa,GAClB,KAAK,2BAA2BD,CAAgB,EAChD,KAAK,eAAiBD,EACtB,MAAMG,EAAuBJ,EAASpB,GAAmBD,GACnD0B,EAAiBL,EAASnB,GAAkBC,GAClDmB,EAAY,UAAU,IAAII,CAAc,EACxCxJ,GAAOoJ,CAAW,EAClB5lG,EAAc,UAAU,IAAI+lG,CAAoB,EAChDH,EAAY,UAAU,IAAIG,CAAoB,EAC9C,MAAME,EAAmB,IAAM,CAC7BL,EAAY,UAAU,OAAOG,EAAsBC,CAAc,EACjEJ,EAAY,UAAU,IAAIxB,EAAmB,EAC7CpkG,EAAc,UAAU,OAAOokG,GAAqB4B,EAAgBD,CAAoB,EACxF,KAAK,WAAa,GAClB74F,EAAa02F,EAAU,CACxB,EACD,KAAK,eAAeqC,EAAkBjmG,EAAe,KAAK,YAAW,CAAE,EACnE8lG,GACF,KAAK,MAAO,CAElB,CACE,aAAc,CACZ,OAAO,KAAK,SAAS,UAAU,SAASzB,EAAgB,CAC5D,CACE,YAAa,CACX,OAAOzD,GAAe,QAAQgE,GAAsB,KAAK,QAAQ,CACrE,CACE,WAAY,CACV,OAAOhE,GAAe,KAAK+D,GAAe,KAAK,QAAQ,CAC3D,CACE,gBAAiB,CACX,KAAK,YACP,cAAc,KAAK,SAAS,EAC5B,KAAK,UAAY,KAEvB,CACE,kBAAkBjuF,EAAW,CAC3B,OAAItU,GAAK,EACAsU,IAAc+sF,GAAiBD,GAAaD,GAE9C7sF,IAAc+sF,GAAiBF,GAAaC,EACvD,CACE,kBAAkBtsG,EAAO,CACvB,OAAIkL,GAAK,EACAlL,IAAUssG,GAAaC,GAAiBC,GAE1CxsG,IAAUssG,GAAaE,GAAkBD,EACpD,CAGE,OAAO,gBAAgBn1E,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM7zC,EAAO2qH,GAAS,oBAAoB,KAAM92E,CAAM,EACtD,GAAI,OAAOA,GAAW,SAAU,CAC9B7zC,EAAK,GAAG6zC,CAAM,EACd,MACR,CACM,GAAI,OAAOA,GAAW,SAAU,CAC9B,GAAI7zC,EAAK6zC,CAAM,IAAM,QAAaA,EAAO,WAAW,GAAG,GAAKA,IAAW,cACrE,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAEnD7zC,EAAK6zC,CAAM,EAAG,CACtB,CACA,CAAK,CACL,CACA,CAMA6vE,EAAa,GAAG,SAAU+F,GAAwBa,GAAqB,SAAU3mH,EAAO,CACtF,MAAM5L,EAASouH,GAAe,uBAAuB,IAAI,EACzD,GAAI,CAACpuH,GAAU,CAACA,EAAO,UAAU,SAAS2xH,EAAmB,EAC3D,OAEF/lH,EAAM,eAAgB,EACtB,MAAM8nH,EAAWd,GAAS,oBAAoB5yH,CAAM,EAC9C2zH,EAAa,KAAK,aAAa,kBAAkB,EACvD,GAAIA,EAAY,CACdD,EAAS,GAAGC,CAAU,EACtBD,EAAS,kBAAmB,EAC5B,MACJ,CACE,GAAIlG,GAAY,iBAAiB,KAAM,OAAO,IAAM,OAAQ,CAC1DkG,EAAS,KAAM,EACfA,EAAS,kBAAmB,EAC5B,MACJ,CACEA,EAAS,KAAM,EACfA,EAAS,kBAAmB,CAC9B,CAAC,EACD/H,EAAa,GAAG,OAAQ8F,GAAuB,IAAM,CACnD,MAAMmC,EAAYxF,GAAe,KAAKoE,EAAkB,EACxD,UAAWkB,KAAYE,EACrBhB,GAAS,oBAAoBc,CAAQ,CAEzC,CAAC,EAMDtJ,GAAmBwI,EAAQ,EAc3B,MAAMiB,GAAS,WACTC,GAAa,cACbC,GAAc,IAAID,EAAU,GAC5BE,GAAiB,YACjBC,GAAe,OAAOF,EAAW,GACjCG,GAAgB,QAAQH,EAAW,GACnCI,GAAe,OAAOJ,EAAW,GACjCK,GAAiB,SAASL,EAAW,GACrCM,GAAyB,QAAQN,EAAW,GAAGC,EAAc,GAC7DM,GAAoB,OACpBC,GAAsB,WACtBC,GAAwB,aACxBC,GAAuB,YACvBC,GAA6B,WAAWH,EAAmB,KAAKA,EAAmB,GACnFI,GAAwB,sBACxBC,GAAQ,QACRC,GAAS,SACTC,GAAmB,uCACnBC,GAAyB,8BACzBC,GAAY,CAChB,OAAQ,KACR,OAAQ,EACV,EACMC,GAAgB,CACpB,OAAQ,iBACR,OAAQ,SACV,EAMA,MAAM14F,WAAiBwxF,EAAc,CACnC,YAAY3pH,EAAS03C,EAAQ,CAC3B,MAAM13C,EAAS03C,CAAM,EACrB,KAAK,iBAAmB,GACxB,KAAK,cAAgB,CAAE,EACvB,MAAMo5E,EAAa9G,GAAe,KAAK2G,EAAsB,EAC7D,UAAW/4F,KAAQk5F,EAAY,CAC7B,MAAM/nH,EAAWihH,GAAe,uBAAuBpyF,CAAI,EACrDm5F,EAAgB/G,GAAe,KAAKjhH,CAAQ,EAAE,OAAOioH,GAAgBA,IAAiB,KAAK,QAAQ,EACrGjoH,IAAa,MAAQgoH,EAAc,QACrC,KAAK,cAAc,KAAKn5F,CAAI,CAEpC,CACI,KAAK,oBAAqB,EACrB,KAAK,QAAQ,QAChB,KAAK,0BAA0B,KAAK,cAAe,KAAK,SAAQ,CAAE,EAEhE,KAAK,QAAQ,QACf,KAAK,OAAQ,CAEnB,CAGE,WAAW,SAAU,CACnB,OAAOg5F,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOpB,EACX,CAGE,QAAS,CACH,KAAK,WACP,KAAK,KAAM,EAEX,KAAK,KAAM,CAEjB,CACE,MAAO,CACL,GAAI,KAAK,kBAAoB,KAAK,SAAQ,EACxC,OAEF,IAAIwB,EAAiB,CAAE,EAYvB,GATI,KAAK,QAAQ,SACfA,EAAiB,KAAK,uBAAuBP,EAAgB,EAAE,OAAO1wH,GAAWA,IAAY,KAAK,QAAQ,EAAE,IAAIA,GAAWm4B,GAAS,oBAAoBn4B,EAAS,CAC/J,OAAQ,EAChB,CAAO,CAAC,GAEAixH,EAAe,QAAUA,EAAe,CAAC,EAAE,kBAG5B1J,EAAa,QAAQ,KAAK,SAAUsI,EAAY,EACpD,iBACb,OAEF,UAAWqB,KAAkBD,EAC3BC,EAAe,KAAM,EAEvB,MAAMv5F,EAAY,KAAK,cAAe,EACtC,KAAK,SAAS,UAAU,OAAOw4F,EAAmB,EAClD,KAAK,SAAS,UAAU,IAAIC,EAAqB,EACjD,KAAK,SAAS,MAAMz4F,CAAS,EAAI,EACjC,KAAK,0BAA0B,KAAK,cAAe,EAAI,EACvD,KAAK,iBAAmB,GACxB,MAAMw5F,EAAW,IAAM,CACrB,KAAK,iBAAmB,GACxB,KAAK,SAAS,UAAU,OAAOf,EAAqB,EACpD,KAAK,SAAS,UAAU,IAAID,GAAqBD,EAAiB,EAClE,KAAK,SAAS,MAAMv4F,CAAS,EAAI,GACjC4vF,EAAa,QAAQ,KAAK,SAAUuI,EAAa,CAClD,EAEKsB,EAAa,SADUz5F,EAAU,CAAC,EAAE,YAAW,EAAKA,EAAU,MAAM,CAAC,CAC3B,GAChD,KAAK,eAAew5F,EAAU,KAAK,SAAU,EAAI,EACjD,KAAK,SAAS,MAAMx5F,CAAS,EAAI,GAAG,KAAK,SAASy5F,CAAU,CAAC,IACjE,CACE,MAAO,CAKL,GAJI,KAAK,kBAAoB,CAAC,KAAK,SAAQ,GAGxB7J,EAAa,QAAQ,KAAK,SAAUwI,EAAY,EACpD,iBACb,OAEF,MAAMp4F,EAAY,KAAK,cAAe,EACtC,KAAK,SAAS,MAAMA,CAAS,EAAI,GAAG,KAAK,SAAS,sBAAqB,EAAGA,CAAS,CAAC,KACpFiuF,GAAO,KAAK,QAAQ,EACpB,KAAK,SAAS,UAAU,IAAIwK,EAAqB,EACjD,KAAK,SAAS,UAAU,OAAOD,GAAqBD,EAAiB,EACrE,UAAW77H,KAAW,KAAK,cAAe,CACxC,MAAM2L,EAAUgqH,GAAe,uBAAuB31H,CAAO,EACzD2L,GAAW,CAAC,KAAK,SAASA,CAAO,GACnC,KAAK,0BAA0B,CAAC3L,CAAO,EAAG,EAAK,CAEvD,CACI,KAAK,iBAAmB,GACxB,MAAM88H,EAAW,IAAM,CACrB,KAAK,iBAAmB,GACxB,KAAK,SAAS,UAAU,OAAOf,EAAqB,EACpD,KAAK,SAAS,UAAU,IAAID,EAAmB,EAC/C5I,EAAa,QAAQ,KAAK,SAAUyI,EAAc,CACnD,EACD,KAAK,SAAS,MAAMr4F,CAAS,EAAI,GACjC,KAAK,eAAew5F,EAAU,KAAK,SAAU,EAAI,CACrD,CACE,SAASnxH,EAAU,KAAK,SAAU,CAChC,OAAOA,EAAQ,UAAU,SAASkwH,EAAiB,CACvD,CAGE,kBAAkBx4E,EAAQ,CACxB,OAAAA,EAAO,OAAS,EAAQA,EAAO,OAC/BA,EAAO,OAAS7b,GAAW6b,EAAO,MAAM,EACjCA,CACX,CACE,eAAgB,CACd,OAAO,KAAK,SAAS,UAAU,SAAS64E,EAAqB,EAAIC,GAAQC,EAC7E,CACE,qBAAsB,CACpB,GAAI,CAAC,KAAK,QAAQ,OAChB,OAEF,MAAMx5H,EAAW,KAAK,uBAAuB05H,EAAsB,EACnE,UAAW3wH,KAAW/I,EAAU,CAC9B,MAAMqtH,EAAW0F,GAAe,uBAAuBhqH,CAAO,EAC1DskH,GACF,KAAK,0BAA0B,CAACtkH,CAAO,EAAG,KAAK,SAASskH,CAAQ,CAAC,CAEzE,CACA,CACE,uBAAuBv7G,EAAU,CAC/B,MAAM9R,EAAW+yH,GAAe,KAAKsG,GAA4B,KAAK,QAAQ,MAAM,EAEpF,OAAOtG,GAAe,KAAKjhH,EAAU,KAAK,QAAQ,MAAM,EAAE,OAAO/I,GAAW,CAAC/I,EAAS,SAAS+I,CAAO,CAAC,CAC3G,CACE,0BAA0BqxH,EAAcC,EAAQ,CAC9C,GAAKD,EAAa,OAGlB,UAAWrxH,KAAWqxH,EACpBrxH,EAAQ,UAAU,OAAOqwH,GAAsB,CAACiB,CAAM,EACtDtxH,EAAQ,aAAa,gBAAiBsxH,CAAM,CAElD,CAGE,OAAO,gBAAgB55E,EAAQ,CAC7B,MAAMkV,EAAU,CAAE,EAClB,OAAI,OAAOlV,GAAW,UAAY,YAAY,KAAKA,CAAM,IACvDkV,EAAQ,OAAS,IAEZ,KAAK,KAAK,UAAY,CAC3B,MAAM/oD,EAAOs0B,GAAS,oBAAoB,KAAMy0B,CAAO,EACvD,GAAI,OAAOlV,GAAW,SAAU,CAC9B,GAAI,OAAO7zC,EAAK6zC,CAAM,EAAM,IAC1B,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAEnD7zC,EAAK6zC,CAAM,EAAG,CACtB,CACA,CAAK,CACL,CACA,CAMA6vE,EAAa,GAAG,SAAU0I,GAAwBU,GAAwB,SAAUnpH,EAAO,EAErFA,EAAM,OAAO,UAAY,KAAOA,EAAM,gBAAkBA,EAAM,eAAe,UAAY,MAC3FA,EAAM,eAAgB,EAExB,UAAWxH,KAAWgqH,GAAe,gCAAgC,IAAI,EACvE7xF,GAAS,oBAAoBn4B,EAAS,CACpC,OAAQ,EACT,CAAA,EAAE,OAAQ,CAEf,CAAC,EAMDgmH,GAAmB7tF,EAAQ,EAc3B,MAAMo5F,GAAS,WACTC,GAAa,cACbC,GAAc,IAAID,EAAU,GAC5BE,GAAiB,YACjBC,GAAe,SACfC,GAAY,MACZC,GAAiB,UACjBC,GAAmB,YACnBC,GAAqB,EAErBC,GAAe,OAAOP,EAAW,GACjCQ,GAAiB,SAASR,EAAW,GACrCS,GAAe,OAAOT,EAAW,GACjCU,GAAgB,QAAQV,EAAW,GACnCW,GAAyB,QAAQX,EAAW,GAAGC,EAAc,GAC7DW,GAAyB,UAAUZ,EAAW,GAAGC,EAAc,GAC/DY,GAAuB,QAAQb,EAAW,GAAGC,EAAc,GAC3Da,GAAoB,OACpBC,GAAoB,SACpBC,GAAqB,UACrBC,GAAuB,YACvBC,GAA2B,gBAC3BC,GAA6B,kBAC7BC,GAAyB,4DACzBC,GAA6B,GAAGD,EAAsB,IAAIN,EAAiB,GAC3EQ,GAAgB,iBAChBC,GAAkB,UAClBC,GAAsB,cACtBC,GAAyB,8DACzBC,GAAgB3nG,KAAU,UAAY,YACtC4nG,GAAmB5nG,KAAU,YAAc,UAC3C6nG,GAAmB7nG,KAAU,aAAe,eAC5C8nG,GAAsB9nG,KAAU,eAAiB,aACjD+nG,GAAkB/nG,KAAU,aAAe,cAC3CgoG,GAAiBhoG,KAAU,cAAgB,aAC3CioG,GAAsB,MACtBC,GAAyB,SACzBC,GAAY,CAChB,UAAW,GACX,SAAU,kBACV,QAAS,UACT,OAAQ,CAAC,EAAG,CAAC,EACb,aAAc,KACd,UAAW,QACb,EACMC,GAAgB,CACpB,UAAW,mBACX,SAAU,mBACV,QAAS,SACT,OAAQ,0BACR,aAAc,yBACd,UAAW,yBACb,EAMA,MAAMjrG,WAAiBghG,EAAc,CACnC,YAAY3pH,EAAS03C,EAAQ,CAC3B,MAAM13C,EAAS03C,CAAM,EACrB,KAAK,QAAU,KACf,KAAK,QAAU,KAAK,SAAS,WAE7B,KAAK,MAAQsyE,GAAe,KAAK,KAAK,SAAU+I,EAAa,EAAE,CAAC,GAAK/I,GAAe,KAAK,KAAK,SAAU+I,EAAa,EAAE,CAAC,GAAK/I,GAAe,QAAQ+I,GAAe,KAAK,OAAO,EAC/K,KAAK,UAAY,KAAK,cAAe,CACzC,CAGE,WAAW,SAAU,CACnB,OAAOY,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOrC,EACX,CAGE,QAAS,CACP,OAAO,KAAK,WAAa,KAAK,KAAM,EAAG,KAAK,KAAM,CACtD,CACE,MAAO,CACL,GAAI7L,GAAW,KAAK,QAAQ,GAAK,KAAK,SAAQ,EAC5C,OAEF,MAAMmO,EAAgB,CACpB,cAAe,KAAK,QACrB,EAED,GAAI,CADctM,EAAa,QAAQ,KAAK,SAAU2K,GAAc2B,CAAa,EACnE,iBASd,IANA,KAAK,cAAe,EAMhB,iBAAkB,SAAS,iBAAmB,CAAC,KAAK,QAAQ,QAAQZ,EAAmB,EACzF,UAAWjzH,IAAW,GAAG,OAAO,GAAG,SAAS,KAAK,QAAQ,EACvDunH,EAAa,GAAGvnH,EAAS,YAAa+jB,EAAI,EAG9C,KAAK,SAAS,MAAO,EACrB,KAAK,SAAS,aAAa,gBAAiB,EAAI,EAChD,KAAK,MAAM,UAAU,IAAIwuG,EAAiB,EAC1C,KAAK,SAAS,UAAU,IAAIA,EAAiB,EAC7ChL,EAAa,QAAQ,KAAK,SAAU4K,GAAe0B,CAAa,EACpE,CACE,MAAO,CACL,GAAInO,GAAW,KAAK,QAAQ,GAAK,CAAC,KAAK,WACrC,OAEF,MAAMmO,EAAgB,CACpB,cAAe,KAAK,QACrB,EACD,KAAK,cAAcA,CAAa,CACpC,CACE,SAAU,CACJ,KAAK,SACP,KAAK,QAAQ,QAAS,EAExB,MAAM,QAAS,CACnB,CACE,QAAS,CACP,KAAK,UAAY,KAAK,cAAe,EACjC,KAAK,SACP,KAAK,QAAQ,OAAQ,CAE3B,CAGE,cAAcA,EAAe,CAE3B,GAAI,CADctM,EAAa,QAAQ,KAAK,SAAUyK,GAAc6B,CAAa,EACnE,iBAMd,IAAI,iBAAkB,SAAS,gBAC7B,UAAW7zH,IAAW,GAAG,OAAO,GAAG,SAAS,KAAK,QAAQ,EACvDunH,EAAa,IAAIvnH,EAAS,YAAa+jB,EAAI,EAG3C,KAAK,SACP,KAAK,QAAQ,QAAS,EAExB,KAAK,MAAM,UAAU,OAAOwuG,EAAiB,EAC7C,KAAK,SAAS,UAAU,OAAOA,EAAiB,EAChD,KAAK,SAAS,aAAa,gBAAiB,OAAO,EACnDnJ,GAAY,oBAAoB,KAAK,MAAO,QAAQ,EACpD7B,EAAa,QAAQ,KAAK,SAAU0K,GAAgB4B,CAAa,EACrE,CACE,WAAWn8E,EAAQ,CAEjB,GADAA,EAAS,MAAM,WAAWA,CAAM,EAC5B,OAAOA,EAAO,WAAc,UAAY,CAACrpC,GAAUqpC,EAAO,SAAS,GAAK,OAAOA,EAAO,UAAU,uBAA0B,WAE5H,MAAM,IAAI,UAAU,GAAG65E,GAAO,YAAW,CAAE,gGAAgG,EAE7I,OAAO75E,CACX,CACE,eAAgB,CACd,GAAI,OAAOo8E,GAAW,IACpB,MAAM,IAAI,UAAU,8DAA+D,EAErF,IAAI5wG,EAAmB,KAAK,SACxB,KAAK,QAAQ,YAAc,SAC7BA,EAAmB,KAAK,QACf7U,GAAU,KAAK,QAAQ,SAAS,EACzC6U,EAAmB2Y,GAAW,KAAK,QAAQ,SAAS,EAC3C,OAAO,KAAK,QAAQ,WAAc,WAC3C3Y,EAAmB,KAAK,QAAQ,WAElC,MAAMqC,EAAe,KAAK,iBAAkB,EAC5C,KAAK,QAAUwuG,GAAoB7wG,EAAkB,KAAK,MAAOqC,CAAY,CACjF,CACE,UAAW,CACT,OAAO,KAAK,MAAM,UAAU,SAASgtG,EAAiB,CAC1D,CACE,eAAgB,CACd,MAAMyB,EAAiB,KAAK,QAC5B,GAAIA,EAAe,UAAU,SAASvB,EAAkB,EACtD,OAAOc,GAET,GAAIS,EAAe,UAAU,SAAStB,EAAoB,EACxD,OAAOc,GAET,GAAIQ,EAAe,UAAU,SAASrB,EAAwB,EAC5D,OAAOc,GAET,GAAIO,EAAe,UAAU,SAASpB,EAA0B,EAC9D,OAAOc,GAIT,MAAMO,EAAQ,iBAAiB,KAAK,KAAK,EAAE,iBAAiB,eAAe,EAAE,KAAI,IAAO,MACxF,OAAID,EAAe,UAAU,SAASxB,EAAiB,EAC9CyB,EAAQb,GAAmBD,GAE7Bc,EAAQX,GAAsBD,EACzC,CACE,eAAgB,CACd,OAAO,KAAK,SAAS,QAAQL,EAAe,IAAM,IACtD,CACE,YAAa,CACX,KAAM,CACJ,OAAAhgH,CACD,EAAG,KAAK,QACT,OAAI,OAAOA,GAAW,SACbA,EAAO,MAAM,GAAG,EAAE,IAAI/gB,GAAS,OAAO,SAASA,EAAO,EAAE,CAAC,EAE9D,OAAO+gB,GAAW,WACbkhH,GAAclhH,EAAOkhH,EAAY,KAAK,QAAQ,EAEhDlhH,CACX,CACE,kBAAmB,CACjB,MAAMmhH,EAAwB,CAC5B,UAAW,KAAK,cAAe,EAC/B,UAAW,CAAC,CACV,KAAM,kBACN,QAAS,CACP,SAAU,KAAK,QAAQ,QACjC,CACA,EAAS,CACD,KAAM,SACN,QAAS,CACP,OAAQ,KAAK,WAAU,CACjC,CACO,CAAA,CACF,EAGD,OAAI,KAAK,WAAa,KAAK,QAAQ,UAAY,YAC7C/K,GAAY,iBAAiB,KAAK,MAAO,SAAU,QAAQ,EAC3D+K,EAAsB,UAAY,CAAC,CACjC,KAAM,cACN,QAAS,EACjB,CAAO,GAEI,CACL,GAAGA,EACH,GAAGjO,GAAQ,KAAK,QAAQ,aAAc,CAACiO,CAAqB,CAAC,CAC9D,CACL,CACE,gBAAgB,CACd,IAAAz/H,EACA,OAAAkH,CACJ,EAAK,CACD,MAAMpC,EAAQwwH,GAAe,KAAKkJ,GAAwB,KAAK,KAAK,EAAE,OAAOlzH,GAAWslH,GAAUtlH,CAAO,CAAC,EACrGxG,EAAM,QAMXgtH,GAAqBhtH,EAAOoC,EAAQlH,IAAQo9H,GAAkB,CAACt4H,EAAM,SAASoC,CAAM,CAAC,EAAE,MAAO,CAClG,CAGE,OAAO,gBAAgB87C,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM7zC,EAAO8kB,GAAS,oBAAoB,KAAM+uB,CAAM,EACtD,GAAI,OAAOA,GAAW,SAGtB,IAAI,OAAO7zC,EAAK6zC,CAAM,EAAM,IAC1B,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAEnD7zC,EAAK6zC,CAAM,EAAG,EACpB,CAAK,CACL,CACE,OAAO,WAAWlwC,EAAO,CACvB,GAAIA,EAAM,SAAWuqH,IAAsBvqH,EAAM,OAAS,SAAWA,EAAM,MAAQoqH,GACjF,OAEF,MAAMwC,EAAcpK,GAAe,KAAK8I,EAA0B,EAClE,UAAW9sG,KAAUouG,EAAa,CAChC,MAAMtkI,EAAU64B,GAAS,YAAY3C,CAAM,EAC3C,GAAI,CAACl2B,GAAWA,EAAQ,QAAQ,YAAc,GAC5C,SAEF,MAAMukI,EAAe7sH,EAAM,aAAc,EACnC8sH,EAAeD,EAAa,SAASvkI,EAAQ,KAAK,EAMxD,GALIukI,EAAa,SAASvkI,EAAQ,QAAQ,GAAKA,EAAQ,QAAQ,YAAc,UAAY,CAACwkI,GAAgBxkI,EAAQ,QAAQ,YAAc,WAAawkI,GAKjJxkI,EAAQ,MAAM,SAAS0X,EAAM,MAAM,IAAMA,EAAM,OAAS,SAAWA,EAAM,MAAQoqH,IAAa,qCAAqC,KAAKpqH,EAAM,OAAO,OAAO,GAC9J,SAEF,MAAMqsH,EAAgB,CACpB,cAAe/jI,EAAQ,QACxB,EACG0X,EAAM,OAAS,UACjBqsH,EAAc,WAAarsH,GAE7B1X,EAAQ,cAAc+jI,CAAa,CACzC,CACA,CACE,OAAO,sBAAsBrsH,EAAO,CAIlC,MAAM+sH,EAAU,kBAAkB,KAAK/sH,EAAM,OAAO,OAAO,EACrDgtH,EAAgBhtH,EAAM,MAAQmqH,GAC9B8C,EAAkB,CAAC5C,GAAgBC,EAAgB,EAAE,SAAStqH,EAAM,GAAG,EAI7E,GAHI,CAACitH,GAAmB,CAACD,GAGrBD,GAAW,CAACC,EACd,OAEFhtH,EAAM,eAAgB,EAGtB,MAAMktH,EAAkB,KAAK,QAAQ7B,EAAsB,EAAI,KAAO7I,GAAe,KAAK,KAAM6I,EAAsB,EAAE,CAAC,GAAK7I,GAAe,KAAK,KAAM6I,EAAsB,EAAE,CAAC,GAAK7I,GAAe,QAAQ6I,GAAwBrrH,EAAM,eAAe,UAAU,EAC9PgO,EAAWmT,GAAS,oBAAoB+rG,CAAe,EAC7D,GAAID,EAAiB,CACnBjtH,EAAM,gBAAiB,EACvBgO,EAAS,KAAM,EACfA,EAAS,gBAAgBhO,CAAK,EAC9B,MACN,CACQgO,EAAS,aAEXhO,EAAM,gBAAiB,EACvBgO,EAAS,KAAM,EACfk/G,EAAgB,MAAO,EAE7B,CACA,CAMAnN,EAAa,GAAG,SAAU8K,GAAwBQ,GAAwBlqG,GAAS,qBAAqB,EACxG4+F,EAAa,GAAG,SAAU8K,GAAwBU,GAAepqG,GAAS,qBAAqB,EAC/F4+F,EAAa,GAAG,SAAU6K,GAAwBzpG,GAAS,UAAU,EACrE4+F,EAAa,GAAG,SAAU+K,GAAsB3pG,GAAS,UAAU,EACnE4+F,EAAa,GAAG,SAAU6K,GAAwBS,GAAwB,SAAUrrH,EAAO,CACzFA,EAAM,eAAgB,EACtBmhB,GAAS,oBAAoB,IAAI,EAAE,OAAQ,CAC7C,CAAC,EAMDq9F,GAAmBr9F,EAAQ,EAc3B,MAAMgsG,GAAS,WACTC,GAAoB,OACpBC,GAAoB,OACpBC,GAAkB,gBAAgBH,EAAM,GACxCI,GAAY,CAChB,UAAW,iBACX,cAAe,KACf,WAAY,GACZ,UAAW,GAEX,YAAa,MACf,EAEMC,GAAgB,CACpB,UAAW,SACX,cAAe,kBACf,WAAY,UACZ,UAAW,UACX,YAAa,kBACf,EAMA,MAAMllG,WAAiB4uE,EAAO,CAC5B,YAAYhnD,EAAQ,CAClB,MAAO,EACP,KAAK,QAAU,KAAK,WAAWA,CAAM,EACrC,KAAK,YAAc,GACnB,KAAK,SAAW,IACpB,CAGE,WAAW,SAAU,CACnB,OAAOq9E,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOL,EACX,CAGE,KAAKpgG,EAAU,CACb,GAAI,CAAC,KAAK,QAAQ,UAAW,CAC3B2xF,GAAQ3xF,CAAQ,EAChB,MACN,CACI,KAAK,QAAS,EACd,MAAMv0B,EAAU,KAAK,YAAa,EAC9B,KAAK,QAAQ,YACf4lH,GAAO5lH,CAAO,EAEhBA,EAAQ,UAAU,IAAI60H,EAAiB,EACvC,KAAK,kBAAkB,IAAM,CAC3B3O,GAAQ3xF,CAAQ,CACtB,CAAK,CACL,CACE,KAAKA,EAAU,CACb,GAAI,CAAC,KAAK,QAAQ,UAAW,CAC3B2xF,GAAQ3xF,CAAQ,EAChB,MACN,CACI,KAAK,YAAa,EAAC,UAAU,OAAOsgG,EAAiB,EACrD,KAAK,kBAAkB,IAAM,CAC3B,KAAK,QAAS,EACd3O,GAAQ3xF,CAAQ,CACtB,CAAK,CACL,CACE,SAAU,CACH,KAAK,cAGVgzF,EAAa,IAAI,KAAK,SAAUuN,EAAe,EAC/C,KAAK,SAAS,OAAQ,EACtB,KAAK,YAAc,GACvB,CAGE,aAAc,CACZ,GAAI,CAAC,KAAK,SAAU,CAClB,MAAMroG,EAAW,SAAS,cAAc,KAAK,EAC7CA,EAAS,UAAY,KAAK,QAAQ,UAC9B,KAAK,QAAQ,YACfA,EAAS,UAAU,IAAImoG,EAAiB,EAE1C,KAAK,SAAWnoG,CACtB,CACI,OAAO,KAAK,QAChB,CACE,kBAAkBirB,EAAQ,CAExB,OAAAA,EAAO,YAAc7b,GAAW6b,EAAO,WAAW,EAC3CA,CACX,CACE,SAAU,CACR,GAAI,KAAK,YACP,OAEF,MAAM13C,EAAU,KAAK,YAAa,EAClC,KAAK,QAAQ,YAAY,OAAOA,CAAO,EACvCunH,EAAa,GAAGvnH,EAAS80H,GAAiB,IAAM,CAC9C5O,GAAQ,KAAK,QAAQ,aAAa,CACxC,CAAK,EACD,KAAK,YAAc,EACvB,CACE,kBAAkB3xF,EAAU,CAC1B6xF,GAAuB7xF,EAAU,KAAK,YAAa,EAAE,KAAK,QAAQ,UAAU,CAChF,CACA,CAcA,MAAM0gG,GAAS,YACTC,GAAa,eACbC,GAAc,IAAID,EAAU,GAC5BE,GAAkB,UAAUD,EAAW,GACvCE,GAAoB,cAAcF,EAAW,GAC7CG,GAAU,MACVC,GAAkB,UAClBC,GAAmB,WACnBC,GAAY,CAChB,UAAW,GACX,YAAa,IACf,EAEMC,GAAgB,CACpB,UAAW,UACX,YAAa,SACf,EAMA,MAAMC,WAAkBj3B,EAAO,CAC7B,YAAYhnD,EAAQ,CAClB,MAAO,EACP,KAAK,QAAU,KAAK,WAAWA,CAAM,EACrC,KAAK,UAAY,GACjB,KAAK,qBAAuB,IAChC,CAGE,WAAW,SAAU,CACnB,OAAO+9E,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOT,EACX,CAGE,UAAW,CACL,KAAK,YAGL,KAAK,QAAQ,WACf,KAAK,QAAQ,YAAY,MAAO,EAElC1N,EAAa,IAAI,SAAU4N,EAAW,EACtC5N,EAAa,GAAG,SAAU6N,GAAiB5tH,GAAS,KAAK,eAAeA,CAAK,CAAC,EAC9E+/G,EAAa,GAAG,SAAU8N,GAAmB7tH,GAAS,KAAK,eAAeA,CAAK,CAAC,EAChF,KAAK,UAAY,GACrB,CACE,YAAa,CACN,KAAK,YAGV,KAAK,UAAY,GACjB+/G,EAAa,IAAI,SAAU4N,EAAW,EAC1C,CAGE,eAAe3tH,EAAO,CACpB,KAAM,CACJ,YAAAouH,CACD,EAAG,KAAK,QACT,GAAIpuH,EAAM,SAAW,UAAYA,EAAM,SAAWouH,GAAeA,EAAY,SAASpuH,EAAM,MAAM,EAChG,OAEF,MAAMq6E,EAAWmoC,GAAe,kBAAkB4L,CAAW,EACzD/zC,EAAS,SAAW,EACtB+zC,EAAY,MAAO,EACV,KAAK,uBAAyBJ,GACvC3zC,EAASA,EAAS,OAAS,CAAC,EAAE,MAAO,EAErCA,EAAS,CAAC,EAAE,MAAO,CAEzB,CACE,eAAer6E,EAAO,CAChBA,EAAM,MAAQ8tH,KAGlB,KAAK,qBAAuB9tH,EAAM,SAAWguH,GAAmBD,GACpE,CACA,CAcA,MAAMM,GAAyB,oDACzBC,GAA0B,cAC1BC,GAAmB,gBACnBC,GAAkB,eAMxB,MAAMC,EAAgB,CACpB,aAAc,CACZ,KAAK,SAAW,SAAS,IAC7B,CAGE,UAAW,CAET,MAAMC,EAAgB,SAAS,gBAAgB,YAC/C,OAAO,KAAK,IAAI,OAAO,WAAaA,CAAa,CACrD,CACE,MAAO,CACL,MAAMjmH,EAAQ,KAAK,SAAU,EAC7B,KAAK,iBAAkB,EAEvB,KAAK,sBAAsB,KAAK,SAAU8lH,GAAkBI,GAAmBA,EAAkBlmH,CAAK,EAEtG,KAAK,sBAAsB4lH,GAAwBE,GAAkBI,GAAmBA,EAAkBlmH,CAAK,EAC/G,KAAK,sBAAsB6lH,GAAyBE,GAAiBG,GAAmBA,EAAkBlmH,CAAK,CACnH,CACE,OAAQ,CACN,KAAK,wBAAwB,KAAK,SAAU,UAAU,EACtD,KAAK,wBAAwB,KAAK,SAAU8lH,EAAgB,EAC5D,KAAK,wBAAwBF,GAAwBE,EAAgB,EACrE,KAAK,wBAAwBD,GAAyBE,EAAe,CACzE,CACE,eAAgB,CACd,OAAO,KAAK,SAAQ,EAAK,CAC7B,CAGE,kBAAmB,CACjB,KAAK,sBAAsB,KAAK,SAAU,UAAU,EACpD,KAAK,SAAS,MAAM,SAAW,QACnC,CACE,sBAAsBjtH,EAAUqtH,EAAe7hG,EAAU,CACvD,MAAM8hG,EAAiB,KAAK,SAAU,EAChCC,EAAuBt2H,GAAW,CACtC,GAAIA,IAAY,KAAK,UAAY,OAAO,WAAaA,EAAQ,YAAcq2H,EACzE,OAEF,KAAK,sBAAsBr2H,EAASo2H,CAAa,EACjD,MAAMD,EAAkB,OAAO,iBAAiBn2H,CAAO,EAAE,iBAAiBo2H,CAAa,EACvFp2H,EAAQ,MAAM,YAAYo2H,EAAe,GAAG7hG,EAAS,OAAO,WAAW4hG,CAAe,CAAC,CAAC,IAAI,CAC7F,EACD,KAAK,2BAA2BptH,EAAUutH,CAAoB,CAClE,CACE,sBAAsBt2H,EAASo2H,EAAe,CAC5C,MAAMG,EAAcv2H,EAAQ,MAAM,iBAAiBo2H,CAAa,EAC5DG,GACFnN,GAAY,iBAAiBppH,EAASo2H,EAAeG,CAAW,CAEtE,CACE,wBAAwBxtH,EAAUqtH,EAAe,CAC/C,MAAME,EAAuBt2H,GAAW,CACtC,MAAM/N,EAAQm3H,GAAY,iBAAiBppH,EAASo2H,CAAa,EAEjE,GAAInkI,IAAU,KAAM,CAClB+N,EAAQ,MAAM,eAAeo2H,CAAa,EAC1C,MACR,CACMhN,GAAY,oBAAoBppH,EAASo2H,CAAa,EACtDp2H,EAAQ,MAAM,YAAYo2H,EAAenkI,CAAK,CAC/C,EACD,KAAK,2BAA2B8W,EAAUutH,CAAoB,CAClE,CACE,2BAA2BvtH,EAAUytH,EAAU,CAC7C,GAAInoH,GAAUtF,CAAQ,EAAG,CACvBytH,EAASztH,CAAQ,EACjB,MACN,CACI,UAAWtL,KAAOusH,GAAe,KAAKjhH,EAAU,KAAK,QAAQ,EAC3DytH,EAAS/4H,CAAG,CAElB,CACA,CAcA,MAAMg5H,GAAS,QACTC,GAAa,WACbC,GAAc,IAAID,EAAU,GAC5BE,GAAiB,YACjBC,GAAe,SACfC,GAAe,OAAOH,EAAW,GACjCI,GAAyB,gBAAgBJ,EAAW,GACpDK,GAAiB,SAASL,EAAW,GACrCM,GAAe,OAAON,EAAW,GACjCO,GAAgB,QAAQP,EAAW,GACnCQ,GAAiB,SAASR,EAAW,GACrCS,GAAsB,gBAAgBT,EAAW,GACjDU,GAA0B,oBAAoBV,EAAW,GACzDW,GAA0B,kBAAkBX,EAAW,GACvDY,GAAyB,QAAQZ,EAAW,GAAGC,EAAc,GAC7DY,GAAkB,aAClBC,GAAoB,OACpBC,GAAoB,OACpBC,GAAoB,eACpBC,GAAkB,cAClBC,GAAkB,gBAClBC,GAAsB,cACtBC,GAAyB,2BACzBC,GAAY,CAChB,SAAU,GACV,MAAO,GACP,SAAU,EACZ,EACMC,GAAgB,CACpB,SAAU,mBACV,MAAO,UACP,SAAU,SACZ,EAMA,MAAM3qG,WAAcq8F,EAAc,CAChC,YAAY3pH,EAAS03C,EAAQ,CAC3B,MAAM13C,EAAS03C,CAAM,EACrB,KAAK,QAAUsyE,GAAe,QAAQ6N,GAAiB,KAAK,QAAQ,EACpE,KAAK,UAAY,KAAK,oBAAqB,EAC3C,KAAK,WAAa,KAAK,qBAAsB,EAC7C,KAAK,SAAW,GAChB,KAAK,iBAAmB,GACxB,KAAK,WAAa,IAAI5B,GACtB,KAAK,mBAAoB,CAC7B,CAGE,WAAW,SAAU,CACnB,OAAO+B,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOxB,EACX,CAGE,OAAO5C,EAAe,CACpB,OAAO,KAAK,SAAW,KAAK,KAAI,EAAK,KAAK,KAAKA,CAAa,CAChE,CACE,KAAKA,EAAe,CACd,KAAK,UAAY,KAAK,kBAGRtM,EAAa,QAAQ,KAAK,SAAU0P,GAAc,CAClE,cAAApD,CACN,CAAK,EACa,mBAGd,KAAK,SAAW,GAChB,KAAK,iBAAmB,GACxB,KAAK,WAAW,KAAM,EACtB,SAAS,KAAK,UAAU,IAAI2D,EAAe,EAC3C,KAAK,cAAe,EACpB,KAAK,UAAU,KAAK,IAAM,KAAK,aAAa3D,CAAa,CAAC,EAC9D,CACE,MAAO,CACD,CAAC,KAAK,UAAY,KAAK,kBAGTtM,EAAa,QAAQ,KAAK,SAAUuP,EAAY,EACpD,mBAGd,KAAK,SAAW,GAChB,KAAK,iBAAmB,GACxB,KAAK,WAAW,WAAY,EAC5B,KAAK,SAAS,UAAU,OAAOY,EAAiB,EAChD,KAAK,eAAe,IAAM,KAAK,WAAU,EAAI,KAAK,SAAU,KAAK,aAAa,EAClF,CACE,SAAU,CACRnQ,EAAa,IAAI,OAAQoP,EAAW,EACpCpP,EAAa,IAAI,KAAK,QAASoP,EAAW,EAC1C,KAAK,UAAU,QAAS,EACxB,KAAK,WAAW,WAAY,EAC5B,MAAM,QAAS,CACnB,CACE,cAAe,CACb,KAAK,cAAe,CACxB,CAGE,qBAAsB,CACpB,OAAO,IAAI7mG,GAAS,CAClB,UAAW,EAAQ,KAAK,QAAQ,SAEhC,WAAY,KAAK,YAAW,CAClC,CAAK,CACL,CACE,sBAAuB,CACrB,OAAO,IAAI6lG,GAAU,CACnB,YAAa,KAAK,QACxB,CAAK,CACL,CACE,aAAa9B,EAAe,CAErB,SAAS,KAAK,SAAS,KAAK,QAAQ,GACvC,SAAS,KAAK,OAAO,KAAK,QAAQ,EAEpC,KAAK,SAAS,MAAM,QAAU,QAC9B,KAAK,SAAS,gBAAgB,aAAa,EAC3C,KAAK,SAAS,aAAa,aAAc,EAAI,EAC7C,KAAK,SAAS,aAAa,OAAQ,QAAQ,EAC3C,KAAK,SAAS,UAAY,EAC1B,MAAMqE,EAAYlO,GAAe,QAAQ8N,GAAqB,KAAK,OAAO,EACtEI,IACFA,EAAU,UAAY,GAExBtS,GAAO,KAAK,QAAQ,EACpB,KAAK,SAAS,UAAU,IAAI8R,EAAiB,EAC7C,MAAMS,EAAqB,IAAM,CAC3B,KAAK,QAAQ,OACf,KAAK,WAAW,SAAU,EAE5B,KAAK,iBAAmB,GACxB5Q,EAAa,QAAQ,KAAK,SAAU2P,GAAe,CACjD,cAAArD,CACR,CAAO,CACF,EACD,KAAK,eAAesE,EAAoB,KAAK,QAAS,KAAK,aAAa,CAC5E,CACE,oBAAqB,CACnB5Q,EAAa,GAAG,KAAK,SAAU+P,GAAyB9vH,GAAS,CAC/D,GAAIA,EAAM,MAAQqvH,GAGlB,IAAI,KAAK,QAAQ,SAAU,CACzB,KAAK,KAAM,EACX,MACR,CACM,KAAK,2BAA4B,EACvC,CAAK,EACDtP,EAAa,GAAG,OAAQ4P,GAAgB,IAAM,CACxC,KAAK,UAAY,CAAC,KAAK,kBACzB,KAAK,cAAe,CAE5B,CAAK,EACD5P,EAAa,GAAG,KAAK,SAAU8P,GAAyB7vH,GAAS,CAE/D+/G,EAAa,IAAI,KAAK,SAAU6P,GAAqBgB,GAAU,CAC7D,GAAI,OAAK,WAAa5wH,EAAM,QAAU,KAAK,WAAa4wH,EAAO,QAG/D,IAAI,KAAK,QAAQ,WAAa,SAAU,CACtC,KAAK,2BAA4B,EACjC,MACV,CACY,KAAK,QAAQ,UACf,KAAK,KAAM,EAErB,CAAO,CACP,CAAK,CACL,CACE,YAAa,CACX,KAAK,SAAS,MAAM,QAAU,OAC9B,KAAK,SAAS,aAAa,cAAe,EAAI,EAC9C,KAAK,SAAS,gBAAgB,YAAY,EAC1C,KAAK,SAAS,gBAAgB,MAAM,EACpC,KAAK,iBAAmB,GACxB,KAAK,UAAU,KAAK,IAAM,CACxB,SAAS,KAAK,UAAU,OAAOZ,EAAe,EAC9C,KAAK,kBAAmB,EACxB,KAAK,WAAW,MAAO,EACvBjQ,EAAa,QAAQ,KAAK,SAAUyP,EAAc,CACxD,CAAK,CACL,CACE,aAAc,CACZ,OAAO,KAAK,SAAS,UAAU,SAASS,EAAiB,CAC7D,CACE,4BAA6B,CAE3B,GADkBlQ,EAAa,QAAQ,KAAK,SAAUwP,EAAsB,EAC9D,iBACZ,OAEF,MAAMsB,EAAqB,KAAK,SAAS,aAAe,SAAS,gBAAgB,aAC3EC,EAAmB,KAAK,SAAS,MAAM,UAEzCA,IAAqB,UAAY,KAAK,SAAS,UAAU,SAASX,EAAiB,IAGlFU,IACH,KAAK,SAAS,MAAM,UAAY,UAElC,KAAK,SAAS,UAAU,IAAIV,EAAiB,EAC7C,KAAK,eAAe,IAAM,CACxB,KAAK,SAAS,UAAU,OAAOA,EAAiB,EAChD,KAAK,eAAe,IAAM,CACxB,KAAK,SAAS,MAAM,UAAYW,CACxC,EAAS,KAAK,OAAO,CACrB,EAAO,KAAK,OAAO,EACf,KAAK,SAAS,MAAO,EACzB,CAME,eAAgB,CACd,MAAMD,EAAqB,KAAK,SAAS,aAAe,SAAS,gBAAgB,aAC3EhC,EAAiB,KAAK,WAAW,SAAU,EAC3CkC,EAAoBlC,EAAiB,EAC3C,GAAIkC,GAAqB,CAACF,EAAoB,CAC5C,MAAMr9H,EAAWwwB,KAAU,cAAgB,eAC3C,KAAK,SAAS,MAAMxwB,CAAQ,EAAI,GAAGq7H,CAAc,IACvD,CACI,GAAI,CAACkC,GAAqBF,EAAoB,CAC5C,MAAMr9H,EAAWwwB,KAAU,eAAiB,cAC5C,KAAK,SAAS,MAAMxwB,CAAQ,EAAI,GAAGq7H,CAAc,IACvD,CACA,CACE,mBAAoB,CAClB,KAAK,SAAS,MAAM,YAAc,GAClC,KAAK,SAAS,MAAM,aAAe,EACvC,CAGE,OAAO,gBAAgB3+E,EAAQm8E,EAAe,CAC5C,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAMhwH,EAAOypB,GAAM,oBAAoB,KAAMoqB,CAAM,EACnD,GAAI,OAAOA,GAAW,SAGtB,IAAI,OAAO7zC,EAAK6zC,CAAM,EAAM,IAC1B,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAEnD7zC,EAAK6zC,CAAM,EAAEm8E,CAAa,EAChC,CAAK,CACL,CACA,CAMAtM,EAAa,GAAG,SAAUgQ,GAAwBQ,GAAwB,SAAUvwH,EAAO,CACzF,MAAM5L,EAASouH,GAAe,uBAAuB,IAAI,EACrD,CAAC,IAAK,MAAM,EAAE,SAAS,KAAK,OAAO,GACrCxiH,EAAM,eAAgB,EAExB+/G,EAAa,IAAI3rH,EAAQq7H,GAAcuB,GAAa,CAC9CA,EAAU,kBAIdjR,EAAa,IAAI3rH,EAAQo7H,GAAgB,IAAM,CACzC1R,GAAU,IAAI,GAChB,KAAK,MAAO,CAEpB,CAAK,CACL,CAAG,EAGD,MAAMmT,EAAczO,GAAe,QAAQ4N,EAAe,EACtDa,GACFnrG,GAAM,YAAYmrG,CAAW,EAAE,KAAM,EAE1BnrG,GAAM,oBAAoB1xB,CAAM,EACxC,OAAO,IAAI,CAClB,CAAC,EACDwuH,GAAqB98F,EAAK,EAM1B04F,GAAmB14F,EAAK,EAcxB,MAAMorG,GAAS,YACTC,GAAa,eACbC,GAAc,IAAID,EAAU,GAC5BE,GAAiB,YACjBC,GAAwB,OAAOF,EAAW,GAAGC,EAAc,GAC3DE,GAAa,SACbC,GAAoB,OACpBC,GAAuB,UACvBC,GAAoB,SACpBC,GAAsB,qBACtBC,GAAgB,kBAChBC,GAAe,OAAOT,EAAW,GACjCU,GAAgB,QAAQV,EAAW,GACnCW,GAAe,OAAOX,EAAW,GACjCY,GAAuB,gBAAgBZ,EAAW,GAClDa,GAAiB,SAASb,EAAW,GACrCc,GAAe,SAASd,EAAW,GACnCe,GAAyB,QAAQf,EAAW,GAAGC,EAAc,GAC7De,GAAwB,kBAAkBhB,EAAW,GACrDiB,GAAyB,+BACzBC,GAAY,CAChB,SAAU,GACV,SAAU,GACV,OAAQ,EACV,EACMC,GAAgB,CACpB,SAAU,mBACV,SAAU,UACV,OAAQ,SACV,EAMA,MAAMjwF,WAAkB6/E,EAAc,CACpC,YAAY3pH,EAAS03C,EAAQ,CAC3B,MAAM13C,EAAS03C,CAAM,EACrB,KAAK,SAAW,GAChB,KAAK,UAAY,KAAK,oBAAqB,EAC3C,KAAK,WAAa,KAAK,qBAAsB,EAC7C,KAAK,mBAAoB,CAC7B,CAGE,WAAW,SAAU,CACnB,OAAOoiF,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOrB,EACX,CAGE,OAAO7E,EAAe,CACpB,OAAO,KAAK,SAAW,KAAK,KAAI,EAAK,KAAK,KAAKA,CAAa,CAChE,CACE,KAAKA,EAAe,CAOlB,GANI,KAAK,UAGStM,EAAa,QAAQ,KAAK,SAAU8R,GAAc,CAClE,cAAAxF,CACN,CAAK,EACa,iBACZ,OAEF,KAAK,SAAW,GAChB,KAAK,UAAU,KAAM,EAChB,KAAK,QAAQ,QAChB,IAAIoC,GAAiB,EAAC,KAAM,EAE9B,KAAK,SAAS,aAAa,aAAc,EAAI,EAC7C,KAAK,SAAS,aAAa,OAAQ,QAAQ,EAC3C,KAAK,SAAS,UAAU,IAAIgD,EAAoB,EAChD,MAAM5J,EAAmB,IAAM,EACzB,CAAC,KAAK,QAAQ,QAAU,KAAK,QAAQ,WACvC,KAAK,WAAW,SAAU,EAE5B,KAAK,SAAS,UAAU,IAAI2J,EAAiB,EAC7C,KAAK,SAAS,UAAU,OAAOC,EAAoB,EACnD1R,EAAa,QAAQ,KAAK,SAAU+R,GAAe,CACjD,cAAAzF,CACR,CAAO,CACF,EACD,KAAK,eAAexE,EAAkB,KAAK,SAAU,EAAI,CAC7D,CACE,MAAO,CAKL,GAJI,CAAC,KAAK,UAGQ9H,EAAa,QAAQ,KAAK,SAAUgS,EAAY,EACpD,iBACZ,OAEF,KAAK,WAAW,WAAY,EAC5B,KAAK,SAAS,KAAM,EACpB,KAAK,SAAW,GAChB,KAAK,SAAS,UAAU,IAAIL,EAAiB,EAC7C,KAAK,UAAU,KAAM,EACrB,MAAMc,EAAmB,IAAM,CAC7B,KAAK,SAAS,UAAU,OAAOhB,GAAmBE,EAAiB,EACnE,KAAK,SAAS,gBAAgB,YAAY,EAC1C,KAAK,SAAS,gBAAgB,MAAM,EAC/B,KAAK,QAAQ,QAChB,IAAIjD,GAAiB,EAAC,MAAO,EAE/B1O,EAAa,QAAQ,KAAK,SAAUkS,EAAc,CACnD,EACD,KAAK,eAAeO,EAAkB,KAAK,SAAU,EAAI,CAC7D,CACE,SAAU,CACR,KAAK,UAAU,QAAS,EACxB,KAAK,WAAW,WAAY,EAC5B,MAAM,QAAS,CACnB,CAGE,qBAAsB,CACpB,MAAMC,EAAgB,IAAM,CAC1B,GAAI,KAAK,QAAQ,WAAa,SAAU,CACtC1S,EAAa,QAAQ,KAAK,SAAUiS,EAAoB,EACxD,MACR,CACM,KAAK,KAAM,CACZ,EAGKlU,EAAY,EAAQ,KAAK,QAAQ,SACvC,OAAO,IAAIx1F,GAAS,CAClB,UAAWqpG,GACX,UAAA7T,EACA,WAAY,GACZ,YAAa,KAAK,SAAS,WAC3B,cAAeA,EAAY2U,EAAgB,IACjD,CAAK,CACL,CACE,sBAAuB,CACrB,OAAO,IAAItE,GAAU,CACnB,YAAa,KAAK,QACxB,CAAK,CACL,CACE,oBAAqB,CACnBpO,EAAa,GAAG,KAAK,SAAUqS,GAAuBpyH,GAAS,CAC7D,GAAIA,EAAM,MAAQuxH,GAGlB,IAAI,KAAK,QAAQ,SAAU,CACzB,KAAK,KAAM,EACX,MACR,CACMxR,EAAa,QAAQ,KAAK,SAAUiS,EAAoB,EAC9D,CAAK,CACL,CAGE,OAAO,gBAAgB9hF,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM7zC,EAAOimC,GAAU,oBAAoB,KAAM4N,CAAM,EACvD,GAAI,OAAOA,GAAW,SAGtB,IAAI7zC,EAAK6zC,CAAM,IAAM,QAAaA,EAAO,WAAW,GAAG,GAAKA,IAAW,cACrE,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAEnD7zC,EAAK6zC,CAAM,EAAE,IAAI,EACvB,CAAK,CACL,CACA,CAMA6vE,EAAa,GAAG,SAAUoS,GAAwBE,GAAwB,SAAUryH,EAAO,CACzF,MAAM5L,EAASouH,GAAe,uBAAuB,IAAI,EAIzD,GAHI,CAAC,IAAK,MAAM,EAAE,SAAS,KAAK,OAAO,GACrCxiH,EAAM,eAAgB,EAEpBk+G,GAAW,IAAI,EACjB,OAEF6B,EAAa,IAAI3rH,EAAQ69H,GAAgB,IAAM,CAEzCnU,GAAU,IAAI,GAChB,KAAK,MAAO,CAElB,CAAG,EAGD,MAAMmT,EAAczO,GAAe,QAAQoP,EAAa,EACpDX,GAAeA,IAAgB78H,GACjCkuC,GAAU,YAAY2uF,CAAW,EAAE,KAAM,EAE9B3uF,GAAU,oBAAoBluC,CAAM,EAC5C,OAAO,IAAI,CAClB,CAAC,EACD2rH,EAAa,GAAG,OAAQuR,GAAuB,IAAM,CACnD,UAAW/vH,KAAYihH,GAAe,KAAKoP,EAAa,EACtDtvF,GAAU,oBAAoB/gC,CAAQ,EAAE,KAAM,CAElD,CAAC,EACDw+G,EAAa,GAAG,OAAQmS,GAAc,IAAM,CAC1C,UAAW15H,KAAWgqH,GAAe,KAAK,8CAA8C,EAClF,iBAAiBhqH,CAAO,EAAE,WAAa,SACzC8pC,GAAU,oBAAoB9pC,CAAO,EAAE,KAAM,CAGnD,CAAC,EACDoqH,GAAqBtgF,EAAS,EAM9Bk8E,GAAmBl8E,EAAS,EAU5B,MAAMowF,GAAyB,iBACzBC,GAAmB,CAEvB,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAAQD,EAAsB,EAClE,EAAG,CAAC,SAAU,OAAQ,QAAS,KAAK,EACpC,KAAM,CAAE,EACR,EAAG,CAAE,EACL,GAAI,CAAE,EACN,IAAK,CAAE,EACP,KAAM,CAAE,EACR,IAAK,CAAE,EACP,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,EAAG,CAAE,EACL,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,QAAQ,EACxD,GAAI,CAAE,EACN,GAAI,CAAE,EACN,EAAG,CAAE,EACL,IAAK,CAAE,EACP,EAAG,CAAE,EACL,MAAO,CAAE,EACT,KAAM,CAAE,EACR,IAAK,CAAE,EACP,IAAK,CAAE,EACP,OAAQ,CAAE,EACV,EAAG,CAAE,EACL,GAAI,CAAA,CACN,EAGME,GAAgB,IAAI,IAAI,CAAC,aAAc,OAAQ,OAAQ,WAAY,WAAY,SAAU,MAAO,YAAY,CAAC,EAS7GC,GAAmB,0DACnBC,GAAmB,CAACtrH,EAAWurH,IAAyB,CAC5D,MAAMC,EAAgBxrH,EAAU,SAAS,YAAa,EACtD,OAAIurH,EAAqB,SAASC,CAAa,EACzCJ,GAAc,IAAII,CAAa,EAC1B,EAAQH,GAAiB,KAAKrrH,EAAU,SAAS,EAEnD,GAIFurH,EAAqB,OAAOE,GAAkBA,aAA0B,MAAM,EAAE,KAAKC,GAASA,EAAM,KAAKF,CAAa,CAAC,CAChI,EACA,SAASG,GAAaC,EAAYC,EAAWC,EAAkB,CAC7D,GAAI,CAACF,EAAW,OACd,OAAOA,EAET,GAAIE,GAAoB,OAAOA,GAAqB,WAClD,OAAOA,EAAiBF,CAAU,EAGpC,MAAMG,EADY,IAAI,OAAO,UAAW,EACN,gBAAgBH,EAAY,WAAW,EACnE/4C,EAAW,CAAE,EAAC,OAAO,GAAGk5C,EAAgB,KAAK,iBAAiB,GAAG,CAAC,EACxE,UAAW/6H,KAAW6hF,EAAU,CAC9B,MAAMm5C,EAAch7H,EAAQ,SAAS,YAAa,EAClD,GAAI,CAAC,OAAO,KAAK66H,CAAS,EAAE,SAASG,CAAW,EAAG,CACjDh7H,EAAQ,OAAQ,EAChB,QACN,CACI,MAAMi7H,EAAgB,CAAE,EAAC,OAAO,GAAGj7H,EAAQ,UAAU,EAC/Ck7H,EAAoB,CAAA,EAAG,OAAOL,EAAU,GAAG,GAAK,CAAA,EAAIA,EAAUG,CAAW,GAAK,EAAE,EACtF,UAAWhsH,KAAaisH,EACjBX,GAAiBtrH,EAAWksH,CAAiB,GAChDl7H,EAAQ,gBAAgBgP,EAAU,QAAQ,CAGlD,CACE,OAAO+rH,EAAgB,KAAK,SAC9B,CAcA,MAAMI,GAAS,kBACTC,GAAY,CAChB,UAAWjB,GACX,QAAS,CAAE,EAEX,WAAY,GACZ,KAAM,GACN,SAAU,GACV,WAAY,KACZ,SAAU,aACZ,EACMkB,GAAgB,CACpB,UAAW,SACX,QAAS,SACT,WAAY,oBACZ,KAAM,UACN,SAAU,UACV,WAAY,kBACZ,SAAU,QACZ,EACMC,GAAqB,CACzB,MAAO,iCACP,SAAU,kBACZ,EAMA,MAAMC,WAAwB78B,EAAO,CACnC,YAAYhnD,EAAQ,CAClB,MAAO,EACP,KAAK,QAAU,KAAK,WAAWA,CAAM,CACzC,CAGE,WAAW,SAAU,CACnB,OAAO0jF,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOF,EACX,CAGE,YAAa,CACX,OAAO,OAAO,OAAO,KAAK,QAAQ,OAAO,EAAE,IAAIzjF,GAAU,KAAK,yBAAyBA,CAAM,CAAC,EAAE,OAAO,OAAO,CAClH,CACE,YAAa,CACX,OAAO,KAAK,aAAa,OAAS,CACtC,CACE,cAAcryC,EAAS,CACrB,YAAK,cAAcA,CAAO,EAC1B,KAAK,QAAQ,QAAU,CACrB,GAAG,KAAK,QAAQ,QAChB,GAAGA,CACJ,EACM,IACX,CACE,QAAS,CACP,MAAMm2H,EAAkB,SAAS,cAAc,KAAK,EACpDA,EAAgB,UAAY,KAAK,eAAe,KAAK,QAAQ,QAAQ,EACrE,SAAW,CAACzyH,EAAU4xB,CAAI,IAAK,OAAO,QAAQ,KAAK,QAAQ,OAAO,EAChE,KAAK,YAAY6gG,EAAiB7gG,EAAM5xB,CAAQ,EAElD,MAAM7I,EAAWs7H,EAAgB,SAAS,CAAC,EACrCC,EAAa,KAAK,yBAAyB,KAAK,QAAQ,UAAU,EACxE,OAAIA,GACFv7H,EAAS,UAAU,IAAI,GAAGu7H,EAAW,MAAM,GAAG,CAAC,EAE1Cv7H,CACX,CAGE,iBAAiBw3C,EAAQ,CACvB,MAAM,iBAAiBA,CAAM,EAC7B,KAAK,cAAcA,EAAO,OAAO,CACrC,CACE,cAAcv1C,EAAK,CACjB,SAAW,CAAC4G,EAAU1D,CAAO,IAAK,OAAO,QAAQlD,CAAG,EAClD,MAAM,iBAAiB,CACrB,SAAA4G,EACA,MAAO1D,CACR,EAAEi2H,EAAkB,CAE3B,CACE,YAAYp7H,EAAUmF,EAAS0D,EAAU,CACvC,MAAM2yH,EAAkB1R,GAAe,QAAQjhH,EAAU7I,CAAQ,EACjE,GAAKw7H,EAIL,IADAr2H,EAAU,KAAK,yBAAyBA,CAAO,EAC3C,CAACA,EAAS,CACZq2H,EAAgB,OAAQ,EACxB,MACN,CACI,GAAIrtH,GAAUhJ,CAAO,EAAG,CACtB,KAAK,sBAAsBw2B,GAAWx2B,CAAO,EAAGq2H,CAAe,EAC/D,MACN,CACI,GAAI,KAAK,QAAQ,KAAM,CACrBA,EAAgB,UAAY,KAAK,eAAer2H,CAAO,EACvD,MACN,CACIq2H,EAAgB,YAAcr2H,EAClC,CACE,eAAelD,EAAK,CAClB,OAAO,KAAK,QAAQ,SAAWw4H,GAAax4H,EAAK,KAAK,QAAQ,UAAW,KAAK,QAAQ,UAAU,EAAIA,CACxG,CACE,yBAAyBA,EAAK,CAC5B,OAAO+jH,GAAQ/jH,EAAK,CAAC,IAAI,CAAC,CAC9B,CACE,sBAAsBnC,EAAS07H,EAAiB,CAC9C,GAAI,KAAK,QAAQ,KAAM,CACrBA,EAAgB,UAAY,GAC5BA,EAAgB,OAAO17H,CAAO,EAC9B,MACN,CACI07H,EAAgB,YAAc17H,EAAQ,WAC1C,CACA,CAcA,MAAM27H,GAAS,UACTC,GAAwB,IAAI,IAAI,CAAC,WAAY,YAAa,YAAY,CAAC,EACvEC,GAAoB,OACpBC,GAAmB,QACnBC,GAAoB,OACpBC,GAAyB,iBACzBC,GAAiB,IAAIH,EAAgB,GACrCI,GAAmB,gBACnBC,GAAgB,QAChBC,GAAgB,QAChBC,GAAgB,QAChBC,GAAiB,SACjBC,GAAe,OACfC,GAAiB,SACjBC,GAAe,OACfC,GAAgB,QAChBC,GAAiB,WACjBC,GAAgB,QAChBC,GAAkB,UAClBC,GAAmB,WACnBC,GAAmB,aACnBC,GAAmB,aACnBC,GAAgB,CACpB,KAAM,OACN,IAAK,MACL,MAAOzxG,KAAU,OAAS,QAC1B,OAAQ,SACR,KAAMA,GAAO,EAAG,QAAU,MAC5B,EACM0xG,GAAY,CAChB,UAAW/C,GACX,UAAW,GACX,SAAU,kBACV,UAAW,GACX,YAAa,GACb,MAAO,EACP,mBAAoB,CAAC,MAAO,QAAS,SAAU,MAAM,EACrD,KAAM,GACN,OAAQ,CAAC,EAAG,CAAC,EACb,UAAW,MACX,aAAc,KACd,SAAU,GACV,WAAY,KACZ,SAAU,GACV,SAAU,+GACV,MAAO,GACP,QAAS,aACX,EACMgD,GAAgB,CACpB,UAAW,SACX,UAAW,UACX,SAAU,mBACV,UAAW,2BACX,YAAa,oBACb,MAAO,kBACP,mBAAoB,QACpB,KAAM,UACN,OAAQ,0BACR,UAAW,oBACX,aAAc,yBACd,SAAU,UACV,WAAY,kBACZ,SAAU,mBACV,SAAU,SACV,MAAO,4BACP,QAAS,QACX,EAMA,MAAMhlB,WAAgBwR,EAAc,CAClC,YAAY3pH,EAAS03C,EAAQ,CAC3B,GAAI,OAAOo8E,GAAW,IACpB,MAAM,IAAI,UAAU,6DAA8D,EAEpF,MAAM9zH,EAAS03C,CAAM,EAGrB,KAAK,WAAa,GAClB,KAAK,SAAW,EAChB,KAAK,WAAa,KAClB,KAAK,eAAiB,CAAE,EACxB,KAAK,QAAU,KACf,KAAK,iBAAmB,KACxB,KAAK,YAAc,KAGnB,KAAK,IAAM,KACX,KAAK,cAAe,EACf,KAAK,QAAQ,UAChB,KAAK,UAAW,CAEtB,CAGE,WAAW,SAAU,CACnB,OAAOwlF,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOxB,EACX,CAGE,QAAS,CACP,KAAK,WAAa,EACtB,CACE,SAAU,CACR,KAAK,WAAa,EACtB,CACE,eAAgB,CACd,KAAK,WAAa,CAAC,KAAK,UAC5B,CACE,QAAS,CACP,GAAK,KAAK,WAIV,IADA,KAAK,eAAe,MAAQ,CAAC,KAAK,eAAe,MAC7C,KAAK,WAAY,CACnB,KAAK,OAAQ,EACb,MACN,CACI,KAAK,OAAQ,EACjB,CACE,SAAU,CACR,aAAa,KAAK,QAAQ,EAC1BpU,EAAa,IAAI,KAAK,SAAS,QAAQ0U,EAAc,EAAGC,GAAkB,KAAK,iBAAiB,EAC5F,KAAK,SAAS,aAAa,wBAAwB,GACrD,KAAK,SAAS,aAAa,QAAS,KAAK,SAAS,aAAa,wBAAwB,CAAC,EAE1F,KAAK,eAAgB,EACrB,MAAM,QAAS,CACnB,CACE,MAAO,CACL,GAAI,KAAK,SAAS,MAAM,UAAY,OAClC,MAAM,IAAI,MAAM,qCAAqC,EAEvD,GAAI,EAAE,KAAK,eAAgB,GAAI,KAAK,YAClC,OAEF,MAAM1D,EAAYjR,EAAa,QAAQ,KAAK,SAAU,KAAK,YAAY,UAAUkV,EAAY,CAAC,EAExFW,GADazX,GAAe,KAAK,QAAQ,GACb,KAAK,SAAS,cAAc,iBAAiB,SAAS,KAAK,QAAQ,EACrG,GAAI6S,EAAU,kBAAoB,CAAC4E,EACjC,OAIF,KAAK,eAAgB,EACrB,MAAMC,EAAM,KAAK,eAAgB,EACjC,KAAK,SAAS,aAAa,mBAAoBA,EAAI,aAAa,IAAI,CAAC,EACrE,KAAM,CACJ,UAAA53H,CACD,EAAG,KAAK,QAYT,GAXK,KAAK,SAAS,cAAc,gBAAgB,SAAS,KAAK,GAAG,IAChEA,EAAU,OAAO43H,CAAG,EACpB9V,EAAa,QAAQ,KAAK,SAAU,KAAK,YAAY,UAAUoV,EAAc,CAAC,GAEhF,KAAK,QAAU,KAAK,cAAcU,CAAG,EACrCA,EAAI,UAAU,IAAItB,EAAiB,EAM/B,iBAAkB,SAAS,gBAC7B,UAAW/7H,IAAW,GAAG,OAAO,GAAG,SAAS,KAAK,QAAQ,EACvDunH,EAAa,GAAGvnH,EAAS,YAAa+jB,EAAI,EAG9C,MAAMotG,EAAW,IAAM,CACrB5J,EAAa,QAAQ,KAAK,SAAU,KAAK,YAAY,UAAUmV,EAAa,CAAC,EACzE,KAAK,aAAe,IACtB,KAAK,OAAQ,EAEf,KAAK,WAAa,EACnB,EACD,KAAK,eAAevL,EAAU,KAAK,IAAK,KAAK,aAAa,CAC9D,CACE,MAAO,CAKL,GAJI,CAAC,KAAK,YAGQ5J,EAAa,QAAQ,KAAK,SAAU,KAAK,YAAY,UAAUgV,EAAY,CAAC,EAChF,iBACZ,OAOF,GALY,KAAK,eAAgB,EAC7B,UAAU,OAAOR,EAAiB,EAIlC,iBAAkB,SAAS,gBAC7B,UAAW/7H,IAAW,GAAG,OAAO,GAAG,SAAS,KAAK,QAAQ,EACvDunH,EAAa,IAAIvnH,EAAS,YAAa+jB,EAAI,EAG/C,KAAK,eAAes4G,EAAa,EAAI,GACrC,KAAK,eAAeD,EAAa,EAAI,GACrC,KAAK,eAAeD,EAAa,EAAI,GACrC,KAAK,WAAa,KAElB,MAAMhL,EAAW,IAAM,CACjB,KAAK,yBAGJ,KAAK,YACR,KAAK,eAAgB,EAEvB,KAAK,SAAS,gBAAgB,kBAAkB,EAChD5J,EAAa,QAAQ,KAAK,SAAU,KAAK,YAAY,UAAUiV,EAAc,CAAC,EAC/E,EACD,KAAK,eAAerL,EAAU,KAAK,IAAK,KAAK,aAAa,CAC9D,CACE,QAAS,CACH,KAAK,SACP,KAAK,QAAQ,OAAQ,CAE3B,CAGE,gBAAiB,CACf,MAAO,EAAQ,KAAK,WACxB,CACE,gBAAiB,CACf,OAAK,KAAK,MACR,KAAK,IAAM,KAAK,kBAAkB,KAAK,aAAe,KAAK,wBAAwB,GAE9E,KAAK,GAChB,CACE,kBAAkB9rH,EAAS,CACzB,MAAMg4H,EAAM,KAAK,oBAAoBh4H,CAAO,EAAE,OAAQ,EAGtD,GAAI,CAACg4H,EACH,OAAO,KAETA,EAAI,UAAU,OAAOxB,GAAmBE,EAAiB,EAEzDsB,EAAI,UAAU,IAAI,MAAM,KAAK,YAAY,IAAI,OAAO,EACpD,MAAMC,EAAQvY,GAAO,KAAK,YAAY,IAAI,EAAE,SAAU,EACtD,OAAAsY,EAAI,aAAa,KAAMC,CAAK,EACxB,KAAK,eACPD,EAAI,UAAU,IAAIxB,EAAiB,EAE9BwB,CACX,CACE,WAAWh4H,EAAS,CAClB,KAAK,YAAcA,EACf,KAAK,aACP,KAAK,eAAgB,EACrB,KAAK,KAAM,EAEjB,CACE,oBAAoBA,EAAS,CAC3B,OAAI,KAAK,iBACP,KAAK,iBAAiB,cAAcA,CAAO,EAE3C,KAAK,iBAAmB,IAAIk2H,GAAgB,CAC1C,GAAG,KAAK,QAGR,QAAAl2H,EACA,WAAY,KAAK,yBAAyB,KAAK,QAAQ,WAAW,CAC1E,CAAO,EAEI,KAAK,gBAChB,CACE,wBAAyB,CACvB,MAAO,CACL,CAAC22H,EAAsB,EAAG,KAAK,UAAS,CACzC,CACL,CACE,WAAY,CACV,OAAO,KAAK,yBAAyB,KAAK,QAAQ,KAAK,GAAK,KAAK,SAAS,aAAa,wBAAwB,CACnH,CAGE,6BAA6Bx0H,EAAO,CAClC,OAAO,KAAK,YAAY,oBAAoBA,EAAM,eAAgB,KAAK,oBAAoB,CAC/F,CACE,aAAc,CACZ,OAAO,KAAK,QAAQ,WAAa,KAAK,KAAO,KAAK,IAAI,UAAU,SAASq0H,EAAiB,CAC9F,CACE,UAAW,CACT,OAAO,KAAK,KAAO,KAAK,IAAI,UAAU,SAASE,EAAiB,CACpE,CACE,cAAcsB,EAAK,CACjB,MAAM9vH,EAAY24G,GAAQ,KAAK,QAAQ,UAAW,CAAC,KAAMmX,EAAK,KAAK,QAAQ,CAAC,EACtEE,EAAaN,GAAc1vH,EAAU,YAAW,CAAE,EACxD,OAAOwmH,GAAoB,KAAK,SAAUsJ,EAAK,KAAK,iBAAiBE,CAAU,CAAC,CACpF,CACE,YAAa,CACX,KAAM,CACJ,OAAAvqH,CACD,EAAG,KAAK,QACT,OAAI,OAAOA,GAAW,SACbA,EAAO,MAAM,GAAG,EAAE,IAAI/gB,GAAS,OAAO,SAASA,EAAO,EAAE,CAAC,EAE9D,OAAO+gB,GAAW,WACbkhH,GAAclhH,EAAOkhH,EAAY,KAAK,QAAQ,EAEhDlhH,CACX,CACE,yBAAyB7Q,EAAK,CAC5B,OAAO+jH,GAAQ/jH,EAAK,CAAC,KAAK,QAAQ,CAAC,CACvC,CACE,iBAAiBo7H,EAAY,CAC3B,MAAMpJ,EAAwB,CAC5B,UAAWoJ,EACX,UAAW,CAAC,CACV,KAAM,OACN,QAAS,CACP,mBAAoB,KAAK,QAAQ,kBAC3C,CACA,EAAS,CACD,KAAM,SACN,QAAS,CACP,OAAQ,KAAK,WAAU,CACjC,CACA,EAAS,CACD,KAAM,kBACN,QAAS,CACP,SAAU,KAAK,QAAQ,QACjC,CACA,EAAS,CACD,KAAM,QACN,QAAS,CACP,QAAS,IAAI,KAAK,YAAY,IAAI,QAC5C,CACA,EAAS,CACD,KAAM,kBACN,QAAS,GACT,MAAO,aACP,GAAI15H,GAAQ,CAGV,KAAK,eAAc,EAAG,aAAa,wBAAyBA,EAAK,MAAM,SAAS,CAC1F,CACO,CAAA,CACF,EACD,MAAO,CACL,GAAGswH,EACH,GAAGjO,GAAQ,KAAK,QAAQ,aAAc,CAACiO,CAAqB,CAAC,CAC9D,CACL,CACE,eAAgB,CACd,MAAMqJ,EAAW,KAAK,QAAQ,QAAQ,MAAM,GAAG,EAC/C,UAAWnpI,KAAWmpI,EACpB,GAAInpI,IAAY,QACdkzH,EAAa,GAAG,KAAK,SAAU,KAAK,YAAY,UAAUqV,EAAa,EAAG,KAAK,QAAQ,SAAUp1H,GAAS,CACxF,KAAK,6BAA6BA,CAAK,EAC/C,OAAQ,CAC1B,CAAS,UACQnT,IAAYioI,GAAgB,CACrC,MAAMmB,EAAUppI,IAAY8nI,GAAgB,KAAK,YAAY,UAAUY,EAAgB,EAAI,KAAK,YAAY,UAAUF,EAAe,EAC/Ha,EAAWrpI,IAAY8nI,GAAgB,KAAK,YAAY,UAAUa,EAAgB,EAAI,KAAK,YAAY,UAAUF,EAAgB,EACvIvV,EAAa,GAAG,KAAK,SAAUkW,EAAS,KAAK,QAAQ,SAAUj2H,GAAS,CACtE,MAAM1X,EAAU,KAAK,6BAA6B0X,CAAK,EACvD1X,EAAQ,eAAe0X,EAAM,OAAS,UAAY40H,GAAgBD,EAAa,EAAI,GACnFrsI,EAAQ,OAAQ,CAC1B,CAAS,EACDy3H,EAAa,GAAG,KAAK,SAAUmW,EAAU,KAAK,QAAQ,SAAUl2H,GAAS,CACvE,MAAM1X,EAAU,KAAK,6BAA6B0X,CAAK,EACvD1X,EAAQ,eAAe0X,EAAM,OAAS,WAAa40H,GAAgBD,EAAa,EAAIrsI,EAAQ,SAAS,SAAS0X,EAAM,aAAa,EACjI1X,EAAQ,OAAQ,CAC1B,CAAS,CACT,CAEI,KAAK,kBAAoB,IAAM,CACzB,KAAK,UACP,KAAK,KAAM,CAEd,EACDy3H,EAAa,GAAG,KAAK,SAAS,QAAQ0U,EAAc,EAAGC,GAAkB,KAAK,iBAAiB,CACnG,CACE,WAAY,CACV,MAAM35F,EAAQ,KAAK,SAAS,aAAa,OAAO,EAC3CA,IAGD,CAAC,KAAK,SAAS,aAAa,YAAY,GAAK,CAAC,KAAK,SAAS,YAAY,QAC1E,KAAK,SAAS,aAAa,aAAcA,CAAK,EAEhD,KAAK,SAAS,aAAa,yBAA0BA,CAAK,EAC1D,KAAK,SAAS,gBAAgB,OAAO,EACzC,CACE,QAAS,CACP,GAAI,KAAK,YAAc,KAAK,WAAY,CACtC,KAAK,WAAa,GAClB,MACN,CACI,KAAK,WAAa,GAClB,KAAK,YAAY,IAAM,CACjB,KAAK,YACP,KAAK,KAAM,CAEd,EAAE,KAAK,QAAQ,MAAM,IAAI,CAC9B,CACE,QAAS,CACH,KAAK,yBAGT,KAAK,WAAa,GAClB,KAAK,YAAY,IAAM,CAChB,KAAK,YACR,KAAK,KAAM,CAEd,EAAE,KAAK,QAAQ,MAAM,IAAI,EAC9B,CACE,YAAYphC,EAASsyB,EAAS,CAC5B,aAAa,KAAK,QAAQ,EAC1B,KAAK,SAAW,WAAWtyB,EAASsyB,CAAO,CAC/C,CACE,sBAAuB,CACrB,OAAO,OAAO,OAAO,KAAK,cAAc,EAAE,SAAS,EAAI,CAC3D,CACE,WAAWikB,EAAQ,CACjB,MAAMimF,EAAiBvU,GAAY,kBAAkB,KAAK,QAAQ,EAClE,UAAWwU,KAAiB,OAAO,KAAKD,CAAc,EAChD/B,GAAsB,IAAIgC,CAAa,GACzC,OAAOD,EAAeC,CAAa,EAGvC,OAAAlmF,EAAS,CACP,GAAGimF,EACH,GAAI,OAAOjmF,GAAW,UAAYA,EAASA,EAAS,CAAE,CACvD,EACDA,EAAS,KAAK,gBAAgBA,CAAM,EACpCA,EAAS,KAAK,kBAAkBA,CAAM,EACtC,KAAK,iBAAiBA,CAAM,EACrBA,CACX,CACE,kBAAkBA,EAAQ,CACxB,OAAAA,EAAO,UAAYA,EAAO,YAAc,GAAQ,SAAS,KAAO7b,GAAW6b,EAAO,SAAS,EACvF,OAAOA,EAAO,OAAU,WAC1BA,EAAO,MAAQ,CACb,KAAMA,EAAO,MACb,KAAMA,EAAO,KACd,GAEC,OAAOA,EAAO,OAAU,WAC1BA,EAAO,MAAQA,EAAO,MAAM,SAAU,GAEpC,OAAOA,EAAO,SAAY,WAC5BA,EAAO,QAAUA,EAAO,QAAQ,SAAU,GAErCA,CACX,CACE,oBAAqB,CACnB,MAAMA,EAAS,CAAE,EACjB,SAAW,CAAChjD,EAAKzC,CAAK,IAAK,OAAO,QAAQ,KAAK,OAAO,EAChD,KAAK,YAAY,QAAQyC,CAAG,IAAMzC,IACpCylD,EAAOhjD,CAAG,EAAIzC,GAGlB,OAAAylD,EAAO,SAAW,GAClBA,EAAO,QAAU,SAKVA,CACX,CACE,gBAAiB,CACX,KAAK,UACP,KAAK,QAAQ,QAAS,EACtB,KAAK,QAAU,MAEb,KAAK,MACP,KAAK,IAAI,OAAQ,EACjB,KAAK,IAAM,KAEjB,CAGE,OAAO,gBAAgBA,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM7zC,EAAOs0G,GAAQ,oBAAoB,KAAMzgE,CAAM,EACrD,GAAI,OAAOA,GAAW,SAGtB,IAAI,OAAO7zC,EAAK6zC,CAAM,EAAM,IAC1B,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAEnD7zC,EAAK6zC,CAAM,EAAG,EACpB,CAAK,CACL,CACA,CAMAsuE,GAAmB7N,EAAO,EAc1B,MAAM0lB,GAAS,UACTC,GAAiB,kBACjBC,GAAmB,gBACnBC,GAAY,CAChB,GAAG7lB,GAAQ,QACX,QAAS,GACT,OAAQ,CAAC,EAAG,CAAC,EACb,UAAW,QACX,SAAU,8IACV,QAAS,OACX,EACM8lB,GAAgB,CACpB,GAAG9lB,GAAQ,YACX,QAAS,gCACX,EAMA,MAAM+lB,WAAgB/lB,EAAQ,CAE5B,WAAW,SAAU,CACnB,OAAO6lB,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOJ,EACX,CAGE,gBAAiB,CACf,OAAO,KAAK,aAAe,KAAK,YAAa,CACjD,CAGE,wBAAyB,CACvB,MAAO,CACL,CAACC,EAAc,EAAG,KAAK,UAAW,EAClC,CAACC,EAAgB,EAAG,KAAK,YAAW,CACrC,CACL,CACE,aAAc,CACZ,OAAO,KAAK,yBAAyB,KAAK,QAAQ,OAAO,CAC7D,CAGE,OAAO,gBAAgBrmF,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM7zC,EAAOq6H,GAAQ,oBAAoB,KAAMxmF,CAAM,EACrD,GAAI,OAAOA,GAAW,SAGtB,IAAI,OAAO7zC,EAAK6zC,CAAM,EAAM,IAC1B,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAEnD7zC,EAAK6zC,CAAM,EAAG,EACpB,CAAK,CACL,CACA,CAMAsuE,GAAmBkY,EAAO,EAc1B,MAAMC,GAAS,YACTC,GAAa,eACbC,GAAc,IAAID,EAAU,GAC5BE,GAAe,YACfC,GAAiB,WAAWF,EAAW,GACvCG,GAAc,QAAQH,EAAW,GACjCI,GAAwB,OAAOJ,EAAW,GAAGC,EAAY,GACzDI,GAA2B,gBAC3BC,GAAsB,SACtBC,GAAoB,yBACpBC,GAAwB,SACxBC,GAA0B,oBAC1BC,GAAqB,YACrBC,GAAqB,YACrBC,GAAsB,mBACtBC,GAAsB,GAAGH,EAAkB,KAAKC,EAAkB,MAAMD,EAAkB,KAAKE,EAAmB,GAClHE,GAAoB,YACpBC,GAA6B,mBAC7BC,GAAY,CAChB,OAAQ,KAER,WAAY,eACZ,aAAc,GACd,OAAQ,KACR,UAAW,CAAC,GAAK,GAAK,CAAC,CACzB,EACMC,GAAgB,CACpB,OAAQ,gBAER,WAAY,SACZ,aAAc,UACd,OAAQ,UACR,UAAW,OACb,EAMA,MAAMC,WAAkB5V,EAAc,CACpC,YAAY3pH,EAAS03C,EAAQ,CAC3B,MAAM13C,EAAS03C,CAAM,EAGrB,KAAK,aAAe,IAAI,IACxB,KAAK,oBAAsB,IAAI,IAC/B,KAAK,aAAe,iBAAiB,KAAK,QAAQ,EAAE,YAAc,UAAY,KAAO,KAAK,SAC1F,KAAK,cAAgB,KACrB,KAAK,UAAY,KACjB,KAAK,oBAAsB,CACzB,gBAAiB,EACjB,gBAAiB,CAClB,EACD,KAAK,QAAO,CAChB,CAGE,WAAW,SAAU,CACnB,OAAO2nF,EACX,CACE,WAAW,aAAc,CACvB,OAAOC,EACX,CACE,WAAW,MAAO,CAChB,OAAOnB,EACX,CAGE,SAAU,CACR,KAAK,iCAAkC,EACvC,KAAK,yBAA0B,EAC3B,KAAK,UACP,KAAK,UAAU,WAAY,EAE3B,KAAK,UAAY,KAAK,gBAAiB,EAEzC,UAAWqB,KAAW,KAAK,oBAAoB,OAAM,EACnD,KAAK,UAAU,QAAQA,CAAO,CAEpC,CACE,SAAU,CACR,KAAK,UAAU,WAAY,EAC3B,MAAM,QAAS,CACnB,CAGE,kBAAkB9nF,EAAQ,CAExB,OAAAA,EAAO,OAAS7b,GAAW6b,EAAO,MAAM,GAAK,SAAS,KAGtDA,EAAO,WAAaA,EAAO,OAAS,GAAGA,EAAO,MAAM,cAAgBA,EAAO,WACvE,OAAOA,EAAO,WAAc,WAC9BA,EAAO,UAAYA,EAAO,UAAU,MAAM,GAAG,EAAE,IAAIzlD,GAAS,OAAO,WAAWA,CAAK,CAAC,GAE/EylD,CACX,CACE,0BAA2B,CACpB,KAAK,QAAQ,eAKlB6vE,EAAa,IAAI,KAAK,QAAQ,OAAQiX,EAAW,EACjDjX,EAAa,GAAG,KAAK,QAAQ,OAAQiX,GAAaK,GAAuBr3H,GAAS,CAChF,MAAMi4H,EAAoB,KAAK,oBAAoB,IAAIj4H,EAAM,OAAO,IAAI,EACxE,GAAIi4H,EAAmB,CACrBj4H,EAAM,eAAgB,EACtB,MAAM7V,EAAO,KAAK,cAAgB,OAC5Bue,EAASuvH,EAAkB,UAAY,KAAK,SAAS,UAC3D,GAAI9tI,EAAK,SAAU,CACjBA,EAAK,SAAS,CACZ,IAAKue,EACL,SAAU,QACtB,CAAW,EACD,MACV,CAGQve,EAAK,UAAYue,CACzB,CACA,CAAK,EACL,CACE,iBAAkB,CAChB,MAAMhe,EAAU,CACd,KAAM,KAAK,aACX,UAAW,KAAK,QAAQ,UACxB,WAAY,KAAK,QAAQ,UAC1B,EACD,OAAO,IAAI,qBAAqBi9F,GAAW,KAAK,kBAAkBA,CAAO,EAAGj9F,CAAO,CACvF,CAGE,kBAAkBi9F,EAAS,CACzB,MAAMuwC,EAAgBn8C,GAAS,KAAK,aAAa,IAAI,IAAIA,EAAM,OAAO,EAAE,EAAE,EACpEo8C,EAAWp8C,GAAS,CACxB,KAAK,oBAAoB,gBAAkBA,EAAM,OAAO,UACxD,KAAK,SAASm8C,EAAcn8C,CAAK,CAAC,CACnC,EACKq8C,GAAmB,KAAK,cAAgB,SAAS,iBAAiB,UAClEC,EAAkBD,GAAmB,KAAK,oBAAoB,gBACpE,KAAK,oBAAoB,gBAAkBA,EAC3C,UAAWr8C,KAAS4L,EAAS,CAC3B,GAAI,CAAC5L,EAAM,eAAgB,CACzB,KAAK,cAAgB,KACrB,KAAK,kBAAkBm8C,EAAcn8C,CAAK,CAAC,EAC3C,QACR,CACM,MAAMu8C,EAA2Bv8C,EAAM,OAAO,WAAa,KAAK,oBAAoB,gBAEpF,GAAIs8C,GAAmBC,EAA0B,CAG/C,GAFAH,EAASp8C,CAAK,EAEV,CAACq8C,EACH,OAEF,QACR,CAGU,CAACC,GAAmB,CAACC,GACvBH,EAASp8C,CAAK,CAEtB,CACA,CACE,kCAAmC,CACjC,KAAK,aAAe,IAAI,IACxB,KAAK,oBAAsB,IAAI,IAC/B,MAAMw8C,EAAc/V,GAAe,KAAK6U,GAAuB,KAAK,QAAQ,MAAM,EAClF,UAAWmB,KAAUD,EAAa,CAEhC,GAAI,CAACC,EAAO,MAAQta,GAAWsa,CAAM,EACnC,SAEF,MAAMP,EAAoBzV,GAAe,QAAQ,UAAUgW,EAAO,IAAI,EAAG,KAAK,QAAQ,EAGlF1a,GAAUma,CAAiB,IAC7B,KAAK,aAAa,IAAI,UAAUO,EAAO,IAAI,EAAGA,CAAM,EACpD,KAAK,oBAAoB,IAAIA,EAAO,KAAMP,CAAiB,EAEnE,CACA,CACE,SAAS7jI,EAAQ,CACX,KAAK,gBAAkBA,IAG3B,KAAK,kBAAkB,KAAK,QAAQ,MAAM,EAC1C,KAAK,cAAgBA,EACrBA,EAAO,UAAU,IAAI+iI,EAAmB,EACxC,KAAK,iBAAiB/iI,CAAM,EAC5B2rH,EAAa,QAAQ,KAAK,SAAUgX,GAAgB,CAClD,cAAe3iI,CACrB,CAAK,EACL,CACE,iBAAiBA,EAAQ,CAEvB,GAAIA,EAAO,UAAU,SAAS8iI,EAAwB,EAAG,CACvD1U,GAAe,QAAQoV,GAA4BxjI,EAAO,QAAQujI,EAAiB,CAAC,EAAE,UAAU,IAAIR,EAAmB,EACvH,MACN,CACI,UAAWsB,KAAajW,GAAe,QAAQpuH,EAAQkjI,EAAuB,EAG5E,UAAWvkI,KAAQyvH,GAAe,KAAKiW,EAAWf,EAAmB,EACnE3kI,EAAK,UAAU,IAAIokI,EAAmB,CAG9C,CACE,kBAAkBv8H,EAAQ,CACxBA,EAAO,UAAU,OAAOu8H,EAAmB,EAC3C,MAAMuB,EAAclW,GAAe,KAAK,GAAG6U,EAAqB,IAAIF,EAAmB,GAAIv8H,CAAM,EACjG,UAAW3K,KAAQyoI,EACjBzoI,EAAK,UAAU,OAAOknI,EAAmB,CAE/C,CAGE,OAAO,gBAAgBjnF,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM7zC,EAAO07H,GAAU,oBAAoB,KAAM7nF,CAAM,EACvD,GAAI,OAAOA,GAAW,SAGtB,IAAI7zC,EAAK6zC,CAAM,IAAM,QAAaA,EAAO,WAAW,GAAG,GAAKA,IAAW,cACrE,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAEnD7zC,EAAK6zC,CAAM,EAAG,EACpB,CAAK,CACL,CACA,CAMA6vE,EAAa,GAAG,OAAQkX,GAAuB,IAAM,CACnD,UAAW0B,KAAOnW,GAAe,KAAK4U,EAAiB,EACrDW,GAAU,oBAAoBY,CAAG,CAErC,CAAC,EAMDna,GAAmBuZ,EAAS,EAc5B,MAAMa,GAAS,MACTC,GAAa,SACbC,GAAc,IAAID,EAAU,GAC5BE,GAAe,OAAOD,EAAW,GACjCE,GAAiB,SAASF,EAAW,GACrCG,GAAe,OAAOH,EAAW,GACjCI,GAAgB,QAAQJ,EAAW,GACnCK,GAAuB,QAAQL,EAAW,GAC1CM,GAAgB,UAAUN,EAAW,GACrCO,GAAsB,OAAOP,EAAW,GACxCQ,GAAiB,YACjBC,GAAkB,aAClBC,GAAe,UACfC,GAAiB,YACjBC,GAAW,OACXC,GAAU,MACVC,GAAoB,SACpBC,GAAoB,OACpBC,GAAoB,OACpBC,GAAiB,WACjBC,GAA2B,mBAC3BC,GAAyB,iBACzBC,GAA+B,QAAQF,EAAwB,IAC/DG,GAAqB,sCACrBC,GAAiB,8BACjBC,GAAiB,YAAYH,EAA4B,qBAAqBA,EAA4B,iBAAiBA,EAA4B,GACvJI,GAAuB,2EACvBC,GAAsB,GAAGF,EAAc,KAAKC,EAAoB,GAChEE,GAA8B,IAAIZ,EAAiB,4BAA4BA,EAAiB,6BAA6BA,EAAiB,0BAMpJ,MAAMp1F,WAAY29E,EAAc,CAC9B,YAAY3pH,EAAS,CACnB,MAAMA,CAAO,EACb,KAAK,QAAU,KAAK,SAAS,QAAQ2hI,EAAkB,EAClD,KAAK,UAOV,KAAK,sBAAsB,KAAK,QAAS,KAAK,aAAY,CAAE,EAC5Dpa,EAAa,GAAG,KAAK,SAAUqZ,GAAep5H,GAAS,KAAK,SAASA,CAAK,CAAC,EAC/E,CAGE,WAAW,MAAO,CAChB,OAAO44H,EACX,CAGE,MAAO,CAEL,MAAM6B,EAAY,KAAK,SACvB,GAAI,KAAK,cAAcA,CAAS,EAC9B,OAIF,MAAMj6G,EAAS,KAAK,eAAgB,EAC9Bk6G,EAAYl6G,EAASu/F,EAAa,QAAQv/F,EAAQu4G,GAAc,CACpE,cAAe0B,CAChB,CAAA,EAAI,KACa1a,EAAa,QAAQ0a,EAAWxB,GAAc,CAC9D,cAAez4G,CACrB,CAAK,EACa,kBAAoBk6G,GAAaA,EAAU,mBAGzD,KAAK,YAAYl6G,EAAQi6G,CAAS,EAClC,KAAK,UAAUA,EAAWj6G,CAAM,EACpC,CAGE,UAAUhoB,EAASmiI,EAAa,CAC9B,GAAI,CAACniI,EACH,OAEFA,EAAQ,UAAU,IAAIohI,EAAiB,EACvC,KAAK,UAAUpX,GAAe,uBAAuBhqH,CAAO,CAAC,EAE7D,MAAMmxH,EAAW,IAAM,CACrB,GAAInxH,EAAQ,aAAa,MAAM,IAAM,MAAO,CAC1CA,EAAQ,UAAU,IAAIshI,EAAiB,EACvC,MACR,CACMthI,EAAQ,gBAAgB,UAAU,EAClCA,EAAQ,aAAa,gBAAiB,EAAI,EAC1C,KAAK,gBAAgBA,EAAS,EAAI,EAClCunH,EAAa,QAAQvnH,EAAS0gI,GAAe,CAC3C,cAAeyB,CACvB,CAAO,CACF,EACD,KAAK,eAAehR,EAAUnxH,EAASA,EAAQ,UAAU,SAASqhI,EAAiB,CAAC,CACxF,CACE,YAAYrhI,EAASmiI,EAAa,CAChC,GAAI,CAACniI,EACH,OAEFA,EAAQ,UAAU,OAAOohI,EAAiB,EAC1CphI,EAAQ,KAAM,EACd,KAAK,YAAYgqH,GAAe,uBAAuBhqH,CAAO,CAAC,EAE/D,MAAMmxH,EAAW,IAAM,CACrB,GAAInxH,EAAQ,aAAa,MAAM,IAAM,MAAO,CAC1CA,EAAQ,UAAU,OAAOshI,EAAiB,EAC1C,MACR,CACMthI,EAAQ,aAAa,gBAAiB,EAAK,EAC3CA,EAAQ,aAAa,WAAY,IAAI,EACrC,KAAK,gBAAgBA,EAAS,EAAK,EACnCunH,EAAa,QAAQvnH,EAASwgI,GAAgB,CAC5C,cAAe2B,CACvB,CAAO,CACF,EACD,KAAK,eAAehR,EAAUnxH,EAASA,EAAQ,UAAU,SAASqhI,EAAiB,CAAC,CACxF,CACE,SAAS75H,EAAO,CACd,GAAI,CAAC,CAACs5H,GAAgBC,GAAiBC,GAAcC,GAAgBC,GAAUC,EAAO,EAAE,SAAS35H,EAAM,GAAG,EACxG,OAEFA,EAAM,gBAAe,EACrBA,EAAM,eAAgB,EACtB,MAAMvQ,EAAW,KAAK,aAAc,EAAC,OAAO+I,GAAW,CAAC0lH,GAAW1lH,CAAO,CAAC,EAC3E,IAAIoiI,EACJ,GAAI,CAAClB,GAAUC,EAAO,EAAE,SAAS35H,EAAM,GAAG,EACxC46H,EAAoBnrI,EAASuQ,EAAM,MAAQ05H,GAAW,EAAIjqI,EAAS,OAAS,CAAC,MACxE,CACL,MAAM83H,EAAS,CAACgS,GAAiBE,EAAc,EAAE,SAASz5H,EAAM,GAAG,EACnE46H,EAAoB5b,GAAqBvvH,EAAUuQ,EAAM,OAAQunH,EAAQ,EAAI,CACnF,CACQqT,IACFA,EAAkB,MAAM,CACtB,cAAe,EACvB,CAAO,EACDp2F,GAAI,oBAAoBo2F,CAAiB,EAAE,KAAM,EAEvD,CACE,cAAe,CAEb,OAAOpY,GAAe,KAAK+X,GAAqB,KAAK,OAAO,CAChE,CACE,gBAAiB,CACf,OAAO,KAAK,aAAc,EAAC,KAAK/kI,GAAS,KAAK,cAAcA,CAAK,CAAC,GAAK,IAC3E,CACE,sBAAsBoF,EAAQnL,EAAU,CACtC,KAAK,yBAAyBmL,EAAQ,OAAQ,SAAS,EACvD,UAAWpF,KAAS/F,EAClB,KAAK,6BAA6B+F,CAAK,CAE7C,CACE,6BAA6BA,EAAO,CAClCA,EAAQ,KAAK,iBAAiBA,CAAK,EACnC,MAAM+qB,EAAW,KAAK,cAAc/qB,CAAK,EACnCqlI,EAAY,KAAK,iBAAiBrlI,CAAK,EAC7CA,EAAM,aAAa,gBAAiB+qB,CAAQ,EACxCs6G,IAAcrlI,GAChB,KAAK,yBAAyBqlI,EAAW,OAAQ,cAAc,EAE5Dt6G,GACH/qB,EAAM,aAAa,WAAY,IAAI,EAErC,KAAK,yBAAyBA,EAAO,OAAQ,KAAK,EAGlD,KAAK,mCAAmCA,CAAK,CACjD,CACE,mCAAmCA,EAAO,CACxC,MAAMpB,EAASouH,GAAe,uBAAuBhtH,CAAK,EACrDpB,IAGL,KAAK,yBAAyBA,EAAQ,OAAQ,UAAU,EACpDoB,EAAM,IACR,KAAK,yBAAyBpB,EAAQ,kBAAmB,GAAGoB,EAAM,EAAE,EAAE,EAE5E,CACE,gBAAgBgD,EAASsiI,EAAM,CAC7B,MAAMD,EAAY,KAAK,iBAAiBriI,CAAO,EAC/C,GAAI,CAACqiI,EAAU,UAAU,SAASd,EAAc,EAC9C,OAEF,MAAMv7G,EAAS,CAACjd,EAAU9H,IAAc,CACtC,MAAMjB,EAAUgqH,GAAe,QAAQjhH,EAAUs5H,CAAS,EACtDriI,GACFA,EAAQ,UAAU,OAAOiB,EAAWqhI,CAAI,CAE3C,EACDt8G,EAAOw7G,GAA0BJ,EAAiB,EAClDp7G,EAAOy7G,GAAwBH,EAAiB,EAChDe,EAAU,aAAa,gBAAiBC,CAAI,CAChD,CACE,yBAAyBtiI,EAASgP,EAAW/c,EAAO,CAC7C+N,EAAQ,aAAagP,CAAS,GACjChP,EAAQ,aAAagP,EAAW/c,CAAK,CAE3C,CACE,cAAc2lC,EAAM,CAClB,OAAOA,EAAK,UAAU,SAASwpG,EAAiB,CACpD,CAGE,iBAAiBxpG,EAAM,CACrB,OAAOA,EAAK,QAAQmqG,EAAmB,EAAInqG,EAAOoyF,GAAe,QAAQ+X,GAAqBnqG,CAAI,CACtG,CAGE,iBAAiBA,EAAM,CACrB,OAAOA,EAAK,QAAQgqG,EAAc,GAAKhqG,CAC3C,CAGE,OAAO,gBAAgB8f,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM7zC,EAAOmoC,GAAI,oBAAoB,IAAI,EACzC,GAAI,OAAO0L,GAAW,SAGtB,IAAI7zC,EAAK6zC,CAAM,IAAM,QAAaA,EAAO,WAAW,GAAG,GAAKA,IAAW,cACrE,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAEnD7zC,EAAK6zC,CAAM,EAAG,EACpB,CAAK,CACL,CACA,CAMA6vE,EAAa,GAAG,SAAUoZ,GAAsBmB,GAAsB,SAAUt6H,EAAO,CACjF,CAAC,IAAK,MAAM,EAAE,SAAS,KAAK,OAAO,GACrCA,EAAM,eAAgB,EAEpB,CAAAk+G,GAAW,IAAI,GAGnB15E,GAAI,oBAAoB,IAAI,EAAE,KAAM,CACtC,CAAC,EAKDu7E,EAAa,GAAG,OAAQsZ,GAAqB,IAAM,CACjD,UAAW7gI,KAAWgqH,GAAe,KAAKgY,EAA2B,EACnEh2F,GAAI,oBAAoBhsC,CAAO,CAEnC,CAAC,EAKDgmH,GAAmBh6E,EAAG,EActB,MAAMu2F,GAAO,QACPC,GAAW,WACXC,GAAY,IAAID,EAAQ,GACxBE,GAAkB,YAAYD,EAAS,GACvCE,GAAiB,WAAWF,EAAS,GACrCG,GAAgB,UAAUH,EAAS,GACnCI,GAAiB,WAAWJ,EAAS,GACrCK,GAAa,OAAOL,EAAS,GAC7BM,GAAe,SAASN,EAAS,GACjCO,GAAa,OAAOP,EAAS,GAC7BQ,GAAc,QAAQR,EAAS,GAC/BS,GAAkB,OAClBC,GAAkB,OAClBC,GAAkB,OAClBC,GAAqB,UACrBC,GAAc,CAClB,UAAW,UACX,SAAU,UACV,MAAO,QACT,EACMC,GAAU,CACd,UAAW,GACX,SAAU,GACV,MAAO,GACT,EAMA,MAAM31F,WAAc+7E,EAAc,CAChC,YAAY3pH,EAAS03C,EAAQ,CAC3B,MAAM13C,EAAS03C,CAAM,EACrB,KAAK,SAAW,KAChB,KAAK,qBAAuB,GAC5B,KAAK,wBAA0B,GAC/B,KAAK,cAAe,CACxB,CAGE,WAAW,SAAU,CACnB,OAAO6rF,EACX,CACE,WAAW,aAAc,CACvB,OAAOD,EACX,CACE,WAAW,MAAO,CAChB,OAAOf,EACX,CAGE,MAAO,CAEL,GADkBhb,EAAa,QAAQ,KAAK,SAAUyb,EAAU,EAClD,iBACZ,OAEF,KAAK,cAAe,EAChB,KAAK,QAAQ,WACf,KAAK,SAAS,UAAU,IAAIE,EAAe,EAE7C,MAAM/R,EAAW,IAAM,CACrB,KAAK,SAAS,UAAU,OAAOkS,EAAkB,EACjD9b,EAAa,QAAQ,KAAK,SAAU0b,EAAW,EAC/C,KAAK,mBAAoB,CAC1B,EACD,KAAK,SAAS,UAAU,OAAOE,EAAe,EAC9Cvd,GAAO,KAAK,QAAQ,EACpB,KAAK,SAAS,UAAU,IAAIwd,GAAiBC,EAAkB,EAC/D,KAAK,eAAelS,EAAU,KAAK,SAAU,KAAK,QAAQ,SAAS,CACvE,CACE,MAAO,CAKL,GAJI,CAAC,KAAK,WAGQ5J,EAAa,QAAQ,KAAK,SAAUub,EAAU,EAClD,iBACZ,OAEF,MAAM3R,EAAW,IAAM,CACrB,KAAK,SAAS,UAAU,IAAIgS,EAAe,EAC3C,KAAK,SAAS,UAAU,OAAOE,GAAoBD,EAAe,EAClE7b,EAAa,QAAQ,KAAK,SAAUwb,EAAY,CACjD,EACD,KAAK,SAAS,UAAU,IAAIM,EAAkB,EAC9C,KAAK,eAAelS,EAAU,KAAK,SAAU,KAAK,QAAQ,SAAS,CACvE,CACE,SAAU,CACR,KAAK,cAAe,EAChB,KAAK,WACP,KAAK,SAAS,UAAU,OAAOiS,EAAe,EAEhD,MAAM,QAAS,CACnB,CACE,SAAU,CACR,OAAO,KAAK,SAAS,UAAU,SAASA,EAAe,CAC3D,CAIE,oBAAqB,CACd,KAAK,QAAQ,WAGd,KAAK,sBAAwB,KAAK,0BAGtC,KAAK,SAAW,WAAW,IAAM,CAC/B,KAAK,KAAM,CACjB,EAAO,KAAK,QAAQ,KAAK,GACzB,CACE,eAAe57H,EAAOg8H,EAAe,CACnC,OAAQh8H,EAAM,KAAI,CAChB,IAAK,YACL,IAAK,WACH,CACE,KAAK,qBAAuBg8H,EAC5B,KACV,CACM,IAAK,UACL,IAAK,WACH,CACE,KAAK,wBAA0BA,EAC/B,KACV,CACA,CACI,GAAIA,EAAe,CACjB,KAAK,cAAe,EACpB,MACN,CACI,MAAMxU,EAAcxnH,EAAM,cACtB,KAAK,WAAawnH,GAAe,KAAK,SAAS,SAASA,CAAW,GAGvE,KAAK,mBAAoB,CAC7B,CACE,eAAgB,CACdzH,EAAa,GAAG,KAAK,SAAUmb,GAAiBl7H,GAAS,KAAK,eAAeA,EAAO,EAAI,CAAC,EACzF+/G,EAAa,GAAG,KAAK,SAAUob,GAAgBn7H,GAAS,KAAK,eAAeA,EAAO,EAAK,CAAC,EACzF+/G,EAAa,GAAG,KAAK,SAAUqb,GAAep7H,GAAS,KAAK,eAAeA,EAAO,EAAI,CAAC,EACvF+/G,EAAa,GAAG,KAAK,SAAUsb,GAAgBr7H,GAAS,KAAK,eAAeA,EAAO,EAAK,CAAC,CAC7F,CACE,eAAgB,CACd,aAAa,KAAK,QAAQ,EAC1B,KAAK,SAAW,IACpB,CAGE,OAAO,gBAAgBkwC,EAAQ,CAC7B,OAAO,KAAK,KAAK,UAAY,CAC3B,MAAM7zC,EAAO+pC,GAAM,oBAAoB,KAAM8J,CAAM,EACnD,GAAI,OAAOA,GAAW,SAAU,CAC9B,GAAI,OAAO7zC,EAAK6zC,CAAM,EAAM,IAC1B,MAAM,IAAI,UAAU,oBAAoBA,CAAM,GAAG,EAEnD7zC,EAAK6zC,CAAM,EAAE,IAAI,CACzB,CACA,CAAK,CACL,CACA,CAMA0yE,GAAqBx8E,EAAK,EAM1Bo4E,GAAmBp4E,EAAK,ECt1IjB,SAAS61F,GAAWvqI,EAKxB,CACGA,GAAAA,EAAMjH,QAAU6V,OAClB,MAAA,CAAA,EAGE63D,IAAAA,EACI,OAAA,OAAOzmE,EAAMjH,MAAK,CACxB,IAAK,SACL,IAAK,UACCyxI,EAAAA,mBACD,GAAExqI,EAAMqhE,MAAQrhE,EAAMqhE,MAAQ,IAAM,EAAG,GAAErhE,EAAMjH,KAAM,EACxD,EACA,MACF,QACMA,IAAAA,EACA,GAAA,CACFA,EAAQiH,EAAMjH,MAAM0xI,WAAW,IAAK,KAAK,OAC5B,CACb/kE,QAAQC,IAAK,oBAAmB3lE,EAAMjH,KAAM,EAAC,CAAA,CAE3CyxI,EAAAA,mBACD,GAAExqI,EAAMqhE,MAAQrhE,EAAMqhE,MAAQ,IAAM,EAAG,IAAGtoE,CAAM,GACnD,EACA,KAAA,CAEJ,OAAAqW,EACG2wC,GAAC,CAACnyC,KAAO,aAAY64D,CAAE,GAAC,IAAA,OAAA,CAAA,OAASzmE,EAAM+1B,KAAK,EAAA,IAAAh4B,UAAA,CAC1CiC,OAAAA,EAAMjC,UAAYiC,EAAMjH,KAAAA,CAAK,CAAA,CAGpC,CClCO,SAAS2xI,GAAuBp8H,EAAsB,CACvD,GAAA,CACF,MAAMjU,EAASiU,EAAM,QACb,OAAAA,EAAM,QAAQ,WAAY,CAChC,IAAK,QAAS,CACN,MAAAwyB,EAAQxyB,EAAM,QAAQ,MAC5B,OAAIwyB,EAAM,UACD,GAAGA,EAAM,SAAS,GAElB,IAAIA,EAAM,GAAG,IAAIA,EAAM,YAAY,IAAIA,EAAM,GAAG,MAAMA,EAAM,QAAQ,GAC7E,CAEF,IAAK,UAAW,CACR,MAAA6pG,EAAOr8H,EAAM,QAAQ,QACvB,OAAAq8H,EAAK,OAAS,WACT,GAAGA,EAAK,SAAS,MAAMA,EAAK,KAAK,GAC/BA,EAAK,OAAS,SAChB,WAAWA,EAAK,KAAK,GACnBA,EAAK,OAAS,SAChB,WAAWA,EAAK,KAAK,GAEvB,KAAK,UAAUA,CAAI,CAAA,CAE5B,IAAK,MAAO,CACJ,MAAAC,EAAMt8H,EAAM,QAAQ,IACtB,OAAAs8H,EAAI,QAAU,UACT,mBAAmBA,EAAI,OAAO,SAASA,EAAI,MAAM,GAC/CA,EAAI,QAAU,QAChB,SAASA,EAAI,MAAM,UAAUA,EAAI,OAAO,GAE1C,KAAK,UAAUA,CAAG,CAAA,CAE3B,IAAK,OAAQ,CACL,MAAAC,EAAOv8H,EAAM,QAAQ,KAC3B,IAAI+9D,EAAQ,CAACw+D,EAAK,KAAK,aAAa,EACpC,OAAIA,EAAK,UACPx+D,EAAM,KAAK,aAAaw+D,EAAK,QAAQ,EAAE,EAErCA,EAAK,aAAeA,EAAK,aAAe,WAC1Cx+D,EAAM,KAAK,gBAAgBw+D,EAAK,WAAW,EAAE,EAE3CA,EAAK,WACPx+D,EAAM,KAAK,cAAcw+D,EAAK,SAAS,EAAE,EAEpCx+D,EAAM,KAAK,GAAG,CAAA,CAEvB,IAAK,MAAO,CACJ,MAAAy+D,EAAMx8H,EAAM,QAAQ,IAC1B,IAAI+9D,EAAQ,CAACy+D,EAAI,KAAK,aAAa,EAEnC,OAAIA,EAAI,SAAWA,EAAI,QAAQ,CAAC,GAC9Bz+D,EAAM,KAAKy+D,EAAI,QAAQ,CAAC,EAAE,MAAM,EAChCz+D,EAAM,KAAKy+D,EAAI,QAAQ,CAAC,EAAE,MAAM,GACvBA,EAAI,SACPz+D,EAAA,KAAKy+D,EAAI,MAAM,EACfz+D,EAAA,KAAKy+D,EAAI,MAAM,GAGnBA,EAAI,OAASA,EAAI,QAAU,WAC7Bz+D,EAAM,KAAS,IAAKy+D,EAAI,KAAM,EAEzBz+D,EAAM,KAAK,GAAG,CAAA,CAEvB,IAAK,OAAQ,CACX,MAAMhyE,EAAS0wI,GACbz8H,EAAM,QAAQ,OACdA,EAAM,QAAQ,QAChB,EACM08H,EAAOD,GACXz8H,EAAM,QAAQ,QACdA,EAAM,QAAQ,SAChB,EACO,MAAA,GAAGjU,CAAM,OAAO2wI,CAAI,EAAA,CAE7B,IAAK,SAAU,CACb,IAAI3+D,EAAQ,CAAC,EACT,OAAA/9D,EAAM,QAAQ,WAChB+9D,EAAM,KAAK/9D,EAAM,QAAQ,UAAU,aAAa,EAE9CA,EAAM,QAAQ,QAAQ,SACxB+9D,EAAM,KAAK/9D,EAAM,QAAQ,OAAO,OAAO,EAElC+9D,EAAM,KAAK,GAAG,CAAA,CAEvB,IAAK,WAAY,CACT,MAAA4+D,EAAW38H,EAAM,QAAQ,SAC/B,IAAI+9D,EAAQ,CAAC,EAGT,GAFEA,EAAA,KAAK4+D,GAAU,QAAQ,EAEzB38H,EAAM,QAAQ,MAAO,CACjB,MAAA48H,EAAQ58H,EAAM,QAAQ,MACjB,UAAAs+C,KAAUs+E,EAAM,gBACrBt+E,EAAO,OAAS,aAClByf,EAAM,KAAK,aAAazf,EAAO,KAAK,EAAE,EAC7BA,EAAO,OAAS,SACzByf,EAAM,KAAK,QAAQzf,EAAO,KAAK,EAAE,CAErC,CAGE,GAAAt+C,EAAM,QAAQ,KAAM,CAChB,MAAA68H,EAAO78H,EAAM,QAAQ,KACvB68H,EAAK,UACP9+D,EAAM,KAAK,YAAY8+D,EAAK,QAAQ,EAAE,EAEpCA,EAAK,KACP9+D,EAAM,KAAK,QAAQ8+D,EAAK,GAAG,EAAE,EAE3BA,EAAK,mBACP9+D,EAAM,KAAK,gBAAgB8+D,EAAK,iBAAiB,EAAE,CACrD,CAEK,OAAA9+D,EAAM,KAAK,GAAG,CAAA,CAEvB,IAAK,OAAQ,CACL,MAAA++D,EACJ98H,EAAM,QAAQ,MAAM,cAClBA,EAAM,QAAQ,MAAM,eAAkB,MACpCohD,EACJphD,EAAM,QAAQ,MAAM,eAClBA,EAAM,QAAQ,MAAM,gBAAmB,MACrCjU,EAAS0wI,GACbz8H,EAAM,QAAQ,OACdA,EAAM,QAAQ,QAChB,EACM08H,EAAOD,GACXz8H,EAAM,QAAQ,QACdA,EAAM,QAAQ,SAChB,EACI,IAAA+8H,EACF/8H,EAAM,QAAQ,MAAM,KAAO,KAAYA,EAAM,QAAQ,KAAK,IAAM,MAQ3D,MAPK,CACVA,EAAM,QAAQ,MACd,GAAGjU,CAAM,OAAO2wI,CAAI,GACpB,OAAOK,CAAG,GACV,WAAWD,CAAO,GAClB,SAAS17E,CAAK,EAChB,EACa,KAAK,GAAG,CAAA,CAEvB,IAAK,UAAW,CACR,MAAA47E,EAAUh9H,EAAM,QAAQ,QAChBi9H,GAAAj9H,EAAM,QAAQ,MAAM,EAClC,MAAMjU,EAAS0wI,GACbz8H,EAAM,QAAQ,OACdA,EAAM,QAAQ,QAChB,EACM08H,EAAOD,GACXz8H,EAAM,QAAQ,QACdA,EAAM,QAAQ,SAChB,EAQO,MAPK,CACVA,EAAM,QAAQ,MACd,GAAGjU,CAAM,OAAO2wI,CAAI,GACpB,OAAOM,EAAQ,GAAG,GAClB,WAAWA,EAAQ,IAAI,GACvB,SAASA,EAAQ,KAAK,EACxB,EACa,KAAK,GAAG,CAAA,CAEvB,IAAK,MAAO,CACV,MAAME,EAAMnxI,EAAO,IACnB,IAAIgyE,EAAQ,CAAC,EACb,OAAIm/D,EAAI,QACAn/D,EAAA,KAAKm/D,EAAI,OAAO,EAEtBn/D,EAAM,KAAK,KAAK,EAEdm/D,EAAI,KACAn/D,EAAA,KAAKm/D,EAAI,GAAG,EAEhBA,EAAI,SACAn/D,EAAA,KAAKm/D,EAAI,OAAO,EAEjBn/D,EAAM,KAAK,KAAK,CAAA,CAEzB,IAAK,OAAQ,CACL,MAAA8+D,EAAO78H,EAAM,QAAQ,KAC3B,IAAI+9D,EAAQ,CAAC,EACb,OAAI8+D,EAAK,aACD9+D,EAAA,KAAK8+D,EAAK,WAAW,EAEzBA,EAAK,UACD9+D,EAAA,KAAK8+D,EAAK,QAAQ,EAEtBA,EAAK,KACD9+D,EAAA,KAAK8+D,EAAK,GAAG,EAEd9+D,EAAM,KAAK,GAAG,CAAA,CAEvB,IAAK,MAAO,CACJ,MAAAo/D,EAAMn9H,EAAM,QAAQ,IACnB,MAAA,GAAGm9H,GAAK,OAAO,MAAMA,GAAK,MAAM,KAAKA,GAAK,OAAO,GAAA,CAE1D,IAAK,MAAO,CACJ,MAAAC,EAAMp9H,EAAM,QAAQ,IAC1B,MAAO,GAAGo9H,GAAK,QAAQ,kBAAoB,SAAS,IAClDA,GAAK,QAAQ,eAAiB,SAChC,OAAOA,GAAK,QAAQ,kBAAoB,SAAS,IAC/CA,GAAK,QAAQ,eAAiB,SAChC,EAAA,CAEF,IAAK,QAAS,CACN,MAAAC,EAAQr9H,EAAM,QAAQ,MAC5B,IAAI+9D,EAAQ,CAAC,EACT,OAAAs/D,EAAM,QAAQ,OAAS,QACzBt/D,EAAM,KAAK,WAAWs/D,EAAM,QAAQ,IAAI,EAAE,EAExCA,EAAM,QAAQ,QAAU,QAC1Bt/D,EAAM,KAAK,SAASs/D,EAAM,QAAQ,KAAK,EAAE,EAEvCA,EAAM,SAAS,eAAiB,QAClCt/D,EAAM,KAAK,SAASs/D,EAAM,QAAQ,YAAY,EAAE,EAE9CA,EAAM,SAAW,QACbt/D,EAAA,KAAK,WAAWjN,GAAausE,EAAM,MAAM,EAAE,SAAU,CAAA,EAAE,EAExDt/D,EAAM,KAAK,GAAG,CAAA,CAEvB,IAAK,OAAQ,CACP,IAAAu/D,EAAOt9H,EAAM,QAAQ,KACrB+9D,EAAQ,CAAC,EACb,OAAIu/D,EAAK,SACPv/D,EAAM,KAAK,WAAWu/D,EAAK,OAAO,EAAE,EAElCA,EAAK,KACPv/D,EAAM,KAAK,OAAOu/D,EAAK,GAAG,EAAE,EAEvBv/D,EAAM,KAAK,IAAI,CAAA,CAExB,IAAK,MAAO,CACN,IAAAw/D,EAAMv9H,EAAM,QAAQ,IACxB,OAAIu9H,EAAI,aACC,YAAYA,EAAI,YAAY,GAC1BA,EAAI,cACN,aAAaA,EAAI,aAAa,GAE9B,GAAG,KAAK,UAAUA,CAAG,CAAC,EAC/B,CAEF,QAAS,CACD,MAAAC,EAAax9H,EAAM,QAAQ,WACjC,OAAIw9H,GAAcx9H,EAAM,QAAQw9H,CAAU,EACjC,KAAK,UAAUx9H,EAAM,QAAQw9H,CAAU,CAAC,EAE1C,KAAK,UAAUx9H,EAAM,OAAO,CAAA,CACrC,QAEKtS,EAAG,CACF,eAAA,IAAI,uCAAuCA,CAAC,EAAE,EAC/C,wBAAA,CAEX,CAEgB,SAAA+uI,GACdgB,EACAC,EACQ,CACR,OAAIA,EACK,GAAGT,GAAcQ,CAAI,CAAC,KAAKC,CAAI,IAE/BT,GAAcQ,CAAI,CAE7B,CAEO,SAASR,GAAcQ,EAAc,CAC1C,OAAKA,EAGEA,EAAK,QAAQ,YAAa,GAAG,EAF3B,EAGX,CC/Qa,KAAA,CAACE,GAAOC,EAAS,EAAIpzI,EAChCqzI,GAAqB,CACvB,EAOO,SAASC,IAAoD,CAC3D,MAAA,CACL,iBAAkB,QAClB,cAAe,CACjB,CACF,CAEO,SAASD,IAA0C,CACpD,IAAAE,EAAa,aAAa,QAAQ,mBAAmB,EACzD,GAAI,CAACA,EACH,eAAQ,IAAI,8DAA8D,EACnED,GAA+B,EAEpC,GAAA,CACM,OAAAC,EAAA,KAAK,MAAMA,CAAK,EAExBA,EAAQ,CAAE,GAAGD,GAA+B,EAAG,GAAGC,CAAM,EACjDA,OACG,CACV,OAAOD,GAA+B,CAAA,CAE1C,CAEO,SAASE,GAAsBD,EAA0B,CAC9D,aAAa,QAAQ,oBAAqB,KAAK,UAAUA,CAAK,CAAC,EAC/DH,GAAUG,CAAK,CACjB,u3DC1BO,SAASE,GAAoBvsI,EAOjC,CACKwsI,MAAAA,EAAczzI,GACdiH,EAAMysI,YACRr9H,EACGm7H,GAAU,CAACxxI,MAAAA,EAAY,IAAEsoE,OAAK,CAAA,OAAErhE,EAAMysI,WAAW,EAAA1uI,SAC/ChF,CAAAA,CAAK,EAIVqW,EAAQm7H,GAAU,CAACxxI,MAAAA,EAAYgF,SAAGhF,CAAAA,CAAK,EAIrCswC,EAAQA,IACR,OAAOrpC,EAAMqpC,OAAU,WAClBrpC,EAAMqpC,MAAM,EAEdrpC,EAAMqpC,MAGT5D,EAASA,IACT,OAAOzlC,EAAMylC,QAAW,WACnBzlC,EAAMylC,OAAO,EAEfzlC,EAAMylC,OAGf,OAAA,IAAA,CAAA,IAAAj2B,EAAAuxC,GAAAA,EAAArxC,EAAAF,EAAAi9B,WAAA/8B,OAAAA,EAAAA,EAIS25B,EAAK,IAAA,EAAA35B,EAAAA,EAAAN,EACL1L,EAAI,CAAA,IAACszB,MAAI,CAAEh3B,OAAAA,EAAM8qH,UAAYl8G,QAAa5O,EAAM8qH,OAAO,EAAA,IAAA/sH,UAAA,CAAA,IAAAmpE,EAAAz3D,GAAA,EAAAi9H,EAAAxlE,EAAAz6B,WAAAwU,EAAAyrF,EAAAjgG,WAAAigG,OAAAA,EAAAA,EAQJjnG,EAAMwb,CAAA,EAAAimB,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAA13D,EAAAA,EAAAJ,EAW3D1L,EAAI,CAAA,IAACszB,MAAI,CAAEh3B,OAAAA,EAAM2sI,KAAKzqI,QAAU,CAAC,EAAA,IAAAnE,UAAA,CAAA,OAAAkxC,GAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAAz/B,EAAAA,EAAAJ,EAGjC1L,EAAI,CAAA,IAACszB,MAAI,CAAEh3B,OAAAA,EAAM2sI,KAAKzqI,OAAS,CAAC,EAAA,IAAAnE,UAAA,CAAA,IAAAimE,EAAAnjB,GAAA,EAAAa,EAAAsiB,EAAAv3B,WAAAoV,EAAAH,EAAAjV,WAAAy3B,EAAAriB,EAAApV,WAAA03B,EAAAD,EAAAz3B,WAAA63B,EAAAH,EAAAF,YAAAM,EAAA1iB,EAAAoiB,YAAAK,OAAAA,EAAAA,EAMlBtkE,IAAAA,EAAMyoC,KAAK,EAAA87B,EAAAA,EAAAn1D,EAIjB5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEp0C,EAAM2sI,IAAI,EAAA5uI,aACd,IAAA,CAAA,IAAAymE,EAAAtjB,GAAA,EAAAujB,EAAAD,EAAA/3B,WAAAk4B,EAAAF,EAAAR,YAAAQ,OAAAA,EAAAA,EAE0BkyC,IAAAA,EAAIngH,KAAK,EAAA2/B,EAAAwuC,EACZ6nE,IAAAA,EAAW71B,EAAIn7G,GAAG,CAAC,EAAAgpE,CAAA,GAAA,CAAA,CAE9C,CAAA,EAAAR,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAx0D,CAAAA,GAAA,CASnB,CAEO,SAASo9H,GAAY5sI,EAA0C,CAC9D6sI,MAAAA,EAAgB50F,GAAgB,CAC9B60F,EAAAA,WAAYC,GAChBA,EAAQ90F,OAAQwI,GAAWA,IAAMxI,CAAM,CACzC,CACF,EAEM+0F,EAAgB/0F,GAAmB,CACjC60F,EAAAA,WAAYC,GAAmB,CAC7BtwI,MAAAA,EAAIswI,EAAQh8G,QAAQknB,CAAM,EAChC,OAAI80F,EAAQtwI,CAAC,EAAE2jD,WAAW,GAAG,EAC3B2sF,EAAQtwI,CAAC,EAAIswI,EAAQtwI,CAAC,EAAEmiC,MAAM,CAAC,EAE/BmuG,EAAQtwI,CAAC,EAAK,IAAGswI,EAAQtwI,CAAC,CAAE,GAEvB,CAAC,GAAGswI,CAAO,CAAA,CACnB,CACH,EAEME,EAAeh1F,GACfA,EAAOmI,WAAW,GAAG,EAChB,oBAEA,oBAIL8sF,EAAaj1F,GACVA,EAAOmI,WAAW,GAAG,EAGxB+sF,EAAal1F,GACb,CAACA,EAAOmI,WAAW,GAAG,GAAK,CAACnI,EAAOmI,WAAW,GAAG,EAMjDgtF,EAAgBn1F,GAAmB,CACjC60F,EAAAA,WAAYC,GAAsB,CAChCtwI,MAAAA,EAAIswI,EAAQh8G,QAAQknB,CAAM,EAChC,OAAI80F,EAAQtwI,CAAC,EAAE2jD,WAAW,KAAK,EAC7B2sF,EAAQtwI,CAAC,EAAIswI,EAAQtwI,CAAC,EAAEqgD,QAAQ,MAAO,OAAO,EAE9CiwF,EAAQtwI,CAAC,EAAIswI,EAAQtwI,CAAC,EAAEqgD,QAAQ,QAAS,KAAK,EAEzC,CAAC,GAAGiwF,CAAO,CAAA,CACnB,CACH,EAEA,OAAA,IAAA,CAAA,IAAAM,EAAA/rF,GAAA,EAAAojB,EAAA2oE,EAAA5gG,WAAAm4B,EAAAF,EAAAj4B,WAAAm4B,OAAAA,EAAAkC,QAMmB,IAAM9mE,EAAM8sI,WAAW,CAAA,CAAE,EAACpoE,EAAAA,EAAAt1D,EAIpC5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEp0C,EAAM+sI,QAAQ,CAAC,EAAAhvI,SACXk6C,IACX,IAAA,CAAAmsB,IAAAA,EAAApiB,KAAAsrF,EAAAlpE,EAAA33B,WAAA8gG,EAAAD,EAAArpE,YAAAupE,EAAAD,EAAAtpE,YAAA9tC,OAAAA,EAAAm3G,EAQSr1F,CAAM,EAAAs1F,EAAAA,EAAAn+H,EAIN1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEk2G,EAAUj1F,CAAM,CAAC,EAAA,IAAAl6C,UAAA,CAAA,IAAA0vI,EAAAjsF,GAAAA,EAAAksF,EAAAD,EAAAhhG,WAAAq6B,OAAAA,EAAAA,QAId,IAAMkmE,EAAa/0F,CAAM,EAACw1F,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAF,EAAAA,EAAAn+H,EAOxC1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEm2G,EAAUl1F,CAAM,CAAC,EAAA,IAAAl6C,UAAA,CAAA,IAAA4vI,EAAAhsF,GAAAA,EAAAisF,EAAAD,EAAAlhG,WAAAq6B,OAAAA,EAAAA,QAId,IAAMkmE,EAAa/0F,CAAM,EAAC01F,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAJ,EAAAA,EAAAn+H,EAOxC1L,EAAI,CAAA,IAACszB,MAAI,CAAEihB,OAAAA,EAAOmI,WAAW,KAAK,CAAC,EAAA,IAAAriD,UAAA,CAAA,IAAA8vI,EAAA/rF,GAAAA,EAAAgsF,EAAAD,EAAAphG,WAAAq6B,OAAAA,EAAAA,QAIrB,IAAMsmE,EAAan1F,CAAM,EAAC41F,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAN,EAAAA,EAAAn+H,EAOxC1L,EAAI,CAAA,IAACszB,MAAI,CAAEihB,OAAAA,EAAOmI,WAAW,OAAO,CAAC,EAAA,IAAAriD,UAAA,CAAA,IAAAgwI,EAAAC,GAAAA,EAAAC,EAAAF,EAAAthG,WAAAq6B,OAAAA,EAAAA,QAIvB,IAAMsmE,EAAan1F,CAAM,EAAC81F,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAP,EAAA1mE,QAWhC,IAAM,CACb+lE,EAAa50F,CAAM,CACrB,EAACvP,GAAAsB,GAAA,CAAAC,IAAAA,EAzDM,OAASgjG,EAAYh1F,CAAM,EAAC/N,EAsD5B,OAAS+iG,EAAYh1F,CAAM,EAAChO,OAAAA,IAAAD,EAAAhuC,GAAAouC,GAAAkjG,EAAAtjG,EAAAhuC,EAAAiuC,CAAA,EAAAC,IAAAF,EAAA1sC,GAAA8sC,GAAAojG,EAAAxjG,EAAA1sC,EAAA4sC,CAAA,EAAAF,CAAAA,EAAA,CAAAhuC,EAAA4S,OAAAtR,EAAAsR,MAAAA,CAAA,EAAAw1D,CAAAA,GAAA,CAU5C,CAAA,EAAA,IAAA,EAAAipE,CAAAA,GAAA,CAMb,CAEO,SAASa,GAAmBluI,EAGhC,CACKqwD,MAAAA,EAAYv2D,EAAW,IACpBklE,GAAgBh/D,EAAMqwD,SAAS,CACvC,EAeS89E,OAbQr0I,EAAW,IAAM,CACjC,IAAIs0I,EAAe,sBAKfnC,OAJAjsI,EAAMquI,aAAe,KACPD,GAAA,QAGdnC,GAAAA,EAAQqC,mBAAqB,MACxBj+E,EAAY0O,EAAAA,IAAAA,EAAMtQ,OAAO2/E,CAAY,EAAI,IAEzC/9E,EAAAA,EAAY5B,OAAO2/E,CAAY,CACxC,CACD,CAGH,CAEO,SAASG,GAAcvuI,EAG3B,CACKqwD,MAAAA,EAAYv2D,EAAW,IACpBklE,GAAgBh/D,EAAMqwD,SAAS,CACvC,EAEK89E,EAAYr0I,EAAW,IAC3BsV,EAAQ8+H,GAAkB,CAAA,IAAC79E,WAAS,CAAA,OAAErwD,EAAMqwD,SAAAA,CAAS,CAAA,CACtD,EAED,OAAA,IAAA,CAAAm+E,IAAAA,EAAApsF,KAAAqsF,EAAAD,EAAA/hG,WAAAiiG,EAAAD,EAAAxqE,YAAAyqE,OAAAA,EAAAzqE,YAAAuqE,EAAAA,EAEKL,EAASM,CAAA,EAAAt4G,EAAAu4G,EAEar+E,IAAAA,EAAU,EAAEs+E,SAAS,EAAAH,EAAAA,EAAAp/H,EAC3C1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh3B,EAAM4uI,SAAS,EAAA,IAAA7wI,UAAA,CAAA8wI,IAAAA,EAAA3sF,GAAA,EAAA4sF,EAAAD,EAAApiG,WAAAsiG,EAAAD,EAAA7qE,YAAA+qE,EAAAD,EAAAtiG,WAAAwiG,EAAAD,EAAAviG,WAAAwiG,EAAAxiG,WAAAyiG,IAAAA,EAAAF,EAAA/qE,YAAAkrE,EAAAD,EAAAziG,WAAA0iG,OAAAA,EAAA1iG,WAAAq6B,EAAAA,QACc9qE,GAAAA,EAAEwS,gBAAgB,EAAC2nB,EAAA24G,EAAA1/H,EAErD+yC,GAAQ,CAAA,CAAA,CAAA,EAAA8sF,EAAAnoE,QAMI,IAAM,CACb9mE,EAAM4uI,UAAW,QAAS,GAAI5uI,EAAMqwD,SAAS,CAC/C,EAAC4+E,EAAAA,EAEgBd,EAAS,IAAA,EAAAgB,EAAAroE,QAMjB,IAAM,CACb9mE,EAAM4uI,UAAW,MAAO,GAAI5uI,EAAMqwD,SAAS,CAC7C,EAAC8+E,EAAAA,EAEchB,EAAS,IAAA,EAAAU,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAnmG,OAAAC,GAAA6lG,EA3BxBxuI,QAAAA,EAAMqwD,SAAS,CAAA,EAAAm+E,CAAAA,GAAA,CAmC/B,CAEO,SAASY,GAAYpvI,EAGzB,CACG,GAAA,CACFoP,MAAAA,CAAAA,EAEK1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh3B,EAAM3F,OAAOg1I,QAAUrvI,EAAM3F,OAAOg1I,OAAOntI,OAAS,CAAC,EAAA,IAAAnE,UAAA,CAAA,MAAA,CAAA,MAAAuvB,EAAA,IAC3Di+G,GAAcvrI,EAAM3F,OAAOg1I,MAAM,CAAC,EAAAjgI,EACrC1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh3B,EAAM7H,EAAE,EAAA,IAAA4F,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAAuxI,EAAAC,GAAA,EAAAD,OAAAA,EAAAxoE,QAGA9qE,GAAA,CACdA,EAAEwS,gBAAgB,EAClBxO,EAAM7H,GAAI,SAAU,IAAK6H,EAAM3F,OAAOg1I,MAAM,CAC9C,EAACl5G,EAAAm5G,EAAAlgI,EAGA2yC,GAAY,CAAA,CAAA,CAAA,EAAAutF,CAAA,GAAA,GAAA,IAAA,CAAA,IAAAE,EAAAltF,GAAA,EAAAktF,OAAAA,EAAA1oE,QAIG9qE,GAAA,CACdA,EAAEwS,gBAAgB,EAClBxO,EAAM7H,GAAI,SAAU,IAAK6H,EAAM3F,OAAOg1I,MAAM,CAC9C,EAACl5G,EAAAq5G,EAAApgI,EAGA6yC,GAAY,CAAA,CAAA,CAAA,EAAAutF,CAAAA,IAAA,CAAA,CAAA,CAAA,EAAAC,GAAAA,CAAA,CAAA,CAAA,CAAArgI,EAAAA,EAKlB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh3B,EAAM3F,OAAOq1I,SAAW1vI,EAAM3F,OAAOq1I,QAAQxtI,OAAS,CAAC,EAAA,IAAAnE,UAAA,CAAA,MAAA,CAAA,MAAAuvB,EAAA,IAC7Di+G,GAAcvrI,EAAM3F,OAAOq1I,OAAO,CAAC,EAAAtgI,EACtC1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh3B,EAAM7H,EAAE,EAAA,IAAA4F,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAA4xI,EAAAC,GAAA,EAAAD,OAAAA,EAAA7oE,QAGA9qE,GAAA,CACdA,EAAEwS,gBAAgB,EAClBxO,EAAM7H,GAAI,UAAW,IAAK6H,EAAM3F,OAAOq1I,OAAO,CAChD,EAACv5G,EAAAw5G,EAAAvgI,EAGA2yC,GAAY,CAAA,CAAA,CAAA,EAAA4tF,CAAA,GAAA,GAAA,IAAA,CAAA,IAAAE,EAAAC,GAAA,EAAAD,OAAAA,EAAA/oE,QAIG9qE,GAAA,CACdA,EAAEwS,gBAAgB,EAClBxO,EAAM7H,GAAI,UAAW,IAAK6H,EAAM3F,OAAOq1I,OAAO,CAChD,EAACv5G,EAAA05G,EAAAzgI,EAGA6yC,GAAY,CAAA,CAAA,CAAA,EAAA4tF,CAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,QAMhB7zI,EAAG,CACV,MAAA,CAAA,+BAAsCA,EAAC,GAAA,CAAA,CAE3C,CAEO,SAAS+zI,GAAwB/vI,EAGrC,CACD,MAAMsO,EAAQtO,EAAMsO,MACd0hI,EAAe1hI,GAAO2hI,SAASnvG,OAAOkvG,aACtCX,EAAS/gI,GAAO2hI,SAASZ,OACzBK,EAAUphI,GAAO2hI,SAASP,QAC1BxkB,EAAS58G,GAAO2hI,QAAQC,KACxB7vE,EAAW,QAAO/xD,GAAO2hI,SAASnvG,OAAOqvG,SAAU,GAEnDC,EAAcA,CAACp0I,EAAQi7C,IAAsC,CACjEj7C,EAAEuS,eAAe,EACjB0oC,EAAOopB,QAAUA,EACjBrgE,EAAMq7B,SAAS4b,CAAM,CACvB,EAEA,IAAIg/C,EAAU,CAAE,EAEhBA,OAAAA,EAAQ/wD,MAAI,IAAA,CAAA,IAAAmrG,EAAAC,KAAAC,EAAAF,EAAA5jG,WAAA8jG,OAAAA,EAAA9jG,WAAAq6B,EAAAA,QAMYspE,GAAAA,EAAYp0I,EAAG,CAAEg0I,aAAAA,CAAAA,CAAc,EAACO,EAAAA,EAE9BP,EAAY,IAAA,EAAAK,CAAAA,IAItC,EAEAp6C,EAAQ/wD,MAAI,IAAA,CAAA,IAAAsrG,EAAAC,GAAA,EAAAC,EAAAF,EAAA/jG,WAAAkkG,EAAAD,EAAAjkG,WAAAmkG,EAAAD,EAAA1sE,YAAA4sE,EAAAD,EAAA3sE,YAAA6sE,EAAAD,EAAA5sE,YAAA6sE,OAAAA,EAAA7sE,YAAA6C,EAAAA,QAMYspE,GAAAA,EAAYp0I,EAAG,CAAEg0I,aAAAA,EAAcX,OAAAA,EAAQK,QAAAA,CAAAA,CAAS,EAACgB,EAAAA,EAE/CV,EAAYY,CAAA,EAAAF,EAAAA,EAAarB,EAAMyB,CAAA,EAAAJ,EAAAA,EAAMhB,EAAO,IAAA,EAAAc,CAAAA,IAItE,EAEItlB,GAAUA,EAAOhpH,OAAS,IAC5B+zF,EAAQ/wD,MAAI,IAAA,CAAA6rG,IAAAA,EAAAC,GAAA,EAAAC,EAAAF,EAAAtkG,WAAAykG,EAAAD,EAAAxkG,WAAA0kG,EAAAD,EAAAjtE,YAAAmtE,EAAAD,EAAAltE,YAAAotE,EAAAD,EAAAntE,YAAAqtE,EAAAD,EAAAptE,YAAAstE,EAAAD,EAAArtE,YAAAstE,OAAAA,EAAAttE,YAAA6C,EAAAA,QAOFspE,GAAAA,EAAYp0I,EAAG,CAAEg0I,aAAAA,EAAcX,OAAAA,EAAQK,QAAAA,EAASxkB,OAAAA,CAAAA,CAAQ,EAAC+lB,EAAAA,EAGzCjB,EAAYmB,CAAA,EAAAF,EAAAA,EAAa5B,EAAMgC,CAAA,EAAAJ,EAAAA,EAAMvB,EAAO6B,CAAA,EAAAN,EAAAA,EACjD/lB,EAAM,IAAA,EAAA6lB,CAAAA,IAI3B,EAEA96C,EAAQ/wD,MAAI,IAAA,CAAA,IAAAssG,EAAAC,GAAAC,EAAAA,EAAAF,EAAA/kG,WAAAklG,EAAAD,EAAAjlG,WAAAmlG,EAAAD,EAAA1tE,YAAA2tE,OAAAA,EAAA3tE,YAAA6C,EAAAA,QAMYspE,GAAAA,EAAYp0I,EAAG,CAAEg0I,aAAAA,EAAc9kB,OAAAA,CAAAA,CAAQ,EAACwmB,EAAAA,EAEtC1B,EAAY4B,CAAA,EAAAF,EAAAA,EAAexmB,EAAM,IAAA,EAAAsmB,CAAAA,IAI3D,GAGKv7C,CACT,CAAC9uB,GAAA,CAAA,OAAA,CAAA,2ECtcD,MAAM0qE,GAAgB,IAEtB,IAAIC,GAAiB,EASrB,KAAM,CAACC,GAAeC,EAAgB,EAAIl5I,EAA6B,CAAA,CAAE,EAEzDm5I,SAAAA,GAAgBp7F,EAAiB79C,EAA8B,CAC5Dg5I,GAAC30I,GAAW,CAC3B,CACE5C,GAAIq3I,KACJj7F,QAAAA,EACA7Y,MAAyB6zG,EAAAA,EAE3B,GAAGx0I,CAAC,CACL,CACH,CAEgB60I,SAAAA,GAASr7F,EAAiB79C,EAA8B,CACrDg5I,GAAC30I,GAAW,CAC3B,CACE5C,GAAIq3I,KACJj7F,QAAAA,EACA7Y,MAAyB6zG,GACzBvwG,GAAI,QAAA,EAEN,GAAGjkC,CAAC,CACL,CACH,CAEO,SAAS80I,GAAmBn2I,EAAQ,CACzCg2I,GAAwB30I,GAAA,CAChBsC,MAAAA,EAAQtC,EAAE0zB,QAAQ/0B,CAAC,EACzB,OAAI2D,EAAQ,IACRw+C,EAAAA,OAAOx+C,EAAO,CAAC,EAEZ,CAAC,GAAGtC,CAAC,CAAA,CACb,CACH,CAEO,SAAS+0I,IAAgB,CAC9B,OAAA,IAAA,CAAA,IAAA5iI,EAAAC,GAAA,EAAAD,OAAAA,EAAAA,EAAAJ,EAEK5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAE29F,GAAc,CAAC,EAAAh0I,SACrBqR,GAAAA,EAEEslC,GAAK,CAAA,IACJpT,IAAE,CAAA,OAAEtlC,EAAEslC,IAAM,MAAM,EAClBmT,SAAQ,GAAA,IACRzW,OAAK,CAAA,OAAEhiC,EAAEgiC,KAAK,EACd6C,QAASA,IAAM,CACbsxG,GAAmBn2I,CAAC,CACtB,EAAC,IAAA+B,UAAA,CAAA,MAAA,CAAAqR,EAEAslC,GAAMjQ,OAAM,CAAA1mC,SAAA,MAAA,CAAA,EAAAqR,EACZslC,GAAMnQ,KAAI,CAAA,IAAAxmC,UAAA,CAAA,OAAE/B,EAAE66C,OAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAG3B,CAAA,EAAArnC,CAAAA,GAAA,CAIT,8kGCjBA,MAAM6iI,GAAiB,YACjBC,GAAoB,OAS1B,SAASC,IAAsB,CAC7B,IAAI5F,EAAOplB,GAAY,EAEvB,OAAQolB,EAAI,CACV,IAAK,MACGpjB,MAAAA,EACJvxG,OAAOw6H,YACP,GACA,GACA,GACKxhH,OAAAA,KAAKyhH,MAAMlpB,EAAe,EAAE,EACrC,QACE,MAAO,CAACojB,GAAQ,GAAA,CAEtB,CAEO,SAAS+F,GAAW1yI,EAAY,CACrC0lE,eAAQC,IAAI,wBAAwB,EAEpChpE,GAAQ,IAAM,CACZ0tH,GAAWvqH,MAAM,CAAA,CAClB,EAEDwtB,EAAA,IAAUttB,EAAMjC,QAAQ,CAC1B,CAEO,SAAS40I,IAAS,CACvB,MAAMC,EAAS,IAAItoB,GAAO,SAAU,EAAI,EAClC9yE,EAAW6B,GAAY,EACvBG,EAAWJ,GAAY,EACvB,CAACy5F,EAAcp5F,CAAe,EAAIF,GAOrC,EACG,CAACk+D,EAAQq7B,CAAS,EAAIh6I,EAAa,CAAC,EACpC,CAACi6I,EAAWC,CAAY,EAAIl6I,EAAa,EAAK,EAC9Cm6I,EAAY,IAAI9oB,GAAU,GAAK,EAC/B,CAAC+oB,EAAeC,CAAgB,EAAIr6I,EAA6B,CAAA,CAAE,EACnE,CAACs6I,EAAUC,CAAW,EAAIv6I,EAAa,EAAK,EAG5C,CAACi0I,EAASD,CAAU,EAAIh0I,EAAuB+5I,EAAapyF,GAAK,EAAE,EAEzE,IAAI6yF,EAA8C,KAC9CC,EAAgB,KAChBC,EAKAC,EAEJ,OAAQj8F,EAAS2D,SAAQ,CACvB,IAAK,SACIu4F,EAAAA,EACP,MACF,IAAK,aACIA,EAAAA,EACP,MACF,IAAK,UACIA,EAAAA,EACP,MACF,QACEhuE,QAAQC,IACL,iBAAgBnuB,EAAS2D,QAAS,4CACrC,EACA3B,EAAS,QAAQ,EACjB,KAAA,CAGJ78C,GAAQ,IAAM,CACNi2I,MAAAA,EAAS,IAAItoB,GAAO,gBAAgB,EA6F1C,GA5FAsoB,EAAOjtE,IAAI,OAAO,EAEd6tE,GAAQE,GACV/6I,GAAQ,IAAM,CACZ86I,EAAiB5tE,GAAW,EAC5BC,GAAgB,EAAE,CAAA,CACnB,EAGHytE,EAAWhtE,GAASvuD,OAAQ,CAC1BpX,EAAGA,IAAM,CACItH,EAAAA,GAAOA,EAAI45I,EAAc,EAAEhxI,OAAS,EAAI5I,EAAI,EAAIA,CAAE,EAC/C4vH,GAAA,YAAazR,GAAQ,CACrC,EACA30G,EAAGA,IAAM,CACPgwI,EAAkBx5I,GAAAA,EAAI,EAAIA,EAAI,EAAI,CAAE,EACtB4vH,GAAA,YAAazR,GAAQ,CACrC,EACA,UAAWk8B,IAAM,CACfb,EAAU,CAAC,EACG5pB,GAAA,YAAazR,GAAQ,CACrC,EACA,UAAWm8B,IAAM,CACXV,EAAAA,EAAgBhxI,OAAS,IACjBgxI,EAAAA,EAAAA,EAAgBhxI,OAAS,CAAC,EACtBgnH,GAAA,YAAazR,GAAQ,EAEvC,EACA,IAAKo8B,IAAM,CACT,IAAI/sI,EAAUU,SAASssI,uBAAuB,eAAe,EAC3Dr8B,GAAQ,EAEN3wG,IACFA,EAAQ6/D,MAAM,EACd7/D,EAAQ0pB,MAAM,EAElB,EACAx0B,EAAGA,IAAM,CACHk3I,EAAAA,EAAgBhxI,OAAS,IACtB6xI,MACHruE,QAAQC,IAAI,sDAAsD,EAClEquE,EAAkBv8B,GAAQ,GAGhC,EACAx+G,EAAGA,IAAM,CACHi6I,EAAAA,EAAgBhxI,OAAS,IACtB+xI,KACHC,EAASz8B,GAAQ,EAGvB,EACA,UAAW08B,IAAM,CACfC,EAAgB38B,GAAQ,CAC1B,EACApqG,EAAGA,IAAM,CACPgnI,EAAe58B,GAAQ,CACzB,EACAh/E,EAAGA,IAAM,CACC67G,EAAA,CACV,EACAC,GAAIA,IAAM,CACRP,EAAkBv8B,GAAQ,CAC5B,EACA+8B,GAAIA,IAAM,CACRJ,EAAgB38B,GAAQ,CAC1B,EACAz6G,EAAGA,IAAM,CACWy3I,GAAA,CACpB,EACA,IAAYz4I,GAAA,CACJQ,MAAAA,EAAQgL,SAASk/D,eAAe,cAAc,EAChDlqE,GACFA,EAAMg0B,MAAM,EAEdx0B,EAAEuS,eAAe,CACnB,EACA,YAAammI,IAAM,CACjBhvE,QAAQC,IAAI,mBAAmB,EACrBgvE,EAAA,CACZ,EACA,YAAaC,IAAM,CACLC,EAAA,CACd,EACA,YAAaC,IAAM,CACjB,MAAMxmI,EAAQ4kI,IAAgBz7B,GAAQ,EAClCnpG,GACkBA,GAAAA,EAAM2hI,QAAQnvG,OAAOkvG,YAAa,CACxD,CACF,CACD,EAEG3lB,GAAWxuD,OAAO35D,OAAS,GAAKsxI,GAAQE,EAAY,CAElDj3I,IAAAA,EAAI4tH,GAAWxuD,OAAO35D,OAC1B,KAAOzF,KACDmtH,GAAgBS,GAAWxuD,OAAOp/D,CAAC,CAAC,IACtCm2I,EAAOjtE,IAAK,2BAA0BlpE,CAAE,wBAAuB,EACpDo/D,GAAAA,OAAO1d,OAAO1hD,EAAG,CAAC,GAG7B4tH,GAAW5S,OAAS4S,GAAWxuD,OAAO35D,OAAS,EACvCmoH,EAAAA,GAAWxuD,OAAO35D,OAAS,CAAC,EAEtC4wI,EAAUzoB,GAAW5S,MAAM,CAC7B,CAGE4S,GAAWxuD,OAAO35D,SAAW,GAC3By9D,OAAiB,GACX20E,EAAA,EAIZ1B,EAAOjtE,IAAI,KAAK,CAAA,CACjB,EAED/oE,GAAU,IAAM,CACV22I,GACOA,EAAA,EAEXN,EAAU8B,KAAK,EACfp8I,GAAQ,IAAM,CACR86I,IACM9tE,QAAAA,IAAI,2BAA6B8tE,CAAc,EACvD1tE,GAAe0tE,CAAc,EAC/B,CACD,CAAA,CACF,EAED,SAASuB,GAAoB,CACpB,MAAA,EAAEnC,EAAa/4H,QAAU,EAAA,CAGlC,SAASm7H,EAAUn7H,EAAgB,CACjC7d,GAAM,IAAM,CACMw9C,EAAA,CAAE3/B,OAAQA,IAAW,EAAIlL,OAAYkL,CAAAA,CAAQ,EAC7Dg5H,EAAU,CAAC,CAAA,CACZ,CAAA,CAIHp5I,GAAa,IAAM,CACjB,MAAMk5I,EAAS,IAAItoB,GAAO,sCAAuC,EAAI,EACrEruH,GAAM,IAAM,CAERouH,EAAAA,GAAWxuD,OAAOj9B,MAAMo2G,EAAAA,EAAaA,EAAU,EAAIzC,GAAY,CAAC,CAClE,EACIW,EAAgBhxI,EAAAA,SAAW,GAAK8yI,EAAAA,EAAc,IAChDpC,EAAOjtE,IAAI,iDAAiD,EAClDqvE,EAAAA,IAAczC,IAAa,EACvC,CACD,CAAA,CACF,EAED74I,GAAa,IAAM,CACbu5I,EAAU14G,YACZq4G,EAAOjtE,IAAI,0BAA0B,EAC7B2uE,EAAA,EACV,CACD,EAGD56I,GAAa,IAAM,CACjB,IAAIw7I,EAAU,GACVC,EAAgB,GACpB,MAAM/pB,EAAWgqB,EAAmB,EAChChqB,EAASlpH,SAAW,GACZgzI,EAAA,GACMC,EAAA,IACP/pB,EAASlpH,SAAWgxI,EAAAA,EAAgBhxI,QACnCgzI,EAAA,GACMC,EAAA,KAEND,EAAA,GACMC,EAAA,IAEd7B,IACFA,EAAoB4B,QAAUA,EAC9B5B,EAAoB6B,cAAgBA,EACtC,CACD,EAED,SAASd,EAAe53I,EAAW,CAC7B6R,IAAAA,EAAQ4kI,EAAc,EAAEz2I,CAAC,EACxB6R,EAAM+mI,YACT/mI,EAAM+mI,UAAY,CAChBjqB,SAAU,EACZ,GAEF98G,EAAM+mI,UAAUjqB,SAAW,CAAC98G,EAAM+mI,UAAUjqB,QAAAA,CAI9C1xH,GAAuBuD,IAIhB41I,EAAapsE,EACLZ,GAAW,EACdgtE,EAAa3nB,OACZ2nB,EAAapyF,EAEpBxjD,IAAS2R,OACXgkI,EAAOjtE,IAAI,uDAAuD,GAElEitE,EAAOjtE,IAAI,uDAAuD,EAC1D2uE,EAAA,GAEH,GACR,EAED56I,GAAuBuD,GAAA,CACjBq4I,IAAAA,EAASzC,EAAayC,QAAUjD,GAChCkD,EAAY1C,EAAa0C,WAAajD,GAC1C,GAAIr1I,EAAM,CACRyoE,QAAQC,IAAI,qBAAqB,EACjC,IAAI9J,GAAyB,CAAE,EAC/BljE,GAAQ,IAAM,CACLusC,GAAAA,KAAK,GAAGmlF,GAAWxuD,MAAM,CAAA,CACjC,EACUA,EAAAA,GAAQy5E,EAAQC,CAAS,EACpClrB,GAAWxuD,OAASA,EAAAA,MAEpB6J,QAAQC,IAAI,oBAAoB,EAE3B,MAAA,EAAA,CACR,EAED,SAAS2uE,GAAU,CAIjB37I,GAAQ,IAAM,CACZ,MAAMi6I,EAAS,IAAItoB,GAAO,uBAAwB,EAAI,EAElD7jD,IAAAA,EADW+uE,GAAW,EACWC,KAAK,GAAG,EAEzC5C,EAAapsE,IACTA,GAAA,IAAGosE,EAAapsE,CAAE,IAGtBA,EAAEvkE,QAAU,IACV0M,EAAAA,QAGN,IAAIqoC,GAAc,CAChBy+F,aAAcjvE,EACdlF,WAAYtC,GAAgB4G,GAAY,CAAA,GAAKj3D,OAC7C2rB,QAAS0xG,KAAQ0J,aACnB,EAMA,OAJI9C,EAAa3nB,SACfj0E,GAAOi0E,OAAS2nB,EAAa3nB,QAGvBsoB,EAAI,CACV,IAAKE,GACHz8F,GAAO2+F,KAAO,CAAE,IAAGjsB,GAAIksB,QAAS,EAAC,EACjC,MACF,IAAKnC,GACHz8F,GAAO2+F,KAAO,CAAE,GAAEjsB,GAAImsB,SAAU,EAAC,EACjC,MACF,QACE,KAAA,CAGJ9C,EAAa,EAAI,EAEjBnxE,GAAW5qB,EAAM,EACd4sB,KAAmB3b,IAAA,CAClBmrF,EAAYnrF,GAAS6tF,SAAS,EAC9B,MAAMl6E,GAAyB3T,GAAS2T,OACxCm6E,EAAWn6E,GAAQo6E,EAAaC,EAAAA,EAAAA,CAAc,EAC9Cr6E,GAAO/4B,QAAmBx0B,IAAA,CACxBA,GAAM+mI,UAAY,CAChBjqB,SAAU,EACZ,CAAA,CACD,EAEGf,GAAWxuD,OAAO35D,SAAW,GAAK25D,GAAO35D,SAAW,IAGtDjG,GAAM,IAAM,CACVouH,GAAWxuD,OAASA,GACpBwuD,GAAWv7F,OAAS,IAAA,CACrB,EACD8jH,EAAOjtE,IAAK,SAAQ9J,GAAO35D,MAAO,SAAQ,EAC5C,CACD,EACA8oH,QAAQ,IAAM,CACbgoB,EAAa,EAAK,CAAA,CACnB,CAAA,CACJ,CAAA,CAGMgD,SAAAA,EACPp1E,EACA00E,EACAluH,EACM,CACNs+C,QAAQC,IAAK,sBAAqB2vE,CAAO,WAAUluH,CAAM,EAAC,EAEjD+5D,SAAAA,GAAQpqF,GAAQC,GAAgB,CACvC,OAAID,GAAIC,GACC,GACED,GAAIC,GACN,EAEF,CAAA,CAGT,OAAQs+I,EAAM,CACZ,IAAK,YACI9tH,EAAAA,KAAK,CAACzwB,GAAQC,KACZmqF,GACLpqF,GAAEk5I,QAAQnvG,MAAMqvG,UAAUxxG,cAC1B3nC,GAAEi5I,QAAQnvG,MAAMqvG,UAAUxxG,YAAAA,CAC5B,CACD,EACD,MACF,IAAK,QACInX,EAAAA,KAAK,CAACzwB,GAAQC,KACZD,GAAEo/I,UAAU3/I,MAAQQ,GAAEm/I,UAAU3/I,KACxC,EACD,MACF,IAAK,SACIgxB,EAAAA,KAAK,CAACzwB,GAAQC,KACZmqF,GAAQpqF,GAAEk5I,QAAQZ,OAAQr4I,GAAEi5I,QAAQZ,MAAM,CAClD,EACD,MACF,IAAK,OACI7nH,EAAAA,KAAK,CAACzwB,GAAQC,KACZmqF,GAAQpqF,GAAEk5I,QAAQP,QAAS14I,GAAEi5I,QAAQP,OAAO,CACpD,EACD,MACF,IAAK,YACIloH,EAAAA,KAAK,CAACzwB,GAAQC,KAAW,CAC9B,MAAMo/I,GAAKp3E,GAAgBjoE,GAAEo/I,UAAUE,aAAa,EAC9CC,GAAKt3E,GAAgBhoE,GAAEm/I,UAAUE,aAAa,EAC7Cl1D,OAAAA,GAAQi1D,GAAIE,EAAE,CAAA,CACtB,EACD,KAAA,CAGAlvH,IAAU,SACZs+C,QAAQC,IAAK,8CAA6C,EAC1D/E,EAAOwK,QAAQ,EACjB,CAGImrE,MAAAA,EAAet+F,GAAmB,CAC9B0tB,QAAAA,IAAI,gBAAkB1tB,CAAM,EACpBwB,EAAA,CAAEgtB,EAAGxuB,CAAAA,CAAQ,CAC/B,EAEMu+F,EAAcA,IAAM,CACR/8F,EAAA,CAAEgtB,EAAG73D,MAAAA,CAAW,CAClC,EAGA,SAASwmI,GAA+B,CACtC,IAAIhqB,EAAqB,CAAE,EAC3B8nB,OAAAA,IAAgBpwG,QAAQ,CAAC9mC,EAAGS,IAAM,CAC5BT,EAAEq5I,WAAWjqB,UACfA,EAASlmF,KAAKzoC,CAAC,CACjB,CACD,EACD2uH,EAAShgD,QAAQ,EACVggD,CAAAA,CAGT,SAAS2oB,GAA2B,CAClC,MAAM3oB,EAAWgqB,EAAmB,EAChChqB,GAAAA,EAASlpH,SAAW,EACf,MAAA,GAET,UAAWzF,KAAK2uH,EACd4oB,EAAkBv3I,CAAC,EAEd,MAAA,EAAA,CAIT,SAASu3I,EAAkBv3I,EAAW,CAC9B6R,MAAAA,EAAQ4kI,EAAc,EAAEz2I,CAAC,EAC/B,GAAK6R,EAGL,OAAOmoI,EAAenoI,CAAK,CAAA,CAG7B,SAASmoI,EAAenoI,EAAqB,CAC3C,MAAMooI,EAAWxD,IAAgBniH,QAAQziB,CAAK,EACxCqoI,EAAWtsB,GAAWxuD,OAAO9qC,QAAQziB,CAAK,EACnCuzD,GAA0BvzD,CAAK,EACxCklI,IAASE,GACA73E,GAAAA,OAAO1d,OAAOw4F,EAAU,CAAC,EAChCD,EAAW,KACTj/B,EAAO,EAAI,GAAKA,EAAAA,EAAWi/B,GACnBj/B,EAAAA,IAAW,CAAC,EAEpBA,EAAO,EAAIy7B,IAAgBhxI,OAAS,GACtC4wI,EAAU9hH,KAAK/a,IAAI,EAAGwhG,EAAO,EAAI,CAAC,CAAC,IAIvCsS,GAAiBz7G,CAAK,CACxB,CAGF,SAAS4lI,EAASz3I,EAAyB,CACrC6R,IAAAA,EAAQ4kI,EAAc,EAAEz2I,CAAC,EAC7B,OAAI6R,EAAM6nI,UAAW3/I,OAAS8X,EAAM6nI,UAAWS,iBAE7C3sB,GAAkB37G,CAAK,EACjB6nI,EAAAA,UAAWS,gBAAkBtoI,EAAM6nI,UAAW3/I,MAE7CqrE,GAA2BvzD,CAAK,IAEvCA,EAAM6nI,UAAWS,gBAAkB,EAC5B/0E,GAA6BvzD,CAAK,EAC3C,CAGF,SAAS2lI,GAA4B,CACnC,MAAM7oB,EAAWgqB,EAAmB,EAChChqB,GAAAA,EAASlpH,SAAW,EACf,MAAA,GAET,UAAWzF,KAAK2uH,EACd8oB,EAASz3I,CAAC,EAEL,MAAA,EAAA,CAGT,SAASo6I,GAAkB,CACrBzB,EAAAA,EAAqBlzI,OAAS,EACpB2yI,EAAA,EAEFF,EAAA,CACZ,CAGF,SAASmC,GAAyB,CAE9B5D,OAAAA,EAAAA,EAAgBhxI,OAAS,GACzBkzI,IAAqBlzI,SAAWgxI,IAAgBhxI,MAAAA,CAIpD,SAASyyI,GAAY,CACLzB,EAAA,EAAEpwG,QAAmBx0B,GAAA,CACjCA,EAAM+mI,UAAUjqB,SAAW,EAAA,CAC5B,CAAA,CAGH,SAASypB,GAAc,CACP3B,EAAA,EAAEpwG,QAAmBx0B,GAAA,CACjCA,EAAM+mI,UAAUjqB,SAAW,EAAA,CAC5B,CAAA,CAGH,SAAS2rB,GAAgBzoI,EAAqB,CAE5CrS,GAAM,IAAM,CACVypE,QAAQC,IAAK,uBAAsBr3D,EAAM0oI,GAAI,EAAC,EAC9C3sB,GAAW4sB,UAAU3oI,CAAK,EAC1B+7G,GAAW6sB,WAAalC,EAAU,EAClC3qB,GAAW5S,OAASA,EAAO,EAC3B/xC,QAAQC,IAAK,0BAAyB0kD,GAAWv7F,QAAQkoH,GAAI,EAAC,EAC9Dx9F,EAAU,GAAEhC,EAAS2D,QAAS,IAAG7sC,EAAM0oI,GAAI,GAAG,CAC5C57I,MAAO,CACL+7I,QAAS3/F,EAAS2D,QAAAA,CACpB,CACD,CAAA,CACF,CAAA,CAGH,SAASs5F,IAAoB,CAC3B,IAAInmI,EAAQ4kI,IAAgBz7B,GAAQ,EACpCs/B,GAAgBzoI,CAAK,CAAA,CAGvB,SAAS8oI,IAAa,CACdC,MAAAA,EAAa,CAAC,cAAc,EAClC,UAAWC,KAAaD,EAAY,CAC5BvwI,MAAAA,EAAUU,SAASk/D,eAAe4wE,CAAS,EAC7CxwI,GACFA,EAAQkgE,KAAK,CACf,CACF,CAGF,SAASuwE,GAAoBC,EAAqB,CACvClpI,QAAAA,KAAS4kI,IACZ5kI,EAAM2hI,QAAQnvG,OAAOkvG,eAAiBwH,IACxClpI,EAAM+mI,UAAUjqB,SAAW,GAE/B,CAGF,SAASqsB,GAAqBD,EAAqB,CACvC5I,GAAA,OAAQ,IAAK4I,CAAW,CAAA,CAGpC,SAASE,GAAqBF,EAAqB,CACvC5I,GAAA,OAAQ,IAAK4I,CAAW,CAAA,CAG3B5I,SAAAA,GAAUtsE,EAAcq1E,EAAY5+I,EAAY,CACnD4+I,GAAM,MACHA,EAAA,IAEP,IAAIttD,GAAgB,GAChB,OAAOtxF,GAAU,SACnBsxF,GAAS,GAAEstD,CAAG,GAAEr1E,CAAK,IAAGvpE,CAAM,GACrBA,EAAMytE,SAAS,GAAG,EAC3B6jB,GAAS,GAAEstD,CAAG,GAAEr1E,CAAK,KAAIvpE,CAAM,IAE/BsxF,GAAS,GAAEstD,CAAG,GAAEr1E,CAAK,IAAGvpE,CAAM,GAGhC,IAAI6+I,GAAa7K,EAAQ,EAGrB6K,GAAW7mH,QAAQs5D,EAAK,EAAI,KAIhCutD,GAAW1yG,KAAKmlD,EAAK,EACL5wC,EAAA,CACdgH,EAAGm3F,EAAAA,CACJ,EAAA,CAKGpC,MAAAA,GAAa17I,EAAW,IAAM,CAC9BizI,IAAAA,EAAU8F,EAAapyF,GAAK,CAAE,EAElC,OAAKvM,MAAM93C,QAAQ2wI,CAAO,EAGjBA,EAFA,CAACA,CAAO,CAGjB,CACD,EAGDrzI,GAAa,IAAM,CACjBozI,EAAW0I,IAAY,CAAA,CACxB,EAGD97I,GAAa,IAAM,CACD+/C,EAAA,CACdgH,EAAGssF,EAAQ,EAAE7qI,QAAU,EAAI0M,OAAYm+H,EAAQ,CAAA,CAChD,CAAA,CACF,EAED,SAAS8K,EAAWr8I,EAAa,CACvBmqE,QAAAA,IAAI,cAAgBnqE,CAAG,EAC/B,IAAI4rB,EAAQ8uH,EAAa,EACrB16I,IAAQy6I,MACN7uH,IAAU,MACJA,EAAA,OAEAA,EAAA,OAGIqyB,EAAA,CAAE67F,OAAQ95I,EAAK+5I,UAAWnuH,CAAAA,CAAO,CAAA,CAGnD,SAAS8uH,GAAe,CACtB,OAAOrD,EAAa0C,WAAajD,EAAAA,CAGnC,SAAS2D,GAAY,CACnB,OAAOpD,EAAayC,QAAUjD,EAAAA,CAGhC,SAAS+B,EAAgBz0I,EAAe,CACtCu0I,EAASv0I,CAAK,EAAEkkE,KAAK,IAAMmwE,EAAkBr0I,CAAK,CAAC,CAAA,CAG/Cm4I,MAAAA,GAAyB7gG,GAA0C,CACnE4qB,GAAIoB,eAAehsB,CAAM,EAC7B,MAAM8gG,EAAiB1tB,GAAWxuD,OAAO5jB,OAAQj8C,GAC3Ci7C,EAAOi0E,QAAUlvH,EAAEi0I,SAASC,OAASj5F,EAAOi0E,QAG5Cj0E,EAAOo4F,QAAUp4F,EAAOy4F,SACtB,EAAE1zI,EAAEi0I,SAASZ,QAAUp4F,EAAOo4F,QAAUrzI,EAAEi0I,SAASP,SAC9C,GAGJz4F,EAAO+4F,cAAgBh0I,EAAEi0I,SAASnvG,OAAOkvG,YACjD,EACD,QAAS1hI,KAASypI,EAChBtB,EAAenoI,CAAK,EAGnB2jI,GAAA,8CAA6C8F,EAAe71I,MAAO,mBACtE,CACF,EAEA,MAAA,CAAAkN,EAEK62D,GAAG72D,CAAAA,CAAAA,EAAAA,EACHo2B,GAAS,CAACD,MAAK,GAAA,MAAQ,YAAW,IAAAxnC,UAAA,CAAAqR,MAAAA,CAAAA,EAEhC1L,EAAI,CAAA,IAACszB,MAAI,CAAEwuC,OAAAA,aAAaC,QAAQ,OAAO,IAAM,IAAI,EAAA,IAAA1nE,UAAA,CAAA,OAAAqR,EAC/C8iC,GAAG,CAAA,MAAQ,YAAW,IAAAn0C,UAAA,CAAA,OAAAqR,EACpBg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,OACDsiD,KAAKC,UACJ,CACE,2BAA4B+pE,GAAWxuD,OAAO35D,OAC9C,yBAA0BgxI,IAAgBhxI,OAC1C,wBAAyBmoH,GAAWv7F,QAAQkoH,KAAO,KACnD,WAAYv/B,EAAO,EACnB,wBAAyB4S,GAAW6sB,WACpC,oBAAqB7sB,GAAW5S,MAAAA,EAElC,KACA,CACF,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAhoG,GAAA,EAAAL,EASN8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAAqR,MAAAA,CAAAA,EACDg2B,GAAG,CAAA,MAAA,SAAA,IAAArnC,UAAA,CAAAqR,MAAAA,CAAAA,EACD1L,EAAI,CAAA,IAACszB,MAAI,CAAA,MAAE,CAAC+7G,EAAU,CAAC,EAAA,IAAAh1I,UAAA,CAAA,IAAA2R,EAAAu/B,GAAA,EAAAv/B,OAAAA,EAAAo3D,QAIXwtE,EAAO5kI,CAAAA,CAAA,CAAAN,EAAAA,EAKnB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE+7G,EAAU,CAAC,EAAA,IAAAh1I,UAAA,CAAA,OAAA8iD,GAAA,CAAA,CAAA,CAAAzxC,EAAAA,EAStB1L,EAAI,CAAA,IAACszB,MAAI,CAAE1J,OAAAA,EAAA,IAAA4lH,EAAc,EAAEhxI,OAAS,CAAC,EAAA,GAAI,CAAC40I,EAAc,CAAC,EAAA,IAAA/4I,UAAA,CAAA,IAAA2uI,EAAA3rF,GAAA,EAAA2rF,OAAAA,EAAA5lE,QAI7C6tE,EAASjI,CAAAA,CAAA,CAAAt9H,EAAAA,EAKrB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE8/G,EAAc,CAAC,EAAA,IAAA/4I,UAAA,CAAA,IAAAkjD,EAAAC,GAAA,EAAAD,OAAAA,EAAA6lB,QAId+tE,EAAW5zF,CAAAA,CAAA,CAAA7xC,EAAAA,EAKvB1L,EAAI,CAAA,IAACszB,MAAI,CAAEo+G,OAAAA,EAAAA,EAAqBlzI,OAAS,CAAC,EAAA,IAAAnE,UAAA,CAAA,IAAAsjD,EAAAC,GAAA,EAAAD,OAAAA,EAAAylB,QAG9BitE,EAAe1yF,CAAAA,CAAA,CAAAjyC,EAAAA,EAK3B1L,EAAI,CAAA,IAACszB,MAAI,CAAEo+G,OAAAA,EAAAA,EAAqBlzI,OAAS,CAAC,EAAA,IAAAnE,UAAA,CAAA,IAAAimE,EAAAxiB,GAAA,EAAAwiB,OAAAA,EAAA8C,QAG9BmtE,EAAgBjwE,CAAAA,CAAA,CAAA,GAAA,IAAA,CAAA,IAAAtiB,EAAAC,GAAA,EAAAD,OAAAA,EAAAA,EAAAtyC,EAM1Bu7G,GAAY,CACXS,SAAU,OACVD,SAAsBD,GAAA,CACJzxE,EAAA,CAAEyxE,OAAAA,CAAAA,CAAgB,CAAA,CACpC,CAAC,CAAA,EAAAxpE,CAAAA,IAAA,CAAA,CAAA,CAAAtyC,EAAAA,EAINg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,OAAAqR,EACDm8B,GAAI,CAAA,MAAA,cAEHysG,SAAiBh8I,GAAA,CACfA,EAAEuS,eAAe,EACN6oI,GAAA,EACCp7I,EAAAA,EAAEuvB,cAAc0sB,OAAOl/C,KAAK,CAC1C,EAAC,IAAAgF,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAA8jD,EAAAC,GAAA,EAAAD,OAAAA,EAAAo2F,UASmBj8I,GAAA,EAEdA,EAAE6K,OAAS,UACX7K,EAAER,MAAQ,UACVQ,EAAEw5B,UAAY,KAEH4hH,GAAA,EAEbp7I,EAAEwS,gBAAgB,CACpB,EAACk6B,GAAA,IAAAmZ,EAAA9oD,MAVM85I,EAAapsE,GAAK,EAAE,EAAA5kB,CAAAA,KAAAmsF,GAAA,GAAA,IAAA,CAAA,IAAA7pE,EAAAniB,GAAA,EAAAmiB,OAAAA,EAAA2C,QAkBlB0vE,EAAWryE,CAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA/0D,EAAAA,EAS3B1L,EAAI,CAAA,IAACszB,MAAI,CAAE+1G,OAAAA,EAAAA,EAAU7qI,OAAS,CAAC,EAAA,IAAAnE,UAAA,CAAA,OAAAqR,EAC7Bw9H,GAAW,CAACG,QAAAA,EAAkBD,WAAAA,CAAAA,CAAsB,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA,IAAAxoE,EAAApiB,GAAA,EAAAoiB,OAAAA,EAAAA,EAAAl1D,EASpD8oI,GAAQ,CAAA,IACPr8E,QAAM,CAAA,OAAEwuD,GAAWxuD,MAAM,EAAA,IACzB/hD,QAAM,CAAA,OAAEk7H,EAAU,CAAC,EACnBC,UAAAA,EAAoB,IACpB7B,UAAQ,CAAA,OAAEA,EAAS,CAAA,CAAC,CAAA,CAAA,EAAA1qG,OAAA47B,EAAAl8D,UAAA0kB,OAPTimH,YAAAA,CAAAA,EAAAA,EAAAA,GAAe1oB,GAAWxuD,OAAO35D,SAAW,EAAC,CAAA,EAAAoiE,CAAAA,GAAAl1D,EAAAA,EAU3DxX,GAAU,CAAC2L,KAAM,OAAM,IAAAxF,UAAA,CACrBuvB,OAAAA,MAAA4lH,EAAc,EAAEhxI,OAAS,CAAC,MAAA,IAAA,CAAAsiE,IAAAA,EAAApiB,KAAAqiB,EAAAD,EAAA/3B,WAAAk4B,EAAAF,EAAAh4B,WAAA4gG,GAAA1oE,EAAAl4B,WAAAi4B,GAAA2oE,GAAA5gG,WAAAm4B,GAAAF,GAAAT,YAAAG,GAAAQ,GAAAn4B,WAAA6gG,GAAA1oE,GAAAX,YAAAspE,GAAAD,GAAArpE,YAAAwpE,GAAAF,GAAA9gG,WAAAghG,GAAAhhG,eAAAmhG,GAAAH,GAAAxpE,YAAA6pE,GAAAF,GAAA3pE,YAAA6pE,GAAArhG,WAAAwhG,IAAAA,GAAAV,GAAAtpE,YAAAupE,GAAA7oE,EAAAV,YAAAj8D,GAAAA,iBAcFhM,SAAMA,IAAA,CACfA,GAAEuS,eAAe,EACDsoI,EAAA,CAAA,CACjB,EAAA,IAAAxmG,GANIijG,EAAkB,cAAAjjG,IAAAC,WAAAA,GAAAD,GAAA+zB,EAAA,EAAlBkvE,EAAkBlvE,GAAAipE,EAAAA,GAAAj+H,EAU1B+oI,GAAU,CACT9uG,MAAO,IACP7tC,IAAK,QAAO,IACZ85I,QAAM,CAAA,OAAEW,EAAU,CAAC,EAAA,IACnBV,WAAS,CAAA,OAAEW,EAAa,CAAC,EAAA,MAClB,YACPjvE,QAAS4wE,CAAU,CAAA,EAAAtK,EAAA,EAAAF,EAAAA,GAAAj+H,EAEpB+oI,GAAU,CACT9uG,MAAO,YACP7tC,IAAK,YAAW,IAChB85I,QAAM,CAAA,OAAEW,EAAU,CAAC,EAAA,IACnBV,WAAS,CAAA,OAAEW,EAAa,CAAC,EAAA,MAClB,gBACPjvE,QAAS4wE,CAAU,CAAA,EAAAtK,EAAA,EAAAzmE,GAAAA,QAGJ,IAAM+wE,EAAW,QAAQ,EAACpK,EAAAA,GAAAr+H,EAEtC1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEi/G,EAAgB,IAAA,QAAQ,EAAA,IAAAl4I,UAAA,CAAA,OAAAqR,EACjCgpI,GAAS,CAAA,IAAChxH,OAAK,CAAA,OAAE8uH,EAAa,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAApvE,GAAAA,QAIrB,IAAM+wE,EAAW,MAAM,EAAC/J,EAAAA,GAAA1+H,EAEpC1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEi/G,EAAgB,IAAA,MAAM,EAAA,IAAAl4I,UAAA,CAAA,OAAAqR,EAC/BgpI,GAAS,CAAA,IAAChxH,OAAK,CAAA,OAAE8uH,EAAa,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA7I,EAAAA,GAAAj+H,EAIrC+oI,GAAU,CACT9uG,MAAO,YACP7tC,IAAK,YAAW,IAChB85I,QAAM,CAAA,OAAEW,EAAU,CAAC,EAAA,IACnBV,WAAS,CAAA,OAAEW,EAAa,CAAC,EACzBjvE,QAAS4wE,CAAU,CAAA,EAAA5J,EAAA,EAAAT,EAAAA,GAAAp+H,EAMtB5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAE8+F,EAAc,CAAC,EAAAn1I,SACvBA,CAACuQ,GAAO7R,KAAM,CACb,IAAI47I,GAAW/pI,GAAM2hI,QAAQnvG,OAAOu3G,UAAY,EAC5Cv3G,GAAQxyB,GAAM2hI,QAAQnvG,MAC1B,OAAA,IAAA,CAAA0tG,IAAAA,GAAAsB,KAAArB,GAAAD,GAAA/hG,WAAAiiG,GAAAD,GAAAxqE,YAAAq0E,GAAA5J,GAAAjiG,WAAAoiG,GAAAH,GAAAzqE,YAAA6qE,GAAAD,GAAA5qE,YAAA8qE,GAAAD,GAAAriG,WAAAuiG,GAAAF,GAAA7qE,YAAAgrE,GAAAD,GAAA/qE,YAAAs0E,GAAAtJ,GAAAhrE,YAAAirE,GAAAqJ,GAAA9rG,WAAA0iG,GAAAD,GAAAjrE,YAAAu0E,GAAAD,GAAAt0E,YAAAqrE,GAAAkJ,GAAA/rG,WAAAkjG,GAAAL,GAAA7iG,WAAAojG,GAAAF,GAAA1rE,YAAAosE,GAAAR,GAAApjG,WAAA8jG,GAAAF,GAAA5jG,WAAAgsG,GAAApI,GAAApsE,YAAAusE,GAAAiI,GAAAhsG,WAAA+jG,GAAA/jG,WAAAA,IAAAkkG,GAAA8H,GAAAx0E,YAAA4sE,GAAAF,GAAAlkG,WAAAokG,GAAApkG,eAAAmkG,GAAAD,GAAA1sE,YAAA6sE,GAAAF,GAAAnkG,WAAAqkG,GAAArkG,WAAAwkG,IAAAA,GAAAL,GAAA3sE,YAAAitE,GAAAD,GAAAxkG,WAAAykG,GAAAzkG,WAAA6kG,IAAAA,GAAAL,GAAAhtE,YAAAy0E,GAAApH,GAAA7kG,WAAAisG,OAAAA,GAAAjsG,WAAA+hG,GAAA1nE,QAUe,IAAM,CACbgsE,EAAUr2I,EAAC,EACXs6I,GAAgBzoI,EAAK,CACvB,EAACmgI,EAAAA,GAAAr/H,EAGE1L,EAAI,CAAA,IAACszB,MAAI,CAAEygF,OAAAA,MAAah7G,GAAE,CAAC,EAAA,IAAAsB,UAAA,CAAAqR,OAAAA,EACzBuxC,GAAgB,EAAA,CAAA,CAAA,CAAA,CAAA,EAAAmmB,GAAAA,QAGD9qE,IAAAA,GAAEwS,gBAAgB,EAAC8pI,GAAAtwI,iBAMzB,SAAA,IAAMqsI,EAAe53I,GAAG,CAAA,CAAC,EAAAoyI,GAAA/nE,QAIrB9qE,IAAA,CACdA,GAAEwS,gBAAgB,EAClB0lI,EAASz3I,IAAG,CACd,EAACoyI,EAAAA,GAAAz/H,EAEArL,GAAM,CAAA,IAACN,UAAQ,CAAA2L,OAAAA,EAAG4xC,GAAM,EAAA,CAAA,EAAA,IAAAjjD,UAAA,CAAAqR,MAAAA,CAAAA,EACtB5K,GAAK,CAAA,IACJwyB,MAAI,CACF1oB,OAAAA,GAAM6nI,UAAW3/I,MAAQ,GACzB8X,GAAM6nI,UAAW3/I,QACf8X,GAAM6nI,UAAWS,eAAe,EAAA,IAAA74I,UAAA,CAAAqR,OAAAA,EAGnCgyC,GAAU,EAAA,CAAA,CAAA,CAAAhyC,EAAAA,EAEZ5K,GAAK,CAAA,IACJwyB,MAAI,CACF1oB,OAAAA,GAAM6nI,UAAWS,gBAAkB,GACnCtoI,GAAM6nI,UAAW3/I,MACf8X,GAAM6nI,UAAWS,eAAe,EAAA,IAAA74I,UAAA,CAAAqR,OAAAA,EAGnCmyC,GAAU,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAprB,EAAA44G,GASZzgI,IAAAA,GAAM6nI,UAAW3/I,KAAK,EAAAw4I,EAAAA,GAAA5/H,EAIxBm/H,GAAa,CAAA,IACZl+E,WAAS,CAAA,OAAE/hD,GAAM2hI,QAAQ5/E,SAAS,EAClCu+E,UAAAA,EAAAA,CAAoB,CAAA,EAAAK,EAAAA,GAAA7/H,EAIrBggI,GAAW,CAAA,IACV/0I,QAAM,CAAA,OAAEiU,GAAM2hI,OAAO,EACrB93I,GAAIy2I,EAAAA,CAAS,CAAA,EAAA2J,EAAAA,GAAAnpI,EAIdupI,GAAgB,CAACrqI,MAAAA,EAAY,CAAA,EAAA4gI,EAAA,EAAAA,GAAApoE,QAIZ9qE,IAAA,CACdA,GAAEwS,gBAAgB,EACRogI,GAAA,OAAQ,IAAK9tG,GAAMkvG,YAAY,CAC3C,EAAC75G,EAAA+4G,GAAA9/H,EAGA2yC,GAAY,CAAA,CAAA,CAAA,EAAAotF,GAAAroE,QAIG9qE,IAAA,CACdA,GAAEwS,gBAAgB,EACRogI,GAAA,OAAQ,IAAK9tG,GAAMkvG,YAAY,CAC3C,EAAC75G,EAAAg5G,GAAA//H,EAGA6yC,GAAY,CAAA,CAAA,CAAA,EAAAu2F,GAAA1xE,QAIC9qE,IAAA,CACdA,GAAEwS,gBAAgB,CACpB,EAAC8gI,EAAAA,GAAAlgI,EAOE1L,EAAI,CAAA,IAACszB,MAAI,CAAE,MAAA,CAAC4yF,GAAgBt7G,EAAK,CAAC,EAAA,IAAAvQ,UAAA,CAAA,IAAAyxI,GAAAD,GAAA,EAAAC,OAAAA,GAAA1oE,QAGtB,IAAM,CACbktE,EAAkBv3I,IAAG,CACvB,EAAC+yI,EAAAA,CAAA,CAAA,EAAAG,EAAA,EAAAL,EAAAA,GAAAlgI,EAMJ1L,EAAI,CAAA,IAACszB,MAAI,CAAE,MAAA,CAAC4yF,GAAgBt7G,EAAK,CAAC,EAAA,IAAAvQ,UAAA,CAAA,IAAA66I,GAAAt2F,GAAA,EAAAs2F,OAAAA,GAAA9xE,QAGtB,IAAMstE,EAAgB33I,GAAAA,CAAG,EAAC05B,EAAAyiH,GAAAxpI,EAElCwyC,GAAS,CAAA,CAAA,EAAA,IAAA,EAAAg3F,EAAAA,GAAAxpI,EACT4xC,GAAM,CACLv4C,MACE,2CAA2C,CAAA,EAAA,IAAA,EAAAmwI,EAAAA,CAAA,CAAA,EAAAjJ,EAAA,EAAAY,GAAAzpE,QAkB7B9qE,IAAA,CACdA,GAAEuS,eAAe,EACjBvS,GAAEwS,gBAAgB,EAClB4lI,EAAgB33I,IAAG,CACrB,EAAC+zI,GAAA1pE,QAUe9qE,IAAA,CACdA,GAAEuS,eAAe,EACjBvS,GAAEwS,gBAAgB,EAClB+oI,GAAoBz2G,GAAMkvG,YAAY,CACxC,EAAC75G,EAAAq6G,GAEoB1vG,IAAAA,GAAMkvG,aAAY,IAAA,EAAAa,GAAA/pE,QAQvB9qE,IAAA,CACdA,GAAEuS,eAAe,EACjBvS,GAAEwS,gBAAgB,EAClBipI,GACE32G,GAAMkvG,YACR,CACF,EAAC75G,EAAA06G,GAEe/vG,IAAAA,GAAMkvG,aAAY,IAAA,EAAAc,GAAAhqE,QAOlB9qE,IAAA,CACdA,GAAEuS,eAAe,EACjBvS,GAAEwS,gBAAgB,EAClBkpI,GACE52G,GAAMkvG,YACR,CACF,EAAC75G,EAAA26G,GAEehwG,IAAAA,GAAMkvG,aAAY,IAAA,EAAAkB,GAAApqE,QAOlB9qE,IAAA,CACdA,GAAEuS,eAAe,EACjBvS,GAAEwS,gBAAgB,EAClBogI,GACE,QACA,GACAtgI,GAAM2hI,QAAQ5/E,SAChB,CACF,EAACl6B,EAAA+6G,GAAA,IAEgB5iI,GAAM2hI,QAAQ5/E,UAAS,IAAA,EAAAqoF,GAAA5xE,QAOxB9qE,IAAA,CACdA,GAAEuS,eAAe,EACjBvS,GAAEwS,gBAAgB,EAClBogI,GACE,MACA,GACAtgI,GAAM2hI,QAAQ5/E,SAChB,CACF,EAACl6B,EAAAuiH,GAAA,IAEcpqI,GAAM2hI,QAAQ5/E,UAAS,IAAA,EAAAw/E,EAAAA,GAAAzgI,EAGzC1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE1oB,GAAM2hI,QAAQC,IAAI,EAAA,IAAAnyI,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAAszI,GAAA5B,KAAA8B,GAAAF,GAAA5kG,WAAA8kG,OAAAA,GAAA9kG,WAAA8kG,GAAAzqE,QAKR9qE,IAAA,CACdA,GAAEuS,eAAe,EACjBvS,GAAEwS,gBAAgB,EAClBogI,GACE,OACA,GACAtgI,GAAM2hI,QAAQC,IAChB,CACF,EAAC/5G,EAAAo7G,GAAA,IAEkBjjI,GAAM2hI,QAAQC,KAAI,IAAA,EAAAmB,EAAA,GAAA,GAAA,IAAA,CAAA,IAAAK,GAAA9B,KAAA+B,GAAAD,GAAAjlG,WAAAklG,OAAAA,GAAAllG,WAAAklG,GAAA7qE,QAOrB9qE,IAAA,CACdA,GAAEuS,eAAe,EACjBvS,GAAEwS,gBAAgB,EAClBogI,GACE,OACA,IACAtgI,GAAM2hI,QAAQC,IAChB,CACF,EAAC/5G,EAAAw7G,GAAA,IAEgBrjI,GAAM2hI,QAAQC,KAAI,IAAA,EAAAwB,EAAAA,GAAAtiI,EAAAA,EAItC2gI,GAAuB,CACtBzhI,MAAAA,GACA+sB,SAAUy8G,EAAAA,CAAqB,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA32F,GAAAA,IAAA03F,GAAArK,GA9Q9B,CACT,6BAA8B6J,GAAW,EACzC,mCACEA,KAAa,EACf,eAAgBA,KAAa,EAC7B,YAAa,EACf,EAACl3F,EAAA,CAAA,EAAAzY,GAAA,IAAA4vG,GAAApD,QAcY5mI,GAAM+mI,WAAWjqB,QAAQ,EAAAojB,EAAAA,GAAA,CAAA,CAmQ9C,CAAC,CAAA,EAAAhqE,CAAAA,GAKV,CAAA,CAAA,CAAAp1D,EAAAA,EAEF1L,EAAI,CAAA,IAACszB,MAAI,CAAEk8G,OAAAA,EAAAA,EAAgBhxI,OAAS,CAAC,EAAA,IAAAnE,UAAA,CAAA,IAAAwmE,EAAAriB,GAAA,EAAAqiB,OAAAA,EAAAA,EAAAn1D,EAOjC8oI,GAAQ,CAAA,IACPr8E,QAAM,CAAA,OAAEwuD,GAAWxuD,MAAM,EAAA,IACzB/hD,QAAM,CAAA,OAAEk7H,EAAU,CAAC,EACnBC,UAAAA,CAAAA,CAAoB,CAAA,EAAAvsG,OAAA67B,EAAAn8D,UAAA0kB,OANTimH,YAAAA,CAAAA,EAAAA,EAAAA,GAAe1oB,GAAWxuD,OAAO35D,SAAW,EAAC,CAAA,EAAAqiE,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAatE,CAEO,SAASo0E,GAAiB34I,EAAgC,CACzD8gC,MAAAA,EAAQ9gC,EAAMsO,MAAM2hI,QAAQnvG,MAElC,IAAIg4G,EAAS,CAAE,EAEX94I,OAAAA,EAAMsO,MAAM2hI,QAAQC,MAAQlwI,EAAMsO,MAAM2hI,QAAQC,KAAKhuI,OAAS,GAChE42I,EAAO5zG,KAAK,CAAC,UAAWllC,EAAMsO,MAAM2hI,QAAQC,IAAI,CAAC,EAGnD9gI,CAAAA,EAEK1L,EAAI,CAAA,IAACszB,MAAI,CAAE8J,OAAAA,EAAMi4G,QAAUj4G,EAAMi4G,SAAW,SAAS,EAAA,IAAAh7I,UAAA,CAAA,OAAAqR,EACnDoyB,GAAK,CAAA,MAAQ,kBAAiB,IAAAzjC,UAAA,CAAG+iC,OAAAA,EAAMi4G,OAAOp6G,YAAY,CAAA,CAAC,CAAA,CAAA,CAAA,CAAArR,EAAAA,EAE7DwT,IAAAA,EAAMqvG,SAAS,EAAE,IAAG/gI,EACpB5L,GAAG,CAAC4wC,KAAM0kG,EAAM/6I,SACP/G,IACN,IAAA,CAAA,IAAAgiJ,EAAAhI,GAAA,EAAA76G,OAAAA,EAAA6iH,EAAA,IAAmDhiJ,EAAE,CAAC,CAAC,EAAA0xC,GAAA,IAAA0B,GAAA4uG,EAAnC,sBAAwBhiJ,EAAE,CAAC,CAAC,CAAA,EAAAgiJ,CAAAA,GAAA,CAClD,CAAC5pI,EAAAA,EAEF1L,EAAI,CAAA,IAACszB,MAAI,CAAEh3B,OAAAA,EAAMsO,MAAM2hI,QAAQgJ,WAAa,QAAQ,EAAA,IAAAl7I,UAAA,CAAA,IAAA6zI,EAAAtB,GAAA,EAAAn6G,OAAAA,EAAAy7G,EAEhD5xI,IAAAA,EAAMsO,MAAM2hI,QAAQgJ,SAAS,EAAArH,CAAAA,CAAA,CAAAxiI,EAAAA,EAGjC1L,EAAI,CAAA,IAACszB,MAAI,CAAEh3B,OAAAA,EAAMsO,MAAM2hI,QAAQzE,KAAK0N,GAAG,EAAA,IAAAn7I,UAAA,CAAA,IAAAo7I,EAAA7I,GAAA,EAAAn6G,OAAAA,EAAAgjH,EAAA,IAEnCn5I,EAAMsO,OAAO2hI,SAASzE,KAAK0N,GAAG,EAAAC,CAAAA,CAAA,CAAA/pI,EAAAA,EAGlC1L,EAAI,CAAA,IAACszB,MAAI,CAAEh3B,OAAAA,EAAMsO,MAAM2hI,QAAQrE,MAAMsN,GAAG,EAAA,IAAAn7I,UAAA,CAAA,IAAAq7I,EAAA9I,GAAA,EAAAn6G,OAAAA,EAAAijH,EAAA,IAEpCp5I,EAAMsO,OAAO2hI,SAASrE,MAAMsN,GAAG,EAAAE,CAAAA,CAAA,CAAAhqI,EAAAA,EAGnC1L,EAAI,CAAA,IAACszB,MAAI,CAAEh3B,OAAAA,EAAMsO,MAAM2hI,QAAQnF,KAAKnpE,KAAK,EAAA,IAAA5jE,UAAA,CAAA,IAAAs7I,EAAA/I,GAAA,EAAA+I,OAAAA,EAAAA,EAAA,IAErCr5I,EAAMsO,OAAO2hI,SAASnF,KAAKnpE,QAAQ,CAAC,GAAG23E,MAAM,EAAAD,CAAAA,CAAA,CAAAjqI,EAAAA,EAGjD1L,EAAI,CAAA,IAACszB,MAAI,CAAEh3B,OAAAA,EAAMsO,MAAM2hI,QAAQnF,KAAKyO,OAAO,EAAA,IAAAx7I,UAAA,CAAA,IAAAy7I,EAAAlJ,GAAA,EAAAkJ,OAAAA,EAAAA,EAAA,IAEvCx5I,EAAMsO,OAAO2hI,SAASnF,KAAKyO,UAAU,CAAC,GAAGD,MAAM,EAAAE,CAAAA,CAAA,CAAApqI,EAAAA,EAGnD1L,EAAI,CAAA,IAACszB,MAAI,CAAEh3B,OAAAA,EAAMsO,MAAM2hI,QAAQ9E,MAAMsO,QAAQ,EAAA,IAAA17I,UAAA,CAAA,IAAA27I,EAAApJ,GAAA,EAAAn6G,OAAAA,EAAAujH,EAAA,IAEzC15I,EAAMsO,OAAO2hI,SAAS9E,MAAMsO,QAAQ,EAAAC,CAAAA,CAAA,CAAAtqI,EAAAA,EAGxC1L,EAAI,CAAA,IACHszB,MAAI,CACF1J,OAAAA,EAAAttB,IAAAA,CAAAA,CAAAA,EAAMsO,MAAM2hI,QAAQ2F,IAAI,EACvB51I,IAAAA,EAAMsO,MAAM2hI,QAAQ2F,KAAK7kH,QAAQ,sBAAsB,EAAI,IAC1D/wB,EAAMsO,MAAM2hI,QAAQ2F,KAAK7kH,QAAQ,sBAAsB,EAAI,GAAG,EAAA,IAAAhzB,UAAA,CAAA,OAAA0yI,GAAA,CAAA,CAAA,CAAA,CAAA,CAO1E,CAEA,SAASyH,GAASl4I,EAKf,CACD,KAAM,CAAC6wB,EAAO8oH,CAAQ,EAAI7gJ,EAAakH,EAAM8Z,OAAS,CAAC,EACjD,CAACk2D,EAAM4pE,CAAO,EAAI9gJ,EAAakH,EAAM8Z,OAASy4H,IAAa,EAEjE74I,GAAa,IAAM,CACRsG,EAAAA,EAAM8Z,OAAS,CAAC,EACrB9Z,EAAM8Z,OAAS,EAAIy4H,KAAgBvyI,EAAM67D,OAAO35D,OAC1ClC,EAAAA,EAAM8Z,OAASy4H,IAAa,EAE5BvyI,EAAAA,EAAM67D,OAAO35D,MAAM,CAC7B,CACD,EAED,SAAS23I,GAAY,CACbjoI,MAAAA,EAAO5R,EAAM8Z,OAASy4H,GAAY,EACpC3gI,EAAO5R,EAAM67D,OAAO35D,QACtBlC,EAAMi1I,UAAUrjI,CAAI,CACtB,CAGF,SAASkoI,GAAa,CACpB,MAAMC,EAAQ/oH,KAAKyhH,MAAMzyI,EAAM67D,OAAO35D,OAASqwI,IAAa,EACtD0C,EAAAA,UAAU8E,EAAQxH,IAAa,CAAA,CAGjCyH,MAAAA,EAAWA,IAAAvI,GAIhB,EAED/3I,OAAAA,GAAa,IAAM,CAIG,CAAC,GAHM8N,SAASyyI,iBAClC,4BACF,CAC0C,EAAExzI,IACzCyzI,GAAqB,IAAIC,GAAkBD,CAAgB,CAC9D,CAAA,CACD,EAED9qI,EAEK1L,EAAI,CAAA,IAACszB,MAAI,CAAEh3B,OAAAA,EAAM67D,OAAO35D,OAAS,CAAC,EAAA,IAAEuB,UAAQ,CAAA2L,OAAAA,EAAG4qI,EAAQ,EAAA,CAAA,EAAA,IAAAj8I,UAAA,CAAA,OAAAqR,EACrD8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAAq8I,EAAAC,GAAA,EAAAC,EAAAF,EAAA3tG,WAAA8tG,EAAAD,EAAAr2E,YAAAu2E,EAAAD,EAAAt2E,YAAAw2E,EAAAD,EAAAv2E,YAAAw2E,OAAAA,EAAAx2E,YAAAm2E,EAAAA,EAEQvpH,EAAK0pH,CAAA,EAAAH,EAAAA,EAAKpqE,EAAIyqE,CAAA,EAAAtkH,EAAAikH,EAAA,IAAQp6I,EAAM67D,OAAO35D,OAAM,IAAA,EAAAk4I,EAAAA,EAAAhrI,EAChD1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh3B,EAAMozI,QAAQ,EAAA,IAAAr1I,UAAA,CACvB,MAAA,CAAA,IAAG28I,IAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAAN,CAAA,GAAA,GAAA,IAAA,CAAA,IAAAO,EAAAC,KAAAC,EAAAF,EAAAluG,WAAAquG,EAAAD,EAAApuG,WAAAsuG,EAAAD,EAAA72E,YAAA+2E,EAAAD,EAAA92E,YAAAg3E,EAAAD,EAAA/2E,YAAA62E,OAAAA,EAAAh0E,QAgBO,IAAM9mE,EAAMi1I,UAAU,CAAC,EAAC8F,EAAAj0E,QASxB,IAAM9mE,EAAMi1I,UAAUj1I,EAAM8Z,OAASy4H,IAAa,EAACyI,EAAAl0E,QAQnD+yE,EAASoB,EAAAn0E,QAQTgzE,EAAUpxG,GAAAsB,GAAA,CAAAC,IAAAA,EAxBTjqC,EAAM8Z,SAAW,EAACowB,EAOlBrZ,EAAM,IAAM,EAACqqH,EAQbl7I,EAAM8Z,OAASy4H,GAAY,EAAIvyI,EAAM67D,OAAO35D,OAAMi5I,EAQlDnrE,EAAK,GAAKhwE,EAAM67D,OAAO35D,OAAM+nC,OAAAA,IAAAD,EAAAhuC,IAAA8+I,EAAA1sI,SAAA47B,EAAAhuC,EAAAiuC,GAAAC,IAAAF,EAAA1sC,IAAAy9I,EAAA3sI,SAAA47B,EAAA1sC,EAAA4sC,GAAAgxG,IAAAlxG,EAAAjzC,IAAAikJ,EAAA5sI,SAAA47B,EAAAjzC,EAAAmkJ,GAAAC,IAAAnxG,EAAAhtC,IAAAi+I,EAAA7sI,SAAA47B,EAAAhtC,EAAAm+I,GAAAnxG,CAAAA,EAAA,CAAAhuC,EAAA4S,OAAAtR,EAAAsR,OAAA7X,EAAA6X,OAAA5R,EAAA4R,MAAAA,CAAA,EAAA+rI,CAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAWvD,CAEA,SAASvC,GAAUp4I,EAAkC,CACnDoP,MAAAA,CAAAA,EAEK1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh3B,EAAMonB,QAAU,MAAM,EAAA,IAAArpB,UAAA,CAAAqR,OAAAA,EAC/B0xC,GAAe,EAAA,CAAA,CAAA,CAAA1xC,EAAAA,EAEjB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh3B,EAAMonB,QAAU,KAAK,EAAA,IAAArpB,UAAA,CAAAqR,OAAAA,EAC9BwxC,GAAa,EAAA,CAAA,CAAA,CAAA,CAAA,CAItB,CAEA,SAASu3F,GAAWn4I,EAOjB,CACD,OAAA,IAAA,CAAA,IAAAo7I,EAAAC,GAAA,EAAAD,OAAAA,EAAAt0E,QAIe,IAAM9mE,EAAMinE,QAAQjnE,EAAMxE,GAAG,EAAC26B,EAAAilH,EAGtCp7I,IAAAA,EAAMqpC,MAAK,IAAA,EAAA+xG,EAAAA,EAAAhsI,EACX1L,EAAI,CAAA,IAACszB,MAAI,CAAEh3B,OAAAA,EAAMs1I,SAAWt1I,EAAMxE,GAAG,EAAA,IAAAuC,UAAA,CAAA,OAAAqR,EACnCgpI,GAAS,CAAA,IAAChxH,OAAK,CAAA,OAAEpnB,EAAMu1I,SAAAA,CAAS,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA7sG,OAAA0B,GAAAgxG,EAN5Bp7I,EAAM+1B,KAAK,CAAA,EAAAqlH,CAAAA,GAAA,CAW1B,CAACj0E,GAAA,CAAA,QAAA,SAAA,CAAA,2CCl8CM,MAAMm0E,GAASA,IACpB7rI,GAAA,wFCWF,eAAe8rI,IAAyC,CAK/CC,OADM,MAHE,MAAMC,MAAM,cAAe,CACxCrvF,OAAQ,KAAA,CACT,GAC2BovF,KAAK,CAEnC,CAEO,MAAME,GAAQA,IAAM,CACzB,KAAM,CAACC,EAAWC,CAAY,EAAIxpI,GAAY,CAC5CquD,SAAU,GACVC,SAAU,EAAA,CACX,EACK,CAAC1lE,EAAOC,CAAQ,EAAInC,EAAa,EAAK,EAEtC,CAAC+5I,EAAcp5F,CAAe,EAAIF,GAAgB,EAClD,CAACsiG,CAAY,EAAI5hJ,GAAeshJ,EAAe,EAC/C/hG,EAAWJ,GAAY,EAEvB0iG,EAAU,MAAO9/I,GAAW,CAChCA,EAAEuS,eAAe,EAEjBszD,GAAU85E,EAAUl7E,SAAUk7E,EAAUj7E,QAAQ,EAC7CmD,KAAK,IAAM,CACVrE,GAAqB,EAAI,EAChBqzE,EAAAA,EAAakJ,YAAc,QAAQ,CAAA,CAC7C,EACAC,MAAOhhJ,GAAU,CAChB0qE,QAAQC,IAAK,gBAAe3qE,EAAMynD,SAAW,CAAA,EAAC,EAC9CxnD,EAAS,EAAI,CAAA,CACd,CACL,EAEM2tC,EAAUA,IACP+yG,EAAUl7E,SAASv+D,OAAS,GAAKy5I,EAAUj7E,SAASx+D,OAAS,EAGtExI,OAAAA,GAAa,SAAY,CACvB,IAAIV,EAAU6iJ,EAAa,EAC3B,GAAI7iJ,EAAS,CACP+iJ,IAAAA,EAAalJ,EAAakJ,YAAc,SACvC/iJ,EAAQijJ,eAAeC,WAClBv2E,QAAAA,IACL,kDAAiDo2E,CAAW,EAC/D,EACAviG,EAASuiG,CAAU,EACrB,CACF,CACD,EAED3sI,EAEKo2B,GAAS,CAAA,MAAQ,OAAM,IAAAznC,UAAA,CAAA,OAAAqR,EACrB8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,MAAA,CAAAqR,EACDg2B,GAAGh2B,CAAAA,CAAAA,EAAAA,EAEHg2B,GAAG,CAAC+2G,GAAI,GAAIC,GAAI,EAAGC,GAAI,EAAC,IAAAt+I,UAAA,CAAAqR,MAAAA,CAAAA,EACtB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh8B,EAAM,CAAC,EAAA,IAAA+C,UAAA,CAAA,OAAAqR,EAChBuxB,GAAK,CAACI,YAAW,GAACf,QAAS,SAAQjiC,SAAA,cAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA,IAAAyR,EAAAC,GAAA,EAAAD,OAAAA,EAAAA,EAAAJ,EAMnC1K,GAAQ,CAAA,IAAA3G,UAAA,CACNuvB,OAAAA,QAAAuuH,EAAc,CAAA,EAAAzsI,GAAAA,EACZm8B,GAAI,CAACysG,SAAU8D,EAAO,IAAA/9I,UAAA,CAAA,MAAA,CAAAqR,EACpBm8B,GAAKG,MAAK,CAAA,IAAA3tC,UAAA,CAAA,MAAA,CAAAqR,EACRm8B,GAAKhB,MAAK,CAAAxsC,SAAA,WAAA,CAAA,EAAAqR,EACVm8B,GAAKI,QAAO,CACXx9B,KAAM,OACNmuI,WAAY,GACZC,QACEX,GAAAA,EAAa,WAAY5/I,EAAEuvB,cAAcxyB,KAAK,EAEhDyjJ,YAAa,aAAA,CAAa,CAAA,CAAA,CAAA,CAAA,EAAAptI,EAI7Bm8B,GAAKG,MAAK,CAAA,MAAQ,OAAM,IAAA3tC,UAAA,CAAA,MAAA,CAAAqR,EACtBm8B,GAAKhB,MAAK,CAAAxsC,SAAA,WAAA,CAAA,EAAAqR,EACVm8B,GAAKI,QAAO,CACX4wG,QACEX,GAAAA,EAAa,WAAY5/I,EAAEuvB,cAAcxyB,KAAK,EAEhDoV,KAAM,WACNquI,YAAa,aAAA,CAAa,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA,IAAA9sI,EAAAu/B,GAAA,EAAAv/B,OAAAA,EAAAA,EAAAN,EAK3BL,GAAM,CAAA,MACE,GACPixB,QAAS,UACT7xB,KAAM,SAAQ,IACdC,UAAQ,CAAA,MAAE,CAACw6B,EAAQ,CAAC,EAAA7qC,SAAA,OAAA,CAAA,CAAA,EAAA2R,CAAAA,IAAA,CAAA,CAAA,CAM3B,CAAA,CAAA,CAAA,CAAA,EAAAF,CAAAA,IAAA,CAAA,CAAAJ,CAAAA,EAAAA,EAINg2B,GAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKd,yyDC9GO,SAASq3G,IAAW,CACzB/iJ,OAAAA,GAAa,IAAM,CAIhB,CAAA,GAH0B8N,SAASyyI,iBAClC,4BACF,CACsB,EAAExzI,OAEpB,IAAI0zI,GAAkBuC,EAAkB,CAAEz1I,KAAM,EAAA,CAAM,CAC1D,CAAA,CACD,EAKD,CAAAmI,EAEK62D,GAAG72D,CAAAA,CAAAA,EAAAA,EACHo2B,GAAS,CAAA,MAAQ,OAAM,IAAAznC,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAAyR,EAAAC,GAAA,EAAAC,EAAAF,EAAAi9B,WAAAy6B,EAAAx3D,EAAAu0D,YAAAiD,OAAAA,EAAAA,EAAA93D,EAIjBuxB,GAAK,CAACX,QAAS,OAAMjiC,SAAA,0GAAA,CAAA,CAAA,EAAAyR,CAAA,GAAA,GAAA,IAAA,CAAAk9H,IAAAA,EAAAz9F,GAAA,EAAAgS,EAAAyrF,EAAAjgG,WAAA4U,EAAAJ,EAAAgjB,YAAAD,EAAA3iB,EAAA5U,WAAAiV,EAAAsiB,EAAAv3B,WAAAoV,EAAAH,EAAAuiB,YAAAC,EAAAriB,EAAApV,WAAA03B,EAAAD,EAAAz3B,WAAA63B,EAAAH,EAAAF,YAAAC,OAAAA,EAAAl8D,iBAgBLhM,SAAAA,GAAMorH,GAASprH,EAAEuvB,cAAcxyB,KAAK,CAAC,EAAA2vC,GAAAsB,GAAA,CAAA,IAAAC,EAIpCi9E,GAAiB,IAAM,QAAOh9E,EAIXg9E,OAAuB,OAAMj9E,OAAAA,IAAAD,EAAAhuC,IAAAmoE,EAAAinD,SAAAphF,EAAAhuC,EAAAiuC,GAAAC,IAAAF,EAAA1sC,IAAAgnE,EAAA8mD,SAAAphF,EAAA1sC,EAAA4sC,GAAAF,CAAAA,EAAA,CAAAhuC,EAAA4S,OAAAtR,EAAAsR,MAAAA,CAAA,EAAA89H,CAAA,GAAA,GAAA,IAAA,CAAA,IAAAnoE,EAAA1jB,GAAA,EAAA2jB,EAAAD,EAAA93B,WAAAg4B,EAAAD,EAAAP,YAAAU,EAAAF,EAAAh4B,WAAA4gG,EAAA1oE,EAAAl4B,WAAAi4B,EAAA2oE,EAAAppE,YAAAW,EAAAF,EAAAj4B,WAAA23B,EAAAQ,EAAAn4B,WAAA6gG,EAAAlpE,EAAAH,YAAAspE,EAAAD,EAAArpE,YAAAwpE,EAAAF,EAAAtpE,YAAAypE,EAAAD,EAAAxpE,YAAA0pE,EAAAD,EAAAzpE,YAAAW,OAAAA,EAAA58D,iBAkBjDhM,SAAAA,GAAMsrH,GAAYtrH,EAAEuvB,cAAcxyB,KAAK,CAAC,EAAA2vC,GAAAsB,GAAA,CAAAkxG,IAAAA,EAErB3zB,GAAkB,IAAA,IAAG4zB,EAGrB5zB,OAAkB,IAAGo1B,EAGrBp1B,GAAY,IAAM,IAAGq1B,EAGrBr1B,OAAkB,IAAGs1B,EAGrBt1B,GAAkB,IAAA,IAAGu1B,EAGrBv1B,GAAAA,IAAkB,MAAK2zB,OAAAA,IAAAlxG,EAAAhuC,IAAAooE,EAAAgnD,SAAAphF,EAAAhuC,EAAAk/I,GAAAC,IAAAnxG,EAAA1sC,IAAAgwI,EAAAliB,SAAAphF,EAAA1sC,EAAA69I,GAAAwB,IAAA3yG,EAAAjzC,IAAAw2I,EAAAniB,SAAAphF,EAAAjzC,EAAA4lJ,GAAAC,IAAA5yG,EAAAhtC,IAAAywI,EAAAriB,SAAAphF,EAAAhtC,EAAA4/I,GAAAC,IAAA7yG,EAAAvtC,IAAAixI,EAAAtiB,SAAAphF,EAAAvtC,EAAAogJ,GAAAC,IAAA9yG,EAAAnqC,IAAA8tI,EAAAviB,SAAAphF,EAAAnqC,EAAAi9I,GAAA9yG,CAAAA,EAAA,CAAAhuC,EAAA4S,OAAAtR,EAAAsR,OAAA7X,EAAA6X,OAAA5R,EAAA4R,OAAAnS,EAAAmS,OAAA/O,EAAA+O,MAAAA,CAAA,EAAA21D,CAAA,GAAA,GAAA,IAAA,CAAAqpE,IAAAA,EAAA7sF,GAAA,EAAA8sF,EAAAD,EAAAnhG,WAAAqhG,EAAAD,EAAA5pE,YAAA8pE,EAAAD,EAAArhG,WAAAwhG,EAAAF,EAAAthG,WAAA+gG,EAAAS,EAAAhqE,YAAAuqE,EAAAhB,EAAA/gG,WAAAgiG,EAAAD,EAAA/hG,WAAAiiG,EAAAD,EAAAxqE,YAAAj8D,OAAAA,EAAAA,iBAkB1ChM,SAAMA,GAAA,CACf,IAAIqwI,EAAQF,GAAqB,EACzBnwI,OAAAA,EAAEuvB,cAAcxyB,MAAK,CAC3B,IAAK,MACHszI,EAAMiC,iBAAmB,MACzB,MACF,QACEjC,EAAMiC,iBAAmB1/H,OACzB,KAAA,CAEJ09H,GAAsBD,CAAK,CAAA,CAC5B,EAAA3jG,GAAAsB,GAAA,CAAA+yG,IAAAA,EAKG5Q,KAAuBmC,mBAAqB,QAAO0O,EAO3C7Q,KAAuBmC,mBAAqB,MAAKyO,OAAAA,IAAA/yG,EAAAhuC,IAAAyyI,EAAArjB,SAAAphF,EAAAhuC,EAAA+gJ,GAAAC,IAAAhzG,EAAA1sC,IAAAoxI,EAAAtjB,SAAAphF,EAAA1sC,EAAA0/I,GAAAhzG,CAAAA,EAAA,CAAAhuC,EAAA4S,OAAAtR,EAAAsR,MAAAA,CAAA,EAAAg/H,CAAA,GAAA,GAAA,IAAA,CAAA0K,IAAAA,EAAAp3F,GAAA,EAAA2tF,EAAAyJ,EAAA7rG,WAAAqiG,EAAAD,EAAA5qE,YAAA8qE,EAAAD,EAAAriG,WAAAuiG,EAAAD,EAAAtiG,WAAAwiG,EAAAD,EAAAviG,WAAA8rG,EAAAtJ,EAAAhrE,YAAAirE,EAAAF,EAAA/qE,YAAAkrE,EAAAD,EAAAziG,WAAAtW,OAAAA,EAAAoiH,EAAAnpI,EAyB5DizC,GAAgB,CAAA,CAAA,CAAA,EAAAr6C,EAAAA,iBASNhM,SAAMA,GAAA,CACXjD,IAAAA,EAA4B,CAACiD,EAAE0G,OAAO3J,OACtCkkJ,MAAMlkJ,CAAK,GAAKA,EAAQ,KAC1B2sE,QAAQC,IACL,gCAA+B3pE,EAAE0G,OAAO3J,KAAM,qBACjD,EACQ6V,EAAAA,QAEV82D,QAAQC,IAAK,4BAA2B3pE,EAAE0G,OAAO3J,KAAM,EAAC,EACxD,IAAIszI,EAAQF,GAAqB,EACjCE,EAAMsJ,cAAgB58I,EACtBuzI,GAAsBD,CAAK,CAAA,CAC5B,EAAA3jG,GAAA,IAAAymG,EAAAp2I,MAbMozI,GAAqB,EAAEwJ,eAAiB,CAAC,EAAA2C,CAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAuBlE,CClMA;AAEA,MAAM4E,GAAkB,CACpB,QAAS,QACT,OAAOr6F,EAAO7pD,EAAS,CAQnB,MAAMmkJ,EAAW,OAAO,OAAO,OAAO,OAAO,CAAE,EAP9B,CACb,OAAQ,EACR,YAAa,GACb,SAAU,GACV,YAAa,GACb,UAAW,EACd,CACwD,EAAGnkJ,CAAO,EAC7DokJ,EAAgB37G,GAASA,EAC1B,QAAQ,KAAM,OAAO,EACrB,QAAQ,OAAQ,cAAc,EAC9B,QAAQ,KAAM,MAAM,EACpB,QAAQ,KAAM,MAAM,EACnB47G,EAAU,CAAClvI,EAAMygC,IAAYA,EAAU,oBAAsBzgC,EAAO,IAAMygC,EAAU,UAAY,GAChG0uG,EAAkBvkJ,GAAU,CAC9B,MAAMwkJ,EAAU,KAAK,KAAKxkJ,CAAK,GAAK,SAG9BoV,EAFW,CAAC,OAAQ,OAAO,EAAE,SAASpV,CAAK,GAAK,WACrCA,IAAU,QAAU,QACAwkJ,GAAW,SAC1CC,EAAa,sBACb96I,EAASy6I,EAAS,YAAc,iBAAmB,GACnDM,EAAYC,GAAS,4BAA4BA,CAAI,IAAIh7I,CAAM,IAAIg7I,CAAI,OACvE9uG,EAAU2uG,GAAWJ,EAAS,SAAWpkJ,EAAM,QAAQykJ,EAAYC,CAAQ,EAAI1kJ,EACrF,OAAOskJ,EAAQlvI,EAAMygC,CAAO,CAC/B,EACK+uG,EAAW,CAAChmG,EAAOwO,EAAIC,EAAIw3F,EAAI/yC,IAAO,CACxC,MAAM94F,EAAO,CAAE,OAAQo0C,EAAI,IAAKC,EAAI,MAAOw3F,EAAI,IAAK/yC,CAAI,EAClDgzC,EAAWV,EAAS,UAAY,WAAa,sBAC7CW,EAAa/rI,EAAK,QAAU,GAC5BgsI,EAAUhsI,EAAK,KAAOA,EAAK,IAAI,QAAQ8rI,EAAU,MAAM,EACvDG,EAAUjsI,EAAK,IAAMsrI,EAAQ,MAAOU,CAAO,EAAIV,EAAQ,OAAQ,IAAI,EAAI,GACvEY,EAAYlsI,EAAK,MAAQurI,EAAevrI,EAAK,KAAK,EAAI,GACtDmsI,EAAUb,EAAQ,OAAQtrI,EAAK,GAAG,EACxC,OAAO+rI,EAAaE,EAAUC,EAAYC,CAC7C,EACKC,EAAW,sDACX3C,EAAO,KAAK,UAAU34F,EAAO,KAAMs6F,EAAS,MAAM,GAAK,YACvDl2I,EAAOm2I,EAAa5B,CAAI,EAAE,QAAQ2C,EAAUR,CAAQ,EACpDS,EAAY3xF,GAAS,UAAUA,CAAI,QACnC4xF,EAAkBp3I,GAAS,CAAC,wBAAyB,GAAGA,EAAK,MAAM;AAAA,CAAI,EAAE,IAAIm3I,CAAQ,EAAG,OAAO,EAAE,KAAK;AAAA,CAAI,EAChH,OAAOjB,EAAS,YAAckB,EAAep3I,CAAI,EAAIA,CACxD,CACL,whDCjBO,MAAMiuF,GAAqD,CAChE,CAAE3xF,KAAM,MAAO+6I,UAAW,EAAG,EAC7B,CAAE/6I,KAAM,QAAS+6I,UAAW,OAAQ,EACpC,CAAE/6I,KAAM,MAAO+6I,UAAW,KAAM,EAChC,CAAE/6I,KAAM,UAAW+6I,UAAW,SAAU,EACxC,CAAE/6I,KAAM,SAAU+6I,UAAW,QAAS,EACtC,CAAE/6I,KAAM,OAAQ+6I,UAAW,MAAO,EAClC,CAAE/6I,KAAM,OAAQ+6I,UAAW,MAAO,EAClC,CAAE/6I,KAAM,MAAO+6I,UAAW,KAAM,EAChC,CAAE/6I,KAAM,OAAQ+6I,UAAW,MAAO,EAClC,CAAE/6I,KAAM,WAAY+6I,UAAW,UAAW,EAC1C,CAAE/6I,KAAM,OAAQ+6I,UAAW,MAAO,EAClC,CAAE/6I,KAAM,QAAS+6I,UAAW,OAAQ,EACpC,CAAE/6I,KAAM,MAAO+6I,UAAW,KAAM,EAChC,CAAE/6I,KAAM,WAAY+6I,UAAW,UAAW,EAC1C,CAAE/6I,KAAM,OAAQ+6I,UAAW,MAAO,EAClC,CAAE/6I,KAAM,MAAO+6I,UAAW,KAAM,EAChC,CAAE/6I,KAAM,OAAQ+6I,UAAW,MAAO,EAClC,CAAE/6I,KAAM,SAAU+6I,UAAW,QAAS,EACtC,CAAE/6I,KAAM,OAAQ+6I,UAAW,MAAO,EAClC,CAAE/6I,KAAM,UAAW+6I,UAAW,SAAU,EACxC,CAAE/6I,KAAM,MAAO+6I,UAAW,KAAM,EAChC,CAAE/6I,KAAM,aAAc+6I,UAAW,OAAQ,EACzC,CAAE/6I,KAAM,OAAQ+6I,UAAW,MAAO,EAClC,CAAE/6I,KAAM,MAAO+6I,UAAW,KAAM,EAChC,CAAE/6I,KAAM,MAAO+6I,UAAW,KAAM,EAChC,CAAE/6I,KAAM,MAAO+6I,UAAW,KAAM,EAChC,CAAE/6I,KAAM,MAAO+6I,UAAW,KAAM,EAChC,CAAE/6I,KAAM,OAAQ+6I,UAAW,MAAO,EAClC,CAAE/6I,KAAM,OAAQ+6I,UAAW,MAAO,EAClC,CAAE/6I,KAAM,MAAO+6I,UAAW,KAAM,EAChC,CAAE/6I,KAAM,QAAS+6I,UAAW,OAAQ,EACpC,CAAE/6I,KAAM,OAAQ+6I,UAAW,MAAO,EAClC,CAAE/6I,KAAM,MAAO+6I,UAAW,KAAM,CAAC,EAG5B,SAASC,GAAkBpwI,EAAkC,CAClE,UAAWqwI,KAAMtpD,GACXspD,GAAAA,EAAGF,YAAcnwI,EACnB,OAAOqwI,EAAGj7I,IAIhB,CAEO,SAASk7I,IAAS,CACvB,MAAMjlG,EAAWJ,GAAY,EACvB,CAAC25F,EAAWC,CAAY,EAAIl6I,EAAa,EAAK,EAC9C,CAAC+iE,EAAQ6iF,CAAS,EAAI5lJ,EAA6B,CAAA,EAAI,CAC3D6lJ,OAAQA,CAAC1hJ,EAAM2U,IACN,EACT,CACD,EACK,CAAC0sI,EAAWM,CAAY,EAAI9lJ,EAAao8F,GAAY,CAAC,EAAEopD,SAAS,EACjE,CAACzL,EAAcp5F,CAAe,EAAIF,GAOrC,EACG,CAACk+D,EAAQq7B,CAAS,EAAIh6I,EAAa,CAAC,EACpC,CAACi0I,EAASD,CAAU,EAAIh0I,EAAuB,CAAA,CAAE,EACvD,IAAI+lJ,EAAmB,KAEvBliJ,GAAQ,IAAM,CACZ+oE,QAAQC,IAAI,gBAAgB,EAC5Bk5E,EAAct4E,GAASvuD,OAAQ,CAC7BpX,EAAGA,IAAM,CACItH,EAAAA,GAAOA,EAAIuiE,EAAO,EAAE35D,OAAS,EAAI5I,EAAI,EAAIA,CAAE,EACxC4vH,GAAA,YAAazR,GAAQ,CACrC,EACA30G,EAAGA,IAAM,CACPgwI,EAAkBx5I,GAAAA,EAAI,EAAIA,EAAI,EAAI,CAAE,EACtB4vH,GAAA,YAAazR,GAAQ,CACrC,EACAz6G,EAAGA,IAAM,CACP,MAAMsR,EAAQutD,IAAS47C,GAAQ,EAC3BnpG,GACFwwI,EAAcxwI,EAAM0oI,GAAG,CAE3B,EACA,IAAYh7I,GAAA,CACD0qE,SAAAA,eAAe,aAAa,EAAGl2C,MAAM,EAC9Cx0B,EAAEuS,eAAe,CACnB,EACAkqB,EAAGA,IAAM,CACPimH,EAAU,CAAA,CAAE,EACDK,EAAA,CACb,EACA/iJ,EAAGA,IAAM,CACPgjJ,EAAQvnC,GAAQ,CAClB,EACA88B,GAAIA,IAAM,CACRyK,EAAQvnC,GAAQ,CAAA,CAClB,CACD,CAAA,CACF,EAED76G,GAAU,IAAM,CACViiJ,GACUA,EAAA,CACd,CACD,EAIKrJ,MAAAA,EAAa17I,EAAW,IAAM,CAC9BizI,IAAAA,EAAU8F,EAAapyF,GAAK,CAAE,EAElC,OAAKvM,MAAM93C,QAAQ2wI,CAAO,EAGjBA,EAFA,CAACA,CAAO,CAGjB,CACD,EAGDrzI,GAAa,IAAM,CACjBozI,EAAW0I,GAAY,CAAA,CACxB,EAED97I,GAAa,IAAM,CACNqlJ,EAAA,CAAA,CACZ,EAED,SAASD,EAAcrkJ,EAAY,CACvB++C,EAAA,UAAS/+C,CAAG,GAAG,CACvBW,MAAO,CACL+7I,QAAS3/F,SAAS2D,QAAAA,CACpB,CACD,CAAA,CAGH,SAAS4jG,GAAa,CACpB,IAAI9nG,EAA4B,CAC9By+F,aAAc7C,EAAapsE,GAAK,EAClC,EAEIosE,EAAa/G,aACf70F,EAAO60F,WAAa+G,EAAa/G,WACjC8S,EAAa3nG,EAAO60F,UAAU,GAGhC,MAAMmT,EAAsBlS,KAAW0I,KAAK,GAAG,EAC3CwJ,GAAeA,EAAY/8I,OAAS,IACtC+0C,EAAOy+F,cAAgB,IAAMuJ,GAG3BpM,EAAazrH,QACf6vB,EAAO7vB,MAAQyrH,EAAazrH,OAG1ByrH,EAAa5gI,OACfglC,EAAOhlC,KAAO4gI,EAAa5gI,MAGzB4gI,EAAa3gI,KACf+kC,EAAO/kC,GAAK2gI,EAAa3gI,IAG3B8gI,EAAa,EAAI,EAEjBnxE,GAAc5qB,CAAM,EACjB4sB,KAAmB3b,GAAA,CAClB,GAAIA,EAAS2T,OAAQ,CACnB6J,QAAQC,IAAK,YAAWzd,EAAS2T,OAAO35D,MAAO,SAAQ,EACvD,MAAM25D,EAAyB3T,EAAS2T,OACpCg3E,EAAazrH,QAAU,OACzBy0C,EAAOuP,QAAQ,EAGjBszE,EAAU7iF,CAAM,CAAA,MAEhB6J,QAAQC,IAAK,mCAAkC,EAC/CD,QAAQC,IAAIzd,CAAQ,EACpBw2F,EAAU,CAAA,CAAE,CACd,CACD,EACA1zB,QAAQ,IAAM,CACbgoB,EAAa,EAAK,EAEdn3E,EAAAA,EAAS35D,OAAS,GAAKu1G,IAAW57C,EAAAA,EAAS35D,OAAS,EAC5C25D,EAAAA,EAAAA,EAAS35D,OAAS,CAAC,EACpB25D,EAAAA,EAAS35D,SAAW,GAC7B4wI,EAAU,CAAC,CACb,CACD,CAAA,CAGL,SAASgH,GAAa,CACJrgG,EAAA,CACdryB,MAAO,MACPnV,KAAMrD,OACNsD,GAAItD,MAAAA,CACL,CAAA,CAGH,SAASswI,GAAY,CAEnB,MAAM7uF,EAAYwL,EAAAA,EAAS,CAAC,EACzBo0E,QAAQ,YAAY,EAAEnzF,QAAQ,0BAA2B,QAAQ,EACjE2tF,WAAW,IAAK,EAAE,EACLhxF,EAAA,CACdryB,MAAO,MACPnV,KAAMo+C,EACNn+C,GAAItD,MAAAA,CACL,CAAA,CAGH,SAASirI,GAAY,CAEnB,MAAMxpF,EAAYwL,EAAO,EACtBA,EAAO,EAAE35D,OAAS,CAAC,EAAE+tI,QAAQ,YAAY,EAAEnzF,QAC1C,0BACA,QACF,EACC2tF,WAAW,IAAK,EAAE,EACLhxF,EAAA,CACdryB,MAAOxY,OACPqD,KAAMrD,OACNsD,GAAIm+C,CAAAA,CACL,CAAA,CAGH,SAAS8uF,GAAa,CACJ1lG,EAAA,CACdryB,MAAOxY,OACPsD,GAAItD,OACJqD,KAAMrD,MAAAA,CACP,CAAA,CAGH,SAASowI,EAAQviJ,EAAW,CACtB6R,IAAAA,EAAQutD,EAAO,EAAEp/D,CAAC,EAClB6R,EAAM2hI,QAAQnE,aAAe,UAGjC/hB,GAAiBz7G,CAAK,EACtBuzD,GAAiBvzD,CAAK,EAAEu1D,KAAK,IAAM,CAAA,CAAE,EACrC66E,EAAW7iF,IACTA,EAAOp/D,CAAC,EAAI,CAAE,GAAG6R,CAAM,EAChButD,EACR,EAAA,CAGM+yE,SAAAA,EAAUtsE,EAAcq1E,EAAY5+I,EAAY,CACnD4+I,GAAM,MACHA,EAAA,IAEP,IAAIttD,EAAgB,GAChB,OAAOtxF,GAAU,SACnBsxF,EAAS,GAAEstD,CAAG,GAAEr1E,CAAK,IAAGvpE,CAAM,GACrBA,EAAMytE,SAAS,GAAG,EAC3B6jB,EAAS,GAAEstD,CAAG,GAAEr1E,CAAK,KAAIvpE,CAAM,IAE/BsxF,EAAS,GAAEstD,CAAG,GAAEr1E,CAAK,IAAGvpE,CAAM,GAGhC,IAAI6+I,EAAa7K,EAAQ,EAGrB6K,EAAW7mH,QAAQs5D,CAAK,EAAI,KAIhCutD,EAAW1yG,KAAKmlD,CAAK,EACL5wC,EAAA,CACdgH,EAAGm3F,CAAAA,CACJ,EAAA,CAIHl+I,OAAAA,GAAa,IAAM,CACD+/C,EAAA,CACdgH,EAAGssF,EAAQ,EAAE7qI,QAAU,EAAI0M,OAAYm+H,EAAQ,CAAA,CAChD,CAAA,CACF,EAED39H,CAAAA,EAEK62D,GAAG,CAACC,aAAY,EAAA,CAAA92D,EAAAA,EAChBo2B,GAAS,CAACD,MAAK,GAAA,IAAAxnC,UAAA,CAAAqR,MAAAA,CAAAA,EACb8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAAyR,EAAAqxC,GAAA,EAAArxC,OAAAA,EAAAA,EAAAJ,EAEC1L,EAAI,CAAA,IAACszB,MAAI,CAAA,MAAE,CAAC+7G,EAAU,CAAC,EAAA,IAAAh1I,UAAA,CAAA,IAAA2R,EAAAD,GAAA,EAAAC,OAAAA,EAAAo3D,QAIXi4E,EAAUrvI,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAF,EAAAA,EAAAJ,EAKtB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE+7G,EAAU,CAAC,EAAA,IAAAh1I,UAAA,CAAA,OAAAkxC,GAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAAz/B,CAAA,GAAA,GAAA,IAAA,CAAA,IAAAk9H,EAAA3rF,GAAAE,EAAAA,EAAAyrF,EAAAjgG,WAAA4U,EAAAJ,EAAAxU,WAAAu3B,EAAA3iB,EAAA4iB,YAAAviB,EAAAsiB,EAAAv3B,WAAAzkC,OAAAA,EAAAA,iBAoBNhM,SAAMA,GAAA,CACCy9C,EAAA,CAAEqyF,WAAY9vI,EAAEuvB,cAAcxyB,KAAAA,CAAO,EACrDiD,EAAEuvB,cAAcy7C,KAAK,CAAA,CACtB,EAAAtlB,EAAAA,EAAAtyC,EAEA5L,GAAG,CAAC4wC,KAAM8gD,GAAWn3F,SACXygJ,IACP,IAAA,CAAA,IAAA55E,EAAAopE,GAAA,EAAAppE,OAAAA,EAAAA,EAMO45E,IAAAA,EAAGj7I,IAAI,EAAAmlC,GAAA,IAAAk8B,EAAAwmD,SAFEozB,EAAGF,YAAcA,GAAW,EAAA51G,OAAAk8B,EAAA7rE,MAD/BylJ,EAAGF,SAAS,EAAA15E,CAAAA,GAAA,CAO3B,CAAC,CAAA,EAAA8nE,CAAAA,GAAAt9H,EAAAA,EAOVg2B,GAAG,CAAA,MAAQ,OAAM,IAAArnC,UAAA,CAAA,OAAAqR,EACfm8B,GAAI,CAAA,MAAA,cAEHysG,SAAiBh8I,GAAA,CACfA,EAAEuS,eAAe,EACDkrC,EAAA,CAAEgtB,EAAGzqE,EAAEuvB,cAAc6zH,YAAYrmJ,KAAAA,CAAO,EACxD,MAAMo/E,EAASn8E,EAAEuvB,cAAc8zH,qBAAqB,OAAO,EAC3D,QAAS7iJ,KAAS27E,EAChB37E,EAAMwqE,KAAK,CAEf,EAAC,IAAAjpE,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAA8jD,EAAAX,GAAA,EAAAW,OAAAA,EAAAo2F,UASmBj8I,GAAA,EAEdA,EAAE6K,OAAS,UACX7K,EAAER,MAAQ,UACVQ,EAAEw5B,UAAY,KAEdx5B,EAAEuvB,cAAcy7C,KAAK,EAEvBhrE,EAAEwS,gBAAgB,CACpB,EAACk6B,GAAA,IAAAmZ,EAAA9oD,MAVM85I,EAAapsE,GAAK,EAAE,EAAA5kB,CAAAA,KAAAP,GAAA,GAAA,IAAA,CAAA,IAAA6iB,EAAA3iB,GAAA,EAAA2iB,OAAAA,EAAA2C,QAkBlB,IAAM,CACGrtB,EAAA,CAAEgtB,EAAG73D,MAAAA,CAAW,CAClC,EAACu1D,CAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA/0D,EAAAA,EAQR1L,EAAI,CAAA,IAACszB,MAAI,CAAE+1G,OAAAA,EAAAA,EAAU7qI,QAAU,CAAC,EAAA,IAAAnE,UAAA,CAAA,OAAAqR,EAC9Bw9H,GAAW,CAACG,QAAAA,EAAkBD,WAAAA,CAAAA,CAAsB,CAAA,CAAA,CAAA19H,EAAAA,EAGtD8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,MAAA,CAAA4jD,GAAA,GAAA,IAAA,CAAA,IAAA4iB,EAAAziB,KAAA0iB,EAAAD,EAAA93B,WAAAg4B,EAAAD,EAAA/3B,WAAAk4B,EAAAF,EAAAR,YAAAopE,EAAA1oE,EAAAV,YAAAS,EAAA2oE,EAAAppE,YAAAQ,OAAAA,EAAAqC,QAOaq4E,EAAUx6E,EAAAmC,QAQVo4E,EAAS7R,EAAAvmE,QAQT+yE,EAASn1E,EAAAoC,QAQTgzE,EAAUpxG,GAAAsB,GAAA,CAAAC,IAAAA,EAvBT8oG,EAAU,EAAC7oG,EAQX6oG,IAAWmI,EAQXnI,EAAAA,EAAWoI,EAQXpI,EAAU,EAAC9oG,OAAAA,IAAAD,EAAAhuC,IAAAyoE,EAAAr2D,SAAA47B,EAAAhuC,EAAAiuC,GAAAC,IAAAF,EAAA1sC,IAAAqnE,EAAAv2D,SAAA47B,EAAA1sC,EAAA4sC,GAAAgxG,IAAAlxG,EAAAjzC,IAAAs2I,EAAAj/H,SAAA47B,EAAAjzC,EAAAmkJ,GAAAC,IAAAnxG,EAAAhtC,IAAA0nE,EAAAt2D,SAAA47B,EAAAhtC,EAAAm+I,GAAAnxG,CAAAA,EAAA,CAAAhuC,EAAA4S,OAAAtR,EAAAsR,OAAA7X,EAAA6X,OAAA5R,EAAA4R,MAAAA,CAAA,EAAA21D,CAAAA,IAAA,CAAA,CAAA,CAAAn1D,EAAAA,EAQ5B8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,OAAAqR,EACDg2B,GAAG,CAAA,MAAQ,OAAM,IAAArnC,UAAA,CAAA,OAAAqR,EACfxX,GAAU,CAAC2L,KAAM,OAAM,IAAAxF,UAAA,CACrBuvB,OAAAA,MAAAuuC,EAAO,EAAE35D,OAAS,CAAC,MAAA,IAAA,CAAAkiE,IAAAA,EAAApiB,KAAAsrF,EAAAlpE,EAAA33B,WAAA8gG,EAAAD,EAAA7gG,WAAAghG,EAAAF,EAAAtpE,YAAAwpE,OAAAA,EAAAA,EAAAr+H,EAaX5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEynB,EAAO,CAAC,EAAA99D,SAChBA,CAACuQ,EAAO7R,IAAM,CACT47I,IAAAA,EAAW/pI,EAAM2hI,QAAQnvG,OAAOu3G,SACpC,OAAA,IAAA,CAAA3K,IAAAA,EAAAxrF,KAAAyrF,EAAAD,EAAAjhG,WAAAmhG,EAAAD,EAAA1pE,YAAA4pE,EAAAD,EAAA3pE,YAAA6pE,EAAAD,EAAAphG,WAAAshG,EAAAD,EAAA7pE,YAAAgqE,EAAAJ,EAAA5pE,YAAAupE,GAAAS,EAAAhqE,YAAAypE,OAAAA,EAAA5mE,QAGe,IAAMg4E,EAAcxwI,EAAM0oI,GAAG,EAACtJ,EAAAtlI,UAAA0kB,oBAEvBurH,EAAY,CAAC,EAAA3K,EAAAtlI,UAAA0kB,OACVurH,gBAAAA,IAAa,CAAC,EAAA3K,EAAAtlI,UAAA0kB,OACfurH,eAAAA,IAAa,CAAC,EAAA3K,EAAAtlI,UAAA0kB,OACburH,gBAAAA,IAAazpI,MAAS,EAAA++H,EAAAA,EAAAv+H,EAOtC1L,EAAI,CAAA,IAACszB,MAAI,CAAEygF,OAAAA,MAAah7G,EAAE,CAAC,EAAA,IAAAsB,UAAA,CAAAqR,OAAAA,EACzBuxC,GAAgB,EAAA,CAAA,CAAA,CAAA,CAAA,EAAAitF,EAAAA,EAAAx+H,EAIlBm/H,GAAa,CAAA,IACZl+E,WAAS,CAAA,OAAE/hD,EAAM2hI,QAAQ5/E,SAAS,EAClCu+E,UAAAA,CAAAA,CAAoB,CAAA,EAAAf,EAAAA,EAIrBv/H,IAAAA,EAAM2hI,QAAQnE,YAAYntG,YAAY,GACrC,MAAKmvG,CAAA,EAAAA,EAAAhnE,QAGW9qE,IAAA,CACdA,GAAEwS,gBAAgB,EAClBogI,EACE,aACA,IACAtgI,EAAM2hI,QAAQnE,UAChB,CACF,EAAC31G,EAAA23G,EAAA1+H,EAGA2yC,GAAY,CAAA,CAAA,CAAA,EAAAgsF,EAAAjnE,QAIG9qE,IAAA,CACdA,GAAEwS,gBAAgB,EAClBogI,EACE,aACA,IACAtgI,EAAM2hI,QAAQnE,UAChB,CACF,EAAC31G,EAAA43G,EAAA3+H,EAGA6yC,GAAY,CAAA,CAAA,CAAA,EAAAgsF,EAAAA,EAAA7+H,EAIdrL,GAAM,CAAA,IAACN,UAAQ,CAAA,OAAA6pB,EAAKhf,IAAAA,EAAM2hI,QAAQC,IAAI,CAAA,EAAA,IAAAnyI,UAAA,CAAAqR,MAAAA,CAAAA,EACpC5K,GAAK,CAAA,IAACwyB,MAAI,CAAA,OAAE1oB,EAAM2hI,QAAQZ,MAAM,EAAA,IAAAtxI,UAAA,CAAA,OAAAqR,EAC9BggI,GAAW,CAAA,IACV/0I,QAAM,CAAA,OAAEiU,EAAM2hI,OAAO,EACrB93I,GAAIy2I,CAAAA,CAAS,CAAA,CAAA,CAAAx/H,EAAAA,EAGhB5K,GAAK,CAAA,IACJwyB,MAAI,CAAA,OACF1oB,EAAM2hI,QAAQrF,KACdt8H,EAAM2hI,QAAQrF,IAAIyE,MAAM,EAAA,IAAAtxI,UAAA,CAAA,OAAAqR,EAGzBggI,GAAW,CAAA,IACV/0I,QAAM,CAAA,OAAEiU,EAAM2hI,QAAQrF,GAAG,EACzBzyI,GAAIy2I,CAAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAApB,EAAAA,GAAAp+H,EAMlBrL,GAAM,CAAA,IACLN,UAAQ,CAAA6pB,MAAAA,CAAAA,MAEHo9G,GAAuBp8H,CAAK,CAAC,EAAAc,EAC7BkwI,GAAa,CACZhxI,MAAAA,EAAY,MACL,MAAA,CAAM,CAAA,CAAA,EAAA,IAAAvQ,UAAA,CAAA,OAAAqR,EAKlB5K,GAAK,CAAA,IACJwyB,MAAI,CACF1oB,OAAAA,EAAM2hI,QAAQnE,aAAe,OAAO,EAAA,IAAA/tI,UAAA,CAAA,OAAAqR,EAGrCupI,GAAgB,CAACrqI,MAAAA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAAk/H,EAAAA,GAAAp+H,EAIjC1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEuoH,GAAkBjxI,CAAK,CAAC,EAAA,IAAAvQ,UAAA,CAAA,OAAAqR,EACjCL,GAAM,CACLixB,QAAO,YAAA,MAAA,YAEPv3B,MAAO,mBACPw+D,QAAgBjrE,IAAA,CACdA,GAAEwS,gBAAgB,EAClBwwI,EAAQviJ,GAAG,CACb,EAACsB,SAAA,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA2qC,GAAAsB,IAAA,CAAA2yG,IAAAA,GArEK,0BAAyBruI,EAAM2hI,QAAQnE,UAAW,GAAC8Q,GAcnD,0BAAyBtuI,EAAM2hI,QAAQnE,UAAW,GAAC6Q,OAAAA,KAAA3yG,GAAAhuC,GAAA2sC,GAAAmlG,EAAA9jG,QAAAA,GAAAhuC,EAAA2gJ,EAAA,EAAAC,KAAA5yG,GAAA1sC,GAAAqrC,GAAAolG,EAAA/jG,QAAAA,GAAA1sC,EAAAs/I,EAAA,EAAA5yG,EAAAA,EAAA,CAAAhuC,EAAA4S,OAAAtR,EAAAsR,MAAAA,CAAA,EAAA8+H,CAAAA,GAAA,CAAA,CAgEvE,CAAC,CAAA,EAAAtpE,CAAAA,GAKV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAOf,CAEA,SAASm7E,GAAkBjxI,EAAqB,CAC9C,OAAOA,EAAM2hI,QAAQnE,aAAe,SAAW,CAACliB,GAAgBt7G,CAAK,CACvE,CAEO,SAASgxI,GAAct/I,EAI3B,CAEC,MAAA,CAACA,EAAMsO,MAAM2hI,QAAQgJ,WACrBj5I,EAAMsO,MAAM2hI,QAAQgJ,YAAc,SAElC,CAAA,GAEF,IAAA,CAAA,IAAAzK,EAAApsF,GAAA,EAAAjsB,OAAAA,EAAAq4G,EAEKxuI,IAAAA,EAAMsO,MAAM2hI,QAAQgJ,SAAS,EAAAvwG,GAAA,IAAA0B,GAAAokG,EADlB,sBAAqBxuI,EAAM+1B,KAAM,EAAC,CAAA,EAAAy4G,CAAAA,GAAA,CAIpD,CAACrnE,GAAA,CAAA,QAAA,SAAA,CAAA,onIC7kBD,MAAMq4E,GACJ,mFAQK,SAASC,IAAY,CAC1B/5E,QAAQC,IAAI,uBAAuB,EACnC,MAAM1uB,EAASqC,GAA0B,EACnC,CAAC8mB,EAASs/E,CAAU,EAAI5mJ,EAA4B,IAAI,EACxD,CAACwV,EAAOqxI,CAAQ,EAAI7mJ,EAA2B,EAC/C,CAAC8mJ,EAAcC,CAAe,EAAI/mJ,EAAsB,EACxD,CAACgnJ,EAAeC,CAAgB,EAAIjnJ,EAAsB,EAC1D,CAACknJ,EAAeC,CAAgB,EAAInnJ,EAAa,EAAK,EACtD,CAAConJ,EAASC,CAAU,EAAIrnJ,EAA6B,CAAA,CAAE,EACvD,CAACsnJ,EAAiBC,CAAkB,EAAIvnJ,EAAa,EAAK,EAC1D,CAACwnJ,EAAOC,CAAQ,EAAInuI,GAGvB,CAAE/X,OAAQuU,OAAW4xI,YAAa5xI,MAAAA,CAAW,EAC1C4qC,EAAWJ,GAAY,EACvB5B,EAAW6B,GAAY,EAC7B,IAAIwlG,EAAmB,KACnB1H,EAAyB,KACzBsJ,EAAkB,KAEtB,KAAM,CAACC,EAAUC,CAAW,EAAI7nJ,EAAyB,IAAI,EACvD,CAAC8nJ,EAAWC,CAAY,EAAI/nJ,EAAyB,IAAI,EAE/D4sE,QAAQC,IAAK,sCAAqC0kD,GAAWv7F,QAAQkoH,GAAI,EAAC,EAE1Er6I,GAAQ,IAAM,CACNmkJ,MAAAA,EAAa9kJ,GACV,CAAC,QAAS,WAAY,QAAQ,EAAEwqE,SAASxqE,EAAE0G,OAAOmD,OAAO,EAGlEg5I,EAAct4E,GAASvuD,OAAQ,CAC7BwoC,EAAIxkD,GAAW,CACT8kJ,EAAU9kJ,CAAC,GAGfgc,OAAOkoI,QAAQa,KAAK,CACtB,EACA/kJ,EAAIA,GAAW,CACT8kJ,EAAU9kJ,CAAC,GAGFglJ,EAAA,CACf,EACAzM,GAAIA,IAAM,CACKyM,EAAA,CACf,EACA,IAAMhlJ,GAAW,CACX8kJ,GAAAA,EAAU9kJ,CAAC,EACb,OAEE8K,IAAAA,EAAUU,SAASk/D,eAAe,WAAW,EAC7C5/D,IACFA,EAAQ6/D,MAAM,EACd7/D,EAAQ0pB,MAAM,EAChB,CACF,CACD,EAEUgnB,EAAAA,EAASp8C,OAAe+7I,SAAW,KAC1CA,GACMxxE,QAAAA,IAAI,8BAAgCwxE,CAAO,CACrD,CACD,EAEDv6I,GAAU,IAAM,CACViiJ,GACUA,EAAA,CACd,CACD,EAEDnlJ,GAAa,IAAM,CACF4U,EAAM,EACHoyI,EAAS,EACRE,EAAU,EAIT,CAAC,GAHMp5I,SAASyyI,iBAClC,4BACF,CAC0C,EAAExzI,IACzCi2I,GAAqB,IAAIvC,GAAkBuC,CAAgB,CAC9D,CAAA,CACD,EAEDhjJ,GAAa,IAAM,CACjBgmJ,EAAWzoG,EAAOx8C,EAAE,CAAA,CACrB,EAGDf,GAAa,IAAM,CACjB,MAAMwmJ,EAAU5xI,EAAAA,GAAS2hI,SAASgR,QAAQf,QAExCC,EADED,GAGS,CAAA,CAFO,CAGpB,CACD,EAGDxmJ,GAAa,IAAM,CAEb4U,GAAAA,EAAAA,GAAS2hI,QAAQiR,MAAO,CACpBA,MAAAA,EAAQ5yI,KAAS2hI,QAAQiR,MAC/B,GAAIA,GAAOC,aAAc,CACvB,IAAIC,EAAM,CACRD,aAAcD,GAAOC,YACvB,EACI9mJ,GACAmmJ,EACAU,EAAMG,KAAO/yI,EAAM,GAAG2hI,QAAQZ,OAChCh1I,GAAS+mJ,EAETZ,EAAcY,EAEPb,EAAA,CAAElmJ,OAAQA,GAAQmmJ,YAAaA,CAAAA,CAAa,EACrD,MAAA,CACF,CAGInmJ,MAAAA,EACJiU,KAAS2hI,QAAQ51I,QAAQ+mJ,KAAO9yI,KAAS2hI,QAAQqR,aAC7Cd,EACJlyI,KAAS2hI,QAAQuQ,aAAaY,KAAO9yI,KAAS2hI,QAAQsR,kBAG/ChB,EAAA,CACPlmJ,OAAQA,GAAUm5B,OAAOnxB,KAAKhI,CAAM,EAAE6H,OAAS7H,EAASuU,OACxD4xI,YACEA,GAAehtH,OAAOnxB,KAAKm+I,CAAW,EAAEt+I,OACpCs+I,EACA5xI,MAAAA,CACP,CAAA,CACF,EAEDlV,GAAa,IAAM,CACjBgsE,QAAQC,IAAK,6CAA4CvF,EAAQ,CAAE,EAAC,EAEpEznE,GAAQ,IAAM,CACZ+sE,QAAQC,IAAK,0BAAyB1uB,EAAOx8C,EAAG,EAAC,EACjDirE,QAAQC,IAAK,uBAAsB0kD,GAAWv7F,QAAQkoH,GAAI,EAAC,EAC3DtxE,QAAQC,IAAK,uBAAsB0kD,GAAWxuD,OAAO35D,MAAO,EAAC,EAChDs/I,EAAA,CAAA,CACd,CAAA,CACF,EAGD9nJ,GAAa,SAAY,CACnBW,IAAAA,EAASiU,KAAS2hI,QACtB,GAAI,CAAC51I,EACH,OAEF,MAAMg1I,EAASh1I,EAAOg1I,OAChBK,EAAUr1I,EAAOq1I,QACjBQ,EAAO71I,EAAO61I,KAGduR,GAASpnJ,EAAOqnJ,MAAMxgJ,OAAS7G,EAAOg2D,UAE5CwW,GACO,gBAAiB,CACpBwoE,OAAAA,EACAK,QAAAA,EACA+R,OAAAA,GACAvR,KAAAA,CAAAA,CACD,EACArsE,KAAmB3b,GAAA,CACdA,EAASv9C,KAAKg3I,SAASz/I,OAAS,GACtBgmD,EAAAA,EAASv9C,KAAKg3I,OAAO,CACnC,CACD,EAEH96E,GACO,gBAAiB,CACpBwoE,OAAQK,EACRA,QAASL,EACToS,OAAAA,GACAvR,KAAAA,CAAAA,CACD,EACArsE,KAAmB3b,GAAA,CACdA,EAASv9C,KAAKg3I,SAASz/I,OAAS,GACrBgmD,EAAAA,EAASv9C,KAAKg3I,OAAO,CACpC,CACD,CAAA,CACJ,EAED,MAAMH,EAAeA,IAAM,CACzBtgF,GAAajqB,EAAOx8C,EAAE,EACnBopE,KAAMv1D,GAAU,CACX+7G,GAAWv7F,QAAUu7F,GAAWv7F,OAAOkoH,KAAO//F,EAAOx8C,KAIvD6T,EAAM6nI,UAAY9rB,GAAWv7F,OAAOqnH,UACpC7nI,EAAM2hI,QAAQ2F,KAAOvrB,GAAWv7F,OAAOmhH,QAAQ2F,MAEjD+J,EAASrxI,CAAK,CAAA,CACf,EACA0tI,MAAM,IAAM,CACX2D,EAAS/wI,MAAS,CAAA,CACnB,CACL,EAEAlV,GAAa,IAAM,CACbW,IAAAA,EAASiU,KAAS2hI,QAEtB,GAAI,CAAC51I,EAAQ,CACXwlJ,EAAgBjxI,MAAS,EACzBmxI,EAAiBnxI,MAAS,EAC1B,MAAA,CAGF,SAAS27H,EAAWvqI,EAAuD,CACrEymE,IAAAA,GACI,OAAA,OAAOzmE,EAAMjH,MAAK,CACxB,IAAK,SACCyxI,GAAAA,mBACD,GAAExqI,EAAMqhE,MAAQrhE,EAAMqhE,MAAQ,IAAM,EAAG,GAAErhE,EAAMjH,KAAM,EACxD,EACA,MACF,QACMyxI,GAAAA,mBACD,GAAExqI,EAAMqhE,MAAQrhE,EAAMqhE,MAAQ,IAAM,EAAG,IAAGrhE,EAAMjH,KAAM,GACzD,EACA,KAAA,CAEJ,OAAAqW,EAAQ2wC,GAAC,CAACnyC,KAAO,aAAY64D,EAAE,GAAC,IAAA1oE,UAAA,CAAGiC,OAAAA,EAAMjC,UAAYiC,EAAMjH,KAAAA,CAAK,CAAA,CAAA,CAGlE,IAAI+mJ,EAAgB,CAAE,EA2EtB,GAzEIzlJ,EAAOg2D,WACTyvF,EAAc56G,KAAK,CACjB,YAAW91B,EACVm7H,EAAU,CAAClpE,MAAO,YAAW,IAAEtoE,OAAK,CAAA,OAAEsB,EAAOg2D,SAAS,EAAA,IAAAtyD,UAAA,CAAA,OAAAqR,EACpD8+H,GAAkB,CAAA,IAAC79E,WAAS,CAAA,OAAEh2D,EAAOg2D,SAAS,EAAEg+E,WAAY,EAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAEpE,EAGCh0I,EAAO61I,MACT4P,EAAc56G,KAAK,CAAC,SAAU7qC,EAAO61I,IAAI,CAAC,EAExC71I,EAAO0W,OACT+uI,EAAc56G,KAAK,CAAC,WAAY7qC,EAAO0W,KAAK,CAAC,EAE3C1W,EAAOg1I,QACTyQ,EAAc56G,KAAK,CACjB,SAAQ91B,CAAAA,EAELm7H,EAAU,CAAClpE,MAAO,MAAK,IAAEtoE,OAAK,CAAA,OAAEsB,EAAOg1I,MAAM,EAAA,IAAAtxI,UAAA,CAAA,OAC3CgtI,GAAsB1wI,EAAOg1I,OAAQh1I,EAAOunJ,QAAQ,CAAA,CAAC,CAAAxyI,EAAAA,EAEvD2wC,GAAC,CAAA,MAAQ,OAAM,IAAEnyC,MAAI,CAAG,MAAA,uBAAsBvT,EAAOg1I,MAAO,EAAC,EAAA,IAAAtxI,UAAA,CAAA,OAAAqR,EAC3DqyC,GAAY,CAAA,MAAQ,WAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAGrC,EAECpnD,EAAOq1I,SACToQ,EAAc56G,KAAK,CACjB,cAAa91B,CAAAA,EAEVm7H,EAAU,CAAClpE,MAAO,MAAK,IAAEtoE,OAAK,CAAA,OAAEsB,EAAOq1I,OAAO,EAAA,IAAA3xI,UAAA,CAAA,OAC5CgtI,GAAsB1wI,EAAOq1I,QAASr1I,EAAOwnJ,SAAS,CAAA,CAAC,CAAAzyI,EAAAA,EAEzD2wC,GAAC,CAAA,MAAQ,OAAM,IAAEnyC,MAAI,CAAG,MAAA,uBAAsBvT,EAAOq1I,OAAQ,EAAC,EAAA,IAAA3xI,UAAA,CAAA,OAAAqR,EAC5DqyC,GAAY,CAAA,MAAQ,WAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAGrC,EAECpnD,EAAOynJ,UACThC,EAAc56G,KAAK,CAAC,eAAgB7qC,EAAOynJ,QAAQ,CAAC,EAElDznJ,EAAO0nJ,SACTjC,EAAc56G,KAAK,CACjB,UAAS91B,EACRm7H,EAAU,CAAClpE,MAAO,UAAS,IAAEtoE,OAAK,CAAA,OAAEsB,EAAO0nJ,OAAAA,CAAO,CAAA,CAAA,CACpD,EAEC1nJ,EAAO2nJ,cACTlC,EAAc56G,KAAK,CACjB,eAAc91B,EACbm7H,EAAU,CAAClpE,MAAO,eAAc,IAAEtoE,OAAK,CAAA,OAAEsB,EAAO2nJ,YAAAA,CAAY,CAAA,CAAA,CAC9D,EAGC3nJ,EAAO4nJ,OAAOC,SAChBpC,EAAc56G,KAAK,CACjB,aAAY91B,EACXm7H,EAAU,CAAA,IAACxxI,OAAK,CAAA,OAAEsB,EAAO4nJ,MAAMC,OAAAA,CAAO,CAAA,CAAA,CACxC,EAGC7nJ,EAAO4nJ,OAAOE,UAChBrC,EAAc56G,KAAK,CACjB,WAAU91B,EACTm7H,EAAU,CAAA,IAACxxI,OAAK,CAAA,OAAEsB,EAAO4nJ,MAAME,QAAAA,CAAQ,CAAA,CAAA,CACzC,EAGHpC,EAAiBD,CAAa,EAE1BxxI,EAAM,GAAG2hI,QAAQnE,aAAe,QAAS,CACvChrG,IAAAA,EAAQxyB,IAAS2hI,QAAQnvG,MACzB8+G,GAAe,CACjB,CACE,YAAWxwI,EACVm7H,EAAU,CAAClpE,MAAO,kBAAiB,IAAEtoE,OAAK,CAAA,OAAE+nC,EAAMqvG,SAAAA,CAAS,CAAA,CAAA,EAE9D,CACE,WAAU/gI,EACTm7H,EAAU,CAAClpE,MAAO,iBAAgB,IAAEtoE,OAAK,CAAA,OAAE+nC,EAAMshH,QAAAA,CAAQ,CAAA,CAAA,EAE5D,CAAC,WAAYthH,EAAMu3G,QAAQ,EAC3B,CACE,eAAcjpI,EACbm7H,EAAU,CACTlpE,MAAO,qBAAoB,IAC3BtoE,OAAK,CAAA,OAAE+nC,EAAMkvG,YAAAA,CAAY,CAAA,CAAA,EAG7B,CAAC,eAAgBlvG,EAAMuhH,GAAG,EAC1B,CAAC,WAAYvhH,EAAMwhH,GAAG,CAAC,EAEzBzC,EAAgBD,EAAY,CACnBtxI,SAAAA,EAAS2hI,GAAAA,QAAQnE,aAAe,QAAS,CAC5CH,MAAAA,EAAQr9H,IAAS2hI,QAAQtE,MAC/B,IAAIiU,GAAe,CAAE,EACjBjU,EAAM4W,QACR3C,GAAa16G,KAAK,CAAC,SAAUymG,EAAM4W,MAAM,CAAC,EAExC5W,EAAMx7H,QAAQqyI,gBAChB5C,GAAa16G,KAAK,CAAC,iBAAkBymG,EAAMx7H,QAAQqyI,cAAc,CAAC,EAEhE7W,EAAMx7H,QAAQsyI,cAChB7C,GAAa16G,KAAK,CAAC,eAAgBymG,EAAMx7H,QAAQsyI,YAAY,CAAC,EAE5D9W,EAAM+W,QAAQC,MAChB/C,GAAa16G,KAAK,CAAC,kBAAmBymG,EAAM+W,QAAQC,IAAI,CAAC,EAEvDhX,EAAM+W,QAAQhzF,OAChBkwF,GAAa16G,KAAK,CAAC,gBAAiBymG,EAAM+W,QAAQhzF,KAAK,CAAC,EAEtDi8E,EAAMiX,OAAO9hH,OACf8+G,GAAa16G,KAAK,CAAC,SAAUymG,EAAMiX,OAAO9hH,KAAK,CAAC,EAElD++G,EAAgBD,EAAY,CAAA,MAE5BC,EAAgBjxI,MAAS,CAC3B,CACD,EAED,SAASi0I,GAAc,CACf7mJ,MAAAA,EAA6BwL,SAASk/D,eAC1C,UACF,EACI1qE,IACFA,EAAE8mJ,OAAO,EACT9qI,OAAO+qI,UAAUC,UAAUC,UAAUjnJ,EAAEjD,KAAK,EAC5Ck5I,GAAgB,0BAA0B,EAC5C,CAMF,SAASiR,EAAkB74I,EAAiB,CACtC2N,GAAAA,OAAOmrI,cAAgB37I,SAAS47I,YAAa,CACzC7+I,MAAAA,EAAMyT,OAAOmrI,aAAa,EAChC,GAAI5+I,EAAK,CACD6gE,MAAAA,EAAQ59D,SAAS47I,YAAY,EACnCh+E,EAAMi+E,mBAAmBh5I,CAAE,EAC3B9F,EAAI++I,gBAAgB,EACpB/+I,EAAIg/I,SAASn+E,CAAK,EAClB,MAAA,CACF,CAEF6sE,GAAgB,sCAAsC,CAAA,CAGxD,SAASuR,GAAgB,CACjBxnJ,MAAAA,EAA6BwL,SAASk/D,eAC1C,gBACF,EACI1qE,GACFknJ,EAAkBlnJ,CAAC,CACrB,CAGF,SAASynJ,GAA4B,CAC5Bn1I,OAAAA,EAAS6nI,GAAAA,WAAW3/I,MAAS,CAAA,CAGtC,SAASktJ,GAAuB,CAC9B,IAAIp5I,EAAKgE,EAAM,EACf,GAAIhE,EACF,GAAIA,EAAG6rI,WAEH7rI,GAAAA,EAAG6rI,UAAUS,gBAAkB,GAC/BtsI,EAAG6rI,UAAUS,kBAAoBtsI,EAAG6rI,UAAU3/I,MAEvC,MAAA,OAGT,QAAOqzH,GAAiBv/G,CAAE,EAGvB,MAAA,EAAA,CAGT,SAAS02I,GAAe,CAClB1yI,GAAAA,KAAS6nI,UAAW,CACtB,MAAMr1G,EAAQxyB,EAAM,EACEwyB,GAAAA,CAAK,EAAE+iC,KAAK,IAAM,CAAA,CAAE,EAC1CkmD,GAAiBjpF,CAAK,CAAA,MACbxyB,KACTyyD,GAAazyD,GAAQ,EAGhBq1I,EAAA,CAAA,CAGT,eAAezP,GAAW,CACxB,IAAI5pI,EAAKgE,EAAM,EACXhE,IACEm5I,KACI5hF,MAAAA,GAAIb,uBAAuB12D,CAAE,EAChC6rI,EAAAA,UAAWS,gBAAkBtsI,EAAG6rI,UAAW3/I,OAExCqrE,MAAAA,GAAIM,cAAc73D,CAAE,EAEfk3I,EAAA,EACf,CAGF,eAAeoC,GAAa,CAC1B,IAAIt5I,EAAKgE,EAAM,EACXhE,IACEm5I,KACI5hF,MAAAA,GAAIK,yBAAyB53D,CAAE,EACrCA,EAAG6rI,UAAWS,gBAAkB,GAE1B/0E,MAAAA,GAAIO,gBAAgB93D,CAAE,EAEjBk3I,EAAA,EACf,CAKF,SAASmC,GAAS,CACZnsG,EAASp8C,MACX4c,OAAOkoI,QAAQa,KAAK,EACXvpG,EAAS2D,SAASiF,WAAW,YAAY,EAClD5G,EAAS,YAAY,EACZhC,EAAS2D,SAASiF,WAAW,QAAQ,EAC9C5G,EAAS,QAAQ,EACRhC,EAAS2D,SAASiF,WAAW,SAAS,EAC/C5G,EAAS,SAAS,EACThC,EAAS2D,SAASiF,WAAW,QAAQ,GAC9C5G,EAAS,SAAS,CACpB,CAGF,SAASqqG,EAAe7jJ,EAA0B,CAC5CsO,GAAAA,EAAAA,GAAS2hI,QAAQnvG,MAAO,CAS1B,MAAMkW,EAAM,aAPA,CACT,sBAFW1oC,IAAS2hI,QAAQnvG,MAEDkvG,YAAa,GACxC,UAAS1hI,EAAAA,GAAS2hI,QAAQZ,MAAO,GACjC,WAAU/gI,EAAS2hI,GAAAA,QAAQP,OAAQ,GACnC,UAASphI,EAAS6nI,GAAAA,WAAW2N,aAAc,IAC3C,QAAOx1I,EAAAA,GAAS6nI,WAAWE,aAAc,GAAE,EAEb5vI,IAAI+jI,kBAAkB,EAAEiL,KAAK,GAAG,EACjE,OAAArmI,EAAQ2wC,GAAC,CAACnyC,KAAMopC,EAAG,IAAAj5C,UAAA,CAAA,OAAGiC,EAAMjC,QAAAA,CAAQ,CAAA,CAAA,KAEpC,OAAA,CAAA,CACF,CASF,KAAM,CAACgmJ,GAAgBC,EAAiB,EAAIlrJ,EAA8B,CAAA,CAAE,EAEtE,CAACmrJ,GAAeC,EAAgB,EAAI9xI,GAGvC,CACD+xI,KAAM,CAAE,EACRC,KAAM,CAAA,CAAA,CACP,EAED1qJ,GAAa,IAAM,CACjB,IAAIsJ,EAA2B,CAAE,EACjC,GAAIsL,IAAS,CACPjU,IAAAA,EAASiU,IAAS2hI,QACtB,UAAWz0I,KAAOg4B,OAAOnxB,KAAKiM,EAAM,EAAG2hI,OAAO,EAC5C,GAAI,OAAO51I,EAAOmB,CAAG,GAAM,SAAU,CACnC,MAAM6oJ,EAAYC,GAAYjqJ,EAAOmB,CAAG,CAAC,EACrC6oJ,EAAUniJ,OAAS,GACrBc,EAAQkiC,KAAK,CACX1pC,IAAAA,EACA6tC,MAAOk1G,GAAkB/iJ,CAAG,GAAKA,EAAImjC,YAAY,EACjDguG,KAAM0X,CAAAA,CACP,CACH,CAGI78H,EAAAA,KAAK,CAACzwB,EAAGC,IACXD,EAAE41I,KAAKzqI,OAASlL,EAAE21I,KAAKzqI,OAClB,EACEnL,EAAE41I,KAAKzqI,OAASlL,EAAE21I,KAAKzqI,OACzB,GAEA,CAEV,EACD8hJ,GAAkBhhJ,CAAO,EAEzB,IAAIuhJ,EAAY,EACZC,EAAY,EACZC,GAAyB,CAAE,EAC3BC,EAAyB,CAAE,EAE/B1hJ,EAAQ8/B,QAAoBytC,GAAA,CACtBg0E,GAAAA,IAAc,GAAKA,EAAYC,EAAW,CAC5CC,GAAMv/G,KAAKqrC,CAAM,EACjBg0E,GAAah0E,EAAOo8D,KAAKzqI,OACdy0G,UAAAA,KAAOpmC,EAAOo8D,KACnBh2B,EAAIzzD,IAAIhhD,OAAS,KACnBqiJ,GAAavzH,KAAK2zH,KAAKhuC,EAAIzzD,IAAIhhD,OAAS,EAAE,EAE9C,KACK,CACLwiJ,EAAMx/G,KAAKqrC,CAAM,EACjBi0E,GAAaj0E,EAAOo8D,KAAKzqI,OACdy0G,UAAAA,KAAOpmC,EAAOo8D,KACnBh2B,EAAIzzD,IAAIhhD,OAAS,KACnBsiJ,GAAaxzH,KAAK2zH,KAAKhuC,EAAIzzD,IAAIhhD,OAAS,EAAE,EAE9C,CACF,CACD,EAEgBgiJ,GAAA,CAAEC,KAAMM,GAAOL,KAAMM,CAAAA,CAAO,CAAA,CAC/C,CACD,EAED,SAASE,GAAgBt2I,EAA4B,CACnD,IAAIu2I,EAAe,CAAE,EACfC,MAAAA,EAAgBjgF,KACpB,gBAAgB,EAElB,GAAIigF,EACF,QAASC,KAAWD,EAAe,CAC7B,GAAA,CAACC,EAAQ36H,QACX,SAEE4sB,IAAAA,GAAM+tG,EAAQ/tG,IAAI8F,QACpB,UACA0tF,mBAAmBnqF,KAAKC,UAAUhyC,EAAM2hI,OAAO,CAAC,CAClD,EACI4U,EAAa3iJ,OAAS,GACxB2iJ,EAAa3/G,KAAK,KAAK,EAEZA,EAAAA,KAAI91B,EAAE2wC,GAAC,CAACnyC,KAAMopC,GAAG,IAAAj5C,UAAA,CAAA,OAAGgnJ,EAAQxhJ,IAAAA,CAAI,CAAA,CAAK,CAAA,CAI/CshJ,OAAAA,CAAAA,CAGT,SAASxiF,GAAYC,EAA4B,CAC3Ch0D,KACE+zD,GAAAA,YAAY/zD,EAAM,EAAIg0D,CAAI,CAChC,CAGI0iF,MAAAA,GAAelrJ,EAAW,IAAM,CACpC4rE,QAAQC,IAAIr3D,KAAS2hI,SAAS2F,IAAI,EAClC,MAAMA,EAAOtnI,EAAAA,GAAS2hI,SAAS2F,MAAQ,CAAE,EACnCqP,EACJrP,EAAK7kH,QAAQ,sBAAsB,EAAI,IACvC6kH,EAAK7kH,QAAQ,sBAAsB,EAAI,GACzC,OAAOziB,EAAM,GAAG2hI,SAASnE,YAAc,SAAW,CAACmZ,CAAAA,CACpD,EAEKnN,GAAyB7gG,GAAsC,CACnE4qB,GAAIoB,eAAehsB,CAAM,EACZ+pG,EAAA,CACf,EAEA,MAAA,CAAA5xI,EAEK62D,GAAG72D,CAAAA,CAAAA,EAAAA,EACHo2B,GAAS,CAACD,MAAO,GAAI,MAAS,OAAM,IAAAxnC,UAAA,CAAAqR,MAAAA,CAAAA,EAClC8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAAqR,MAAAA,CAAAA,EACDg2B,GAAG,CAAA,MAAQ,OAAM,IAAArnC,UAAA,CAAAqR,MAAAA,CAAAA,EACfL,GAAM,CAACixB,QAAS,YAAW,MAAS,OAAQinC,QAAS08E,EAAM5lJ,SAAA,MAAA,CAAAqR,EAAAA,EAG3D1L,EAAI,CAAA,IAACszB,MAAI,CAAE1J,OAAAA,EAAA,IAAA,CAAA,CAAAhf,EAAO,CAAA,EAAIA,GAAAA,EAAS2hI,GAAAA,QAAQnE,aAAe,OAAO,EAAA,IAAA/tI,UAAA,CAAAqR,MAAAA,CAAAA,EAC3D1L,EAAI,CAAA,IAACszB,MAAI,CAAE4yF,OAAAA,GAAgBt7G,GAAQ,CAAC,EAAA,IAAAvQ,UAAA,CAAA,OAAAqR,EAClCL,GAAM,CACLixB,QAAS,oBACT5xB,SAAU,GAAI,MAAA,OAAArQ,SAAA,SAAA,CAAA,CAAA,CAAA,CAAAqR,EAAAA,EAMjB1L,EAAI,CAAA,IAACszB,MAAI,CAAE,MAAA,CAAC4yF,GAAgBt7G,GAAQ,CAAC,EAAA,IAAAvQ,UAAA,CAAA,OAAAqR,EACnCL,GAAM,CACLixB,QAAS,YACTinC,QAAS+5E,EAAY,MACd,OAAM,IAAAjjJ,UAAA,CAAA,MAAA,CAAA,UAEL,IAAGqR,EACV1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEysH,EAAiB,CAAC,EAAA,IAAA1lJ,UAAA,CAAAuvB,MAAAA,CAAAA,IAAAA,MAC1Bhf,EAAS6nI,GAAAA,WAAW3/I,KAAK,EAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA4Y,EAAAA,EAIhC1L,EAAI,CAAA,IAACszB,MAAI,CAAA,MAAE,CAAC0sH,EAAY,CAAC,EAAA,IAAA3lJ,UAAA,CAAA,OAAAqR,EACvBL,GAAM,CAACixB,QAAS,YAAainC,QAASitE,EAAQn2I,SAAA,UAAA,CAAA,CAAA,CAAA,CAAAqR,EAAAA,EAIhD1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE0sH,EAAY,CAAC,EAAA,IAAA3lJ,UAAA,CAAA,OAAAqR,EACtBL,GAAM,CAACixB,QAAS,YAAainC,QAAS28E,EAAU7lJ,SAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA,IAAAyR,EAAAy/B,GAAA,EAAAz/B,OAAAA,EAAAA,EAAAJ,EAOpD1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEguH,GAAa,CAAC,EAAA,IAAAjnJ,UAAA,CAAA,IAAA2R,EAAAD,GAAA,EAAAy3D,EAAAx3D,EAAA+8B,WAAAigG,EAAAxlE,EAAAjD,YAAA9tC,OAAAA,EAAA+wC,EAAA93D,EASnBsxC,GAAM,CAAA,CAAA,CAAA,EAAAgsF,EAAAA,EAAAt9H,EAGN2gI,GAAuB,CAAA,IACtBzhI,OAAK,CAAA,OAAEA,EAAM,CAAC,EACd+sB,SAAUy8G,EAAAA,CAAqB,CAAA,EAAApoI,CAAAA,CAAA,CAAA,CAAA,EAAAF,CAAAA,IAAA,CAAA,CAAA,CAAAJ,EAAAA,EAQ1C1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE1oB,EAAM,CAAC,EAAA,IAAAvQ,UAAA,CAAA,MAAA,EAAA,IAAA,CAAAkjD,IAAAA,EAAAJ,KAAAQ,EAAAJ,EAAAxU,WAAAu3B,EAAA3iB,EAAA5U,WAAAiV,EAAAsiB,EAAAC,YAAA9tC,OAAAA,EAAA6tC,EAOVkhF,IAAAA,GAAY52I,EAAQ,CAAA,CAAC,EAAAozC,EAAAA,EAAAtyC,EAGrB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE4tH,GAAgBt2I,GAAQ,EAAEpM,OAAS,CAAC,EAAA,IAAAnE,UAAA,CAAAuvB,MAAAA,CAAAA,KAAAA,MAC3Cs3H,GAAgBt2I,EAAQ,CAAA,CAAC,EAAA,IAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAAozC,EAAAA,EAAAtyC,EAE7B1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEysH,EAAiB,CAAC,EAAA,IAAA1lJ,UAAA,CAAA,MAAA,CAAA,MACnB,IAAGqR,EACXy0I,EAAc,CAAA,IAAA9lJ,UAAA,CAAAuvB,MAAAA,CAAAA,MACZhf,EAAAA,GAAS6nI,UAAW3/I,KAAK,EAAA,cAAA,CAAA,CAAA,CAAA,EACV,IAAG,GAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA4zC,GAAAA,IAAAA,GAAA6W,EAfnB,mBAAkBkkG,GAAmB72I,EAAM,CAAE,CAAE,EAAC,CAAA,EAAA2yC,CAAAA,GAAA7xC,EAAAA,EAsBzD8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAAqR,MAAAA,CAAAA,EACDg2B,GAAG,CAAA,MAAQ,OAAQi3G,GAAI,GAAI+I,GAAI,EAAC,IAAArnJ,UAAA,CAAA8jD,IAAAA,EAAAd,KAAAmjB,EAAAriB,EAAApV,WAAA03B,EAAAD,EAAAz3B,WAAA63B,EAAAH,EAAA13B,WAAA63B,OAAAA,EAAAA,EAAAl1D,EAKtB5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAE0rG,EAAc,CAAC,EAAA/hJ,cACrB,IAAA,CAAA8yI,IAAAA,EAAApB,KAAA4V,EAAAxU,EAAApkG,WAAAmkG,EAAAyU,EAAA54G,WAAAqkG,GAAAuU,EAAAphF,YAAA9tC,OAAAA,EAAAy6G,EAAA,IAIS50I,GAAE,CAAC,CAAC,EAAAm6B,EAAA26G,GAAA,IAEL90I,GAAE,CAAC,CAAC,EAAA60I,CAAA,GAAA,CAAA,CAGd,CAAA,EAAAhvF,CAAAA,CAAA,CAAAzyC,EAAAA,EAOZ1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE4oH,EAAa,CAAC,EAAA,IAAA7hJ,UAAA,CAAA,OAAAqR,EACvBg2B,GAAG,CAAA,MAAQ,OAAQi3G,GAAI,GAAI+I,GAAI,EAAC,IAAArnJ,UAAA,CAAA,MAAA,EAAA,IAAA,CAAAwmE,IAAAA,EAAArjB,KAAAsjB,EAAAD,EAAA93B,WAAAg4B,EAAAD,EAAA/3B,WAAAk4B,EAAAF,EAAAh4B,WAAAk4B,OAAAA,EAAAA,EAAAv1D,EAStB5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEwrG,EAAa,CAAE,EAAA7hJ,cACrB,IAAA,CAAAgzI,IAAAA,EAAAnB,KAAAqB,EAAAF,EAAAtkG,WAAAykG,EAAAD,EAAAxkG,WAAA2kG,GAAAH,EAAAhtE,YAAA9tC,OAAAA,EAAA+6G,EAAA,IAISl1I,GAAE,CAAC,CAAC,EAAAm6B,EAAAi7G,GAAA,IAELp1I,GAAE,CAAC,CAAC,EAAA+0I,CAAA,GAAA,CAAA,CAGd,CAAA,EAAAxsE,CAAAA,GAAAn1D,EAAAA,EAOV1L,EAAI,CAAA,IAACszB,MAAI,CAAE0pH,OAAAA,KAAcE,EAAU,CAAC,EAAA,IAAA7iJ,UAAA,CAAA,IAAAsvI,EAAA/rF,GAAA,EAAAojB,EAAA2oE,EAAA5gG,WAAAm4B,EAAAF,EAAAj4B,WAAA23B,EAAAQ,EAAAX,YAAAqpE,GAAA5oE,EAAAT,YAAAspE,EAAAD,GAAA7gG,WAAAghG,EAAAF,EAAA9gG,WAAAtW,OAAAA,EAAAiuC,EAAAh1D,EAS5BizC,GAAgB,CAAA,CAAA,CAAA,EAAAorF,EAAAA,EAAAr+H,EAUd1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE0pH,EAAS,CAAC,EAAA,IAAA3iJ,UAAA,CAAA,OAAAqR,EACnB5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEssG,EAAS,CAAC,EAAA3iJ,aAChB,IAAA,CAAA,IAAAuzI,GAAAxB,GAAA,EAAA4I,GAAApH,GAAA7kG,WAAA0kG,GAAAuH,GAAAz0E,YAAA9tC,OAAAA,EAAAuiH,GAEMpqI,IAAAA,EAAM,GAAG2hI,QAAQZ,MAAM,EAAA8B,EAAAA,GAAA/hI,EAEzBm7H,GAAU,CAACxxI,MAAOiD,EAAC+B,SAAG/B,CAAAA,CAAC,CAAA,EAAAs1I,EAAA,GAAA,CAAA,CAG7B,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA7D,EAAAA,EAAAr+H,EAGJ1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE4pH,EAAU,CAAC,EAAA,IAAA7iJ,UAAA,CAAA,OAAAqR,EACpB5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEwsG,EAAU,CAAC,EAAA7iJ,aACjB,IAAA,CAAA,IAAAszI,GAAAvB,GAAA,EAAAyB,GAAAF,GAAA5kG,WAAA+kG,GAAAD,GAAAttE,YAAA9tC,OAAAA,EAAAo7G,GAEMjjI,IAAAA,EAAM,GAAG2hI,QAAQP,OAAO,EAAA8B,EAAAA,GAAApiI,EAE1Bm7H,GAAU,CAACxxI,MAAOiD,EAAC+B,SAAG/B,CAAAA,CAAC,CAAA,EAAAq1I,EAAA,GAAA,CAAA,CAG7B,CAAA,CAAA,CAAA,EAAA,IAAA,EAAAhE,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAj+H,EAAAA,EAWlB1L,EAAI,CAAA,IAACszB,MAAI,CAAE1oB,OAAAA,EAAS2hI,GAAAA,QAAQnE,aAAe,KAAK,EAAA,IAAA/tI,UAAA,CAAA,OAAAqR,EAC9Cg2B,GAAG,CAAA,MAAQ,OAAQi3G,GAAI,GAAI+I,GAAI,EAAC,IAAArnJ,UAAA,CAAA,OAAAqR,EAC9Bk2I,GAAU,CAAA,IAACxa,KAAG,CAAEx8H,OAAAA,EAAAA,GAAS2hI,QAAQnF,GAAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA17H,EAAAA,EAM3C1L,EAAI,CAAA,IAACszB,MAAI,CAAE1oB,OAAAA,EAAS2hI,GAAAA,SAASnvG,OAAOykH,IAAI,EAAA,IAAAxnJ,UAAA,CAAA,OAAAqR,EACtC8iC,GAAG,CAAA,MAAQ,OAAM,IAAAn0C,UAAA,CAAA,OAAAqR,EACfg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,IAAA2vI,EAAAlsF,GAAA,EAAAmsF,EAAAD,EAAAjhG,WAAAmhG,EAAAD,EAAA1pE,YAAA2pE,OAAAA,EAAAA,EAAAx+H,EAIGo2I,GAAe,CAAA,IAACD,MAAI,CAAEj3I,OAAAA,EAAS2hI,GAAAA,QAAQnvG,OAAOykH,IAAAA,CAAK,CAAA,CAAA,EAAA7X,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAt+H,EAAAA,EAO7Dq2I,GAAO,CAAA,IACNvF,SAAO,CAAA,OAAEA,EAAQ,CAAC,EAAA,IAClB9/E,SAAO,CAAA,OAAEA,EAAQ,CAAE,EACnBigF,mBAAAA,EAAsC,IACtCD,iBAAe,CAAA,OAAEA,EAAgB,CAAC,EAClCsF,SAAUlE,CAAAA,CAAYpyI,EAAAA,EAIvB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEopH,EAAgB,CAAC,EAAA,IAAAriJ,UAAA,CAAA,OAAAqR,EAC1Bu2I,GAAY,CAAA,IACXvlF,SAAO,CAAA,OAAEA,EAAQ,CAAE,EACnBslF,SAAUlE,EACVv6G,MAAOA,IAAMo5G,EAAmB,EAAK,CAAA,CAAC,CAAA,CAAA,CAAAjxI,EAAAA,EAKzC1L,EAAI,CAAA,IAACszB,MAAI,CAAEspH,OAAAA,EAAMjmJ,QAAUimJ,EAAME,WAAW,EAAA,IAAAziJ,UAAA,CAAA,OAAAqR,EAC1C8iC,GAAG,CAAA,MAAQ,OAAM,IAAAn0C,UAAA,CAAA,OAAAqR,EACfg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,IAAA8vI,EAAAG,GAAAF,EAAAA,EAAAD,EAAAphG,WAAAshG,EAAAD,EAAA7pE,YAAAgqE,EAAAF,EAAAthG,WAAA+gG,GAAAS,EAAAxhG,WAAA+gG,OAAAA,EAAAA,GAAAp+H,EAUO1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEspH,EAAMjmJ,MAAM,EAAA,IAAA0D,UAAA,CAAA,IAAAywI,EAAA7sF,GAAA,EAAA8sF,EAAAD,EAAA/hG,WAAAiiG,EAAAD,EAAAxqE,YAAA9tC,OAAAA,EAAAu4G,EAKfkX,IAAAA,GAAgBtF,EAAMjmJ,MAAM,CAAC,EAAAm0I,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAhB,EAAAA,GAAAp+H,EAGrC1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEspH,EAAME,WAAW,EAAA,IAAAziJ,UAAA,CAAA,IAAAu6I,EAAAx2F,GAAA,EAAA+sF,EAAAyJ,EAAA7rG,WAAAqiG,EAAAD,EAAA5qE,YAAA9tC,OAAAA,EAAA24G,EAKpB8W,IAAAA,GAAgBtF,EAAME,WAAW,CAAC,EAAAlI,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAzK,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAz+H,EAAAA,EAWxD1L,EAAI,CAAA,IAACszB,MAAI,CAAE1J,OAAAA,EAAA,IAAA,CAAA,CAAAhf,EAAAA,CAAO,EAAA,GAAIA,EAAM,EAAG2hI,QAAQtE,KAAK,EAAA,IAAA5tI,UAAA,CAAA,OAAAqR,EAC1Cy2I,GAAS,CAAA,IAACla,OAAK,CAAEr9H,OAAAA,EAAAA,EAAS2hI,QAAQtE,KAAAA,CAAM,CAAA,CAAA,CAAA,CAAAv8H,EAAAA,EAI1C8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,OAAAqR,EACDg2B,GAAG,CAAA,MAAQ,OAAM,IAAArnC,UAAA,CAAA,IAAAgxI,EAAA/sF,GAAAA,EAAAgtF,EAAAD,EAAAtiG,WAAAuiG,OAAAA,EAAAA,EAAA5/H,EAGX+sB,GAAI,CAACC,iBAAkB,MAAK,IAAAr+B,UAAA,CAAAqR,MAAAA,CAAAA,EAC1B0jC,GAAG,CAAC5kB,SAAQ,MAAOmb,MAAK,MAAA,IAAAtrC,UAAA,CAAA,OAAAqR,EAEtB8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,OAAAqR,EACD5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,MAAE,CAAC6vG,GAAcE,KAAMF,GAAcG,IAAI,CAAC,EAAArmJ,SAC5CqR,GAAAA,EAEAg2B,GAAG,CAAA,MAAQ,qBAAoB,IAAArnC,UAAA,CAAA,OAAAqR,EAC7B5L,GAAG,CAAC4wC,KAAM8iE,EAAGn5G,aACT,IAAA,CAAA,IAAA2zI,GAAApB,GAAAqB,EAAAA,EAAAD,GAAAjlG,WAAAq5G,EAAAnU,EAAA1tE,YAAA2tE,EAAAkU,EAAAr5G,WAAA0sG,GAAAvH,EAAAnlG,WAAAklG,OAAAA,EAAAA,EAG6B30I,IAAAA,EAAEqsC,KAAK,EAAA8vG,EAAAA,GAAA/pI,EAI1B5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEp3C,EAAE2vI,IAAI,EAAA5uI,cACZ,IAAA,CAAA,IAAAq7I,GAAA3I,GAAA,EAAA4I,GAAAD,GAAA3sG,WAAA+sG,GAAAH,GAAAp1E,YAAAo1E,OAAAA,EAAAA,GAGQr9I,IAAAA,GAAER,GAAG,EAAAg+I,EAAAA,GAAApqI,EAEPrL,GAAM,CAAA,IACLN,UAAQ,CAAA,OAAA2L,EACLm7H,GAAU,CAAA,IACTxxI,OAAK,CAAA,OAAEiD,GAAEknD,GAAG,EAAA,IAAAnlD,UAAA,CAAA,OAEX/B,GAAEknD,GAAAA,CAAG,CAAA,CAAA,EAAA,IAAAnlD,UAAA,CAAAqR,MAAAA,CAAAA,EAIT5K,GAAK,CAAA,IACJwyB,MAAI,CAAA,OACFh7B,GAAEknD,MAAQ,IACVlnD,GAAEknD,MAAQ,EAAK,EAAA,IAAAnlD,UAAA,CAGf,MAAA,GAAE/B,GAAEknD,GAAI,EAAA,CAAC,CAAA9zC,EAAAA,EAEZ5K,GAAK,CAAA,IACJwyB,MAAI,CAAA,OACFh6B,EAAExB,KACA,SACFQ,GAAER,KAAO,MAAM,EAAA,IAAAuC,UAAA,CAAA,OAAAqR,EAGhBm7H,GAAU,CACTlpE,MACE,kBAAiB,IAEnBtoE,OAAK,CACHuV,OAAAA,EAAS2hI,GAAAA,QACNnvG,OACCqvG,SAAS,EAAA,IAAApyI,UAAA,CAAA,OAGd/B,GAAEknD,GAAAA,CAAG,CAAA,CAAA,CAAA,CAAA9zC,EAAAA,EAGT5K,GAAK,CAAA,IACJwyB,MAAI,CAAA,OACFh7B,GAAER,KAAO,KAAK,EAAA,IAAAuC,UAAA,CAAA,OAAAqR,EAGf2wC,GAAC,CAAA,IACAnyC,MAAI,CAAA,MACF,QAAU5R,GAAEknD,GAAG,EAAA,IAAAnlD,UAAA,CAAA,OAGhB/B,GAAEknD,GAAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAk2F,EAAA,GAAA,CAAA,CAOnB,CAAA,EAAA1H,EAAA,GAAA,CAAA,CAOd,CAAA,CAAA,CAAA,CAAA,CAIR,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAtiI,EAAAA,EAIN5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAE2vG,GAAe,CAAC,EAAAhmJ,SACxBA,CAACT,EAAGb,IACH2S,EAEK0jC,GAAG,CAAA,IAAC5kB,UAAQ,CAAA,OAAE5wB,EAAE9B,GAAG,EAAA,IAAE6tC,OAAK,CAAA,OAAE/rC,EAAE+rC,KAAK,EAAA,IAAAtrC,UAAA,CAAA,IAAA27I,GAAA1I,GAAAA,EAAA+U,EAAArM,GAAAjtG,WAAAs5G,OAAAA,EAAAA,EAAA32I,EAO7B5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAE92C,EAAEqvI,IAAI,EAAA5uI,aACZ,IAAA,CAAA,IAAAi7I,EAAAvH,GAAA,EAAAuU,GAAAhN,EAAAvsG,WAAA2tG,GAAA4L,GAAA/hF,YAAA+hF,OAAAA,EAAAA,GAIMhqJ,IAAAA,EAAER,GAAG,EAAA4+I,EAAAA,GAAAhrI,EAGLrL,GAAM,CAAA,IACLN,UAAQ,CAAA,OAAA2L,EACLm7H,GAAU,CAAA,IAACxxI,OAAK,CAAA,OAAEiD,EAAEknD,GAAG,EAAA,IAAAnlD,UAAA,CAAA,OACrB/B,EAAEknD,GAAAA,CAAG,CAAA,CAAA,EAAA,IAAAnlD,UAAA,CAAA,OAAAqR,EAIT5K,GAAK,CAAA,IACJwyB,MAAI,CAAA,OACF15B,EAAE9B,KAAO,SACTQ,EAAER,KAAO,MAAM,EAAA,IAAAuC,UAAA,CAAA,OAAAqR,EAGhBm7H,GAAU,CACTlpE,MAAO,kBAAiB,IACxBtoE,OAAK,CACHuV,OAAAA,EAAS2hI,GAAAA,QAAQnvG,OACbqvG,SAAS,EAAA,IAAApyI,UAAA,CAAA,OAGd/B,EAAEknD,GAAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA81F,CAAA,GAAA,CAAA,CAOnB,CAAA,EAAAU,EAAAA,CAAA,CAAA,CAOf,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA3K,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA3/H,EAAAA,EASZ1L,EAAI,CAAA,IAACszB,MAAI,CAAE1oB,OAAAA,EAAAA,GAAS2hI,QAAQ31E,OAAO,EAAA,IAAAv8D,UAAA,CAAA,OAAAqR,EACjC8iC,GAAG,CAAA,MAAQ,OAAM,IAAAn0C,UAAA,CAAA,OAAAqR,EACfg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,OAAAqR,EACD62I,GAAgB,CACf58G,MAAO,UAAS,IAChB68G,QAAM,CAAE53I,OAAAA,EAAAA,EAAS2hI,QAAQ31E,OAAO,EAAA,IAChC6rF,OAAK,CAAA,OAAA/2I,EACFL,GAAM,CACLk4D,QAASA,IAAM5E,GAAY,SAAS,EACpC55D,MAAO+2I,GAAiBzhJ,SAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAqR,EAAAA,EAWnC1L,EAAI,CAAA,IAACszB,MAAI,CAAE1oB,OAAAA,EAAAA,GAAS2hI,QAAQmW,MAAM,EAAA,IAAAroJ,UAAA,CAAA,OAAAqR,EAChC8iC,GAAG,CAAA,MAAQ,OAAM,IAAAn0C,UAAA,CAAA,OAAAqR,EACfg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,OAAAqR,EACD62I,GAAgB,CACf58G,MAAO,SAAQ,IACf68G,QAAM,CAAE53I,OAAAA,EAAAA,EAAS2hI,QAAQmW,MAAM,EAAA,IAC/BD,OAAK,CAAA,OAAA/2I,EACFL,GAAM,CACLk4D,QAASA,IAAM5E,GAAY,QAAQ,EACnC55D,MAAO+2I,GAAiBzhJ,SAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAqR,EAAAA,EAUnC8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAAqR,MAAAA,CAAAA,EACDg2B,GAAG,CAAA,MAAQ,OAAQihH,GAAI,GAAIC,IAAK,EAAC,IAAAvoJ,UAAA,CAAA,IAAAkxI,EAAA/sF,GAAAq2F,EAAAA,EAAAtJ,EAAAxiG,WAAAyiG,EAAAqJ,EAAAt0E,YAAAkrE,EAAAD,EAAAziG,WAAA+rG,GAAArJ,EAAA1iG,WAAA+rG,OAAAA,EAAAA,GAAAppI,EAUvB5L,GAAG,CAAA,IAAC4wC,MAAI,CAAEkwG,OAAAA,GAAYh2I,GAAO,CAAC,EAAAvQ,aAC1B,IAAA,CAAA,IAAAu8I,EAAA7J,GAAA,EAAA+J,EAAAF,EAAA7tG,WAAA85G,GAAA/L,EAAAv2E,YAAAu2E,OAAAA,EAAAA,EAGQx+I,IAAAA,EAAER,GAAG,EAAA+qJ,EAAAA,GACcvqJ,IAAAA,EAAEknD,GAAG,EAAAo3F,CAAA,GAAA,CAAA,CAGlC,CAAA,EAAArL,CAAAA,CAAA,CAAA7/H,EAAAA,EAOZg2B,GAAG,CAAA,MAAQ,OAAQihH,GAAI,GAAIC,IAAK,EAAC,IAAAvoJ,UAAA,CAAAuxI,IAAAA,EAAAC,GAAA,EAAAC,EAAAF,EAAA7iG,WAAAmsG,EAAApJ,EAAA/iG,WAAAkjG,EAAAiJ,EAAA30E,YAAA4rE,GAAAF,EAAAljG,WAAA8jG,EAAAV,GAAA5rE,YAAAw0E,EAAA9I,EAAA1rE,YAAAusE,EAAAiI,EAAAhsG,WAAAikG,GAAAlB,EAAAvrE,YAAA0rE,OAAAA,EAAAA,EAAAvgI,EAMzB1L,EAAI,CAAA,IACHszB,MAAI,CACFhf,OAAAA,OAAOw/B,SAASid,WAAa,UAC7Bz8C,OAAOw/B,SAASiiG,WAAa,aAC7BzhI,OAAOw/B,SAASiiG,WAAa,WAAW,EAAA,IAAA17I,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAAsyI,GAAAjuF,GAAA,EAAAiuF,OAAAA,GAAAvpE,QAKxB9qE,IAAA,CACdA,GAAEuS,eAAe,EACLs0I,EAAA,CACd,EAACxS,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA,CAAA,EAAAE,CAAA,EAAAA,EAAAzpE,QAQa9qE,IAAA,CACdA,GAAEuS,eAAe,EACHi1I,EAAA,CAChB,EAAChT,EAAAA,EAAAphI,EAQAslC,GAAK,CACJ7T,QAASA,IAAMo/G,EAAiB,EAAK,EAAC,IACtCt7I,MAAI,CAAA,OAAEq7I,EAAc,CAAC,EACrBvrG,SAAQ,GACRzW,MAAO,IAAK,IAAAjgC,UAAA,CAAAqR,OAAAA,EAEXslC,GAAMnQ,KAAI,CAAAxmC,SAAA,0BAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA2yI,EAAAA,GAAAthI,EAMhBo3I,GAAU,CAAC/rJ,GAAI,iBAAgB,IAAE+gJ,MAAI,CAAA,OAAEltI,EAAM,CAAA,CAAC,CAAA,CAAA,EAAAghI,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA,IAAAqB,EAAAruF,GAAA,EAAAjS,EAMxCowG,EAAU,cAAApwG,GAAAC,WAAAA,GAAAD,EAAAsgG,CAAA,EAAV8P,EAAU9P,EAAAA,EAAAA,EACtBtwF,IAAAA,KAAKC,UAAUhyC,IAASM,OAAW,CAAC,CAAC,EAAA+hI,CAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAMlD,CAEA,SAAS8V,GAAY97I,EAAkC,CACrD,IAAI+7I,EAA6B,CAAE,EAC/BC,EAAQ,CAAE,EAEd,QAASlqJ,EAAI,EAAGA,EAAIkO,EAAKzI,OAAQzF,IAC/BkqJ,EAAMzhH,KAAKv6B,EAAKi8I,WAAWnqJ,CAAC,CAAC,EAGxBkqJ,KAAAA,EAAMzkJ,OAAS,GAAG,CACvB,MAAMgzD,EAAQyxF,EAAMxoG,OAAO,EAAG,EAAE,EAChC,IAAIupB,EAAM,CAAE,EACRm/E,EAAY,CAAE,EAClB,QAASpqJ,EAAI,EAAGA,EAAIy4D,EAAMhzD,OAAQzF,IAAK,CACrC,MAAM4Q,EAAI6nD,EAAMz4D,CAAC,EAAEgmD,SAAS,EAAE,EAC1Bp1C,EAAEnL,SAAW,EACXgjC,EAAAA,KAAK,IAAM73B,CAAC,EAEhBq6D,EAAIxiC,KAAK73B,CAAC,EAER6nD,EAAMz4D,CAAC,GAAK,IAAMy4D,EAAMz4D,CAAC,GAAK,IAChCoqJ,EAAU3hH,KAAK/W,OAAO24H,aAAa5xF,EAAMz4D,CAAC,CAAC,CAAC,EAE5CoqJ,EAAU3hH,KAAK,GAAG,CACpB,CAEKA,EAAAA,KAAK,CAACwiC,EAAI+tE,KAAK,GAAG,EAAGoR,EAAUpR,KAAK,EAAE,CAAC,CAAC,CAAA,CAG1CiR,OAAAA,CACT,CAEA,SAASxB,GAAY52I,EAAsB,CACrC,GAAA,CACM,MAAA,GAAEA,EAAM2hI,QAAQnE,WAAWntG,YAAc,CAAA,KAAI+rG,GACnDp8H,CACF,CAAE,QACU,CACL+xC,OAAAA,KAAKC,UAAUhyC,CAAK,CAAA,CAE/B,CAEA,SAAS62I,GAAmB72I,EAAc,CAChCA,OAAAA,EAAM2hI,QAAQnvG,OAAOu3G,SAAQ,CACnC,IAAK,GACI,MAAA,eACT,IAAK,GACI,MAAA,gBACT,QACS,MAAA,YAAA,CAEb,CAEA,SAAS0O,GAAgB12F,EAAmB,CAEnC22F,OADIhoF,GAAgB3O,CAAS,EAC1B5B,OAAO,yBAAyB,CAC5C,CAEA,SAAS61F,GACP/zE,EACA3zC,EAAmB,CAAA,EACnB8pH,EAAsC,CAAA,EACT,CAC7B,GAAIn2E,IAAW,KACNm2E,OAAAA,EAET,UAAWlrJ,KAAOg4B,OAAOnxB,KAAKkuE,CAAM,EAAG,CACjC02E,IAAAA,EAAa,CAAC,GAAGrqH,CAAM,EAC3BqqH,EAAW/hH,KAAK1pC,CAAG,EACf0nD,IAAAA,EAAMqtB,EAAO/0E,CAAG,EACpB,OAAQ,OAAO0nD,EAAG,CAChB,IAAK,SACSA,GAAAA,EAAK+jG,EAAYP,CAAM,EACnC,MACF,QACmBO,EAAWxR,KAAK,GAAG,EACtBr1F,WAAW,YAAY,GACnCsmG,EAAOxhH,KAAK,CAAE1pC,IAAKyrJ,EAAWxR,KAAK,GAAG,EAAGvyF,IAAAA,CAAAA,CAAU,EAErD,KAAA,CACJ,CAGKwjG,OAAAA,CACT,CAEA,SAASF,GAAWxmJ,EAAY,CAC9B,IAAI0mJ,EAGJ,MAAMlL,EAAO,CAAE,GAAGx7I,EAAMw7I,IAAK,EAC7B,cAAOA,EAAKnG,UAEZ37I,GAAa,IAAM,CACbgtJ,IACK9/E,EAAAA,UAAYs2E,GAAgBgK,OAAO1L,CAAI,EAChD,CACD,GAED,IAAA,CAAA,IAAA2L,EAAAzM,GAAA,EAAA0M,EAGWV,EAAM,cAAAU,GAAA92G,WAAAA,GAAA82G,EAAAD,CAAA,EAANT,EAAMS,EAAAz+G,MAAAyB,GAAAg9G,EAGJnnJ,EAAMyI,MAAK04C,CAAA,CAAA,EAAAgmG,CAAAA,GAAA,CAI1B,CAEA,SAASlB,GAAiBjmJ,EAIvB,CACD,OAAA,IAAA,CAAA,IAAAu6I,EAAA8M,GAAA,EAAA5M,EAAAF,EAAA9tG,WAAAouG,EAAAJ,EAAAx2E,YAAA9tC,OAAAA,EAAAskH,EAGOz6I,IAAAA,EAAMqpC,MAAK,IAAA,EAAAoxG,EAAAA,EAAArrI,EACX1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh3B,EAAMmmJ,KAAK,EAAA,IAAApoJ,UAAA,CAAA,IAAA48I,EAAAN,GAAA,EAAAM,OAAAA,EAAAA,EACM36I,IAAAA,EAAMmmJ,KAAK,EAAAxL,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAE,EAAAA,EAAAzrI,EAIvC8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAAqR,MAAAA,CAAAA,EACDg2B,GAAG,CAACg3G,GAAI,GAAIgJ,GAAI,EAAC,MAAS,OAAM,IAAArnJ,UAAA,CAAA,IAAA+8I,EAAAF,GAAA,EAAAG,EAAAD,EAAAruG,WAAAuuG,EAAAD,EAAAtuG,WAAAtW,OAAAA,EAAA6kH,EAGAsM,IAAAA,KAAKtnJ,EAAMkmJ,MAAM,CAAC,EAAApL,CAAAA,CAAA,CAAA1rI,EAAAA,EAIlDg2B,GAAG,CAACg3G,GAAI,GAAIgJ,GAAI,EAAC,IAAArnJ,UAAA,CAAAk9I,IAAAA,EAAAI,KAAAD,EAAAH,EAAAxuG,WAAA86G,EAAAnM,EAAA3uG,WAAA+6G,EAAAD,EAAA96G,WAAA+6G,OAAAA,EAAAA,EAAAp4I,EAKP5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEqyG,GAAYa,KAAKtnJ,EAAMkmJ,MAAM,CAAC,CAAC,EAAAnoJ,aACrC,IAAA,CAAA,IAAA0pJ,EAAAC,GAAAC,EAAAA,EAAAF,EAAAh7G,WAAAm7G,EAAAD,EAAAl7G,WAAAo7G,EAAAF,EAAA1jF,YAAA6jF,EAAAD,EAAAp7G,WAAAtW,OAAAA,EAAAyxH,EAAA,IAI4C5rJ,EAAE,CAAC,CAAC,EAAAm6B,EAAA2xH,EAAA,IAGJ9rJ,EAAE,CAAC,CAAC,EAAAyrJ,CAAA,GAAA,CAAA,CAIlD,CAAA,EAAAxM,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAV,CAAAA,GAAA,CAWvB,CAEA,SAASiL,GAAgBxlJ,EAAyB,CAChD,KAAM,CAACulJ,EAAMwC,CAAO,EAAIjvJ,EAAa,EAAE,EAEvCY,OAAAA,GAAa,IAAM,CACjB,IAAIuN,EAAOjH,EAAMulJ,KAEVt+I,EAAAA,EAAK61C,QAAQ,IAAK,YAAY,EAC9B71C,EAAAA,EAAK61C,QAAQ,IAAK,YAAY,EAE9B71C,EAAAA,EAAK61C,QACV,iFACC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2DAOH,EAEO71C,EAAAA,EAAK61C,QACV,YACC,6CACH,EACO71C,EAAAA,EAAK61C,QAAQ,WAAa,sCAAqC,EAG/D71C,EAAAA,EAAK61C,QACV,gBACC,wCACH,EAGO71C,EAAAA,EAAK61C,QAAQ,mBAAqB,kCAAiC,EAEnE71C,EAAAA,EAAK61C,QAAQ,aAAc,MAAM,EACjC71C,EAAAA,EAAK61C,QAAQ,aAAc,MAAM,EAExCirG,EAAQ9gJ,CAAI,CAAA,CACb,GAED,IAAA,CAAA,IAAA+gJ,EAAAC,GAAA,EAAAv/G,OAAAA,OAAAs/G,EAAAphF,UAAuB2+E,EAAAA,CAAM,EAAAyC,CAAAA,GAAA,CAC/B,CAEA,SAAS1C,GAAWtlJ,EAAwB,CAW1C,MAAMkoJ,EAAoB,CAAE,EAE5B,IAAIC,EAAS,CACX,CAAE3sJ,IAAK,OAAQ0nD,IAAKljD,EAAM8qI,IAAI38H,KAAKwwB,YAAY,CAAA,EAC/C,CAAEnjC,IAAK,QAAS0nD,IAAM,GAAEljD,EAAM8qI,IAAIsd,MAAO,IAAGpoJ,EAAM8qI,IAAIwO,MAAO,EAAA,CAAG,EAW9Dt5I,GATAA,EAAM8qI,IAAIud,OACZF,EAAOjjH,KAAK,CAAE1pC,IAAK,QAAS0nD,IAAKljD,EAAM8qI,IAAIud,KAAAA,CAAO,EAGpDH,EAAMhjH,KAAK,CACTmE,MAAO,KACP1+B,KAAMw9I,CAAAA,CACP,EAEGnoJ,EAAM8qI,IAAIwd,QAAS,CACrB,MAAM3b,EAAO3sI,EAAM8qI,IAAIwd,QAAQ7hJ,IAAW1P,IACjC,CACLyE,IAAM,GAAEzE,EAAEqxJ,MAAO,IAAGrxJ,EAAEuiJ,MAAO,GAC7Bp2F,IAAKnsD,EAAEwxJ,KACT,EACD,EACDL,EAAMhjH,KAAK,CACTmE,MAAO,cACP1+B,KAAMgiI,CAAAA,CACP,CAAA,CAGC3sI,GAAAA,EAAM8qI,IAAI0d,YAAa,CACzB,IAAI7b,EAAsB,CAAE,EACtB7B,EAAAA,IAAI0d,YAAY1lH,QAAe/rC,GAAA,CAC/BA,EAAEqxJ,SAAW,OAASrxJ,EAAE0xJ,KAC1B9b,EAAKznG,KAAK,CACR1pC,IAAM,GAAEzE,EAAEqxJ,MAAO,IAAGrxJ,EAAEuiJ,MAAO,GAC7Bp2F,IAAM,GAAEnsD,EAAE0xJ,KAAKC,KAAM,KAAI3xJ,EAAE0xJ,IAAIE,KAAM,GAAA,CACtC,CACH,CACD,EACGhc,EAAKzqI,OAAS,GAChBgmJ,EAAMhjH,KAAK,CACTmE,MAAO,kBACP1+B,KAAMgiI,CAAAA,CACP,CACH,CAGF,OAAAv9H,EAEK5L,GAAG,CAAC4wC,KAAM8zG,EAAKnqJ,SACbA,CAAC6qJ,EAAMnsJ,KAAC,IAAA,CAAA,IAAAosJ,EAAAC,GAAA,EAAAC,EAAAF,EAAAp8G,WAAAu8G,EAAAD,EAAAt8G,WAAAs8G,OAAAA,EAAAA,EAAA35I,EAIA1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE4xH,EAAKv/G,KAAK,EAAA,IAAAtrC,UAAA,CAAA,IAAAkrJ,EAAAC,GAAA,EAAAC,EAAAF,EAAAx8G,WAAA28G,EAAAD,EAAA18G,WAAA28G,OAAAA,EAAAA,EAGGR,IAAAA,EAAKv/G,KAAK,EAAA4/G,CAAAA,CAAA,CAAA,EAAAD,CAAA,EAAAA,EAAAA,EAAA55I,EAKhC5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEw0G,EAAKj+I,IAAI,EAAA5M,aACb,IAAA,CAAA,IAAAsrJ,EAAAC,GAAA,EAAAC,EAAAF,EAAA58G,WAAA+8G,EAAAD,EAAAtlF,YAAAslF,OAAAA,EAAAA,EAEI5yC,IAAAA,EAAIn7G,GAAG,EAAAguJ,EAAAA,EACP7yC,IAAAA,EAAIzzD,GAAG,EAAAmmG,CAAA,GAAA,CAAA,CAEf,CAAA,EAAAR,CAAA,GAAA,CAAA,CAMZ,CAIT,CAEA,SAASjD,GAAgBxE,EAAU,CACjC,IAAI/0E,EAAQ,CAAE,EACd,OAAI+0E,EAAIqI,gBACAvkH,EAAAA,KAAKk8G,EAAIqI,cAAc,EAE3BrI,EAAID,cACAj8G,EAAAA,KAAKk8G,EAAID,YAAY,EAEzBC,EAAIsI,aACAxkH,EAAAA,KAAKk8G,EAAIsI,WAAW,EAExBtI,EAAIuI,WACAzkH,EAAAA,KAAKk8G,EAAIuI,SAAS,EAEnBt9E,EAAMopE,KAAK,KAAK,CACzB,CAEA,SAASoQ,GAAU7lJ,EAA0C,CAC3D,KAAM,CAAC4pJ,EAAWC,CAAY,EAAI/wJ,EAAa,EAAK,EAC9C,CAAC6yI,EAAOme,CAAQ,EAAIhxJ,EAA0C,CAAA,CAAE,EAChE,CAACm/C,EAAQ8xG,CAAS,EAAIjxJ,EAAa,EAAE,EAE3C,SAASkxJ,EAAWhuJ,EAAQ,CACbA,EAAAA,EAAE0G,OAAOwyI,OAAO,CAAA,CAG/Bx7I,OAAAA,GAAa,IAAM,CAEXuwJ,MAAAA,EADY3F,GAAYtkJ,EAAM2rI,KAAK,EACd1zF,OAAcj8C,GACnC4tJ,EAAAA,KACE5tJ,EAAEknD,MAAQ,GAIZjL,KACEj8C,EAAER,IAAIu1B,QAAQknB,EAAQ,CAAA,EAAI,EAKjC,EACD6xG,EAASG,CAAQ,CAAA,CAClB,GAED,IAAA,CAAAC,IAAAA,EAAAC,GAAA,EAAAC,EAAAF,EAAAz9G,WAAA49G,EAAAD,EAAA39G,WAAA69G,EAAAD,EAAApmF,YAAAsmF,EAAAD,EAAA79G,WAAA+9G,EAAAJ,EAAAnmF,YAAAwmF,EAAAD,EAAA/9G,WAAAi+G,EAAAD,EAAAxmF,YAAA0mF,EAAAD,EAAAj+G,WAAAzkC,OAAAA,EAAAA,iBAAA,SASsBgiJ,CAAU,EAAAS,EAAAG,QAUN5uJ,GAAA,CACJA,EAAAA,EAAE0G,OAAO3J,KAAK,CAC1B,EAAC4xJ,EAAAA,EAAAv7I,EAOE5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEu3F,EAAM,CAAC,EAAA5tI,aACV,IAAA,CAAA,IAAA8sJ,EAAAC,GAAA,EAAAC,EAAAF,EAAAp+G,WAAAu+G,EAAAD,EAAA9mF,YAAA8mF,OAAAA,EAAAA,EAIGE,IAAAA,EAAKzvJ,GAAG,EAAAwvJ,EAAAA,EAENC,IAAAA,EAAK/nG,GAAG,EAAA2nG,CAAA,GAAA,CAAA,CAGlB,CAAA,EAAAX,CAAAA,GAAA,CAQjB,CAEA,SAASzE,GAAQzlJ,EAMd,CACeqD,OAAAA,GAAe,EAY/B+L,EACG1L,EAAI,CAACszB,KAAM,GAAI,IAAAj5B,UAAA,CAAA,IAAAmtJ,EAAAC,KAAAC,EAAAF,EAAAz+G,WAAA4+G,EAAAD,EAAA3+G,WAAA6+G,EAAAD,EAAA5+G,WAAA8+G,EAAAD,EAAArnF,YAAAunF,EAAAD,EAAA9+G,WAAA++G,OAAAA,EAAAA,EAAAp8I,EAOH5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEp0C,EAAMkgJ,OAAO,EAAAniJ,aACf,IAAA,CAAA,IAAA0tJ,EAAAC,GAAAC,EAAAA,EAAAF,EAAAh/G,WAAAm/G,EAAAD,EAAA1nF,YAAA4nF,EAAAD,EAAA3nF,YAAA6nF,EAAAD,EAAA5nF,YAAAwnF,OAAAA,EAAAA,EAAA,IAGA1E,GAAgB18D,EAAMh6B,SAAS,EAAEzxB,MAAM,EAAG,EAAE,EAAC+sH,CAAA,EAAAF,EAAAA,EAAAr8I,EAE7CrL,GAAM,CAAA,IAACN,UAAQ,CAAA,OAAE4mF,EAAM0uD,MAAM,EAAA,IAAAh7I,UAAA,CAAAqR,MAAAA,CAAAA,EAC3B5K,GAAK,CAAA,IAACwyB,MAAI,CAAA,OAAEqzD,EAAM0uD,QAAU,WAAW,EAAAh7I,SAAA,WAAA,CAAAqR,EAAAA,EAGvC5K,GAAK,CAAA,IAACwyB,MAAI,CAAA,OAAEqzD,EAAM0uD,QAAU,cAAc,EAAAh7I,SAAA,cAAA,CAAAqR,EAAAA,EAG1C5K,GAAK,CAAA,IAACwyB,MAAI,CAAA,OAAEqzD,EAAM0uD,QAAU,SAAS,EAAAh7I,SAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA6tJ,CAAA,EAAAz1H,EAAA21H,EAAA,IAIjCzhE,EAAM5pB,UAAY,MAAM,EAAAgrF,EAAAA,EAAAr8I,EAC9B1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEqzD,EAAM0uD,QAAU,SAAS,EAAA,IAAAh7I,UAAA,CAAA,IAAAguJ,EAAAC,GAAA,EAAAD,OAAAA,EAAAA,EACnB1hE,IAAAA,EAAMhqB,OAAO,EAAA0rF,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAN,CAAA,GAAA,CAAA,CAIpC,CAAA,EAAAJ,EAAAA,EAAAj8I,EAIN1L,EAAI,CAAA,IAACszB,MAAI,CAAA,MAAE,CAACh3B,EAAMogJ,eAAe,EAAA,IAAAriJ,UAAA,CAAA,IAAAkuJ,EAAAC,GAAA,EAAAC,EAAAF,EAAAx/G,WAAA2/G,EAAAD,EAAA1/G,WAAA2/G,OAAAA,EAAAtlF,QAKjB,IAAM9mE,EAAMqgJ,mBAAmB,EAAI,EAAC4L,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAf,CAAAA,CAAA,CAAA,CAYjE,CAEA,SAASvF,GAAa3lJ,EAInB,CACD,MAAMqsJ,EAAUhpJ,GAAe,EAEzBipJ,EAAcA,IAAM,CACxB,IAAIjsF,EAAW74D,SAASk/D,eAAe2lF,CAAO,EAAuBtzJ,MACrEonE,GAAYngE,EAAMogE,QAASC,CAAO,EAAEwD,KAAK,IAAM,CAC7C7jE,EAAM0lJ,SAAS,CAAA,CAChB,EAGAl+I,SAASk/D,eAAe2lF,CAAO,EAAuBtzJ,MAAQ,GAG/DiH,EAAMinC,MAAM,CACd,EAEA,OAAA,IAAA,CAAAslH,IAAAA,EAAAC,GAAA,EAAAC,EAAAF,EAAA9/G,WAAAigH,EAAAD,EAAAhgH,WAAAkgH,EAAAD,EAAAjgH,WAAAmgH,EAAAD,EAAAlgH,WAAAogH,EAAAD,EAAA3oF,YAAA6oF,EAAAD,EAAApgH,WAAAsgH,EAAAF,EAAA5oF,YAAA+oF,EAAAD,EAAAtgH,WAAAzkC,OAAAA,EAAAA,iBAAA,SAIwBskJ,CAAW,EAAAQ,GAAAA,EAAA,KAKfT,CAAO,EAAAY,GAAAD,EASFhtJ,QAAAA,EAAMinC,MAAK,EAAA,EAAAslH,CAAAA,GAAA,CActC,CAACplF,GAAA,CAAA,QAAA,OAAA,CAAA,yNC7qDM,SAAS+lF,GAAcltJ,EAAiD,CAC7E,OAAA,IAAA,CAAA,IAAAwP,EAAAy/B,KAAAz/B,OAAAA,EAAAi9B,WAAAwgH,GAAAz9I,EAKexP,QAAAA,EAAMs0I,QAAO,EAAA,EAAA9kI,EAAAA,EAAAJ,EAGrB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEh3B,EAAM8qH,QAAU,CAAC,EAAA,IAAA/sH,UAAA,CAAA,IAAAmpE,EAAAz3D,GAAAA,EAAAi9H,EAAAxlE,EAAAz6B,WAAAtW,OAAAA,EAAA+wC,EAAA,IAExBlnE,EAAM8qH,QAAO4hB,CAAA,EAAAxlE,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAx+B,GAAA,IAAAl5B,EAAApB,SANRpO,EAAM8qH,QAAU,CAAC,EAAAt7G,CAAAA,GAAA,CAanC,CAAC23D,GAAA,CAAA,OAAA,CAAA,iLCDD,MAAMgmF,GAAwB,CAC5B,CACE9jH,MAAO,gBACPg4B,MAAO,sBACPC,aAAc,GACd8rF,SAAU,cACZ,EACA,CACE/jH,MAAO,kBACPg4B,MAAO,qBACPC,aAAc,GACd8rF,SAAU,gBACZ,EACA,CACE/jH,MAAO,eACPg4B,MAAO,6BACPC,aAAc,GACd8rF,SAAU,aACZ,EACA,CACE/jH,MAAO,cACPg4B,MAAO,oBACPC,aAAc,GACd8rF,SAAU,YACZ,EACA,CACE/jH,MAAO,aACPg4B,MAAO,mBACPC,aAAc,GACd8rF,SAAU,WACZ,CAAC,EAGI,SAASC,IAAqB,CACnC,KAAM,CAACxa,EAAcp5F,CAAe,EAAIF,GAAoC,EACtE,CAAC+zG,EAAgBC,CAAiB,EAAIz0J,EAAa,CAAC,EAC1D,IAAIqqF,EAAgB,CAAE,EAEtBvmF,GAAU,IAAM,CACG4wJ,EAAA,CAAA,CAClB,EAED9zJ,GAAa,IAAM,CACT46I,EAAA,CAAA,CACT,EAED,SAASkZ,GAAmB,CAEnBrqE,IADPzd,QAAQC,IAAI,sBAAsB,EAC3Bwd,EAAOjhF,OAAS,GACPihF,EAAOsqE,IAAI,EACnBC,QAAQ,CAChB,CAGF,SAASpZ,GAAU,CACR7sB,EAAAA,GAAAA,EAAsBorB,EAAa3nB,MAAM,CAAA,CAG3CyiC,SAAAA,EAASC,EAA+B1iC,EAA4B,CAC1DsiC,EAAA,EAEjB9nF,QAAQC,IAAI,kBAAkB,EAE9B,UAAW0P,KAAS83E,GAClB1iC,GAAe8iC,EAAmB,IACzBnsF,GACLiU,EAAMhU,MACNgU,EAAM/T,aACNssF,EACA1iC,CACF,EAAErnD,KAAmB3b,GAAA,CACnB,MAAMggC,EAAgB,CAAE,EAClB9X,EAAgB,CAAE,EACfzlE,EAAAA,KAAKm4B,QAAe9mC,GAAA,CAC3BksF,EAAOhjD,KAAK85B,GAAgBhjE,EAAEq0D,SAAS,EAAEw9F,QAAQ,EAC1C3oH,EAAAA,KAAKlpC,EAAEjD,KAAK,CAAA,CACpB,EACD,MAAM28E,EAASo4E,GACbz4E,EAAM+3E,SACN/3E,EAAMhsC,MACN6+C,EACA9X,CACF,EACA+S,EAAOj+C,KAAKwwC,CAAM,CAAA,CACnB,CACF,CACH,CAGF,OAAA,IAAA,CAAA,IAAAlmE,EAAAy/B,GAAA,EAAA9Y,OAAAA,EAAA3mB,EAAAJ,EAEK62D,GAAG,CAAA,CAAA,EAAA,IAAA,EAAAz2D,EAAAA,EAAAJ,EACHo2B,GAAS,CAACD,MAAK,GAAA,IAAAxnC,UAAA,CAAAqR,MAAAA,CAAAA,EACb8iC,GAAG,CAAA,MAAQ,OAAM,IAAAn0C,UAAA,CAAA,OAAAqR,EACfg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,IAAA2R,EAAAD,GAAA,EAAAy3D,EAAAx3D,EAAA+8B,WAAAigG,EAAAxlE,EAAAjD,YAAAiD,OAAAA,EAAAA,EAAA93D,EAGG89I,GAAa,CAAA,IAACpiC,SAAO,CAAA,OAAEwiC,EAAe,CAAC,EAAEhZ,QAAAA,CAAAA,CAAgB,CAAA,EAAA5H,EAAAA,EAAAt9H,EAGzDu7G,GAAY,CAAA,IACXS,UAAQ,CAAA,OAAEynB,EAAa3nB,MAAM,EAC7BC,SAAsBD,GAAA,CACJzxE,EAAA,CAAEyxE,OAAAA,CAAAA,CAAgB,CAAA,CACpC,CAAC,CAAA,EAAAx7G,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAAN,EAAAA,EAMV5L,GAAG,CAAC4wC,KAAM+4G,GAAMpvJ,SACRqR,GAAAA,EAEF8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,OAAAqR,EACDg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,IAAAkjD,EAAAJ,GAAAA,EAAAQ,EAAAJ,EAAAxU,WAAA/D,OAAAA,OAAAC,GAAA0Y,EAEYg0B,KAAAA,EAAM+3E,QAAQ,CAAA,EAAAnsG,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKnC,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAAzxC,CAAAA,GAAA,CAKX,CAEA,SAASs+I,GACPxW,EACAjuG,EACA6+C,EACA9X,EACY,CACZ,MAAMxrE,EACJ4C,SAASk/D,eAAe4wE,CAAS,EACjC77F,WAAW,IAAI,EAuCV45B,OArCO,IAAIgwB,GAAMzgG,EAAK,CAC3BuJ,KAAM,OACNxD,KAAM,CACJu9E,OAAAA,EACAqe,SAAU,CACR,CACE57F,KAAMylE,EACNsvB,gBAAiB,sBACjBgQ,YAAa,oBACbq+C,YAAa,EACbn+G,KAAM,GACN87D,YAAa,CACd,CAAA,CAEL,EACA1yG,QAAS,CACPg1J,YAAa,CACXt9D,UAAW,EACb,EACAj9C,WAAY,GACZkyD,oBAAqB,GACrBjf,OAAQ,CACNr5E,EAAG,CACDc,KAAM,MAAA,CAEV,EACAozF,QAAS,CACPl4D,MAAO,CACL5H,KAAM4H,EACNuF,QAAS,EACX,EACAq/C,OAAQ,CACNr/C,QAAS,EAAA,CACX,CACF,CACF,CACD,CAEH,gECnLA,SAASq/G,IAAgC,CAChC,MAAA,CACLnjC,QAAS,GACT6hB,KAAM,CAAE,EACRt8E,UAAW,IACb,CACF,CAEO,SAAS69F,IAAU,CACxB,MAAMj3G,EAASqC,GAA+B,EAExC,CAACwxE,EAASC,CAAU,EAAIjyH,EAAa,CAAC,EAGtC,CAACw/D,EAAS61F,CAAU,EAAIr1J,EAAa,CAAC,EAEtC,CAACs1J,EAAuBC,CAAwB,EACpDj8I,GAAY67I,IAAmB,EAE3B,CAACK,EAAwBC,CAAyB,EACtDn8I,GAAY67I,IAAmB,EAE3B,CAACO,EAAkBC,CAAmB,EAC1Cr8I,GAAY67I,IAAmB,EAE3B,CAACS,EAAmBC,CAAoB,EAC5Cv8I,GAAY67I,IAAmB,EAE3B,CAACW,EAAoBC,CAAqB,EAC9Cz8I,GAAY67I,IAAmB,EAE3B,CAACa,EAAqBC,CAAsB,EAChD38I,GAAY67I,IAAmB,EAE3B,CAACe,EAAqBC,CAAsB,EAChD78I,GAAY67I,IAAmB,EAE3B,CAACiB,EAAsBC,CAAuB,EAClD/8I,GAAY67I,IAAmB,EAE3B,CAACmB,EAAuBC,CAAwB,EACpDj9I,GAAY67I,IAAmB,EAE3B,CAACqB,EAAwBC,CAAyB,EACtDn9I,GAAY67I,IAAmB,EAE3B,CAACuB,EAAuBC,CAAwB,EACpDr9I,GAAY67I,IAAmB,EAE3B,CAACyB,EAAwBC,CAAyB,EACtDv9I,GAAY67I,IAAmB,EAE3B,CAAC2B,EAA0BC,CAA2B,EAC1Dz9I,GAAY67I,IAAmB,EAE3B,CAAC6B,EAA4BC,CAA6B,EAC9D39I,GAAY67I,IAAmB,EAE3B,CAAC+B,EAAyBC,CAA0B,EACxD79I,GAAY67I,IAAmB,EAE3B,CAACiC,EAA2BC,CAA4B,EAC5D/9I,GAAY67I,IAAmB,EAE3B,CAACmC,GAAkBC,EAAmB,EAC1Cj+I,GAAY67I,IAAmB,EAE3B,CAACqC,GAAoBC,EAAqB,EAC9Cn+I,GAAY67I,IAAmB,EAE3B,CAACuC,GAA0BC,EAA2B,EAC1Dr+I,GAAY67I,IAAmB,EAE3B,CAACyC,GAA2BC,EAA4B,EAC5Dv+I,GAAY67I,IAAmB,EAE3B,CAAC2C,EAAyBC,CAA0B,EACxDz+I,GAAY67I,IAAmB,EAE3B,CAAC6C,EAA0BC,CAA2B,EAC1D3+I,GAAY67I,IAAmB,EAEjCrxJ,GAAU,IAAM,CACdilE,GAAIc,aAAa,CAAA,CAClB,EAEDjpE,GAAa,IAAM,CACJs3J,GAAA,CAAA,CACd,EAED,SAASA,IAAe,CACtB1c,EAAQzuE,IAAY,CAAA,CAMtB,MAAMorF,EAMA,CAEJ,CACEhpG,QAAS,CACPoZ,MAAO,kBACPj6C,MAAO,OACPq/C,EAAI,mCACJvjC,KAAM,EACR,EACAhqC,OAAQm1J,EACRngE,OAAQkgE,EACR/kH,MAAO,sBACPZ,MAAO,WACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,kBACPj6C,MAAO,MACPq/C,EAAI,mCACJvjC,KAAM,EACR,EACAhqC,OAAQq1J,EACRrgE,OAAQogE,EACRjlH,MAAO,uBACPZ,MAAO,WACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,aACPj6C,MAAO,OACPq/C,EAAI,mDACJvjC,KAAM,EACR,EACAhqC,OAAQu1J,EACRvgE,OAAQsgE,EACRnlH,MAAO,+BACPZ,MAAO,UACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,aACPj6C,MAAO,MACPq/C,EAAI,mDACJvjC,KAAM,EACR,EACAhqC,OAAQy1J,EACRzgE,OAAQwgE,EACRrlH,MAAO,gCACPZ,MAAO,UACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,gBACPj6C,MAAO,OACPq/C,EAAI,qCACJvjC,KAAM,EACR,EACAhqC,OAAQ22J,EACR3hE,OAAQ0hE,EACRvmH,MAAO,8BACPZ,MAAO,UACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,gBACPj6C,MAAO,MACPq/C,EAAI,qCACJvjC,KAAM,EACR,EACAhqC,OAAQ62J,EACR7hE,OAAQ4hE,EACRzmH,MAAO,gCACPZ,MAAO,UACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,gBACPj6C,MAAO,OACPq/C,EAAI,sCACJvjC,KAAM,EACR,EACAhqC,OAAQ+2J,EACR/hE,OAAQ8hE,EACR3mH,MAAO,6BACPZ,MAAO,UACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,gBACPj6C,MAAO,MACPq/C,EAAI,sCACJvjC,KAAM,EACR,EACAhqC,OAAQi3J,EACRjiE,OAAQgiE,EACR7mH,MAAO,+BACPZ,MAAO,UACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,uBACPj6C,MAAO,OACPq/C,EAAI,qCACJvjC,KAAM,EACR,EACAhqC,OAAQ21J,EACR3gE,OAAQ0gE,EACRvlH,MAAO,gCACPZ,MAAO,YACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,uBACPj6C,MAAO,MACPq/C,EAAI,qCACJvjC,KAAM,EACR,EACAhqC,OAAQ61J,EACR7gE,OAAQ4gE,EACRzlH,MAAO,kCACPZ,MAAO,YACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,UACPj6C,MAAO,OACPq/C,EAAI,oCACJvjC,KAAM,EACR,EACAhqC,OAAQ+1J,EACR/gE,OAAQ8gE,EACR3lH,MAAO,+BACPZ,MAAO,MACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,UACPj6C,MAAO,MACPq/C,EAAI,oCACJvjC,KAAM,EACR,EACAhqC,OAAQi2J,EACRjhE,OAAQghE,EACR7lH,MAAO,gCACPZ,MAAO,MACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,UACPj6C,MAAO,OACPq/C,EAAI,qCACJvjC,KAAM,EACR,EACAhqC,OAAQm3J,GACRniE,OAAQkiE,GACR/mH,MAAO,4BACPZ,MAAO,MACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,UACPj6C,MAAO,MACPq/C,EAAI,qCACJvjC,KAAM,EACR,EACAhqC,OAAQq3J,GACRriE,OAAQoiE,GACRjnH,MAAO,8BACPZ,MAAO,MACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,cACPj6C,MAAO,OACPq/C,EAAI,oCACJvjC,KAAM,EACR,EACAhqC,OAAQu3J,GACRviE,OAAQsiE,GACRnnH,MAAO,8BACPZ,MAAO,MACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,cACPj6C,MAAO,MACPq/C,EAAI,oCACJvjC,KAAM,EACR,EACAhqC,OAAQy3J,GACRziE,OAAQwiE,GACRrnH,MAAO,+BACPZ,MAAO,MACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,eACPj6C,MAAO,OACPq/C,EAAI,oCACJvjC,KAAM,EACR,EACAhqC,OAAQ23J,EACR3iE,OAAQ0iE,EACRvnH,MAAO,+BACPZ,MAAO,MACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,eACPj6C,MAAO,MACPq/C,EAAI,oCACJvjC,KAAM,EACR,EACAhqC,OAAQ63J,EACR7iE,OAAQ4iE,EACRznH,MAAO,gCACPZ,MAAO,MACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,8BACPj6C,MAAO,OACPq/C,EAAI,oCACJvjC,KAAM,EACR,EACAhqC,OAAQm2J,EACRnhE,OAAQkhE,EACR/lH,MAAO,oCACPZ,MAAO,SACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,8BACPj6C,MAAO,MACPq/C,EAAI,oCACJvjC,KAAM,EACR,EACAhqC,OAAQq2J,EACRrhE,OAAQohE,EACRjmH,MAAO,qCACPZ,MAAO,SACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,8BACPj6C,MAAO,OACPq/C,EAAI,qCACJvjC,KAAM,EACR,EACAhqC,OAAQu2J,EACRvhE,OAAQshE,EACRnmH,MAAO,oCACPZ,MAAO,SACT,EAGA,CACEwf,QAAS,CACPoZ,MAAO,8BACPj6C,MAAO,MACPq/C,EAAI,qCACJvjC,KAAM,EACR,EACAhqC,OAAQy2J,EACRzhE,OAAQwhE,EACRrmH,MAAO,qCACPZ,MAAO,SAAA,CACR,EAGH,SAAS6rG,EAAQsZ,GAAmB,CACtBt1F,EAAAA,IAAYA,GAAU,CAAC,EACnCyyD,EAAWkmC,EAAQ/uJ,MAAM,EAEzB,UAAWgvJ,MAAUD,EAAS,CAC5B,IAAIhpG,GAAU,CAAEsZ,WAAYqsF,GAAW,GAAGsD,GAAOjpG,OAAQ,EACzDA,GAAQwe,EAAIxe,GAAQwe,GAAG3pB,QAAQ,cAAe7F,EAAOk6G,OAAO,EAErDj4J,GAAAA,OAAO,UAAW,EAAI,EAE7B2oE,GAAIgB,UAAU5a,GAASqQ,EAAU3tD,IAAc,CACzCA,KACFumJ,GAAOh4J,OAAO,YAAa2lE,GAAMl0D,GAAKymJ,WAAW,CAAC,EAC3Cl4J,GAAAA,OAAO,OAAQyR,GAAKgiI,IAAI,EACjC,CACD,EAAE3hB,QAAQ,IAAM,CACR9xH,GAAAA,OAAO,UAAW,EAAK,EAClB2G,EAAAA,IAAMA,GAAI,CAAC,CAAA,CACxB,CAAA,CACH,CAGIwxJ,MAAAA,EAAgBhhG,IAAkC,CACtD,GAAIA,GACM,MAAA,SAAQA,GAAUs+E,QAAU,CAAA,EAGxC,EAEA,MAAA,CAAAv/H,EAEK62D,GAAG72D,CAAAA,CAAAA,EAAAA,EACHo2B,GAAS,CAACD,MAAK,GAAA,IAAAxnC,UAAA,CAAAqR,MAAAA,CAAAA,EACb8iC,GAAG,CAAA,MAAQ,OAAM,IAAAn0C,UAAA,CAAA,OAAAqR,EACfg2B,GAAG,CAAA,IAAArnC,UAAA,CAAAqR,MAAAA,CAAAA,EACD89I,GAAa,CAAA,IAACpiC,SAAO,CAAA,OAAEA,EAAQ,CAAC,EAAEwpB,QAAS0c,EAAY,CAAA,GAAA,IAAA,CAAA,IAAAxhJ,GAAAC,KAAAD,OAAAA,GAAAi9B,WAAAtW,EAAA3mB,GAE1CynC,IAAAA,EAAOk6G,QAAO,IAAA,EAAA3hJ,EAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAJ,EAAAA,EAK/B8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,OAAAqR,EACD5L,GAAG,CAAC4wC,KAAM68G,EAAOlzJ,SACRqR,IAAAA,EAEHg2B,GAAG,CAAA,MAAQ,OAAQg3G,GAAI,EAAC,IAAAr+I,UAAA,CAAA,OAAAqR,EACtBm9H,GAAmB,CAAA,IAClBljG,OAAK,CAAA,OAAE6nH,GAAO7nH,KAAM,EAAA,IACpBZ,OAAK,CAAA,OAAEyoH,GAAOzoH,KAAM,EAAA,IACpBkkG,MAAI,CAAA,OAAEukB,GAAOhjE,OAAOy+C,IAAI,EAAA,IACxB7hB,SAAO,CAAA,OAAEomC,GAAOhjE,OAAO48B,OAAO,EAAA,IAC9BrlF,QAAM,CAAE4rH,OAAAA,EAAaH,GAAOhjE,OAAO79B,SAAS,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAIpD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAMb,CC3eO,MAAMihG,GAAS,CACpB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,sYCxCA,SAASC,IAAsB,CACtB,MAAA,CACL5kB,KAAM,CAAE,EACR7hB,QAAS,GACTz6D,UAAW,IACb,CACF,CAEO,SAASmhG,IAAkB,CAChC,KAAM,CAACl5F,EAAS61F,CAAU,EAAIr1J,EAAa,CAAC,EAEtC,CAACgyH,EAASC,CAAU,EAAIjyH,EAAa,CAAC,EAEtC,CAAC+5I,EAAcp5F,CAAe,EAAIF,GAGrC,EAEG,CAACk4G,EAAcC,CAAe,EAAIt/I,GAAmBm/I,IAAc,EAEnE,CAACI,EAAeC,CAAgB,EAAIx/I,GAAmBm/I,IAAc,EAErE,CAACM,EAAoBC,CAAqB,EAC9C1/I,GAAmBm/I,IAAc,EAE7B,CAACQ,EAAqBC,CAAsB,EAChD5/I,GAAmBm/I,IAAc,EAE7B,CAACU,EAAkBC,CAAmB,EAC1C9/I,GAAmBm/I,IAAc,EAE7B,CAACY,EAAmBC,CAAoB,EAC5ChgJ,GAAmBm/I,IAAc,EAEnC,IAAIc,EAEJz1J,GAAU,IAAM,CACdilE,GAAIc,aAAa,CAAA,CAClB,EAEDjpE,GAAa,IAAM,CACT46I,EAAA,CAAA,CACT,EAED,SAASwZ,EAAW5lG,EAAe,CACjC,MAAMoqG,EAAuB,CAAE,EACzBC,EAAuB,CAAE,EACtB5nJ,EAAAA,KAAKm4B,QAAS9mC,GAAW,CACrBkpC,EAAAA,KAAKlpC,EAAExF,KAAK,EACZ0uC,EAAAA,KAAKlpC,EAAE2C,IAAI,CAAA,CACvB,EAED,MAAMiG,EACJ4C,SAASk/D,eAAe,WAAW,EACnCjrB,WAAW,IAAI,EAEX+C,EAA6B,CACjCrwC,KAAM,MACNxD,KAAM,CACJu9E,OAAQqqE,EACRhsD,SAAU,CACR,CACE57F,KAAM2nJ,EAEN5yD,gBAAiB4yD,EAAW7rJ,IAC1B,CAAC5E,EAAGlC,IAAU2xJ,GAAO3xJ,EAAQ2xJ,GAAOpvJ,MAAM,CAC5C,EACAwtG,YAAa4iD,EAAW7rJ,IACtB,CAAC5E,EAAGlC,IAAU2xJ,GAAO3xJ,EAAQ2xJ,GAAOpvJ,MAAM,CAC5C,CACD,CAAA,CAEL,EACAlJ,QAAS,CACPuoG,QAAS,CACPl4D,MAAO,CACLuF,QAAS,GACTnN,KAAM,mBACN5oB,QAAS,CACX,EACAo1E,OAAQ,CACNr/C,QAAS,EAAA,CAEb,EACA83C,OAAQ,CACNr5E,EAAG,CACDc,KAAM,OACN+kE,MAAO,CACL74E,OAAQ,MAAA,CACV,CACF,CACF,CAEJ,EACIg4J,GACFA,EAAU3E,QAAQ,EAER2E,EAAA,IAAIhtD,GAAMzgG,EAAK45C,CAAM,CAAA,CAGnC,SAAS81F,GAAU,CACjB5uE,QAAQC,IAAI,gBAAgB,EAChBrN,EAAAA,GAAYA,EAAU,CAAC,EACnC,MAAMs1F,EAAY/nF,GAAW,EAE7B,IAAI2sF,EAAc,CAAE,EAChB3f,EAAapsE,GACHvhC,EAAAA,KAAK2tG,EAAapsE,CAAC,EAE7BosE,EAAa3nB,QACfsnC,EAAYttH,KAAM,QAAO2tG,EAAa3nB,MAAO,EAAC,EAGhDrpD,GAAIE,cAAc,CAChBR,WAAYqsF,EACZ9hB,WAAY,QACZ4J,aAAc8c,EAAYtwJ,OAAS,EAAIswJ,EAAY/c,KAAK,GAAG,EAAI7mI,MAAAA,CAChE,EAAEi1D,KAAmB3b,GAAA,CACpB4lG,EAAW5lG,CAAQ,CAAA,CACpB,EAED,IAAIuqG,EAKE,CAEJ,CACEpxF,MAAO,kBACPoF,EAAG,mBACHr/C,MAAO,OACPluB,OAAQw4J,CACV,EAEA,CACErwF,MAAO,kBACPoF,EAAG,mBACHr/C,MAAO,MACPluB,OAAQ04J,CACV,EAEA,CACEvwF,MAAO,SACPoF,EAAG,mBACHr/C,MAAO,OACPluB,OAAQ44J,CACV,EAEA,CACEzwF,MAAO,SACPoF,EAAG,mBACHr/C,MAAO,MACPluB,OAAQ84J,CACV,EAEA,CACE3wF,MAAO,UACPoF,EAAG,mBACHr/C,MAAO,OACPluB,OAAQg5J,CACV,EAEA,CACE7wF,MAAO,UACPoF,EAAG,mBACHr/C,MAAO,MACPluB,OAAQk5J,CAAAA,CACT,EAGH,UAAWlB,KAAUuB,EAAS,CACxBvB,EAAOh4J,QACFA,EAAAA,OAAO,UAAW,EAAI,EAG3ButE,IAAAA,EAAI,CAAC,GAAG+rF,CAAW,EACnBtB,EAAOzqF,GACPvhC,EAAAA,KAAKgsH,EAAOzqF,CAAC,EAGjB,IAAIxe,EAAU,CACZsZ,WAAYqsF,EACZvsF,MAAO6vF,EAAO7vF,MACdj6C,MAAO8pI,EAAO9pI,MACdq/C,EAAGA,EAAEvkE,OAAS,EAAIukE,EAAEgvE,KAAK,GAAG,EAAI7mI,MAClC,EAEA67G,GAAeM,EAAY,IAClBlpD,GAAIgB,UAAU5a,EAASqQ,EAAU3tD,GAAc,CAChDA,IACKzR,EAAAA,OAAO,OAAQyR,EAAKgiI,IAAI,EAC/BukB,EAAOh4J,OAAO,YAAa2lE,GAAMl0D,EAAKymJ,WAAW,CAAC,EACpD,CACD,CACF,EAAEpmC,QAAQ,IAAM,CACXkmC,EAAOh4J,QACFA,EAAAA,OAAO,UAAW,EAAK,CAChC,CACD,CAAA,CACH,CAGIm4J,MAAAA,EAAgBhhG,GAAkC,CACtD,GAAIA,EACM,MAAA,SAAQA,EAAUs+E,QAAU,CAAA,EAGxC,EAEA,MAAA,CAAAv/H,EAEK62D,GAAG72D,CAAAA,CAAAA,EAAAA,EAEHo2B,GAAS,CAACD,MAAO,GAAI,IAAAxnC,UAAA,CAAAqR,MAAAA,CAAAA,EACnB8iC,GAAG,CAAA,MAAA,OAAA,IAAAn0C,UAAA,CAAAqR,MAAAA,CAAAA,EACDg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,IAAAyR,EAAAC,GAAA,EAAAC,EAAAF,EAAAi9B,WAAAy6B,EAAAx3D,EAAAu0D,YAAAv0D,OAAAA,EAAAA,EAAAN,EAGG89I,GAAa,CAAA,IAACpiC,SAAO,CAAA,OAAEA,EAAQ,CAAC,EAAEwpB,QAAAA,CAAAA,CAAgB,CAAA,EAAAptE,EAAAA,EAAA93D,EAGlDu7G,GAAY,CAAA,IACXS,UAAQ,CAAA,OAAEynB,EAAa3nB,MAAM,EAC7BC,SAAsBD,GAAA,CACJzxE,EAAA,CAAEyxE,OAAAA,CAAAA,CAAgB,CAAA,CACpC,CAAC,CAAA,EAAA17G,CAAAA,CAAA,CAAAJ,EAAAA,EAMRg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,OAAAqR,EACDm8B,GAAI,CAAA,MAAA,cAEHysG,SAAiBh8I,GAAA,CACfA,EAAEuS,eAAe,EAGDkrC,EAAA,CAAEgtB,EAAGzqE,EAAEuvB,cAAc0sB,OAAOl/C,KAAAA,CAAO,CACrD,EAAC,IAAAgF,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAA2uI,EAAAz9F,GAAA,EAAAy9F,OAAAA,EAAAuL,UASmBj8I,GAAA,CAEdA,EAAE6K,OAAS,UACX7K,EAAER,MAAQ,UACVQ,EAAEw5B,QAIJx5B,EAAEwS,gBAAgB,CACpB,EAACk6B,GAAA,IAAAgkG,EAAA3zI,MAVM85I,EAAapsE,GAAK,EAAE,EAAAimE,CAAAA,KAAA7rF,GAAA,GAAA,IAAA,CAAA,IAAAQ,EAAAN,GAAA,EAAAM,OAAAA,EAAAylB,QAkBlB,IAAM,CACGrtB,EAAA,CAAEgtB,EAAG73D,MAAAA,CAAW,CAClC,EAACyyC,CAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAjyC,EAAAA,EAQR8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,OAAAqR,EACDg2B,GAAG,CAAA,MAAQ,OAAM,IAAArnC,UAAA,CAAA,OAAAmjD,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA9xC,EAAAA,EAQnB8iC,GAAG,CAAA,MAAQ,OAAM,IAAAn0C,UAAA,CAAAqR,MAAAA,CAAAA,EACfg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,OAAAqR,EACDm9H,GAAmB,CAClBljG,MAAO,2BACPZ,MAAO,YACPgkG,YAAW,kBAAA,IACXE,MAAI,CAAA,OAAE8kB,EAAa9kB,IAAI,EAAA,IACvB7hB,SAAO,CAAA,OAAE2mC,EAAa3mC,OAAO,EAAA,IAC7BrlF,QAAM,CAAE4rH,OAAAA,EAAaI,EAAaphG,SAAS,CAAA,CAAC,CAAA,CAAA,CAAA,CAAAjhD,EAAAA,EAI/Cg2B,GAAG,CAAA,IAAArnC,UAAA,CAAA,OAAAqR,EACDm9H,GAAmB,CAClBljG,MAAO,4BACPZ,MAAO,YACPgkG,YAAW,kBAAA,IACXE,MAAI,CAAA,OAAEglB,EAAchlB,IAAI,EAAA,IACxB7hB,SAAO,CAAA,OAAE6mC,EAAc7mC,OAAO,EAAA,IAC9BrlF,QAAM,CAAE4rH,OAAAA,EAAaM,EAActhG,SAAS,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAjhD,EAAAA,EAKlD8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAAqR,MAAAA,CAAAA,EACDg2B,GAAG,CAAA,MAAQ,OAAM,IAAArnC,UAAA,CAAA,OAAAqR,EACfm9H,GAAmB,CAClBljG,MAAO,iCACPZ,MAAO,UACPgkG,YAAa,MAAK,IAClBE,MAAI,CAAA,OAAEklB,EAAmBllB,IAAI,EAAA,IAC7B7hB,SAAO,CAAA,OAAE+mC,EAAmB/mC,OAAO,EAAA,IACnCrlF,QAAM,CAAE4rH,OAAAA,EAAaQ,EAAmBxhG,SAAS,CAAA,CAAC,CAAA,CAAA,CAAA,CAAAjhD,EAAAA,EAGrDg2B,GAAG,CAAA,MAAQ,OAAM,IAAArnC,UAAA,CAAA,OAAAqR,EACfm9H,GAAmB,CAClBljG,MAAO,kCACPZ,MAAO,UACPgkG,YAAa,MAAK,IAClBE,MAAI,CAAA,OAAEolB,EAAoBplB,IAAI,EAAA,IAC9B7hB,SAAO,CAAA,OAAEinC,EAAoBjnC,OAAO,EAAA,IACpCrlF,QAAM,CAAE4rH,OAAAA,EAAaU,EAAoB1hG,SAAS,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAjhD,EAAAA,EAKxD8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAAqR,MAAAA,CAAAA,EACDg2B,GAAG,CAAA,MAAQ,OAAM,IAAArnC,UAAA,CAAA,OAAAqR,EACfm9H,GAAmB,CAClBljG,MAAO,sCACPZ,MAAO,UACPgkG,YAAa,MAAK,IAClBE,MAAI,CAAA,OAAEslB,EAAiBtlB,IAAI,EAAA,IAC3B7hB,SAAO,CAAA,OAAEmnC,EAAiBnnC,OAAO,EAAA,IACjCrlF,QAAM,CAAE4rH,OAAAA,EAAaY,EAAiB5hG,SAAS,CAAA,CAAC,CAAA,CAAA,CAAA,CAAAjhD,EAAAA,EAGnDg2B,GAAG,CAAA,MAAQ,OAAM,IAAArnC,UAAA,CAAA,OAAAqR,EACfm9H,GAAmB,CAClBljG,MAAO,uCACPZ,MAAO,UACPgkG,YAAa,MAAK,IAClBE,MAAI,CAAA,OAAEwlB,EAAkBxlB,IAAI,EAAA,IAC5B7hB,SAAO,CAAA,OAAEqnC,EAAkBrnC,OAAO,EAAA,IAClCrlF,QAAM,CAAE4rH,OAAAA,EAAac,EAAkB9hG,SAAS,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAO/D,CAAC8W,GAAA,CAAA,UAAA,OAAA,CAAA,i3BCrWD,SAAS8mF,IAAgC,CAChC,MAAA,CACLnjC,QAAS,GACT6hB,KAAM,CAAE,EACRt8E,UAAW,IACb,CACF,CAEO,SAASqiG,IAAW,CACzB,KAAM,CAACp6F,EAAS61F,CAAU,EAAIr1J,EAAa,CAAC,EACtC,CAACgyH,EAASC,CAAU,EAAIjyH,EAAa,CAAC,EAC5C,IAAIu5J,EACAM,EAA0C,CAC5CC,QAAS,GACTjnB,MAAO,GACPL,QAAS,EACX,EAEA,KAAM,CAACuH,EAAcp5F,CAAe,EAAIF,GAErC,EAEG,CAACs5G,EAAWC,CAAY,EAC5B1gJ,GAAwB67I,IAAmB,EAEvC,CAAC8E,EAAgBC,CAAiB,EACtC5gJ,GAAwB67I,IAAmB,EAEvC,CAACgF,EAAWC,CAAY,EAC5B9gJ,GAAwB67I,IAAmB,EAEvC,CAACkF,EAAYC,CAAa,EAC9BhhJ,GAAwB67I,IAAmB,EAEvC,CAACoF,EAAuBC,CAAwB,EAAIx6J,EAAa,CAAC,EAElE,CAACy6J,EAAWC,CAAY,EAAIphJ,GAAY,CAC5C04G,QAAS,GACTngH,KAAM,CAAA,CAAA,CACP,EACG8oJ,IAAAA,EAEJ,SAASC,GAAY,CACfrB,GACFA,EAAU3E,QAAQ,EAETI,EAAA,CAAA,CAGblxJ,GAAU,IAAM,CACdilE,GAAIc,aAAa,CAAA,CAClB,EAEDjpE,GAAa,IAAM,CACT46I,EAAA,CAAA,CACT,EAED,eAAeA,GAAU,CACXh8E,EAAAA,GAAYA,EAAU,CAAC,EAEnC,IAAImO,EAAI,GACJosE,EAAa3nB,SACTzkD,GAAA,QAAOosE,EAAa3nB,MAAO,IAGnCT,GAAeM,EAAY,SAAY,CACrC,IAAI9iE,EAAsB,CACxBoZ,MAAO,kBACPn+B,KAAM,GACN9b,MAAO,OACPm6C,WAAYsE,GAAW,EACvBY,EAAGA,EAAI,mBACT,EAEAqsF,EAAa,UAAW,EAAI,EAE5BjxF,GAAIgB,UAAU5a,EAASqQ,EAAU3tD,GAAc,CAC7C,GAAIA,IAAS,KACXmoJ,EAAa,UAAW,EAAK,MACxB,CACCziG,MAAAA,EAAYwO,GAAMl0D,EAAKymJ,WAAW,EACxC0B,EAAa,YAAaziG,CAAS,EACtByiG,EAAA,OAAQnoJ,EAAKgiI,IAAI,CAAA,CAChC,CACD,CAAA,CACF,EAEDliB,GAAeM,EAAY,SAAY,CACrC,IAAI9iE,EAAsB,CACxBoZ,MAAO,aACPn+B,KAAM,GACN9b,MAAO,OACPm6C,WAAYsE,GAAW,EACvBY,EAAGA,EAAI,gCACT,EAEAusF,OAAAA,EAAkB,UAAW,EAAI,EAE1BnxF,GAAIgB,UAAU5a,EAASqQ,EAAU3tD,GAAc,CAChDA,IAAS,KACXqoJ,EAAkB,UAAW,EAAK,GAElCA,EAAkB,YAAan0F,GAAMl0D,EAAKymJ,WAAW,CAAC,EACpC4B,EAAA,OAAQroJ,EAAKgiI,IAAI,EACrC,CACD,CAAA,CACF,EAEDliB,GAAeM,EAAY,SAAY,CACrC,IAAI9iE,EAAsB,CACxBoZ,MAAO,QACPn+B,KAAM,GACNq+B,WAAYsE,GAAW,EAIvBY,EAAGA,EAAI,kBACT,EAEA+sF,OAAAA,EAAa,UAAW,EAAI,EACfA,EAAA,OAAQ,EAAE,EAEhB,MAAM3xF,GAAIgB,UAAU5a,EAASqQ,EAAU3tD,GAAc,CAC1D,GAAIA,EACE4oJ,GAAAA,EAAU5oJ,KAAKzI,QAAU,EACdsxJ,EAAA,OAAQ7oJ,EAAKgiI,IAAI,MACzB,CACL,IAAIzkD,EAASv9E,EAAKgiI,KAAKlmI,IAAKzK,GAAWA,EAAER,GAAG,EACxC+8B,EAAU5tB,EAAKgiI,KAAKlmI,IAAKzK,GAAWA,EAAExF,KAAK,EAC3C6+E,EAAagwB,GAAMR,SAAS4uD,CAAqB,EACrDp+E,EAAM1qE,KAAKu9E,OAASA,EACpB7S,EAAM1qE,KAAK47F,SAAS,CAAC,EAAE57F,KAAO4tB,EAC9B88C,EAAMhrD,OAAO,CAAA,CAEjB,CACD,EAAE2gG,QAAQ,IAAM,CACfwoC,EAAa,UAAW,EAAK,CAAA,CAC9B,CAAA,CACF,EAGD/oC,GAAeM,EAAY,SAAY,CACrC,IAAI9iE,EAAsB,CACxBoZ,MAAO,UACPn+B,KAAM,GACNq+B,WAAYsE,GAAW,EACvBY,EAAGA,EAAI,iBACT,EAEAysF,OAAAA,EAAa,UAAW,EAAI,EAErB,MAAMrxF,GAAIgB,UAAU5a,EAASqQ,EAAU3tD,GAAc,CACtDA,IACFuoJ,EAAa,YAAar0F,GAAMl0D,EAAKymJ,WAAW,CAAC,EACpC8B,EAAA,OAAQvoJ,EAAKgiI,IAAI,EAChC,CACD,EAAE3hB,QAAQ,IAAM,CACfkoC,EAAa,UAAW,EAAK,CAAA,CAC9B,CAAA,CACF,EAGDzoC,GAAeM,EAAY,SAAY,CACrC,IAAI9iE,EAAsB,CACxBoZ,MAAO,WACPn+B,KAAM,GACNq+B,WAAYsE,GAAW,EACvBY,EAAGA,EAAI,kBACT,EACA2sF,OAAAA,EAAc,UAAW,EAAI,EAEtB,MAAMvxF,GAAIgB,UAAU5a,EAASqQ,EAAU3tD,GAAc,CACtDA,IACFyoJ,EAAc,YAAav0F,GAAMl0D,EAAKymJ,WAAW,CAAC,EACpCgC,EAAA,OAAQzoJ,EAAKgiI,IAAI,EACjC,CACD,EAAE3hB,QAAQ,IAAM,CACfooC,EAAc,UAAW,EAAK,CAAA,CAC/B,CAAA,CACF,EAEDO,EAAqBltF,CAAC,CAAA,CAGxB,eAAektF,EAAqBltF,EAAW,CACnCitF,EAAA,EAENE,IAAAA,EAAa,MAAM/xF,GAAII,cAAc,CACvCV,WAAYsE,GAAW,CAAA,CACxB,EAEGqiB,EAAmB,CAAE,EAEzB,UAAWyuB,KAAOi9C,EAAY,CAC5B,IAAI3rG,EAAU,CACZsZ,WAAYsE,GAAW,EACvBimE,WAAYn1B,EACZ++B,aAAcjvE,CAChB,EAEAgkD,GAAeM,EAAY,SAAY,CACX/wH,EAAAA,GAAMA,EAAI,CAAC,EACrC,IAAIkuD,EAAW,MAAM2Z,GAAIE,cAAc9Z,CAAO,EAQ9C,GAPIigC,EAAOhmF,SAAW,IACXyI,EAAAA,KAAKm4B,QAAe9mC,GAAA,CACpBkpC,EAAAA,KAAKlpC,EAAE2C,IAAI,CAAA,CACnB,EACD0zJ,EAAU1nJ,KAAKu9E,OAASA,GAGtBhgC,EAASv9C,KAAKzI,QAAUgmF,EAAOhmF,OACjCwjE,QAAQC,IAAI,gCAAgC,MACvC,CACL,IAAIyK,EAASloB,EAASv9C,KAAKlE,IAAKzK,GAAMA,EAAExF,KAAK,EACzC0lC,EAASy2H,EAAYh8C,CAAG,EACxBk9C,EAAWxB,EAAU1nJ,KAAK47F,SAASrkG,OAC7ByI,EAAAA,KAAK47F,SAASrhE,KAAK,CAC3Bv6B,KAAMylE,EACN3nC,MAAOkuE,EACPo3C,YAAa,EACb7xH,OAAAA,EACAwjE,gBAAiB4xD,GAAOuC,EAAWvC,GAAOpvJ,MAAM,EAChDwtG,YAAa4hD,GAAOuC,EAAWvC,GAAOpvJ,MAAM,CAAA,CAC7C,EACDmwJ,EAAUhoI,OAAO,CAAA,CACnB,CACD,EAAE2gG,QAAQ,IAAM,CACWhxH,EAAAA,GAAMA,EAAI,CAAC,CAAA,CACtC,CAAA,CACH,CAGF,SAAS8zJ,GAAa,CACdlpJ,MAAAA,EAAM8lH,GAAsB,WAAW,EAEvClsE,EAAmC,CACvCrwC,KAAM,MACNxD,KAAM,CACJu9E,OAAQ,CAAE,EACVqe,SAAU,CAAA,CACZ,EACAvtG,QAAS,CACPy6C,WAAY,GACZkyD,oBAAqB,GAErBpE,QAAS,CACPl4D,MAAO,CACLuF,QAAS,GACT/1B,QAAS,CACX,EACAsvB,QAAS,CACP/d,QAAS,GACTw9B,UAAW,CACTnf,MAAO,SAAU7xC,EAAc,CACzB6xC,IAAAA,EAAQ7xC,EAAQ2hC,QAAQkQ,MACxB1vC,EAAQnC,EAAQ41D,OAAOv/C,EAC3B,OAAIlU,GAAS,EACJ,KAED,GAAE0vC,CAAM,KAAI1vC,CAAM,EAAA,CAE9B,EAEA+6J,SAAU,SAAU/8J,EAAQC,EAAQ,CAC3BA,OAAAA,EAAE+iG,IAAMhjG,EAAEgjG,GACnB,EAEA9hD,OAAQ,SAAU52C,EAAWqmF,EAAY,CACvC,OAAOrmF,EAAKmhF,aAAe,CAAA,CAE/B,EACAyL,OAAQ,CACNr/C,QAAS,GACTh0B,SAAU,MACVnM,QAASA,CAACslJ,EAAS/lE,EAAiBC,IAAgB,CAClD,MAAMqwD,EAAYtwD,EAAWvsD,KACvB9hC,EAAQquF,EAAWxL,aACnBu2B,EAAK9qB,EAAO5Y,MACd0jC,EAAGi7C,iBAAiBr0J,CAAK,GAC3Bo5G,EAAG51F,KAAKxjB,CAAK,EACbquF,EAAW9xD,OAAS,GACpBy2H,EAAYrU,CAAS,EAAI,KAEzBvlC,EAAGp0G,KAAKhF,CAAK,EACbquF,EAAW9xD,OAAS,GACpBy2H,EAAYrU,CAAS,EAAI,GAC3B,CACF,CAEJ,EACA0P,YAAa,CACXt9D,UAAW,GACX9Z,KAAM,UACNz9D,KAAM,GACR,EACAwvE,SAAU,CACRl8B,KAAM,CACJwnG,QAAS,EAAA,CAEb,EACAvtE,OAAQ,CACNr5E,EAAG,CACDc,KAAM,OACN+kE,MAAO,CACL74E,OAAQ,MACV,EACAkrF,QAAS,EACX,EACAt4E,EAAG,CACD2hC,QAAS,EAAA,CACX,CACF,CAEJ,EACIyjH,GACFA,EAAU3E,QAAQ,EAER2E,EAAA,IAAIhtD,GAAMzgG,EAAK45C,CAAM,CAAA,CAG7B6yG,MAAAA,EAAgBhhG,GAAkC,CACtD,GAAIA,EACM,MAAA,SAAQA,EAAUs+E,QAAU,CAAA,EAGxC,EAEA,MAAA,CAAAv/H,EAEK62D,GAAG72D,CAAAA,CAAAA,EAAAA,EACHo2B,GAAS,CAACD,MAAK,GAAA,IAAAxnC,UAAA,CAAAqR,MAAAA,CAAAA,EACb8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,OAAAqR,EACDg2B,GAAG,CAAA,MAAQ,OAAM,IAAArnC,UAAA,CAAA,IAAAyR,EAAAC,GAAA,EAAAC,EAAAF,EAAAi9B,WAAAy6B,EAAAx3D,EAAAu0D,YAAAv0D,OAAAA,EAAAA,EAAAN,EAGX89I,GAAa,CAAA,IAACpiC,SAAO,CAAA,OAAEA,EAAQ,CAAC,EAAEwpB,QAAAA,CAAAA,CAAgB,CAAA,EAAAptE,EAAAA,EAAA93D,EAGlDu7G,GAAY,CAAA,IACXS,UAAQ,CAAA,OAAEynB,EAAa3nB,MAAM,EAC7BC,SAAsBD,GAAA,CACJzxE,EAAA,CAAEyxE,OAAAA,CAAAA,CAAgB,CAAA,CACpC,CAAC,CAAA,EAAA17G,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA,IAAAk9H,EAAAxrF,GAAA,EAAAD,EAAAyrF,EAAAjgG,WAAAoV,EAAAZ,EAAAgjB,YAAAC,EAAAriB,EAAApV,WAAA03B,EAAAD,EAAAz3B,WAAA03B,EAAA13B,eAAA+3B,EAAAL,EAAAF,YAAAhjB,OAAAA,EAAAA,EAAA7xC,EASN60B,GAAI,CAAA,IAAAlmC,UAAA,CAAA,MAAA,CAAAqR,EACF60B,GAAKQ,OAAM,CAAA,MAAA,SAAA,IAAA1mC,UAAA,CAAA,MAAA,CAAAkxC,GAAAA,EAAA7/B,EAET1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEq8H,EAA0B,EAAA,CAAC,EAAA,IAAAt1J,UAAA,CAAA,OAAA8iD,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAzxC,EAiBxC60B,GAAKM,KAAI,CAAA,MAAQ,MAAK,IAAAxmC,UAAA,CAAA,OAAAgjD,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAojB,EAAAA,EAAA/0D,EAcpB1L,EAAI,CAAA,IACHszB,MAAI,CAAEu8H,OAAAA,EAAUzoC,UAAYl8G,QAAa2kJ,EAAUzoC,OAAO,EAAA,IAAA/sH,UAAA,CAAA,OAAA8iD,GAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA2jB,EAAAA,EAAAp1D,EAoB3D8kJ,GAAQ,CAAA,IAACvpJ,MAAI,CAAA,OAAE4oJ,EAAU5oJ,IAAI,EAAA1F,IAAAi8B,EAAA,CAAA,IAAAmP,EAAOojH,EAAoB,OAAApjH,cAAAA,EAAAnP,CAAA,EAApBuyH,EAAoBvyH,CAAAA,CAAA,CAAA,CAAA,EAAAwrG,CAAA,GAAA,GAAA,IAAA,CAAA,IAAAjoE,EAAAnjB,GAAA,EAAAqjB,EAAAF,EAAAh4B,WAAA4gG,EAAA1oE,EAAAV,YAAAU,OAAAA,EAAAA,EAAAv1D,EAQ5Dm9H,GAAmB,CAClBljG,MAAK,aACLZ,MAAK,YAAA,IACLkkG,MAAI,CAAA,OAAEkmB,EAAUlmB,IAAI,EAAA,IACpB7hB,SAAO,CAAA,OAAE+nC,EAAU/nC,OAAO,EAC1B2hB,YAAW,kBAAA,IACXhnG,QAAM,CAAE4rH,OAAAA,EAAawB,EAAUxiG,SAAS,CAAA,CAAC,CAAA,CAAA,EAAAg9E,EAAAA,EAAAj+H,EAI1Cm9H,GAAmB,CAClBljG,MAAK,oBACLZ,MAAK,WAAA,IACLkkG,MAAI,CAAA,OAAEomB,EAAepmB,IAAI,EAAA,IACzB7hB,SAAO,CAAA,OAAEioC,EAAejoC,OAAO,EAC/B2hB,YAAW,aAAA,IACXhnG,QAAM,CAAE4rH,OAAAA,EAAa0B,EAAe1iG,SAAS,CAAA,CAAC,CAAA,CAAA,EAAAoU,CAAA,GAAA,GAAA,IAAA,CAAA,IAAAC,EAAApjB,GAAA,EAAAsjB,EAAAF,EAAAj4B,WAAA23B,EAAAQ,EAAAX,YAAAW,OAAAA,EAAAA,EAAAx1D,EAO/Cm9H,GAAmB,CAClBljG,MAAK,cACLZ,MAAK,WAAA,IACLkkG,MAAI,CAAA,OAAEsmB,EAAUtmB,IAAI,EAAA,IACpB7hB,SAAO,CAAA,OAAEmoC,EAAUnoC,OAAO,EAC1B2hB,YAAW,UAAA,IACXhnG,QAAM,CAAE4rH,OAAAA,EAAa4B,EAAU5iG,SAAS,CAAA,CAAC,CAAA,CAAA,EAAA+T,EAAAA,EAAAh1D,EAI1Cm9H,GAAmB,CAClBljG,MAAK,eACLZ,MAAK,WAAA,IACLkkG,MAAI,CAAA,OAAEwmB,EAAWxmB,IAAI,EAAA,IACrB7hB,SAAO,CAAA,OAAEqoC,EAAWroC,OAAO,EAC3B2hB,YAAW,WAAA,IACXhnG,QAAM,CAAE4rH,OAAAA,EAAa8B,EAAW9iG,SAAS,CAAA,CAAC,CAAA,CAAA,EAAAqU,CAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAOxD,CAEA,SAASwvF,GAASl0J,EAAmC,CACnD,MAAMm0J,EAAU9wJ,GAAe,EAC/B,IAAIgyE,EAAa,KAEjB37E,OAAAA,GAAa,IAAM,CACXoN,MAAAA,EAAU4jH,GAAsBypC,CAAO,EAG3C9+E,GAAMq4E,QAAQ,EAGRr4E,EAAA,IAAIgwB,GAAMv+F,EAAS,CACzBqH,KAAM,MACNxD,KAAM,CACJu9E,OAAQloF,EAAM2K,KAAKlE,IAAKzK,GAAMA,EAAER,GAAG,EACnC+qG,SAAU,CACR,CACE57F,KAAM3K,EAAM2K,KAAKlE,IAAKzK,GAAMA,EAAExF,KAAK,CACpC,CAAA,CAEL,EACAwC,QAAS,CACPy6C,WAAY,GACZkyD,oBAAqB,GACrBpE,QAAS,CACPtT,OAAQ,CACNr/C,QAAS,GACTs5C,OAAQ,CACNxT,KAAM,CACJxxC,KAAM,EAAA,CAEV,EACAkxH,QAASA,CAACC,EAAMrmE,IAAe,CAC7B,MAAM99D,EAAgB,CACpBsyD,aAAc,EACd7iF,MAAOquF,EAAWruF,KACpB,EACA01E,EAAMltC,QAAQmsH,kBAAkB,CAACpkI,CAAa,CAAC,EAC/CmlD,EAAMhrD,OAAO,CAAA,CACf,CACF,CACF,CACF,CACD,CAAA,CACF,GAED,IAAA,CAAA,IAAAijH,EAAA9rF,GAAA,EAAA+rF,EAAAD,EAAA7gG,WAAAghG,EAAAF,EAAA9gG,WAAA26G,EAKepnJ,EAAMiF,IAAG,cAAAmiJ,GAAA,WAAA92G,GAAA82G,EAAA3Z,CAAA,EAATztI,EAAMiF,IAAGwoI,EAAAA,GAAAA,EAAA,KACV0mB,CAAO,EAAA7mB,CAAAA,GAAA,CAOvB,yRCvhBO,SAASinB,IAAO,CACrB,KAAM,CAACC,EAAMC,CAAO,EAAI37J,EAA4B,CAAA,CAAE,EAChD,CAAC47J,EAAaC,CAAc,EAAI77J,EAAuB,CAAA,CAAE,EACzD,CAAC+5I,EAAcp5F,CAAe,EAAIF,GAErC,EACG,CAACuxE,EAASC,CAAU,EAAIjyH,EAAa,CAAC,EAE5CY,GAAa,IAAM,CACT46I,EAAA,CAAA,CACT,EAED,SAASA,GAAU,CACjB7pB,GAAeM,EAAY,SAAY,CACrC,MAAMppD,EAAQ,CAAEJ,WAAYsE,GAAW,EAAGqlD,OAAQ2nB,EAAa3nB,MAAO,EAEhEhjE,EAAW,MAAM2e,GAAgBlF,CAAK,EAC5C,IAAIizF,EAA8C,CAAC,EACxCtmJ,UAAAA,KAAS45C,EAAS2T,OACvBvtD,EAAMu8H,MAAM4O,WACdmb,EAAiBtmJ,EAAMu8H,KAAKpwI,EAAE,EAAI6T,EAAMu8H,MAAM4O,UAGlD,MAAMob,EAAa,MAAMhuF,GAAYlF,CAAK,EAC/B9F,EAAAA,OAAO/4B,QAASgyH,GAAyB,CAC9C,GAAA,CAACA,EAAQ,KACXpvF,QAAQC,IACL,gDAA+CtlB,KAAKC,UACnDw0G,CACF,CAAE,EACJ,MACK,CACL,MAAMrb,EAAWmb,EAAiBE,EAAQjqB,KAAMpwI,EAAE,EAC9Cg/I,IACGqb,EAAQjqB,KAAM4O,SAERqb,EAAQjqB,KAAM4O,UAAYA,IACnCqb,EAAQjqB,KAAM4O,SAAY,GAAEqb,EAAQjqB,MAAM4O,QAAS,KAAIA,CAAS,KAFhEqb,EAAQjqB,KAAM4O,SAAWA,EAI7B,CACF,CACD,EACDgb,EAAQI,EAAWh5F,MAAM,CAAA,CAC1B,EAED,IAAIqvD,EAAS,GACT2nB,EAAa3nB,SACLA,EAAA,SAAQ2nB,EAAa3nB,MAAO,IAGxCT,GAAeM,EAAY,SAAY,CAQrC,IAAIgqC,GAPa,MAAMluF,GAAa,CAClCxF,MAAO,SACPn+B,KAAM,IACNq+B,WAAYsE,GAAW,EACvBz+C,MAAO,OACPq/C,EAAI,qCAAoCykD,CAAO,EAAA,CAChD,GACsByhB,KAAKlmI,IAAKzK,GAAMA,EAAER,GAAG,EAC5Cm5J,EAAeI,CAAO,CAAA,CACvB,CAAA,CAGH,MAAA,CAAA3lJ,EAEK62D,GAAG72D,CAAAA,CAAAA,EAAAA,EACHo2B,GAAS,CAACD,MAAO,GAAI,IAAAxnC,UAAA,CAAAqR,MAAAA,CAAAA,EACnB8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAAqR,MAAAA,CAAAA,EACDg2B,GAAG,CAAA,MAAQ,gBAAe,IAAArnC,UAAA,CAAA,OAAAqR,EACxB89I,GAAa,CAAA,IAACpiC,SAAO,CAAA,OAAEA,EAAQ,CAAC,EAAEwpB,QAAAA,CAAAA,CAAgB,CAAA,CAAA,CAAAllI,EAAAA,EAEpDg2B,GAAG,CAAA,MAAQ,gBAAe,IAAArnC,UAAA,CAAA,OAAAqR,EACxBu7G,GAAY,CACXQ,SAAsBD,GAAA,CACJzxE,EAAA,CAAEyxE,OAAAA,CAAAA,CAAgB,CACpC,EAAC,IACDE,UAAQ,CAAA,OAAEynB,EAAa3nB,MAAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA97G,EAAAA,EAIlC8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAAqR,MAAAA,CAAAA,EACDg2B,GAAG,CAAA,MAAQ,OAAQg3G,GAAI,EAAC,IAAAr+I,UAAA,CAAA,OAAAqR,EACtB60B,GAAI,CAAA,IAAAlmC,UAAA,CAAA,MAAA,CAAAqR,EACF60B,GAAKQ,OAAM,CAAA1mC,SAAA,aAAA,CAAA,EAAAqR,EACX60B,GAAKM,KAAI,CAAA,MAAQ,MAAK,IAAAxmC,UAAA,CAAA,OAAAqR,EACpB+jC,GAAK,CAACjQ,KAAM,KAAMqQ,MAAO,GAAMH,QAAS,GAAI,MAAA,OAAA,IAAAr1C,UAAA,CAAA,MAAA,CAAA0R,GAAA,GAAA,IAAA,CAAA,IAAAC,EAAAu/B,GAAA,EAAAv/B,OAAAA,EAAAA,EAAAN,EAYxC5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEogH,EAAK,CAAC,EAAAz2J,aACV,IAAA,CAAA,IAAA2uI,EAAA3rF,GAAA,EAAAE,EAAAyrF,EAAAjgG,WAAA4U,EAAAJ,EAAAgjB,YAAAD,EAAA3iB,EAAA4iB,YAAAviB,EAAAsiB,EAAAC,YAAApiB,EAAAH,EAAAuiB,YAAAC,EAAAriB,EAAAoiB,YAAAhjB,OAAAA,EAAAA,EAII+d,IAAAA,GAAgBg2F,EAAI3kG,SAAS,EAAE5B,OAC9B,qBACF,CAAC,EAAApN,EAAAA,EAEE2zG,IAAAA,EAAI9kB,IAAI,EAAAlsE,EAAAA,EAAA50D,EAEVm7H,GAAU,CAAA,IACTxxI,OAAK,CAAA,OAAEi8J,EAAInqB,KAAMoqB,UAAU,EAC3B5zF,MAAK,OAAA,IAAAtjE,UAAA,CAAA,OAEJi3J,EAAInqB,KAAMoqB,UAAAA,CAAU,CAAA,CAAA,EAAAvzG,EAAAA,EAAAtyC,EAItBm7H,GAAU,CAAA,IACTxxI,OAAK,CAAA,OAAEi8J,EAAInqB,KAAMqqB,WAAW,EAC5B7zF,MAAK,MAAA,IAAAtjE,UAAA,CAAA,OAEJi3J,EAAInqB,KAAMqqB,WAAAA,CAAW,CAAA,CAAA,EAAArzG,EAAAA,EAAAzyC,EAIvBm7H,GAAU,CAAA,IAACxxI,OAAK,CAAA,OAAEi8J,EAAInqB,KAAM4O,QAAQ,EAAA,IAAA17I,UAAA,CAAA,OAClCi3J,EAAInqB,KAAM4O,QAAAA,CAAQ,CAAA,CAAA,EAAAtjH,EAAA+tC,EAGlB8wF,IAAAA,EAAInqB,KAAMsqB,UAAU,EAAAzoB,CAAA,GAAA,CAAA,CAG9B,CAAA,EAAAh9H,CAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAN,EAAAA,EAQZg2B,GAAG,CAACg3G,GAAI,EAAC,IAAAr+I,UAAA,CAAA,OAAAqR,EACP8iC,GAAG,CAAA,IAAAn0C,UAAA,CAAA,OAAAqR,EACDg2B,GAAG,CAAA,MAAQ,OAAQihH,GAAI,EAAGjK,GAAI,GAAE,IAAAr+I,UAAA,CAAA,OAAAqR,EAC9B60B,GAAI,CAAA,IAAAlmC,UAAA,CAAA,MAAA,CAAAqR,EACF60B,GAAKQ,OAAM,CAAA1mC,SAAA,cAAA,CAAA,EAAAqR,EACX60B,GAAKM,KAAI,CAAA,MAAQ,MAAK,IAAAxmC,UAAA,CAAA,OAAAqR,EACpB+jC,GAAK,CACJjQ,KAAM,KAAI,MACH,OACPqQ,MAAO,GACPH,QAAS,GAAI,IAAAr1C,UAAA,CAAA,IAAAmpE,EAAArmB,GAAA,EAAAqmB,OAAAA,EAAAA,EAAA93D,EAGV5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEsgH,EAAY,CAAC,EAAA32J,aACd,IAAA,CAAA,IAAAomE,EAAAjjB,GAAAA,EAAAojB,EAAAH,EAAA13B,WAAA63B,OAAAA,EAAAA,EAAAl1D,EAICm7H,GAAU,CAACxxI,MAAOq8J,EAAQ/zF,MAAK,MAAAtjE,SAC7Bq3J,CAAAA,CAAM,CAAA,EAAAjxF,CAAA,GAAA,CAAA,CAKhB,CAAA,EAAA+C,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAa3B,ggBCrLA,SAASmuF,GAAUC,EAAa,CAC1BA,OAAAA,EAAIl1G,WAAW,GAAG,EACb,MACEk1G,EAAIl1G,WAAW,GAAG,EACpB,OAGA,EAEX,CAEO,SAASm1G,IAAY,CAC1B,MAAMt+G,EAASqC,GAA2B,EACpC1c,EAASy4H,GAAUp+G,EAAOq+G,GAAG,EAC7B7uF,EAAK,GAAE7pC,CAAO,QAAOqa,EAAOq+G,GAAI,GAChC,CAAC9oG,EAAQgpG,CAAS,EAAI18J,EAAyB,IAAI,EAEzDY,GAAa,IAAM,CACb,GAAA,CACI8yD,MAAAA,EAASipG,GAASx+G,EAAOq+G,GAAG,EAClCE,EAAUhpG,CAAM,OACN,CAAA,CAAC,CACd,EAED,KAAM,CAACkpG,CAAK,EAAIz7J,GAAeg9C,EAAOq+G,IAAK,UACrB,MAAMzuF,GAAS,cAAa5vB,EAAOq+G,GAAI,EAAC,GACzC3qJ,IACpB,EAEK,CAACgrJ,CAAO,EAAI17J,GAAe4rE,GAAY,UAChC,MAAMgB,GAAa,CAC5BxF,MAAQ,GAAEzkC,CAAO,OACjB6pC,EAAAA,EACAlF,WAAYsE,GAAW,CAAA,CACxB,GACW8mE,IACb,EAEK,CAACipB,CAAS,EAAI37J,GAAe4rE,GAAY,UAClC,MAAMgB,GAAa,CAC5BxF,MAAQ,GAAEzkC,CAAO,OACjB6pC,EAAAA,EACAr/C,MAAO,MACPm6C,WAAYsE,GAAW,CAAA,CACxB,GACW8mE,IACb,EAEK,CAACkpB,CAAY,EAAI57J,GAAe4rE,GAAY,UACtC,MAAMgB,GAAa,CAC3BxF,MAAQ,SACRoF,EAAAA,EACAlF,WAAYsE,GAAW,CAAA,CACxB,GACU8mE,IACZ,EAEK,CAACmpB,CAAc,EAAI77J,GAAe4rE,GAAY,UACxC,MAAMgB,GAAa,CAC3BxF,MAAO,SACPoF,EAAAA,EACAr/C,MAAO,MACPm6C,WAAYsE,GAAW,CAAA,CACxB,GACU8mE,IACZ,EAEK,CAACopB,CAAU,EAAI97J,GAAe4rE,GAAY,UACpC,MAAMgB,GAAa,CAC3BxF,MAAO,UACPoF,EAAAA,EACAlF,WAAYsE,GAAW,CAAA,CACxB,GACU8mE,IACZ,EAEK,CAACqpB,CAAY,EAAI/7J,GAAe4rE,GAAY,UACtC,MAAMgB,GAAa,CAC3BxF,MAAO,UACPoF,EAAAA,EACAr/C,MAAO,MACPm6C,WAAYsE,GAAW,CAAA,CACxB,GACU8mE,IACZ,EAED,MAAAv9H,CAAAA,EAEK62D,GAAG,CAAA,CAAA,GAAA,IAAA,CAAA,IAAAz2D,EAAAqxC,KAAAnxC,EAAAF,EAAAi9B,WAAAy6B,EAAAx3D,EAAA+8B,WAAAigG,EAAAxlE,EAAAz6B,WAAAigG,EAAAjgG,WAAAihG,IAAAA,EAAAh+H,EAAAu0D,YAAA0pE,EAAAD,EAAAjhG,WAAAmhG,EAAAD,EAAA1pE,YAAA4pE,EAAAH,EAAAzpE,YAAA6pE,EAAAD,EAAAphG,WAAAshG,EAAAD,EAAA7pE,YAAAgqE,EAAAJ,EAAA5pE,YAAAupE,EAAAS,EAAAxhG,WAAA+hG,EAAAhB,EAAAvpE,YAAAyoE,OAAAA,EAAAA,EAAAt9H,EAOKm7H,GAAU,CACTlpE,MAAOzkC,EAAS,OAAM,IACtB7jC,OAAK,CAAA,OAAEk+C,EAAOq+G,GAAG,EAAA,MAAA,uBAAA,IAAAv3J,UAAA,CAAA,MAAA,CAGhB,IAAGuvB,EACH2pB,IAAAA,EAAOq+G,GAAG,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA9lJ,EAAAA,EAAAJ,EAMlB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEw1B,EAAO,CAAC,EAAA,IAAAzuD,UAAA,CAAA,IAAAsjD,EAAApS,GAAAA,EAAA+0B,EAAA3iB,EAAA5U,WAAAiV,EAAAsiB,EAAAv3B,WAAAoV,EAAAH,EAAAjV,WAAAi4B,EAAA7iB,EAAAoiB,YAAAC,EAAAQ,EAAAT,YAAAW,EAAAV,EAAAD,YAAAK,EAAAM,EAAAX,YAAAG,EAAAE,EAAAL,YAAAO,EAAAJ,EAAAH,YAAAqpE,EAAA9oE,EAAAP,YAAAqpE,OAAAA,EAAArpE,YAAA9tC,EAAAurB,EAAA,IAID8K,EAAO,EAAGz7C,MAAK2zD,CAAA,EAAAvuC,EAAAurB,EAAA,IAEhB8K,EAAO,EAAG8L,QAAOsM,CAAA,EAAAzuC,EAAAurB,EAAA,IAErB8K,EAAO,EAAG0sF,IAAG90E,CAAA,EAAAjuC,EAAAurB,EAAA,IAET8K,EAAO,EAAGypG,QAAO3oB,CAAA,EAAAn3G,EAAAurB,EAEd8K,IAAAA,EAAO,EAAG0pG,WAAU,IAAA,EAAAlyF,EAAAA,EAAA50D,EAElC1L,EAAI,CAAA,IAACszB,MAAI,CAAE1J,OAAAA,EAAAooI,IAAAA,CAAAA,CAAAA,EAAO,CAAA,EAAIA,GAAAA,EAAAA,EAAQS,iBAAiB,EAAA,IAAAp4J,UAAA,CAAA,IAAAwvI,EAAA99H,KAAA89H,OAAAA,EAAA9gG,WAAAtW,EAAAo3G,EAAA,IAE/BmoB,EAAM,EAAES,kBAAiB,IAAA,EAAA5oB,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAAlsF,CAAAA,CAAA,CAAA,EAAAqsF,CAAA,EAAAC,EAAAA,EAAAv+H,EAS3Cm9H,GAAmB,CAClBljG,MAAK,WACLZ,MAAK,MAAA,IACLkkG,MAAI,CAAEgpB,OAAAA,KAAa,CAAE,CAAA,EAAA,IACrB7qC,SAAO,CAAA,OAAE6qC,EAAQ7qC,OAAAA,CAAO,CAAA,CAAA,EAAA8iB,EAAAA,EAAAx+H,EAIzBm9H,GAAmB,CAClBljG,MAAK,aACLZ,MAAK,MAAA,IACLkkG,MAAI,CAAEipB,OAAAA,KAAe,CAAE,CAAA,EAAA,IACvB9qC,SAAO,CAAA,OAAE8qC,EAAU9qC,OAAAA,CAAO,CAAA,CAAA,EAAAgjB,EAAAA,EAAA1+H,EAO3Bm9H,GAAmB,CAClBljG,MAAK,iBACLZ,MAAK,KAAA,IACLkkG,MAAI,CAAEkpB,OAAAA,KAAkB,CAAE,CAAA,EAAA,IAC1B/qC,SAAO,CAAA,OAAE+qC,EAAa/qC,OAAAA,CAAO,CAAA,CAAA,EAAAijB,EAAAA,EAAA3+H,EAI9Bm9H,GAAmB,CAClBljG,MAAK,mBACLZ,MAAK,KAAA,IACLkkG,MAAI,CAAEmpB,OAAAA,KAAoB,CAAE,CAAA,EAAA,IAC5BhrC,SAAO,CAAA,OAAEgrC,EAAehrC,OAAAA,CAAO,CAAA,CAAA,EAAA0iB,EAAAA,EAAAp+H,EAOhCm9H,GAAmB,CAClBljG,MAAK,sBACLZ,MAAK,KAAA,IACLkkG,MAAI,CAAEopB,OAAAA,KAAgB,CAAE,CAAA,EAAA,IACxBjrC,SAAO,CAAA,OAAEirC,EAAWjrC,OAAAA,CAAO,CAAA,CAAA,EAAA0jB,EAAAA,EAAAp/H,EAI5Bm9H,GAAmB,CAClBljG,MAAK,wBACLZ,MAAK,KAAA,IACLkkG,MAAI,CAAEqpB,OAAAA,KAAkB,CAAE,CAAA,EAAA,IAC1BlrC,SAAO,CAAA,OAAEkrC,EAAalrC,OAAAA,CAAO,CAAA,CAAA,EAAAt7G,CAAAA,IAAA,CAO3C,CAWA,SAASimJ,GAASH,EAAyB,CACnCh7G,MAAAA,EAAUg7G,EAAI39G,MAAM,wBAAwB,EAElD,GAAI2C,EAAS,CACX,MAAMvpC,GAAgB9X,GAAA,CACpB,OAAQA,EAAC,CACP,IAAK,IACI,MAAA,MACT,IAAK,IACI,MAAA,OACT,QACSA,OAAAA,CAAAA,CACX,GACCqhD,EAAQ,CAAC,CAAC,EAEPge,GAAkBr/D,GACd,GAAEA,EAAE,CAAC,CAAE,IAAGA,EAAE,CAAC,CAAE,IACtBqhD,EAAQ,CAAC,CAAC,EAEP4+F,GAAcjgJ,GAAA,CAClB,OAAQA,EAAC,CACP,IAAK,IACI,MAAA,SACT,IAAK,IACI,MAAA,KACT,QACSA,OAAAA,CAAAA,CACX,GACCqhD,EAAQ,CAAC,CAAC,EAUNkS,MARM,CACXz7C,MAAAA,EACAunD,QAAAA,EACA4gF,IAAAA,EACA+c,QAASn3H,SAASwb,EAAQ,CAAC,CAAC,EAC5B47G,WAAYp3H,SAASwb,EAAQ,CAAC,CAAC,EAC/B87G,KAAM97G,EAAQ,CAAC,CACjB,CACOkS,CAEF,OAAA,IACT,o8EC7OA,eAAe6pG,IAAyD,CAEhE73G,MAAAA,GADO,MAAMqoB,GAAQ/E,QAAQ,qBAAqB,GACpC,oBAAoB,EACxC,OAAItjB,GAGK83G,GAA2B,CAEtC,CAEA,SAASA,IAAkD,CAClD,MAAA,CACLlsI,QAAS,GACTrxB,MAAO,CACT,CACF,CAOA,eAAew9J,IAAuD,CAE9D/3G,MAAAA,GADO,MAAMqoB,GAAQ/E,QAAQ,qBAAqB,GACpC,kBAAkB,EACtC,OAAItjB,GAGKg4G,GAAyB,CAEpC,CAEA,eAAeC,IAA2D,CAElEj4G,MAAAA,GADO,MAAMqoB,GAAQ/E,QAAQ,qBAAqB,GACpC,uBAAuB,EAC3C,OAAItjB,GAGKk4G,GAA6B,CAExC,CAEA,SAASF,IAA8C,CAC9C,MAAA,CACLpsI,QAAS,GACTrxB,MAAO,GACT,CACF,CAEA,SAAS29J,IAAkD,CAClD,MAAA,CACLtsI,QAAS,GACTrxB,MAAO,EACT,CACF,CAEO,SAAS49J,IAAQ,CACtB,KAAM,CAACv7J,EAAOC,CAAQ,EAAI+W,GAAY,CACpCkjJ,IAAK,CACHsB,SAAU,GACVC,QAAS,GACTC,OAAQ,EAAA,CACV,CACD,EAGK,CAACC,EAAqB,CAAEC,QAASC,CAAAA,CAA4B,EACjEh9J,GAAoCo8J,EAAwB,EACxD,CAACa,EAA0BC,CAA2B,EAC1D/kJ,GAAiCkkJ,IAA4B,EAGzD,CAACc,EAAmB,CAAEJ,QAASK,CAAAA,CAA0B,EAC7Dp9J,GAAkCs8J,EAAsB,EACpD,CAACe,EAAwBC,CAAyB,EACtDnlJ,GAA+BokJ,IAA0B,EAGrD,CAACgB,EAAuB,CAAER,QAASS,CAAAA,CAA8B,EACrEx9J,GAAkCw8J,EAA0B,EACxD,CAACiB,EAA4BC,CAA6B,EAC9DvlJ,GAA+BskJ,IAA8B,EAE/Dh9J,GAAa,IAAM,CACbq9J,KACFI,EAA4BJ,GAAsB,CACpD,CACD,EAEDr9J,GAAa,IAAM,CACb09J,KACFG,EAA0BH,GAAoB,CAChD,CACD,EAED19J,GAAa,IAAM,CACb89J,KACFG,EAA8BH,GAAwB,CACxD,CACD,EAEKI,MAAAA,EAA0B99J,EAAW,IAEvCumD,KAAKC,UAAU42G,CAAwB,GACvC72G,KAAKC,UAAUy2G,EAAoBc,MAAM,CAE5C,EAEKC,EAA4Bh+J,EAAW,IAEzCumD,KAAKC,UAAUg3G,CAAsB,GACrCj3G,KAAKC,UAAU82G,EAAkBS,MAAM,CAE1C,EAEKE,EAAgCj+J,EAAW,IAE7CumD,KAAKC,UAAUo3G,CAA0B,GACzCr3G,KAAKC,UAAUk3G,EAAsBK,MAAM,CAE9C,EAEKG,EAA0B,SAAY,CAC1C,MAAMnxF,GAAQ3G,SACZ,yCACAg3F,CACF,EAC2BD,EAAA,CAC7B,EAEMgB,EAAwB,SAAY,CACxC,MAAMpxF,GAAQ3G,SACZ,uCACAo3F,CACF,EACyBD,EAAA,CAC3B,EAEMa,EAA4B,SAAY,CAC5C,MAAMrxF,GAAQ3G,SACZ,4CACAw3F,CACF,EAC6BD,EAAA,CAC/B,EAEMU,EAAc,MAAOn8J,GAAW,CACpCA,EAAEuS,eAAe,EACb,GAAA,CACFlT,EAAS,MAAO,CAAEu7J,SAAU,EAAA,CAAM,EAC5B/vF,MAAAA,GAAS,wBAAwB,EACvCxrE,EAAS,MAAO,CACdw7J,QAAS,GACTC,OAAQ,EAAA,CACT,OACS,CACVz7J,EAAS,MAAO,CACdw7J,QAAS,GACTC,OAAQ,EAAA,CACT,CAAA,QACO,CACRz7J,EAAS,MAAO,CAAEu7J,SAAU,EAAA,CAAO,CAAA,CAEvC,EAEMwB,EAAQA,IAAM,CACdA,IAAAA,EAAQ,CAAQ,GAAA,EAChBvzF,OAAAA,IAAcwzF,YAAc,kBAC9BD,EAAMlzH,KAAIz1B,IAA2C,EACrD2oJ,EAAMlzH,KAAI,KAAS,GAErBkzH,EAAMlzH,KAAI+J,IAAqC,EAC/CmpH,EAAMlzH,KAAI,GAAO,EACVkzH,CACT,EAEA,MAAAhpJ,CAAAA,EAEK62D,GAAG,CAAA,CAAA,GAAA,IAAA,CAAAiB,IAAAA,EAAAllB,KAAA0qF,EAAAxlE,EAAAz6B,WAAAwU,EAAAyrF,EAAAjgG,WAAA4U,EAAAJ,EAAAxU,WAAAu3B,EAAA0oE,EAAAzoE,YAAAviB,EAAAsiB,EAAAv3B,WAAAoV,EAAAH,EAAAjV,WAAAy3B,EAAAriB,EAAApV,WAAA03B,EAAAD,EAAAz3B,WAAA63B,EAAAH,EAAAF,YAAAU,EAAAL,EAAA73B,WAAA4gG,EAAArpE,EAAAC,YAAAS,EAAA2oE,EAAA5gG,WAAAm4B,EAAAF,EAAAj4B,WAAA23B,EAAAQ,EAAAn4B,WAAA6gG,GAAAlpE,EAAA33B,WAAA8gG,GAAAD,GAAA7gG,WAAAghG,GAAAF,GAAA9gG,WAAAihG,GAAAD,GAAAhhG,WAAAkhG,GAAAJ,GAAAtpE,YAAA2pE,GAAAD,GAAAlhG,WAAAohG,GAAAD,GAAAnhG,WAAAqhG,GAAAH,GAAA1pE,YAAAupE,EAAAH,EAAAppE,YAAAuqE,EAAAhB,EAAA/gG,WAAAgiG,EAAAD,EAAA/hG,WAAAiiG,EAAAD,EAAAhiG,WAAAqiG,GAAAJ,EAAAjiG,WAAAsiG,EAAAD,GAAAriG,WAAAuiG,EAAAD,EAAAtiG,WAAAwiG,EAAAD,EAAAviG,WAAA8rG,GAAAtJ,EAAAhrE,YAAAirE,GAAAH,EAAA9qE,YAAAkrE,GAAAD,GAAAziG,WAAA+rG,GAAArJ,GAAA1iG,WAAA6iG,GAAAJ,GAAAjrE,YAAA9tC,OAAAA,EAAAkrB,EAI2B+2G,CAAK,EAAA9zF,EAAAA,EAAAl1D,EAUvB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE57B,EAAMk6J,IAAIsB,QAAQ,EAAA,IAAA74J,UAAA,CAAA,OAAA8iD,GAAA,CAAA,CAAA,CAAA,EAAA8jB,CAAA,EAAAL,EAAAA,EAAAl1D,EAG7B1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE57B,EAAMk6J,IAAIuB,OAAO,EAAA,IAAA94J,UAAA,CAAA,OAAAgjD,GAAA,CAAA,CAAA,CAAA,EAAA4jB,CAAA,EAAAL,EAAAA,EAAAl1D,EAK5B1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE57B,EAAMk6J,IAAIwB,MAAM,EAAA,IAAA/4J,UAAA,CAAA,OAAAmjD,GAAA,CAAA,CAAA,CAAA,EAAAyjB,CAAA,EAAAA,EAAAmC,QAGaqxF,EAAWnwJ,GAAAA,iBAsBnChM,SAAMA,IAAA,CACam7J,EAAA,CAC1B/sI,QAASpuB,GAAE0G,OAAOwyI,OAAAA,CACnB,CAAA,CACF,EAAAltI,GAAAA,iBAgBUhM,SAAMA,IAAA,CACfm7J,EAA4B,QAAS,CAACn7J,GAAE0G,OAAO3J,KAAK,CAAA,CACrD,EAAA80I,GAAA+c,QALe5uJ,IAAA,CACdm7J,EAA4B,QAAS,CAACn7J,GAAE0G,OAAO3J,KAAK,CACtD,EAAC+0I,EAAAA,GAAA1+H,EASJ1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE4gI,EAAwB,CAAC,EAAA,IAAA75J,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAAgwI,GAAAzsF,GAAA,EAAAysF,OAAAA,GAAAjnE,QAGxB,IAAM,CACWkxF,EAAA,CAC1B,EAACjqB,EAAA,GAAA,GAAA,IAAA,CAAA,IAAAE,GAAAzsF,GAAA,EAAAysF,OAAAA,GAAAnnE,QAMQ,IAAM,CACbqwF,EACEJ,EAAoBc,MACtB,CACF,EAAC5pB,EAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAAS,EAAAA,EAAAt/H,EAiBR1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE6tC,IAAcwzF,YAAc,eAAe,EAAA,IAAAt6J,UAAA,CAAA,OAAA4jD,GAAA,CAAA,CAAA,CAAA,EAAAmtF,EAAA,EAAAJ,EAAAA,EAAAt/H,EAQtD1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE6tC,IAAcwzF,YAAc,QAAQ,EAAA,IAAAt6J,UAAA,CAAA,OAAA+jD,GAAA,CAAA,CAAA,CAAA,EAAAgtF,EAAA,EAAA9mI,EAAAA,iBAgB7BhM,SAAMA,IAAA,CACWu7J,EAAA,CACxBntI,QAASpuB,GAAE0G,OAAOwyI,OAAAA,CACnB,CAAA,CACF,EAAAqD,EAAAA,GAAAnpI,EAGA1L,EAAI,CAAA,IACHszB,MAAI,CAAA,OAAE6tC,IAAcwzF,YAAc,eAAe,EAAAt6J,SAAA,4BAAA,CAAA,EAAA,IAAA,EAAAw6I,EAAAA,GAAAnpI,EAIlD1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE6tC,IAAcwzF,YAAc,QAAQ,EAAAt6J,SAAA,2BAAA,CAAA,EAAA,IAAA,EAAAiK,GAAAA,iBAerChM,SAAMA,IAAA,CACfu7J,EAA0B,QAAS,CAACv7J,GAAE0G,OAAO3J,KAAK,CAAA,CACnD,EAAAy/I,GAAAoS,QALe5uJ,IAAA,CACdu7J,EAA0B,QAAS,CAACv7J,GAAE0G,OAAO3J,KAAK,CACpD,EAACu2I,EAAAA,GAAAlgI,EASJ1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE8gI,EAA0B,CAAC,EAAA,IAAA/5J,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAAyxI,GAAAluF,GAAA,EAAAkuF,OAAAA,GAAA1oE,QAG1B,IAAM,CACSmxF,EAAA,CACxB,EAACzoB,EAAA,GAAA,GAAA,IAAA,CAAA,IAAAoJ,GAAAp3F,GAAA,EAAAo3F,OAAAA,GAAA9xE,QAMQ,IAAM,CACbywF,EAA0BH,EAAkBS,MAAO,CACrD,EAACjf,EAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA1xE,EAAAA,EAAA93D,EAahB1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE6tC,IAAcwzF,YAAc,QAAQ,EAAA,IAAAt6J,UAAA,CAAA,IAAA4xI,GAAA3B,GAAA,EAAA6B,GAAAF,GAAAljG,WAAA4jG,GAAAR,GAAApjG,WAAA8jG,GAAAF,GAAA5jG,WAAAgsG,GAAAlI,GAAA9jG,WAAA+jG,GAAAiI,GAAAx0E,YAAAysE,GAAAF,GAAA/jG,WAAAkkG,GAAAD,GAAAjkG,WAAAokG,GAAAF,GAAAlkG,WAAA44G,GAAA3U,GAAAzsE,YAAA2sE,GAAAyU,GAAA54G,WAAAqkG,GAAAF,GAAAnkG,WAAAskG,GAAAsU,GAAAphF,YAAAj8D,OAAAA,GAAAA,iBAmBnBhM,SAAMA,IAAA,CACe27J,EAAA,CAC5BvtI,QAASpuB,GAAE0G,OAAOwyI,OAAAA,CACnB,CAAA,CACF,EAAAltI,GAAAA,iBAmBUhM,SAAMA,IAAA,CACf27J,EACE,QACA,CAAC37J,GAAE0G,OAAO3J,KACZ,CAAA,CACD,EAAA+3I,GAAA8Z,QAXe5uJ,IAAA,CACd27J,EACE,QACA,CAAC37J,GAAE0G,OAAO3J,KACZ,CACF,EAACg4I,EAAAA,GAAA3hI,EAYJ1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAE+gI,EAA8B,CAAC,EAAA,IAAAh6J,UAAA,CAAA,MAAA,EAAA,IAAA,CAAA,IAAAkzI,GAAA3vF,GAAA,EAAA2vF,OAAAA,GAAAnqE,QAG9B,IAAM,CACaoxF,EAAA,CAC5B,EAACjnB,EAAA,GAAA,GAAA,IAAA,CAAA,IAAAC,GAAA1vF,GAAA,EAAA0vF,OAAAA,GAAApqE,QAMQ,IAAM,CACb6wF,EACEH,EAAsBK,MACxB,CACF,EAAC3mB,EAAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAAxoG,OAAAmoG,GAAAqE,QAlDQwiB,EAA2BttI,OAAO,EAAAse,OAAAooG,GAAA/3I,MAiBpC2+J,EAA2B3+J,KAAK,EAAA42I,EAAAA,CAAA,CAAA,EAAA,IAAA,EAAAjnG,OAAAglG,GAAAwH,QArLhCgiB,EAAyB9sI,OAAO,EAAAse,OAAAmlG,GAAA90I,MAiBlCm+J,EAAyBn+J,KAAK,EAAA2vC,OAAAumG,EAAAiG,QAmE5BoiB,EAAuBltI,OAAO,EAAAse,OAAA8vG,GAAAz/I,MAwBhCu+J,EAAuBv+J,KAAK,EAAAmuE,CAAAA,IAAA,CAyH3D,CAACC,GAAA,CAAA,QAAA,OAAA,CAAA,gtBCrcM,SAASmxF,IAAe,CAC7B,KAAM,CAACC,EAAUzrB,CAAU,EAAIh0I,EAAoB,CAAA,CAAE,EAC/C,CAACi0I,EAAS,CAAEiqB,QAAAA,CAAAA,CAAS,EAAI/8J,GAAe4nE,GAAIsB,YAAY,EAC9D,IAAIq1F,EAEJ9+J,GAAa,IAAM,CACjBozI,EAAWC,GAAS,CAAA,CACrB,EAED,MAAM0rB,EAAiBA,IAAM,CAC3B,MAAMC,EAAeF,GAAWz/J,MAChC,GAAI,CAAC2/J,EAAc,CACjB5rB,EAAWC,CAAO,EAClB,MAAA,CAGFD,EACEC,EAAQ,EAAE90F,OAAQlhD,GACTspD,KAAKC,UAAUvpD,CAAC,EAAEg6B,QAAQ2nI,CAAY,EAAI,EAClD,CACH,CACF,EAEMr1F,EAAgB5oE,GAAe,CACnConE,GAAIwB,aAAa5oE,CAAE,EAAEopE,KAAK,IAAM,CACtBmzF,EAAA,CAAA,CACT,CACH,EAEA,MAAA5nJ,CAAAA,EAEK62D,GAAG,CAAA,CAAA,GAAA,IAAA,CAAA,IAAAz2D,EAAAy/B,GAAAv/B,EAAAA,EAAAF,EAAAi9B,WAAAy6B,EAAAx3D,EAAA+8B,WAAAigG,EAAAxlE,EAAAjD,YAAAhjB,EAAAyrF,EAAAjgG,WAAAwU,EAAA2pG,QAYa6N,EAAc,IAAApoH,EAJlBmoH,EAAS,cAAAnoH,GAAAC,WAAAA,GAAAD,EAAA4Q,CAAA,EAATu3G,EAASv3G,EAAAzxC,EAAAA,EAAAJ,EAQnB1K,GAAQ,CAAA,IAAA3G,UAAA,CAAA,MAAA,CAAA0R,GAAAA,EAAAL,EAYN5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEmkH,EAAS,CAAC,EAAAx6J,SACNk6C,IACX,IAAA,CAAA,IAAA+rB,EAAAjjB,GAAAA,EAAAW,EAAAsiB,EAAAv3B,WAAAoV,EAAAH,EAAAjV,WAAAy3B,EAAAriB,EAAApV,WAAA03B,EAAAD,EAAAz3B,WAAA63B,EAAAH,EAAAF,YAAAM,EAAAD,EAAAL,YAAAO,EAAAD,EAAAN,YAAAQ,EAAAD,EAAAP,YAAAU,EAAAF,EAAAh4B,WAAAtW,OAAAA,EAAAguC,EAM8BlsB,IAAAA,EAAOA,OAAOizE,QAAU,GAAG,EAAA/0F,EAAAmuC,EAC3BrsB,IAAAA,EAAOA,OAAOo3F,QAAU,GAAG,EAAAl5G,EAAAouC,EAC3BtsB,IAAAA,EAAOA,OAAOy3F,SAAW,GAAG,EAAAv5G,EAAAquC,EAAA,IAC5BvsB,EAAOA,OAAO+3F,YAAY,EAAArrE,EAAAmC,QAI/B,IAAMzD,EAAaprB,EAAOx9C,EAAE,EAACypE,EAAAA,EAAA90D,EAKzC1L,EAAI,CAAA,IAACszB,MAAI,CAAA,OAAEihB,EAAOooB,OAAO,EAAA,IAAAtiE,UAAA,CAAA,IAAAsvI,EAAAxsF,KAAAwsF,OAAAA,EAAA5gG,WAAAtW,EAAAk3G,EAGrBp1F,IAAAA,EAAOooB,QAAO,IAAA,EAAAgtE,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAArpE,CAAAA,GAAA,CASjC,CAAC,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAAx0D,CAAAA,IAAA,CAMb,CAAC23D,GAAA,CAAA,QAAA,OAAA,CAAA,2XCvGD,eAAewxF,IAAe,CAErBC,OADS,MAAM/2F,GAAIC,QAAQ,2BAA2B,CAE/D,CAEO,SAAS+2F,IAAe,CAC7B,KAAM,CAACD,EAAS,CAAE5B,QAAS8B,CAAAA,CAAgB,EAAI7+J,GAAe0+J,EAAY,EAEpEI,EAAex1J,GAAiB,CACpCs+D,GAAIuB,SAAU,2BAA0B7/D,CAAK,EAAC,EAC3CsgE,KAAmB3b,GAAA,CAClBwd,QAAQC,IAAIzd,CAAQ,EACH+pF,GAAA,SAAQ1uI,CAAK,oBAAmB,EAClCu1J,EAAA,CAAA,CAChB,EACA9c,MAAOhhJ,GAAe,CACXk3I,GAAA,UAASl3I,CAAM,EAAC,CAAA,CAC3B,CACL,EAEA,MAAAoU,CAAAA,EAEK62D,GAAG,CAAA,CAAA,GAAA,IAAA,CAAA,IAAAz2D,EAAAy/B,KAAAz/B,OAAAA,EAAAi9B,WAAAj9B,EAAAA,EAAAJ,EAGD1K,GAAQ,CAAA,IAAA3G,UAAA,CAAA,IAAAmpE,EAAAz3D,GAAA,EAAAi9H,EAAAxlE,EAAAz6B,WAAAwU,EAAAyrF,EAAAzoE,YAAAhjB,OAAAA,EAAAA,EAAA7xC,EAWF5L,GAAG,CAAA,IAAC4wC,MAAI,CAAA,OAAEwkH,EAAQ,CAAC,EAAA76J,SACV/B,IACN,IAAA,CAAA,IAAAqlD,EAAAR,KAAAmjB,EAAA3iB,EAAA5U,WAAAiV,EAAAsiB,EAAAC,YAAApiB,EAAAH,EAAAuiB,YAAAC,EAAAriB,EAAAoiB,YAAAE,EAAAD,EAAAz3B,WAAAu3B,OAAAA,EAAAA,EAGgChoE,IAAAA,EAAEuH,IAAI,EAAAm+C,EAAAA,EACN1lD,IAAAA,EAAEg9J,SAAS,EAAAn3G,EAAAA,EACX7lD,IAAAA,EAAEi9J,UAAU,EAAA90F,EAAA2C,QAIzB,IAAM,CACbiyF,EAAY/8J,EAAEuH,IAAI,CACpB,EAAC89C,CAAAA,GAAA,CAQb,CAAC,CAAA,EAAA6lB,CAAAA,CAAA,CAAA,EAAA,IAAA,EAAA13D,CAAAA,IAAA,CAQjB,CAAC23D,GAAA,CAAA,OAAA,CAAA,oBCtCM,SAAS+xF,IAAY,CAC1B,OAAA9pJ,EACGwwC,GAAU,CAACnnD,KAAM0gK,GAAG,IAAAp7J,UAAA,CAAAqR,MAAAA,CAAAA,EAClBgvC,GAAK,CAACvzC,KAAM,IAAK6B,UAAW0sJ,GAAsB,IAAAr7J,UAAA,CAAAqR,MAAAA,CAAAA,EAChDgvC,GAAK,CAACvzC,KAAM,IAAK6B,UAAW2sJ,EAAAA,CAAejqJ,EAAAA,EAE3CgvC,GAAK,CAACvzC,KAAM,QAAS6B,UAAWgmI,GAAU,IAAA30I,UAAA,CAAAqR,MAAAA,CAAAA,EACxCgvC,GAAK,CAACvzC,KAAM,IAAK6B,UAAWimI,EAAAA,CAAMvjI,EAAAA,EAClCgvC,GAAK,CAACvzC,KAAM,MAAO6B,UAAW+yI,EAAAA,CAAS,CAAA,CAAA,CAAA,CAAArwI,EAAAA,EAGzCgvC,GAAK,CAACvzC,KAAM,SAAU6B,UAAWgmI,GAAU,IAAA30I,UAAA,CAAAqR,MAAAA,CAAAA,EACzCgvC,GAAK,CAACvzC,KAAM,IAAK6B,UAAWimI,EAAAA,CAAMvjI,EAAAA,EAClCgvC,GAAK,CAACvzC,KAAM,MAAO6B,UAAW+yI,EAAAA,CAAS,CAAA,CAAA,CAAA,CAAArwI,EAAAA,EAGzCgvC,GAAK,CAACvzC,KAAM,YAAa6B,UAAWgmI,GAAU,IAAA30I,UAAA,CAAAqR,MAAAA,CAAAA,EAC5CgvC,GAAK,CAACvzC,KAAM,IAAK6B,UAAWimI,EAAAA,CAAMvjI,EAAAA,EAClCgvC,GAAK,CAACvzC,KAAM,MAAO6B,UAAW+yI,EAAAA,CAAS,CAAA,CAAA,CAAA,CAAArwI,EAAAA,EAGzCgvC,GAAK,CAACvzC,KAAM,SAAU6B,UAAW+xI,EAAAA,CAAMrvI,EAAAA,EACvCgvC,GAAK,CAACvzC,KAAM,YAAa6B,UAAW+yI,EAAAA,CAASrwI,EAAAA,EAC7CgvC,GAAK,CAACvzC,KAAM,WAAY6B,UAAW+vI,EAAAA,CAAQrtI,EAAAA,EAC3CgvC,GAAK,CAACvzC,KAAM,sBAAuB6B,UAAWgmJ,EAAAA,CAAQtjJ,EAAAA,EACtDgvC,GAAK,CAACvzC,KAAM,oBAAqB6B,UAAW8kJ,EAAAA,CAAepiJ,EAAAA,EAC3DgvC,GAAK,CAACvzC,KAAM,kBAAmB6B,UAAW6nJ,EAAAA,CAAInlJ,EAAAA,EAC9CgvC,GAAK,CAACvzC,KAAM,8BAA+B6B,UAAWwhJ,EAAAA,CAAO9+I,EAAAA,EAC7DgvC,GAAK,CAACvzC,KAAI,WAAY6B,UAAW6oJ,EAAAA,CAASnmJ,EAAAA,EAC1CgvC,GAAK,CAACvzC,KAAM,QAAS6B,UAAW2gJ,EAAAA,CAAKj+I,EAAAA,EAErCgvC,GAAK,CAACvzC,KAAI,QAAS6B,UAAWiqJ,EAAAA,CAAKvnJ,EAAAA,EACnCgvC,GAAK,CAACvzC,KAAI,gBAAiB6B,UAAW4rJ,EAAAA,CAAYlpJ,EAAAA,EAClDgvC,GAAK,CAACvzC,KAAI,gBAAiB6B,UAAWmsJ,EAAAA,CAAYzpJ,EAAAA,EAElDgvC,GAAK,CAACvzC,KAAI,IAAK6B,UAAW2sJ,EAAAA,CAAe,CAAA,CAAA,CAAA,CAAAjqJ,EAAAA,EAE3CgvC,GAAK,CAACvzC,KAAM,SAAU6B,UAAWgvI,EAAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAG7C,CAEA,SAASyd,GAAIn5J,EAAY,CACvBstB,OAAAA,EAAA,IAAUttB,EAAMjC,QAAQ,CAC1B,CAEA,SAASs7J,IAAkB,CACzB,OAAAjqJ,EAAQmxC,GAAQ,CAAC3yC,KAAI,QAAA,CAAA,CACvB,CAEA,SAASwrJ,GAAuBp5J,EAAY,CAC1C,KAAM,CAAC8qH,EAASC,CAAU,EAAIjyH,EAAa,EAAI,EACzC0gD,EAAWJ,GAAY,EACvB5B,EAAW6B,GAAY,EAC7B,IAAIvf,EAAU,GAEdpgC,OAAAA,GAAa,IAAM,CACb,CAAC6lE,GAAiB,GAAKzlC,IACzB4rC,QAAQC,IACN,6DACF,EAEGnsB,EAAA,qBAAoBgxF,mBACnBhzF,EAAS2D,SAAW,IAAM3D,EAASgB,MACrC,CAAE,EACJ,EACF,CACD,EAED77C,GAAQ,IAAM,CACZ+oE,QAAQC,IAAI,gCAAgC,EAC5C9D,GAAY,EACTgC,KAAMy1F,GAAc,CACnB5zF,QAAQC,IAAK,SAAQ2zF,EAAK74F,QAAS,EAAC,EACpCiF,QAAQC,IAAI2zF,CAAI,EACXA,EAAKC,WACR/5F,GAAqB,EAAI,EAEvBe,GAAYsD,EAAAA,KAAiBrlB,GAAA,CAC/BknB,QAAQC,IAAI,oBAAoB,EAChCD,QAAQC,IAAInnB,CAAM,EAClBsmB,GAAgBtmB,CAAM,EACtBusE,EAAW,EAAK,CAAA,CACjB,CAAA,CACF,EACAixB,MAAOhhJ,GAAe,CACb2qE,QAAAA,IAAK,uBAAsB3qE,CAAM,EAAC,EAEvCw+C,EAAA,qBAAoBgxF,mBACnBhzF,EAAS2D,SAAW,IAAM3D,EAASgB,MACrC,CAAE,EACJ,CAAA,CACD,EACO1e,EAAA,EAAA,CACX,EAED1qB,CAAAA,EAEKxX,GAAU,CAAC2L,KAAM,OAAM,IAAAxF,UAAA,CAAGuvB,OAAAA,QAAAw9F,EAAAA,CAAS,EAAA,GAAA17G,EAAKksI,GAAS,EAAA,CAAA,CAAA,CAAAlsI,EAAAA,EACjDxX,GAAU,CAAC2L,KAAM,OAAM,IAAAxF,UAAA,CACrBuvB,OAAAA,EAAA,IAAA,CAACw9F,EAAS,CAAA,EAAA,IAAA,IAAA,CAAA,IAAAt7G,EAAAC,GAAA,EAAA0mB,OAAAA,EAAA3mB,EAAAJ,EAENgjI,GAAa,CAAA,CAAA,EAAA,IAAA,EAAAj8G,EAAA3mB,EACbxP,IAAAA,EAAMjC,SAAQ,IAAA,EAAAyR,CAAAA,GAElB,CAAA,CAAA,CAAA,CAAA,CAIT,qCChJC,SAASxT,EAAEsB,EAAE,CAAsD8gE,EAAA,QAAe9gE,EAA4I,CAAA,GAAE+gE,GAAM,UAAU,CAAc,IAAIriE,EAAE,CAAC,IAAI,YAAY,GAAG,SAAS,EAAE,aAAa,GAAG,eAAe,IAAI,sBAAsB,KAAK,2BAA2B,EAAEsB,EAAE,0FAA0FuC,EAAE,OAAO,EAAE,QAAQpD,EAAE,qBAAqBO,EAAE,CAAE,EAAC/D,EAAE,SAAS+C,EAAE,CAAC,OAAOA,EAAE,CAACA,IAAIA,EAAE,GAAG,KAAK,IAAI,EAAMjF,EAAE,SAASiF,EAAE,CAAC,OAAO,SAASsB,EAAE,CAAC,KAAKtB,CAAC,EAAE,CAACsB,CAAC,CAAC,EAAEmjD,EAAE,CAAC,sBAAsB,SAASzkD,EAAE,EAAE,KAAK,OAAO,KAAK,KAAK,CAAA,IAAK,OAAO,SAASA,EAAE,CAAgB,GAAZ,CAACA,GAAoBA,IAAN,IAAQ,MAAO,GAAE,IAAIsB,EAAEtB,EAAE,MAAM,cAAc,EAAE6D,EAAE,GAAGvC,EAAE,CAAC,GAAG,CAACA,EAAE,CAAC,GAAG,GAAG,OAAWuC,IAAJ,EAAM,EAAQvC,EAAE,CAAC,IAAT,IAAW,CAACuC,EAAEA,CAAC,EAAE7D,CAAC,CAAC,CAAC,EAAEmO,EAAE,SAASnO,EAAE,CAAC,IAAIsB,EAAEN,EAAEhB,CAAC,EAAE,OAAOsB,IAAIA,EAAE,QAAQA,EAAEA,EAAE,EAAE,OAAOA,EAAE,CAAC,EAAE,EAAEkjD,EAAE,SAASxkD,EAAEsB,EAAE,CAAC,IAAIuC,EAAE44B,EAAEz7B,EAAE,SAAS,GAAGy7B,GAAG,QAAQh8B,EAAE,EAAEA,GAAG,GAAGA,GAAG,EAAE,GAAGT,EAAE,QAAQy8B,EAAEh8B,EAAE,EAAEa,CAAC,CAAC,EAAE,GAAG,CAACuC,EAAEpD,EAAE,GAAG,KAAK,OAAOoD,EAAE7D,KAAKsB,EAAE,KAAK,MAAM,OAAOuC,CAAC,EAAEN,EAAE,CAAC,EAAE,CAAC9C,EAAE,SAAST,EAAE,CAAC,KAAK,UAAUwkD,EAAExkD,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAACS,EAAE,SAAST,EAAE,CAAC,KAAK,UAAUwkD,EAAExkD,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,SAASA,EAAE,CAAC,KAAK,aAAa,IAAI,CAACA,CAAC,CAAC,EAAE,GAAG,CAAC6D,EAAE,SAAS7D,EAAE,CAAC,KAAK,aAAa,GAAG,CAACA,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,SAASA,EAAE,CAAC,KAAK,aAAa,CAACA,CAAC,CAAC,EAAE,EAAE,CAAC,EAAEjF,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAEA,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,EAAEA,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAEA,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,EAAEA,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,EAAEA,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAEA,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAEA,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,EAAEA,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC8I,EAAE9I,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC0F,EAAE,SAAST,EAAE,CAAC,IAAIsB,EAAEN,EAAE,QAAQ6C,EAAE7D,EAAE,MAAM,KAAK,EAAE,GAAG,KAAK,IAAI6D,EAAE,CAAC,EAAEvC,EAAE,QAAQm7B,EAAE,EAAEA,GAAG,GAAGA,GAAG,EAAEn7B,EAAEm7B,CAAC,EAAE,QAAQ,SAAS,EAAE,IAAIz8B,IAAI,KAAK,IAAIy8B,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE1hC,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC8I,EAAE9I,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC0F,EAAE,SAAST,EAAE,CAAC,IAAIsB,EAAE6M,EAAE,QAAQ,EAAEtK,GAAGsK,EAAE,aAAa,GAAG7M,EAAE,IAAK,SAAStB,EAAE,CAAC,OAAOA,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAI,QAAQA,CAAC,EAAE,EAAE,GAAG6D,EAAE,EAAE,MAAM,IAAI,MAAM,KAAK,MAAMA,EAAE,IAAIA,CAAC,CAAC,EAAE,KAAK,CAACpD,EAAE,SAAST,EAAE,CAAC,IAAIsB,EAAE6M,EAAE,QAAQ,EAAE,QAAQnO,CAAC,EAAE,EAAE,GAAGsB,EAAE,EAAE,MAAM,IAAI,MAAM,KAAK,MAAMA,EAAE,IAAIA,CAAC,CAAC,EAAE,EAAE,CAAC,WAAWvG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC8I,EAAE,SAAS7D,EAAE,CAAC,KAAK,KAAK/C,EAAE+C,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQjF,EAAE,MAAM,CAAC,EAAE,EAAE0pD,EAAE,GAAGA,CAAC,EAAE,SAASnnD,EAAEuG,EAAE,CAAC,IAAI44B,EAAEh8B,EAAEg8B,EAAE54B,EAAEpD,EAAEO,GAAGA,EAAE,QAAQ,QAAQ/D,GAAG4G,EAAE44B,EAAE,QAAQ,oCAAqC,SAASn7B,EAAEuC,EAAE44B,EAAE,CAAC,IAAIz7B,EAAEy7B,GAAGA,EAAE,YAAa,EAAC,OAAO54B,GAAGpD,EAAEg8B,CAAC,GAAGz8B,EAAEy8B,CAAC,GAAGh8B,EAAEO,CAAC,EAAE,QAAQ,iCAAkC,SAAShB,EAAEsB,EAAEuC,EAAE,CAAC,OAAOvC,GAAGuC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,GAAI,MAAMvC,CAAC,EAAEvG,EAAEkC,EAAE,OAAOwnD,EAAE,EAAEA,EAAE1pD,EAAE0pD,GAAG,EAAE,CAAC,IAAIt2C,EAAElR,EAAEwnD,CAAC,EAAED,EAAEjhD,EAAE4K,CAAC,EAAE7Q,EAAEknD,GAAGA,EAAE,CAAC,EAAEnjD,EAAEmjD,GAAGA,EAAE,CAAC,EAAEvnD,EAAEwnD,CAAC,EAAEpjD,EAAE,CAAC,MAAM/D,EAAE,OAAO+D,CAAC,EAAE8M,EAAE,QAAQ,WAAW,EAAE,CAAC,CAAC,OAAO,SAASnO,EAAE,CAAC,QAAQsB,EAAE,CAAE,EAACuC,EAAE,EAAE44B,EAAE,EAAE54B,EAAE9I,EAAE8I,GAAG,EAAE,CAAC,IAAIpD,EAAExD,EAAE4G,CAAC,EAAE,GAAa,OAAOpD,GAAjB,SAAmBg8B,GAAGh8B,EAAE,WAAW,CAAC,IAAIO,EAAEP,EAAE,MAAMgkD,EAAEhkD,EAAE,OAAO0N,EAAEnO,EAAE,MAAMy8B,CAAC,EAAE+nB,EAAExjD,EAAE,KAAKmN,CAAC,EAAE,CAAC,EAAEs2C,EAAE,KAAKnjD,EAAEkjD,CAAC,EAAExkD,EAAEA,EAAE,QAAQwkD,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,SAASxkD,EAAE,CAAC,IAAIsB,EAAEtB,EAAE,UAAU,GAAYsB,IAAT,OAAW,CAAC,IAAIuC,EAAE7D,EAAE,MAAMsB,EAAEuC,EAAE,KAAK7D,EAAE,OAAO,IAAS6D,IAAL,KAAS7D,EAAE,MAAM,GAAG,OAAOA,EAAE,SAAS,CAAC,EAAEsB,CAAC,EAAEA,CAAC,CAAC,CAAC,OAAO,SAAStB,EAAEsB,EAAEuC,EAAE,CAACA,EAAE,EAAE,kBAAkB,GAAG7D,GAAGA,EAAE,oBAAoB/C,EAAE+C,EAAE,mBAAmB,IAAIy8B,EAAEn7B,EAAE,UAAUb,EAAEg8B,EAAE,MAAMA,EAAE,MAAM,SAASz8B,EAAE,CAAC,IAAIsB,EAAEtB,EAAE,KAAKy8B,EAAEz8B,EAAE,IAAI/C,EAAE+C,EAAE,KAAK,KAAK,GAAGy8B,EAAE,IAAI1hC,EAAEkC,EAAE,CAAC,EAAE,GAAa,OAAOlC,GAAjB,SAAmB,CAAC,IAAI0pD,EAAOxnD,EAAE,CAAC,IAAR,GAAUkR,EAAOlR,EAAE,CAAC,IAAR,GAAUunD,EAAEC,GAAGt2C,EAAE5K,EAAEtG,EAAE,CAAC,EAAEkR,IAAI5K,EAAEtG,EAAE,CAAC,GAAG+D,EAAE,KAAK,UAAU,CAACyjD,GAAGlhD,IAAIvC,EAAE6C,EAAE,GAAGN,CAAC,GAAG,KAAK,GAAG,SAASvD,EAAEsB,EAAEuC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,QAAQvC,CAAC,EAAE,GAAG,OAAO,IAAI,MAAYA,IAAN,IAAQ,IAAI,GAAGtB,CAAC,EAAE,IAAIy8B,EAAEn/B,EAAEgE,CAAC,EAAEtB,CAAC,EAAES,EAAEg8B,EAAE,KAAKz7B,GAAEy7B,EAAE,MAAMx/B,GAAEw/B,EAAE,IAAI1hC,GAAE0hC,EAAE,MAAMgoB,GAAEhoB,EAAE,QAAQtuB,GAAEsuB,EAAE,QAAQ+nB,GAAE/nB,EAAE,aAAal5B,GAAEk5B,EAAE,KAAKp7B,GAAE,IAAI,KAAK6rB,EAAEjwB,KAAIwD,GAAGO,GAAE,EAAEK,GAAE,QAAO,GAAIihE,EAAE7hE,GAAGY,GAAE,YAAa,EAACm8J,EAAE,EAAE/8J,GAAG,CAACO,KAAIw8J,EAAEx8J,GAAE,EAAEA,GAAE,EAAEK,GAAE,SAAU,GAAE,IAAI9B,EAAExE,IAAG,EAAEiD,GAAEymD,IAAG,EAAE,EAAEt2C,IAAG,EAAEq0D,EAAEhe,IAAG,EAAE,OAAOjhD,GAAE,IAAI,KAAK,KAAK,IAAI++D,EAAEk7F,EAAEtwI,EAAE3tB,EAAEvB,GAAE,EAAEwkE,EAAE,GAAGj/D,GAAE,OAAO,GAAG,CAAC,EAAEM,EAAE,IAAI,KAAK,KAAK,IAAIy+D,EAAEk7F,EAAEtwI,EAAE3tB,EAAEvB,GAAE,EAAEwkE,CAAC,CAAC,EAAE,IAAI,KAAKF,EAAEk7F,EAAEtwI,EAAE3tB,EAAEvB,GAAE,EAAEwkE,CAAC,CAAC,MAAS,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,EAAElhE,EAAEvG,EAAE0hC,CAAC,EAAE,KAAK,KAAI,EAAGl5B,GAAQA,IAAL,KAAS,KAAK,GAAG,KAAK,OAAOA,CAAC,EAAE,IAAIihD,GAAGljD,GAAG,KAAK,OAAOvG,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,GAAGiG,EAAE,CAAA,CAAE,SAASjG,aAAa,MAAM,QAAQsG,EAAEtG,EAAE,OAAOmyB,EAAE,EAAEA,GAAG7rB,EAAE6rB,GAAG,EAAE,CAACjwB,EAAE,CAAC,EAAElC,EAAEmyB,EAAE,CAAC,EAAE,IAAIo1C,EAAEz+D,EAAE,MAAM,KAAK5G,CAAC,EAAE,GAAGqlE,EAAE,QAAO,EAAG,CAAC,KAAK,GAAGA,EAAE,GAAG,KAAK,GAAGA,EAAE,GAAG,KAAK,KAAM,EAAC,KAAK,CAACp1C,IAAI7rB,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,EAAE,MAAMZ,EAAE,KAAK,KAAKT,CAAC,CAAC,CAAC,CAAC,CAAC,8ECA9pH,SAASA,EAAEsB,EAAE,CAAsD8gE,EAAA,QAAe9gE,EAAC,CAAwI,GAAE+gE,GAAM,UAAU,CAAc,OAAO,SAASriE,EAAEsB,EAAE,CAAC,IAAIm7B,EAAEn7B,EAAE,UAAUuC,EAAE44B,EAAE,OAAOA,EAAE,OAAO,SAASz8B,EAAE,CAAC,IAAIsB,EAAE,KAAKm7B,EAAE,KAAK,QAAO,EAAG,GAAG,CAAC,KAAK,QAAS,EAAC,OAAO54B,EAAE,KAAK,IAAI,EAAE7D,CAAC,EAAE,IAAI/C,EAAE,KAAK,OAAQ,EAAClC,GAAGiF,GAAG,wBAAwB,QAAQ,8DAA+D,SAASA,EAAE,CAAC,OAAOA,EAAG,CAAA,IAAI,IAAI,OAAO,KAAK,MAAMsB,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,KAAK,OAAOm7B,EAAE,QAAQn7B,EAAE,EAAE,EAAE,IAAI,OAAO,OAAOA,EAAE,SAAU,EAAC,IAAI,OAAO,OAAOA,EAAE,YAAW,EAAG,IAAI,KAAK,OAAOm7B,EAAE,QAAQn7B,EAAE,KAAM,EAAC,GAAG,EAAE,IAAI,IAAI,IAAI,KAAK,OAAOrE,EAAE,EAAEqE,EAAE,KAAI,EAAStB,IAAN,IAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,IAAI,KAAK,OAAO/C,EAAE,EAAEqE,EAAE,QAAO,EAAStB,IAAN,IAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,IAAI,KAAK,OAAO/C,EAAE,EAAE,OAAWqE,EAAE,KAAN,EAAS,GAAGA,EAAE,EAAE,EAAQtB,IAAN,IAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,IAAI,OAAO,KAAK,MAAMsB,EAAE,GAAG,QAAS,EAAC,GAAG,EAAE,IAAI,IAAI,OAAOA,EAAE,GAAG,QAAO,EAAG,IAAI,IAAI,MAAM,IAAIA,EAAE,WAAU,EAAG,IAAI,IAAI,MAAM,MAAM,IAAIA,EAAE,WAAW,MAAM,EAAE,IAAI,QAAQ,OAAOtB,CAAC,CAAC,CAAC,EAAG,OAAO6D,EAAE,KAAK,IAAI,EAAE9I,CAAC,CAAC,CAAC,CAAC,+ECArkC,SAASuG,EAAEuC,EAAE,CAAsDu+D,UAAev+D,GAAwI,GAAEw+D,GAAM,UAAU,CAAc,IAAI/gE,EAAE,QAAQuC,EAAE,UAAU,OAAO,SAAS7D,EAAES,EAAE,CAAC,IAAIg8B,EAAEh8B,EAAE,UAAUg8B,EAAE,QAAQ,SAASn7B,EAAE,CAAC,OAAO,KAAK,OAAM,EAAG,EAAEA,CAAC,EAAE,KAAK,MAAM,KAAK,MAAO,EAAC,GAAG,CAAC,EAAE,KAAK,MAAM,KAAK,MAAK,EAAG,EAAE,GAAGA,EAAE,EAAE,CAAC,EAAE,IAAIrE,EAAEw/B,EAAE,IAAIA,EAAE,IAAI,SAASz8B,EAAES,EAAE,CAAC,OAAOT,EAAE,OAAOA,CAAC,EAAE,KAAK,OAAM,EAAG,EAAES,CAAC,IAAIoD,EAAE,KAAK,IAAI,EAAE7D,EAAEsB,CAAC,EAAErE,EAAE,KAAK,IAAI,EAAE+C,EAAES,CAAC,CAAC,EAAE,IAAI+jD,EAAE/nB,EAAE,QAAQA,EAAE,QAAQ,SAASz8B,EAAES,EAAE,CAAC,IAAIg8B,EAAE,KAAK,OAAQ,EAACx/B,EAAE,CAAC,CAACw/B,EAAE,EAAEh8B,CAAC,GAAGA,EAAE,GAAGg8B,EAAE,EAAEz8B,CAAC,IAAI6D,EAAE,CAAC,IAAI7C,EAAE,KAAK,QAAO,EAAG,EAAE,OAAO/D,EAAE,KAAK,MAAM,EAAE+D,CAAC,EAAE,QAAQM,CAAC,EAAE,QAAQ,KAAK,EAAE,KAAK,MAAM,EAAEN,EAAE,CAAC,EAAE,MAAMM,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC,OAAOkjD,EAAE,KAAK,IAAI,EAAExkD,EAAES,CAAC,CAAC,CAAC,CAAC,+ECA/vB,SAAST,EAAEsB,EAAE,CAAsD8gE,EAAA,QAAe9gE,EAA0I,CAAA,GAAE+gE,GAAM,UAAU,CAAc,IAAIriE,EAAE,CAAC,IAAI,YAAY,GAAG,SAAS,EAAE,aAAa,GAAG,eAAe,IAAI,sBAAsB,KAAK,2BAA2B,EAAE,OAAO,SAASsB,EAAEN,EAAE6C,EAAE,CAAC,IAAI44B,EAAEz7B,EAAE,UAAUP,EAAEg8B,EAAE,OAAO54B,EAAE,GAAG,QAAQ7D,EAAEy8B,EAAE,OAAO,SAASn7B,EAAE,CAAUA,IAAT,SAAaA,EAAE,wBAAwB,IAAIN,EAAE,KAAK,QAAS,EAAC,QAAQ6C,EAAE,SAASvC,EAAEN,EAAE,CAAC,OAAOM,EAAE,QAAQ,oCAAqC,SAASA,EAAEuC,EAAE44B,EAAE,CAAC,IAAIh8B,EAAEg8B,GAAGA,EAAE,YAAa,EAAC,OAAO54B,GAAG7C,EAAEy7B,CAAC,GAAGz8B,EAAEy8B,CAAC,GAAGz7B,EAAEP,CAAC,EAAE,QAAQ,iCAAkC,SAAST,EAAEsB,EAAEN,EAAE,CAAC,OAAOM,GAAGN,EAAE,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,CAAE,EAAEM,EAAWN,IAAT,OAAW,CAAE,EAACA,CAAC,EAAE,OAAOP,EAAE,KAAK,KAAKoD,CAAC,CAAC,CAAC,CAAC,CAAC,8ECAnyB,SAAS7D,EAAEsB,EAAE,CAAsD8gE,EAAe,QAAA9gE,GAAkI,GAAE+gE,GAAM,UAAU,CAAc,IAAIriE,EAAE,MAAM,OAAO,SAASsB,EAAE,EAAErE,EAAE,CAAC,IAAIlC,EAAE,SAASuG,EAAE,CAAC,OAAOA,EAAE,IAAI,EAAEA,EAAE,aAAatB,CAAC,CAAC,EAAEuD,EAAE,EAAE,UAAUA,EAAE,YAAY,UAAU,CAAC,OAAOxI,EAAE,IAAI,EAAE,KAAM,CAAA,EAAEwI,EAAE,QAAQ,SAASjC,EAAE,CAAC,GAAG,CAAC,KAAK,OAAM,EAAG,EAAEA,CAAC,EAAE,OAAO,KAAK,IAAI,GAAGA,EAAE,KAAK,QAAS,GAAEtB,CAAC,EAAE,IAAIS,EAAE,EAAEoD,EAAE7C,EAAEy7B,EAAE1hC,EAAE,IAAI,EAAEypD,GAAG/jD,EAAE,KAAK,YAAa,EAAC,EAAE,KAAK,GAAGoD,GAAG,EAAE5G,EAAE,IAAIA,GAAI,EAAC,KAAKwD,CAAC,EAAE,QAAQ,MAAM,EAAEO,EAAE,EAAE6C,EAAE,WAAU,EAAGA,EAAE,WAAY,EAAC,IAAI7C,GAAG,GAAG6C,EAAE,IAAI7C,EAAEhB,CAAC,GAAG,OAAOy8B,EAAE,KAAK+nB,EAAE,MAAM,EAAE,CAAC,EAAEjhD,EAAE,WAAW,SAASvD,EAAE,CAAC,OAAO,KAAK,OAAQ,EAAC,EAAEA,CAAC,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,KAAK,IAAG,EAAG,EAAEA,EAAEA,EAAE,CAAC,CAAC,EAAE,IAAI6D,EAAEN,EAAE,QAAQA,EAAE,QAAQ,SAASvD,EAAEsB,EAAE,CAAC,IAAIb,EAAE,KAAK,OAAM,EAAGxD,EAAE,CAAC,CAACwD,EAAE,EAAEa,CAAC,GAAGA,EAAE,OAAkBb,EAAE,EAAET,CAAC,IAAjB,UAAmB/C,EAAE,KAAK,KAAK,KAAK,QAAQ,KAAK,WAAU,EAAG,EAAE,EAAE,QAAQ,KAAK,EAAE,KAAK,KAAK,KAAK,KAAI,EAAG,GAAG,KAAK,aAAa,GAAG,CAAC,EAAE,MAAM,KAAK,EAAE4G,EAAE,KAAK,IAAI,EAAE7D,EAAEsB,CAAC,CAAC,CAAC,CAAC,2CCQn+BuhE,GAAM,OAAO46F,EAAc,EAC3B56F,GAAM,OAAO66F,EAAa,EAC1B76F,GAAM,OAAO86F,EAAe,EAC5B96F,GAAM,OAAO+6F,EAAiB,EAC9B/6F,GAAM,OAAOg7F,EAAO,EACpB,IAAIC,GAAU,CACZ,SAAU,yBACV,YAAa,gBACb,OAAQ,YACR,OAAQ,SACR,KAAM,KACN,IAAK,QACL,KAAM,KACN,MAAO,WACP,QAAS,cACT,KAAM,MACR,EACAC,GAAU,MAAM,SAAS,CAEvB,QAAS,UAAmB,CAC1B,OAAOD,EACR,EACD,MAAO,SAAe/gK,EAAO01D,EAAQ,CACnC,IAAI+hE,EAAY,OAAOz3H,EACvB,OAAIA,IAAU,MAAQy3H,IAAc,YAC3B,KAELA,IAAc,UAAY,OAAO/hE,GAAW,SACvCoQ,GAAM9lE,EAAO01D,CAAM,EAAE,QAAO,EAAKoQ,GAAM9lE,EAAO01D,CAAM,EAAE,QAAS,EAAG,KAC9D11D,aAAiB8lE,GAGvB,KAFEA,GAAM9lE,CAAK,EAAE,QAAO,EAAK8lE,GAAM9lE,CAAK,EAAE,QAAO,EAAK,IAG5D,EACD,OAAQ,SAAgB4F,EAAMq7J,EAAS,CACrC,OAAOn7F,GAAMlgE,CAAI,EAAE,OAAOq7J,CAAO,CAClC,EACD,IAAK,SAAar7J,EAAM4wG,EAAQlwC,EAAM,CACpC,OAAOR,GAAMlgE,CAAI,EAAE,IAAI4wG,EAAQlwC,CAAI,EAAE,QAAS,CAC/C,EACD,KAAM,SAAcppD,EAAKC,EAAKmpD,EAAM,CAClC,OAAOR,GAAM5oD,CAAG,EAAE,KAAK4oD,GAAM3oD,CAAG,EAAGmpD,CAAI,CACxC,EACD,QAAS,SAAiB1gE,EAAM0gE,EAAMwmD,EAAS,CAC7C,GAAIxmD,IAAS,UAAW,CAGtB,IAAI46F,EAAmB,OAAOp0C,GAAY,UAAYA,EAAU,GAAKA,EAAU,EAAIA,EAAU,EAC7F,OAAOhnD,GAAMlgE,CAAI,EAAE,WAAWs7J,CAAgB,EAAE,QAAQ,KAAK,EAAE,QAAS,CAC9E,CACI,OAAOp7F,GAAMlgE,CAAI,EAAE,QAAQ0gE,CAAI,EAAE,QAAS,CAC3C,EACD,MAAO,SAAe1gE,EAAM0gE,EAAM,CAChC,OAAOR,GAAMlgE,CAAI,EAAE,MAAM0gE,CAAI,EAAE,QAAS,CAC5C,CACA,CAAC,ECjDDgmC,GAAM60D,SAAS,GAAGlzC,EAAa,EAE/BK,GAAiB,EAEjB,MAAM5uH,GAAO+O,SAASk/D,eAAe,MAAM,EAC3C9/D,GAAO,IAAAwI,EAAO8pJ,GAAY,CAAA,CAAA,EAAEzgK,EAAK","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,262,263,264,266,267,268,275,285,300,301,302,303,304,305]}
\n Loading version info...>}>\n This is EveBox version {version()?.version} (Rev:{\" \"}\n {version()?.revision}).\n \n
\n Homepage and Documentation:{\" \"}\n https://evebox.org\n
\n GitHub:{\" \"}\n \n http://github.com/jasonish/evebox\n \n
{atob(props.buffer)}
{e[0]}
{e[1]}
{entry.comment}