@nebula.js/cli-serve 8.0.0-alpha.1 → 8.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -12
- package/dist/eRender.js +1 -1
- package/dist/eRender.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/q.js +2 -2
- package/lib/https.js +40 -0
- package/lib/init-config.js +3 -7
- package/lib/rsbuild.serve.js +23 -48
- package/lib/serve.js +40 -61
- package/package.json +9 -8
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["webpack://webpack/runtime/create_fake_namespace_object","webpack://webpack/runtime/load_script","webpack://webpack/runtime/on_chunk_loaded","webpack://webpack/runtime/jsonp_chunk_loading","../web/utils/getCsrfToken.js","../web/connect.js","../web/hooks/useInfo.js","../web/hooks/useConnection.js","../web/storage.js","../web/contexts/RootContext.jsx","../web/hooks/useCachedConnections.js","../../../packages/ui/theme/definitions/base.js","../../../packages/ui/theme/definitions/colors.js","../../../packages/ui/theme/definitions/light.js","../../../packages/ui/theme/definitions/dark.js","../../../packages/ui/theme/create.js","../web/components/ThemeWrapper.jsx","../web/components/Hub/styles.js","../web/constants/connectionSteps.js","../web/components/Hub/ConnectionSteps.jsx","../web/components/Layouts/HubLayout.jsx","../web/components/Hub/SelectEngine/ConnectionGuid.jsx","../../../packages/ui/icons/SvgIcon.jsx","../../../packages/ui/icons/remove.js","../web/constants/optionsToConnect.js","../web/utils/testRenderer.jsx","../web/components/Hub/SelectEngine/ConnectionHistory.jsx","../web/utils/checkIfHistoryConnectionDisabled.js","../web/components/Hub/SelectEngine/Error.jsx","../web/components/Hub/SelectEngine/FormManager.jsx","../web/utils/formUtils.js","../web/components/Hub/SelectEngine/ConnectionOptions.jsx","../web/utils/detectDefaultConnectionStep.js","../web/utils/checkIfConnectionOptionDisabled.js","../web/components/Hub/SelectEngine/SelectEngine.jsx","../web/hooks/useDeauthorizePrevOAuthInstance.js","../web/components/Hub/AppList.jsx","../web/hooks/useAppList.js","../web/utils/appLinkManager.js","../../../apis/nucleus/src/contexts/InstanceContext.js","../../../apis/nucleus/src/stores/create-key-store.js","../web/hot.js","../web/components/Visualize/useProperties.js","../web/contexts/AppContext.js","../../../apis/nucleus/src/object/uid.js","../../../apis/nucleus/src/object/hc-handler.js","../../../apis/nucleus/src/object/lo-handler.js","../../../apis/nucleus/src/object/lo-container-handler.js","../../../apis/nucleus/src/hooks/useModelStore.js","../../../apis/nucleus/src/hooks/useSessionModel.js","../../../apis/nucleus/src/hooks/useRpc.js","../../../apis/nucleus/src/hooks/useLayout.js","../web/hooks/useLibraryList.js","../../../packages/ui/icons/search.js","../web/components/Visualize/Search.jsx","../web/components/Visualize/FieldsPopover.jsx","../web/components/Visualize/property-panel/Fields.jsx","../web/components/Visualize/property-panel/DataCube.jsx","../web/components/Visualize/property-panel/Data.jsx","../web/components/Visualize/property-panel/Variable.jsx","../web/components/Visualize/AutoComponents.jsx","../web/components/Visualize/Properties.jsx","../web/components/Visualize/PropertiesDialog.jsx","../../../apis/nucleus/src/hooks/useRect.js","../web/monaco-setup.js","../web/contexts/VizContext.js","../web/contexts/NebulaContext.js","../web/components/Visualize/Chart.jsx","../web/components/Visualize/Cell.jsx","../web/components/Visualize/Stage.jsx","../web/components/Visualize/Collection.jsx","../web/components/Visualize/Visualize.jsx","../web/hooks/useOpenApp.js","../../../apis/nucleus/src/stores/new-model-store.js","../../../apis/nucleus/src/stores/new-selections-store.js","../web/components/Hub/Errors/OAuthRedirectLinkError.jsx","../web/eHub.jsx","../web/components/Root.jsx","webpack://webpack/runtime/compat_get_default_export","webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/ensure_chunk","webpack://webpack/runtime/esm_module_decorator","webpack://webpack/runtime/get javascript chunk filename","webpack://webpack/runtime/global","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","webpack://webpack/runtime/node_module_decorator","webpack://webpack/runtime/nonce","webpack://webpack/runtime/public_path"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\n\n\n// loadScript function to load a script via script tag\n__webpack_require__.l = function (url, done, key, chunkId) {\n\tif (inProgress[url]) {\n\t\tinProgress[url].push(done);\n\t\treturn;\n\t}\n\tvar script, needAttach;\n\tif (key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor (var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif (s.getAttribute(\"src\") == url) {\n\t\t\t\tscript = s;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\nscript.timeout = 120;\nif (__webpack_require__.nc) {\n script.setAttribute(\"nonce\", __webpack_require__.nc);\n}\n\n\n\nscript.src = url;\n\n\n\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function (prev, event) {\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns &&\n\t\t\tdoneFns.forEach(function (fn) {\n\t\t\t\treturn fn(event);\n\t\t\t});\n\t\tif (prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(\n\t\tonScriptComplete.bind(null, undefined, {\n\t\t\ttype: 'timeout',\n\t\t\ttarget: script\n\t\t}),\n\t\t120000\n\t);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif (chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor (var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--)\n\t\t\tdeferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif (\n\t\t\t\t(priority & (1 === 0) || notFulfilled >= priority) &&\n\t\t\t\tObject.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))\n\t\t\t) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif (priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif (fulfilled) {\n\t\t\tdeferred.splice(i--, 1);\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};\n","__webpack_require__.b = document.baseURI || self.location.href;\n\n // object to store loaded and loading chunks\n // undefined = chunk not loaded, null = chunk preloaded/prefetched\n // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\n var jsonpInstalledChunks = {\"qz\": 0,};\n \n __webpack_require__.f.j = function (chunkId, promises) {\n // JSONP chunk loading for javascript\nvar installedChunkData = __webpack_require__.o(jsonpInstalledChunks, chunkId)\n\t? jsonpInstalledChunks[chunkId]\n\t: undefined;\nif (installedChunkData !== 0) {\n\t// 0 means \"already installed\".\n\n\t// a Promise means \"currently loading\".\n\tif (installedChunkData) {\n\t\tpromises.push(installedChunkData[2]);\n\t} else {\n\t\tif (true) {\n\t\t\t// setup Promise in chunk cache\n\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = jsonpInstalledChunks[chunkId] = [resolve, reject]));\n\t\t\tpromises.push((installedChunkData[2] = promise));\n\n\t\t\t// start chunk loading\n\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\tvar error = new Error();\n\t\t\tvar loadingEnded = function (event) {\n\t\t\t\tif (__webpack_require__.o(jsonpInstalledChunks, chunkId)) {\n\t\t\t\t\tinstalledChunkData = jsonpInstalledChunks[chunkId];\n\t\t\t\t\tif (installedChunkData !== 0) jsonpInstalledChunks[chunkId] = undefined;\n\t\t\t\t\tif (installedChunkData) {\n\t\t\t\t\t\tvar errorType =\n\t\t\t\t\t\t\tevent && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\terror.message =\n\t\t\t\t\t\t\t'Loading chunk ' +\n\t\t\t\t\t\t\tchunkId +\n\t\t\t\t\t\t\t' failed.\\n(' +\n\t\t\t\t\t\t\terrorType +\n\t\t\t\t\t\t\t': ' +\n\t\t\t\t\t\t\trealSrc +\n\t\t\t\t\t\t\t')';\n\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t} \n\t}\n}\n\n }\n __webpack_require__.O.j = (chunkId) => (jsonpInstalledChunks[chunkId] === 0);\n// install a JSONP callback for chunk loading\nvar __rspack_jsonp = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif (chunkIds.some((id) => (jsonpInstalledChunks[id] !== 0))) {\n\t\tfor (moduleId in moreModules) {\n\t\t\tif (__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif (runtime) var result = runtime(__webpack_require__);\n\t}\n\tif (parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor (; i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif (\n\t\t\t__webpack_require__.o(jsonpInstalledChunks, chunkId) &&\n\t\t\tjsonpInstalledChunks[chunkId]\n\t\t) {\n\t\t\tjsonpInstalledChunks[chunkId][0]();\n\t\t}\n\t\tjsonpInstalledChunks[chunkId] = 0;\n\t}\n\t\n\treturn __webpack_require__.O(result);\n\t\n};\n\nvar jsonpChunkLoadingGlobal = self[\"rspackChunk\"] = self[\"rspackChunk\"] || [];\njsonpChunkLoadingGlobal.forEach(__rspack_jsonp.bind(null, 0));\njsonpChunkLoadingGlobal.push = __rspack_jsonp.bind(null, jsonpChunkLoadingGlobal.push.bind(jsonpChunkLoadingGlobal));\n","export default async function getCsrfToken(host) {\n try {\n const res = await fetch(`${host}/qps/csrftoken`, { credentials: 'include' });\n const token = res.headers.get('QLIK-CSRF-TOKEN');\n if (token) {\n return token;\n }\n return '';\n } catch (err) {\n console.log('Failed to fetch csrf-token', err);\n }\n return '';\n}\n","import enigma from 'enigma.js';\nimport qixSchema from 'enigma.js/schemas/12.2015.0.json';\nimport auth from '@qlik/api/auth';\nimport { getItems } from '@qlik/api/items';\nimport { openAppSession } from '@qlik/api/qix';\nimport getCsrfToken from './utils/getCsrfToken';\n\nconst getParams = () => {\n const opts = {};\n window.location.search\n .substring(1)\n .split('&')\n .forEach((pair) => {\n const idx = pair.indexOf('=');\n const name = pair.substr(0, idx);\n let value = decodeURIComponent(pair.substring(idx + 1));\n if (name === 'cols') {\n value = value.split(',');\n }\n opts[name] = value;\n });\n return opts;\n};\n\n// These URLS are fully constructed later using the sdk\n// QCS: wss://<tenant-url>.<region>.qlikcloud.com/app/<app-GUID>\n// QSEoW: wss://<host>/<virtual-proxy-prefix>/app/<app-GUID>\n\n// matches the wss://<host>/<virtual-proxy-prefix>/\nconst urlRegex = /(wss?):\\/\\/([^/:?&]+)(?::(\\d+))?/;\nconst appRegex = /\\/app\\/([^?&#:]+)/;\n// The prefix must be unique for all virtual proxies used by the same proxy service,\n// as this differentiates the virtual proxies and will be a part of the URL (https://[node]/[prefix]/).\n// Valid characters for prefix are \"a-z\", \"0-9\", \"-\", \".\", \"_\", \"~\".\nconst prefixRegx = /(wss?):\\/\\/([^/:?&]+)(?::(\\d+))?\\/?([a-z0-9-._~]+)?/;\n\nconst parseEngineURL = (url) => {\n const match = urlRegex.exec(url);\n if (!match) {\n return {\n engineUrl: url,\n invalid: true,\n };\n }\n\n let appId;\n const trimmedUrl = url.trim();\n let engineUrl = trimmedUrl;\n let appUrl;\n\n const appMatch = appRegex.exec(trimmedUrl);\n\n if (appMatch) {\n [, appId] = appMatch;\n engineUrl = trimmedUrl.substring(0, appMatch.index);\n appUrl = trimmedUrl;\n }\n\n const engineMatch = prefixRegx.exec(engineUrl);\n\n if (!engineMatch) {\n return {\n engineUrl: url,\n invalid: true,\n };\n }\n return {\n engine: {\n secure: match[1] === 'wss',\n host: match[2],\n port: match[3] || undefined,\n prefix: engineMatch[4] || undefined,\n appId,\n },\n engineUrl,\n appUrl,\n };\n};\n\nconst getConnectionInfo = () =>\n fetch('/info')\n .then((response) => response.json())\n .then(async (n) => {\n let info = n;\n const params = getParams();\n if (params.engine_url) {\n info = {\n ...info,\n // TODO:\n // instead of calling \"/info\" and then parsing url inside of `getConnectionInfo()`\n // we can have a hook which listens on location.search and provides this information for us\n ...parseEngineURL(params.engine_url),\n };\n } else if (params.app) {\n info = {\n ...info,\n engine: {\n ...info.engine,\n appId: params.app,\n },\n };\n }\n if (params['qlik-web-integration-id']) {\n info.webIntegrationId = params['qlik-web-integration-id'];\n }\n if (params['qlik-client-id']) {\n info.clientId = params['qlik-client-id'];\n }\n if (info.invalid) {\n return info;\n }\n const rootPath = `${info.engine.secure ? 'https' : 'http'}://${info.engine.host}`;\n return {\n ...info,\n rootPath,\n };\n });\n\nconst setHostConfig = ({ webIntegrationId, clientId, host }) => {\n if (webIntegrationId) {\n auth.setDefaultHostConfig({ authType: 'cookie', webIntegrationId, host });\n } else if (clientId) {\n auth.setDefaultHostConfig({\n authType: 'oauth2',\n clientId,\n host,\n redirectUri: `${window.location.origin}/auth/login/callback`,\n accessTokenStorage: 'session',\n });\n }\n};\n\nconst buildDocList = async () => {\n try {\n const response = await getItems({ resourceType: 'app', limit: 30, sort: '-updatedAt' });\n const { data = [] } = response.data;\n return data.map((d) => ({ qDocId: d.resourceId, qTitle: d.name }));\n } catch (error) {\n throw new Error('Failed to fetch app list', { cause: error });\n }\n};\n\nconst connect = async () => {\n try {\n const {\n clientId,\n webIntegrationId,\n engine: engineConfig,\n engine: { host },\n } = await getConnectionInfo();\n\n if (webIntegrationId) {\n setHostConfig({ webIntegrationId, host });\n return {\n getDocList: buildDocList,\n getConfiguration: async () => ({}),\n };\n }\n\n if (clientId) {\n setHostConfig({ clientId, host });\n return {\n getDocList: buildDocList,\n getConfiguration: async () => ({}),\n };\n }\n\n const csrfToken = await getCsrfToken(\n `https://${engineConfig.host}${engineConfig.prefix ? `/${engineConfig.prefix}` : ''}`\n );\n const scheme = engineConfig.secure !== false ? 'wss' : 'ws';\n const port = engineConfig.port ? `:${engineConfig.port}` : '';\n const prefix = engineConfig.prefix ? `/${engineConfig.prefix}` : '';\n const url = `${scheme}://${engineConfig.host}${port}${prefix}?qlik-csrf-token=${csrfToken}`;\n\n return enigma.create({ schema: qixSchema, url }).open();\n } catch (error) {\n throw new Error('Failed to return enigma instance', { cause: error });\n }\n};\n\n// Builds a qlik-api compatible host config from the connection info\nconst getHostConfig = ({ clientId, webIntegrationId, engine: { host, port, secure } }) => {\n if (webIntegrationId) {\n return { authType: 'cookie', webIntegrationId, host };\n }\n\n if (clientId) {\n return {\n authType: 'oauth2',\n clientId,\n host,\n redirectUri: `${window.location.origin}/auth/login/callback`,\n accessTokenStorage: 'session',\n };\n }\n\n // Local / no-auth engine (e.g. qlik-core, docker engine)\n const scheme = secure !== false ? 'https' : 'http';\n return { authType: 'noauth', host: `${scheme}://${host}${port ? `:${port}` : ''}` };\n};\n\nconst openApp = async (id) => {\n try {\n const info = await getConnectionInfo();\n return openAppSession({ appId: id, hostConfig: getHostConfig(info) }).getDoc();\n } catch (error) {\n throw new Error('Failed to open app!', { cause: error });\n }\n};\n\nexport { connect, openApp, getParams, getConnectionInfo, getHostConfig, setHostConfig, parseEngineURL };\n","import { useState, useEffect } from 'react';\nimport { getConnectionInfo } from '../connect';\n\nexport const useInfo = () => {\n const [info, setInfo] = useState();\n\n useEffect(() => {\n getConnectionInfo().then((i) => {\n setInfo(i);\n });\n }, []);\n\n return { info, setInfo };\n};\n","import { useState, useEffect } from 'react';\nimport { useLocation } from 'react-router';\nimport { connect } from '../connect';\n\nexport const useConnection = ({ info, cachedConnectionsData }) => {\n const location = useLocation();\n const [glob, setGlobal] = useState();\n const [treatAsDesktop, setTreatAsDesktop] = useState(false);\n const [error, setError] = useState();\n const [activeStep, setActiveStep] = useState(0);\n\n useEffect(() => {\n if (location.pathname === '/' || !info || !info.engineUrl) return;\n\n if (info.invalid) {\n setError({\n message: 'Connection failed',\n hints: ['The WebSocket URL is not valid.'],\n });\n return;\n }\n\n connect()\n .then((result) => handleConnectionSuccess({ result, setGlobal, setError, setTreatAsDesktop }))\n .then(() => cachedConnectionsData.addCachedConnections({ info }))\n .catch((err) => handleConnectionFailure({ error: err, info, setError }));\n }, [info, location.pathname]);\n\n return { glob, setGlobal, treatAsDesktop, setTreatAsDesktop, error, setError, activeStep, setActiveStep };\n};\n\nexport const handleConnectionSuccess = async ({ result, setGlobal, setTreatAsDesktop, setError }) => {\n handleSessionNotification({ result, setError, setGlobal });\n setGlobal(result);\n if (!result.getDocList) return;\n try {\n const config = await result.getConfiguration();\n if (config && config.qFeatures && config.qFeatures.qIsDesktop) setTreatAsDesktop(true);\n } catch (error) {\n throw new Error('Failed to get configuration');\n }\n};\n\nexport const handleConnectionFailure = ({ error, info, setError }) => {\n const oops = {\n message: 'Something went wrong, check the devtools console',\n hints: [],\n };\n if (error.target instanceof WebSocket) {\n oops.message = `Connection failed to ${info.engineUrl}`;\n if (/\\.qlik[A-Za-z0-9-]+\\.com/.test(info.engineUrl) && !info.webIntegrationId) {\n oops.hints.push('- If you are connecting to Qlik Cloud, make sure to provide a web integration id or client id.');\n oops.hints.push(\n '- For Qlik Sense on Windows, make sure the proxy setup is correct and that you are authenticated.'\n );\n oops.hints.push('- Press the ? in the top right for more information on how to set up the connection correctly.');\n }\n setError(oops);\n return;\n }\n setError(oops);\n console.error(error);\n};\n\nexport const handleSessionNotification = ({ result, setError, setGlobal }) => {\n if (result.session) {\n result.session.on('notification:OnAuthenticationInformation', (e) => {\n if (e.mustAuthenticate) {\n setError({\n message: 'Could not authenticate.',\n hints: [\n `In your virtual proxy advanced settings in the QMC, make sure to whitelist ${window.location.host}, ensure \"Has secure attribute\" is enabled and that \"SameSite attribute\" is set to \"None\".`,\n ],\n });\n setGlobal(null);\n }\n });\n }\n};\n","const storageFn = (app) => {\n const stored = window.localStorage.getItem('nebula-dev');\n const parsed = stored ? JSON.parse(stored) : {};\n const appid = app?.id;\n\n const s = {\n save(name, value) {\n parsed[name] = value;\n window.localStorage.setItem('nebula-dev', JSON.stringify(parsed));\n },\n get(name) {\n return parsed[name];\n },\n props(name, v) {\n if (v) {\n s.save(`props:${appid}:${name}`, JSON.stringify(v));\n return undefined;\n }\n const p = s.get(`props:${appid}:${name}`);\n return p ? JSON.parse(p) : {};\n },\n };\n\n return s;\n};\n\nexport default storageFn;\n","import React, { useMemo, createContext, useContext, useEffect } from 'react';\nimport { useLocation, useNavigate } from 'react-router';\nimport { useInfo, useConnection, useCachedConnections } from '../hooks';\nimport storageFn from '../storage';\n\nexport const rootContextInitialValue = {\n info: {},\n};\n\nexport const RootContext = createContext(rootContextInitialValue);\n\nexport const useRootContext = () => {\n const ctx = useContext(RootContext);\n if (!ctx) throw new Error('RootContext not defined!');\n return ctx;\n};\n\nexport const RootContextProvider = ({ children }) => {\n const location = useLocation();\n const navigate = useNavigate();\n const storage = useMemo(() => storageFn({}), []);\n const { info, setInfo } = useInfo();\n const cachedConnectionsData = useCachedConnections({ storage });\n const connectionData = useConnection({ info, cachedConnectionsData });\n\n useEffect(() => {\n if (connectionData.error) navigate('/');\n\n if (location.pathname === '/') {\n connectionData.setActiveStep(0);\n connectionData.setGlobal();\n connectionData.setTreatAsDesktop(false);\n }\n }, [location.pathname, connectionData.error]);\n\n const rootContextValue = useMemo(\n () => ({ info, setInfo, ...connectionData, storage, cachedConnectionsData }),\n [info, setInfo, connectionData, storage, cachedConnectionsData]\n );\n\n return <RootContext.Provider value={rootContextValue}>{children}</RootContext.Provider>;\n};\n","import { useState } from 'react';\n\nexport const useCachedConnections = ({ storage }) => {\n const [cachedConnections, setCachedConnections] = useState(storage.get('connections') || []);\n\n const removeCachedConnection = (li) => {\n const idx = cachedConnections.indexOf(li);\n if (li !== -1) {\n const conns = cachedConnections.slice();\n conns.splice(idx, 1);\n storage.save('connections', conns);\n setCachedConnections(conns);\n }\n };\n\n const addCachedConnections = ({ info }) => {\n let url = '';\n const protocol = info.engine.secure ? 'wss' : 'ws';\n const host = info.engine.host === 'localhost' ? `${info.engine.host}:${info.engine.port}` : info.engine.host;\n const prefix = info.engine.prefix ? `/${info.engine.prefix}` : '';\n const engineUrl = `${protocol}://${host}${prefix}`;\n\n if (info.clientId) {\n url = `${engineUrl}/?qlik-client-id=${info.clientId}`;\n } else if (info.webIntegrationId) {\n url = `${engineUrl}/?qlik-web-integration-id=${info.webIntegrationId}`;\n } else {\n url = engineUrl;\n }\n if (cachedConnections.indexOf(url) === -1 && url.length !== 0) {\n const newConns = [...cachedConnections, url];\n storage.save('connections', newConns);\n setCachedConnections(newConns);\n }\n };\n\n return { cachedConnections, removeCachedConnection, addCachedConnections };\n};\n","export default {\n typography: {\n fontSize: 14,\n htmlFontSize: 16,\n fontWeightLight: 300,\n fontWeightRegular: 400,\n fontWeightMedium: 600,\n fontFamily: ['\"Source Sans Pro\"', '\"Segoe UI\"', '\"Helvetica Neue\"', '-apple-system', 'Arial', 'sans-serif'].join(\n ','\n ),\n button: {\n textTransform: 'initial',\n fontWeight: 400,\n },\n },\n shape: {\n borderRadius: 2,\n },\n shadows: [\n 'none',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n ],\n};\n","const colors = {\n green: '#00873D',\n greenPale: '#0AAF54',\n red: '#DC423F',\n redPale: '#F05551',\n blue: '#3F8AB3',\n bluePale: '#469DCD',\n blueDark: '#005DB9',\n\n // greyscale\n grey100: '#ffffff',\n grey98: '#FBFBFB',\n grey95: '#F2F2F2',\n grey90: '#E6E6E6',\n grey85: '#D9D9D9',\n\n grey55: '#8C8C8C',\n\n grey45: '#737373',\n grey30: '#4D4D4D',\n grey25: '#404040',\n grey20: '#333333',\n grey15: '#262626',\n grey10: '#1A1A1A',\n grey5: '#0E0E0E',\n grey0: '#000000',\n};\n\nexport default colors;\n","import colors from './colors';\n\nconst light = {\n mode: 'light',\n palette: {\n primary: {\n main: colors.grey25,\n contrastText: colors.grey100,\n },\n secondary: {\n light: '#0AAF54',\n main: '#009845',\n dark: '#006937',\n },\n text: {\n primary: colors.grey25,\n secondary: 'rgba(0, 0, 0, 0.55)',\n disabled: 'rgba(0, 0, 0, 0.3)',\n light: colors.grey100,\n dark: colors.grey0,\n },\n action: {\n active: '#545454', // color for actionable things like icon buttons\n hover: 'rgba(0, 0, 0, 0.03)', // color for hoverable things like list items\n hoverOpacity: 0.08, // used to fade primary/secondary colors\n selected: 'rgba(0, 0, 0, 0.05)', // focused things like list items\n disabled: 'rgba(0, 0, 0, 0.3)', // usually text\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n },\n background: {\n paper: colors.grey100,\n default: colors.grey100,\n // -- custom properties --\n lightest: colors.grey100,\n lighter: colors.grey98,\n darker: colors.grey95,\n darkest: colors.grey90,\n },\n // --- custom stuff ---\n custom: {\n whiteBorder: 'rgb(255, 255, 255)',\n newFocusBorder: colors.blueDark,\n focusBorder: colors.blue,\n focusOutline: 'rgba(70, 157, 205, 0.3)',\n inputBackground: 'rgba(255, 255, 255, 1)',\n disabledBackground: colors.grey45,\n disabledContrastText: colors.grey100,\n },\n selected: {\n main: colors.green,\n alternative: '#E4E4E4',\n excluded: '#BEBEBE',\n selectedExcluded: '#BEBEBE',\n possible: colors.grey100,\n selectedContrastText: colors.grey100,\n mainContrastText: colors.grey100,\n alternativeContrastText: colors.grey25,\n excludedContrastText: colors.grey25,\n selectedExcludedContrastText: colors.grey100,\n possibleContrastText: colors.grey0,\n },\n btn: {\n normal: 'rgba(255, 255, 255, 0.6)',\n hover: 'rgba(0, 0, 0, 0.03)',\n active: 'rgba(0, 0, 0, 0.1)',\n disabled: 'rgba(255, 255, 255, 0.6)',\n border: 'rgba(0, 0, 0, 0.15)',\n borderHover: 'rgba(0, 0, 0, 0.15)',\n },\n },\n};\n\nexport default light;\n","import colors from './colors';\n\nconst dark = {\n mode: 'dark',\n palette: {\n primary: {\n main: colors.grey20,\n contrastText: colors.grey100,\n },\n secondary: {\n light: '#0AAF54',\n main: '#009845',\n dark: '#006937',\n },\n text: {\n primary: colors.grey100,\n secondary: 'rgba(255, 255, 255, 0.6)',\n disabled: 'rgba(255, 255, 255, 0.3)',\n light: colors.grey100,\n dark: colors.grey0,\n },\n action: {\n // active: 'rgba(0, 0, 0, 0.55)',\n active: colors.grey100,\n hover: 'rgba(255, 255, 255, 0.05)',\n hoverOpacity: 0.08,\n selected: 'rgba(0, 0, 0, 0.03)',\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n },\n divider: 'rgba(0,0,0,0.3)',\n background: {\n default: '#323232',\n paper: '#323232',\n // -- custom properties --\n lightest: colors.grey25,\n lighter: colors.grey20,\n darker: colors.grey15,\n darkest: colors.grey10,\n },\n // -- custom --\n custom: {\n whiteBorder: 'rgb(255, 255, 255)',\n newFocusBorder: colors.blueDark,\n focusBorder: colors.blue,\n focusOutline: 'rgba(70, 157, 205, 0.3)',\n inputBackground: 'rgba(0, 0, 0, 0.2)',\n disabledBackground: colors.grey45,\n disabledContrastText: colors.grey100,\n },\n selected: {\n main: colors.green,\n alternative: colors.grey20,\n excluded: colors.grey10,\n selectedExcluded: colors.grey10,\n possible: colors.grey80,\n selectedContrastText: colors.grey100,\n mainContrastText: colors.grey100,\n alternativeContrastText: colors.grey100,\n excludedContrastText: colors.grey100,\n selectedExcludedContrastText: colors.grey100,\n possibleContrastText: colors.grey0,\n },\n btn: {\n normal: 'rgba(255, 255, 255, 0.15)',\n hover: 'rgba(255, 255, 255, 0.25)',\n active: 'rgba(0, 0, 0, 0.6)',\n disabled: 'rgba(255, 255, 255, 0.15)',\n border: 'rgba(0, 0, 0, 0.15)',\n borderHover: 'rgba(0, 0, 0, 0.30)',\n },\n },\n};\n\nexport default dark;\n","import { createTheme } from '@mui/material/styles';\nimport { buttonClasses } from '@mui/material/Button';\n\nimport base from './definitions/base';\nimport light from './definitions/light';\nimport dark from './definitions/dark';\n\nconst cache = {};\n\nconst componentOverrides = (theme) => ({\n MuiCheckbox: {\n defaultProps: {\n color: 'secondary',\n },\n },\n MuiRadio: {\n defaultProps: {\n color: 'secondary',\n },\n },\n MuiTabs: {\n defaultProps: {\n indicatorColor: 'secondary',\n },\n },\n MuiTypography: {\n styleOverrides: {\n root: {\n color: theme.palette.text.primary,\n },\n },\n },\n MuiGrid: {\n styleOverrides: {\n variants: [\n {\n props: { alignItems: 'center' },\n style: {\n 'align-items': 'center',\n },\n },\n ],\n },\n },\n MuiButtonBase: {\n defaultProps: {\n disableRipple: true,\n disableTouchRipple: true,\n focusRipple: false,\n },\n styleOverrides: {\n root: {\n borderRadius: 2,\n border: '1px solid transparent',\n // should ideally use $focusVisible, but that messes up focus in all other places where Iconbutton is used (Checkbox, Switch etc)\n '&.Mui-focused': {\n borderColor: theme.palette.custom.focusBorder,\n boxShadow: `0 0 0 2px ${theme.palette.custom.focusOutline}`,\n },\n },\n },\n },\n MuiIconButton: {\n styleOverrides: {\n root: {\n padding: 7,\n borderRadius: 2,\n border: '1px solid transparent',\n '&:hover': {\n backgroundColor: theme.palette.btn.hover,\n },\n '&.Mui-focusVisible': {\n borderColor: theme.palette.custom.focusBorder,\n boxShadow: `0 0 0 2px ${theme.palette.custom.focusOutline}`,\n },\n '&.Mui-active': {\n borderColor: 'transparent',\n boxShadow: 'none',\n backgroundColor: theme.palette.btn.active,\n },\n '&:not(.Mui-active):not(.Mui-focusVisible)': {\n borderColor: 'transparent',\n boxShadow: 'none',\n },\n },\n },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n backgroundColor: theme.palette.custom.inputBackground,\n '&:hover .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.btn.border,\n },\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.custom.focusBorder,\n borderWidth: 2,\n },\n },\n },\n },\n MuiButton: {\n styleOverrides: {\n outlined: {\n padding: '3px 11px',\n [`&.${buttonClasses.focusVisible}`]: {\n borderColor: theme.palette.custom.focusBorder,\n boxShadow: `0 0 0 2px ${theme.palette.custom.focusOutline}`,\n },\n },\n contained: {\n color: theme.palette.text.primary,\n padding: '3px 11px',\n border: `1px solid ${theme.palette.btn.border}`,\n backgroundColor: theme.palette.btn.normal,\n boxShadow: 'none',\n [`&.${buttonClasses.focusVisible}`]: {\n borderColor: theme.palette.custom.focusBorder,\n boxShadow: `0 0 0 2px ${theme.palette.custom.focusOutline}`,\n },\n '&:hover': {\n backgroundColor: theme.palette.btn.hover,\n borderColor: theme.palette.btn.borderHover,\n boxShadow: 'none',\n [`&.${buttonClasses.disabled}`]: {\n backgroundColor: theme.palette.btn.disabled,\n },\n },\n '&.Mui-active': {\n boxShadow: 'none',\n backgroundColor: theme.palette.btn.active,\n },\n [`&.${buttonClasses.disabled}`]: {\n backgroundColor: theme.palette.btn.disabled,\n },\n },\n },\n },\n MuiAccordionSummary: {\n styleOverrides: {\n content: {\n margin: '8px 0',\n },\n },\n },\n});\n\nexport default function create(definition) {\n let def = light;\n let name = '';\n if (typeof definition === 'string') {\n name = definition;\n if (definition !== 'light' && definition !== 'dark') {\n console.warn(`Invalid theme: '${definition}'`);\n } else if (definition === 'dark') {\n def = dark;\n }\n }\n\n const key = JSON.stringify(def);\n if (cache[key]) {\n return cache[key];\n }\n\n const withDefaults = {\n palette: {\n type: def.mode,\n ...base.palette,\n ...def.palette,\n },\n typography: {\n ...base.typography,\n },\n shadows: base.shadows,\n shape: {\n ...base.shape,\n },\n };\n\n const adaptedTheme = {\n ...withDefaults,\n components: componentOverrides(withDefaults),\n };\n\n cache[key] = createTheme(adaptedTheme);\n\n cache[key].name = name;\n\n return cache[key];\n}\n","import React, { useMemo } from 'react';\nimport Container from '@mui/material/Container';\nimport { createTheme, ThemeProvider, StyledEngineProvider } from '@nebula.js/ui/theme';\n\nexport const ThemeWrapper = ({ themeName, children }) => {\n const theme = useMemo(() => createTheme(themeName), [themeName]);\n\n return (\n <StyledEngineProvider injectFirst>\n <ThemeProvider theme={theme}>\n <Container maxWidth=\"md\">{children}</Container>\n </ThemeProvider>\n </StyledEngineProvider>\n );\n};\n","import Box from '@mui/material/Box';\nimport { styled } from '@mui/system';\nimport Stepper from '@mui/material/Stepper';\nimport StepLabel from '@mui/material/StepLabel';\n\nexport const ContentWrapper = styled(Box)(({ theme, marginTop = 0 }) => ({\n position: 'relative',\n padding: theme.spacing(2, 2),\n backgroundColor: 'white',\n borderRadius: theme.spacing(1),\n marginTop: theme.spacing(marginTop),\n}));\n\nexport const StepperWrapper = styled(Stepper)(({ theme }) => ({\n backgroundColor: 'transparent',\n padding: theme.spacing(3),\n}));\n\nexport const CustomStepLabel = styled(StepLabel, {\n shouldForwardProp: (prop) => prop !== 'shouldBePointer',\n})(({ shouldBePointer = false }) => ({\n cursor: shouldBePointer ? 'pointer' : 'default',\n}));\n","export const steps = ['Connect to engine', 'Select app', 'Develop'];\n","import React from 'react';\nimport Step from '@mui/material/Step';\nimport { useNavigate } from 'react-router';\nimport { ThemeWrapper } from '../ThemeWrapper';\nimport { StepperWrapper, CustomStepLabel } from './styles';\nimport { steps } from '../../constants/connectionSteps';\n\nimport { useRootContext } from '../../contexts/RootContext';\n\nconst ConnectionSteps = () => {\n const navigate = useNavigate();\n const { activeStep, glob, error, setError } = useRootContext();\n\n const handleStepperClick = () => {\n if (!(glob || error)) return;\n setError();\n navigate('/');\n };\n\n return (\n <ThemeWrapper themeName=\"dark\">\n <StepperWrapper alternativeLabel activeStep={activeStep}>\n {steps.map((label, i) => (\n <Step key={label}>\n <CustomStepLabel onClick={handleStepperClick} shouldBePointer={glob || error} error={!!error && !i}>\n {label}\n </CustomStepLabel>\n </Step>\n ))}\n </StepperWrapper>\n </ThemeWrapper>\n );\n};\n\nexport default ConnectionSteps;\n","import React from 'react';\nimport { Outlet } from 'react-router';\nimport ConnectionSteps from '../Hub/ConnectionSteps';\nimport { ThemeWrapper } from '../ThemeWrapper';\n\nconst HubLayout = () => (\n <ThemeWrapper>\n <ConnectionSteps />\n <Outlet />\n </ThemeWrapper>\n);\n\nexport default HubLayout;\n","import React from 'react';\nimport Link from '@mui/material/Link';\nimport Collapse from '@mui/material/Collapse';\nimport Typography from '@mui/material/Typography';\n\nconst ConnectionGuid = ({ showGuid }) => (\n <Collapse in={showGuid}>\n <Typography variant=\"h6\" gutterBottom style={{ marginTop: '1rem' }}>\n WebSocket URL\n </Typography>\n <Typography variant=\"body2\" paragraph>\n The development server needs to connect to and communicate with the Qlik Associative Engine running within any of\n Qlik's product offerings. The connection is done through the WebSocket protocol using a WebSocket URL format\n that differs slightly between products. Enter the WebSocket URL that corresponds to the Qlik product you are\n using.\n </Typography>\n\n <Typography variant=\"subtitle1\" gutterBottom>\n Qlik Cloud Services\n </Typography>\n <Typography variant=\"body2\" paragraph>\n <b>Web integration id format:</b>\n There are two ways in order to connect through WebSocket:\n <br />\n 1. <code>qlik-web-integration-id</code>\n <br />\n 2. <code>qlik-client-id</code>\n <br />\n <br />\n <b>Web integration id:</b>\n <br />\n <code>wss://<tenant>.<region>.qlikcloud.com?qlik-web-integration-id=<web-integration-id></code>\n <br />\n Example: <code>wss://qlik.eu.qlikcloud.com?qlik-web-integration-id=xxx</code>\n <br />\n <br />\n For more info, visit{' '}\n <Link\n color=\"secondary\"\n underline=\"always\"\n href=\"https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/mc-adminster-web-integrations.htm\"\n >\n Managing web integrations\n </Link>\n .\n </Typography>\n <Typography variant=\"body2\" paragraph>\n <b>OAuth Client ID URL format:</b>\n <br />\n <code>wss://<tenant>.<region>.qlikcloud.com?qlik-client-id=<client-id></code>\n <br />\n Example: <code>wss://qlik.eu.qlikcloud.com?qlik-client-id=xxx</code>\n <br />\n Redirect URL form: <code>http://localhost:8000/auth/login/callback</code>\n <br />\n The <code>qlik-web-integration-id</code> <b>OR</b> <code>qlik-client-id</code> must be present in order for QCS to\n confirm that the request originates from a whitelisted domain.\n <br />\n <br />\n </Typography>\n <Typography variant=\"subtitle1\" gutterBottom>\n Qlik Sense on Windows\n </Typography>\n <Typography variant=\"body2\" paragraph>\n WebSocket URL format: <code>wss://<sense-host.com>/<virtual-proxy-prefix></code>\n <br />\n Example: <code>wss://mycompany.com/bi</code>\n <br />\n <br />\n Note that for the Qlik Sense Proxy to allow sessions from this webpage,\n <code>{window.location.host}</code> needs to be whitelisted in QMC in your Qlik Sense on Windows deployment. In\n addition, you need to enable <i>Has secure attribute</i> and set <i>SameSite attribute</i> to <i>None</i>.\n <br />\n Also some "Additional reponse headers" needs to align with the whitelisted domain:\n <ul>\n <li>\n Access-Control-Allow-Origin: <code>{window.location.host}</code>\n </li>\n <li>Access-Control-Allow-Credentials: true</li>\n <li>Access-Control-Expose-Headers: qlik-csrf-token</li>\n </ul>\n Make sure you are logged in to Qlik Sense in another browser tab.\n </Typography>\n <Typography variant=\"subtitle1\" gutterBottom>\n Qlik Sense Desktop\n </Typography>\n <Typography variant=\"body2\" paragraph>\n WebSocket URL format: <code>ws://localhost:4848</code>\n </Typography>\n </Collapse>\n);\n\nexport default ConnectionGuid;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\n\nfunction getFontSize(size) {\n if (size === 'large') {\n return '20px';\n }\n if (size === 'small') {\n return '12px';\n }\n return '16px';\n}\n\nexport default function SvgIcon({ size, style = {}, viewBox = '0 0 16 16', shapes = [] }) {\n const s = {\n fontSize: getFontSize(size),\n display: 'inline-block',\n fontStyle: 'normal',\n lineHeight: '0',\n textAlign: 'center',\n textTransform: 'none',\n verticalAlign: '-.125em',\n textRendering: 'optimizeLegibility',\n WebkitFontSmoothing: 'antialiased',\n MozOsxFontSmoothing: 'grayscale',\n ...style,\n };\n return (\n <i style={s}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox={viewBox} fill=\"currentColor\">\n {shapes.map(({ type: Type, attrs }, ix) => (\n // eslint-disable-next-line react/no-array-index-key\n <Type key={ix} {...attrs} />\n ))}\n </svg>\n </i>\n );\n}\n","import SvgIcon from './SvgIcon';\n\nconst remove = (props) => ({\n ...props,\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M9.41421356,8 L11.8890873,5.52512627 C12.065864,5.34834957 12.0305087,4.95944084 11.8183766,4.74730881 L11.2526912,4.18162338 C11.0405592,3.96949135 10.6516504,3.93413601 10.4748737,4.1109127 L8,6.58578644 L5.52512627,4.1109127 C5.34834957,3.93413601 4.95944084,3.96949135 4.74730881,4.18162338 L4.25233406,4.67659813 C3.96949135,4.95944084 3.93413601,5.34834957 4.1109127,5.52512627 L6.58578644,8 L4.1109127,10.4748737 C3.93413601,10.6516504 3.96949135,11.0405592 4.18162338,11.2526912 L4.67659813,11.7476659 C4.95944084,12.0305087 5.34834957,12.065864 5.52512627,11.8890873 L8,9.41421356 L10.4748737,11.8890873 C10.6516504,12.065864 11.0405592,12.0305087 11.2526912,11.8183766 L11.8183766,11.2526912 C12.0305087,11.0405592 12.065864,10.6516504 11.8890873,10.4748737 L9.41421356,8 Z M8,0 C12.4,0 16,3.6 16,8 C16,12.4 12.4,16 8,16 C3.6,16 0,12.4 0,8 C0,3.6 3.6,0 8,0 Z',\n },\n },\n ],\n});\nexport default (props) => SvgIcon(remove(props));\nexport { remove };\n","export const OptionsToConnect = [\n { id: 0, label: 'Local Engine', formFields: ['Engine WebSocket URL'] },\n { id: 1, label: 'Web Integration Id', formFields: ['Engine WebSocket URL', 'Web Integration Id'] },\n { id: 2, label: 'Client Id', formFields: ['Engine WebSocket URL', 'Client Id'] },\n];\n","import React from 'react';\nimport { render } from '@testing-library/react';\nimport userEvents from '@testing-library/user-event';\nimport { createTheme, ThemeProvider } from '@nebula.js/ui/theme';\n\nimport { RootContext } from '../contexts/RootContext';\n\nconst theme = createTheme('light');\n\nexport function TestRenderer(component, contextValuesOverride) {\n const contextValue = {\n // context values\n storage: () => {},\n\n // useInfo result\n info: {},\n setInfo: () => {},\n\n // useConnection result\n glob: {},\n setGlobal: () => {},\n treatAsDesktop: false,\n setTreatAsDesktop: () => {},\n error: {},\n setError: () => {},\n activeStep: 0,\n setActiveStep: () => {},\n\n // useCachedConnections result\n cachedConnectionsData: {\n cachedConnections: [],\n addCachedConnections: () => {},\n removeCachedConnection: () => {},\n },\n\n // override what ever you want in render level\n ...contextValuesOverride,\n };\n\n const Wrapper = ({ children }) => (\n <RootContext.Provider value={contextValue}>\n <ThemeProvider theme={theme}>{children}</ThemeProvider>\n </RootContext.Provider>\n );\n\n return { ...render(component, { wrapper: Wrapper }), userEvents: userEvents.setup() };\n}\n\n// Wrapper for tests that use routing context - in tests, BrowserRouter is mocked\nexport const RouterWrapper = ({ children }) => children;\n","import React from 'react';\nimport Remove from '@nebula.js/ui/icons/remove';\nimport { useNavigate } from 'react-router';\nimport { ListItemButton, ListItemText, List, Typography, Box, IconButton } from '@mui/material';\nimport { useRootContext } from '../../../contexts/RootContext';\nimport { checkIfHistoryConnectionDisabled } from '../../../utils';\n\nconst ConnectionHistory = () => {\n const navigate = useNavigate();\n const { info, setError, cachedConnectionsData } = useRootContext();\n\n const handleHistoryItemClick = (item) => {\n setError();\n navigate(`/app-list?engine_url=${item.replace('?', '&')}`);\n };\n\n if (!cachedConnectionsData.cachedConnections.length) return null;\n\n return (\n <Box mb={2}>\n <Typography variant=\"h6\">Previous connections</Typography>\n <List>\n {cachedConnectionsData.cachedConnections.map((item) => (\n <ListItemButton\n key={item}\n component=\"a\"\n onClick={() => handleHistoryItemClick(item)}\n disabled={checkIfHistoryConnectionDisabled({ item, info })}\n >\n <ListItemText primary={item} />\n <IconButton\n onClick={() => cachedConnectionsData.removeCachedConnection(item)}\n data-testid=\"close-btn\"\n size=\"large\"\n edge=\"end\"\n >\n <Remove />\n </IconButton>\n </ListItemButton>\n ))}\n </List>\n </Box>\n );\n};\n\nexport default ConnectionHistory;\n","export const checkIfHistoryConnectionDisabled = ({ item, info }) => {\n if (!info) return false;\n\n if ((info.isClientIdProvided || info.isWebIntegrationIdProvided) && item.includes('localhost')) return true;\n if (info.isClientIdProvided) {\n if (item.includes('qlik-client-id')) return false;\n return true;\n }\n if (info.isWebIntegrationIdProvided) {\n if (item.includes('qlik-web-integration-id')) return false;\n return true;\n }\n\n return false;\n};\n","import React from 'react';\nimport Typography from '@mui/material/Typography';\n\nexport default function Error({ error: { message, hints } }) {\n return (\n <>\n <Typography variant=\"subtitle1\" color=\"error\" gutterBottom style={{ marginBottom: 0 }}>\n {message}\n </Typography>\n {hints.map((hint) => (\n <Typography key={hint} variant=\"body2\">\n {hint}\n </Typography>\n ))}\n </>\n );\n}\n","import React, { useState } from 'react';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport Grid from '@mui/material/Grid';\nimport Button from '@mui/material/Button';\nimport { useNavigate } from 'react-router';\nimport { useRootContext } from '../../../contexts/RootContext';\nimport { getFieldPlaceHolder, shouldDisableSubmitBtn } from '../../../utils';\n\nimport Error from './Error';\n\nexport default function FormManager({ info, fields, error, isCredentialProvided }) {\n const navigate = useNavigate();\n const { setError } = useRootContext();\n const [inputs, setInputs] = useState({});\n\n const handleUpdateInputs = (evt) => {\n setInputs({\n ...inputs,\n [evt.target.name]: evt.target.value,\n });\n };\n\n const handleOnSubmit = (evt) => {\n evt.preventDefault();\n setError();\n const url = new URL(inputs['engine-websocket-url']);\n if (inputs['web-integration-id']) url.searchParams.append('qlik-web-integration-id', inputs['web-integration-id']);\n if (inputs['client-id']) url.searchParams.append('qlik-client-id', inputs['client-id']);\n navigate(`/app-list?engine_url=${url.toString().replace('?', '&')}`);\n };\n\n return (\n <form onSubmit={handleOnSubmit}>\n <Grid container spacing={2} direction=\"column\" justifyContent=\"center\">\n {fields.map((field, i) => (\n <Grid size={12} key={field}>\n <OutlinedInput\n fullWidth\n autoFocus={i === 0}\n disabled={isCredentialProvided && i === 1}\n name={field\n .split(' ')\n .map((x) => x.toLowerCase())\n .join('-')}\n error={info?.invalid}\n placeholder={i === 0 ? field : getFieldPlaceHolder({ field, isCredentialProvided })}\n onChange={(evt) => handleUpdateInputs(evt)}\n />\n </Grid>\n ))}\n\n <Grid container size={12} alignItems=\"center\">\n <Grid size={10}>{error && <Error error={error} />}</Grid>\n <Grid container size={2} direction=\"row\" alignItems=\"center\" justifyContent=\"flex-end\">\n <Button\n type=\"submit\"\n variant=\"contained\"\n size=\"large\"\n disabled={shouldDisableSubmitBtn({ isCredentialProvided, inputs, fields })}\n >\n Connect\n </Button>\n </Grid>\n </Grid>\n </Grid>\n </form>\n );\n}\n","export const shouldDisableSubmitBtn = ({ isCredentialProvided, inputs, fields }) => {\n if (isCredentialProvided) {\n if (inputs['engine-websocket-url']) return false;\n return true;\n }\n\n return Object.entries(inputs).length !== fields.length || Object.values(inputs).some((x) => !x);\n};\n\nexport const getFieldPlaceHolder = ({ isCredentialProvided, field }) => {\n if (isCredentialProvided) return `You have provided \"${field}\" through cli or nebula.config.js file already!`;\n return field;\n};\n","import React, { useEffect, useState } from 'react';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport FormManager from './FormManager';\nimport { useRootContext } from '../../../contexts/RootContext';\nimport { OptionsToConnect } from '../../../constants/optionsToConnect';\nimport { detectDefaultConnectionStep, checkIfConnectionOptionDisabled } from '../../../utils';\n\nexport default function ConnectionOptions() {\n const { info, error } = useRootContext();\n const [tabIdx, setTabIdx] = useState(0);\n const handleChange = (_, idx) => setTabIdx(idx);\n\n useEffect(() => {\n const idx = detectDefaultConnectionStep(info);\n if (idx) setTabIdx(idx);\n }, [info]);\n\n return (\n <Box>\n <Typography variant=\"h6\" gutterBottom>\n New connection with:\n </Typography>\n <Box sx={{ width: '100%' }}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <Tabs value={tabIdx} onChange={handleChange} aria-label=\"basic tabs example\">\n {OptionsToConnect.map(({ id, label }) => (\n <Tab key={id} label={label} disabled={checkIfConnectionOptionDisabled({ info, label })} />\n ))}\n </Tabs>\n </Box>\n\n {OptionsToConnect.map(({ id, formFields }) => (\n <TabPanel tabIdx={tabIdx} idx={id} key={id}>\n <FormManager\n info={info}\n error={error}\n fields={formFields}\n isCredentialProvided={info?.isWebIntegrationIdProvided || info?.isClientIdProvided}\n />\n </TabPanel>\n ))}\n </Box>\n </Box>\n );\n}\n\nfunction TabPanel({ children, tabIdx, idx }) {\n if (tabIdx === idx) return <Box sx={{ p: 3, pb: 1 }}>{children}</Box>;\n return null;\n}\n","import { OptionsToConnect } from '../constants/optionsToConnect';\n\nexport const detectDefaultConnectionStep = (info) => {\n if (!info) return 0;\n if (info.isWebIntegrationIdProvided) return OptionsToConnect.findIndex((x) => x.label === 'Web Integration Id');\n if (info.isClientIdProvided) return OptionsToConnect.findIndex((x) => x.label === 'Client Id');\n return 0;\n};\n","export const checkIfConnectionOptionDisabled = ({ label, info }) => {\n if (!info) return false;\n\n const labelKey = label\n .split(' ')\n .map((x) => x.toLowerCase())\n .join('-');\n\n if (info.isWebIntegrationIdProvided) {\n if (labelKey === 'web-integration-id') return false;\n return true;\n }\n\n if (info.isClientIdProvided) {\n if (labelKey === 'client-id') return false;\n return true;\n }\n\n return false;\n};\n","import React, { useState, useEffect } from 'react';\nimport { Help } from '@nebula.js/ui/icons';\nimport IconButton from '@mui/material/IconButton';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\n\nimport ConnectionGuid from './ConnectionGuid';\nimport ConnectionHistory from './ConnectionHistory';\nimport ConnectionOptions from './ConnectionOptions';\nimport { ContentWrapper } from '../styles';\nimport { useRootContext } from '../../../contexts/RootContext';\nimport { useDeauthorizePrevOAuthInstance } from '../../../hooks';\n\nconst SelectEngine = () => {\n const { cachedConnectionsData } = useRootContext();\n const [showGuid, setShowGuid] = useState(false);\n useDeauthorizePrevOAuthInstance();\n\n useEffect(() => {\n setShowGuid(!cachedConnectionsData.cachedConnections.length);\n }, [cachedConnectionsData.cachedConnections.length]);\n\n return (\n <ContentWrapper>\n <Grid container>\n <Grid sx={{ flex: 1 }}>\n <Typography variant=\"h5\" gutterBottom>\n Connect to an engine\n </Typography>\n </Grid>\n <Grid item>\n <IconButton onClick={() => setShowGuid(!showGuid)} size=\"small\">\n <Help />\n </IconButton>\n </Grid>\n </Grid>\n\n <ConnectionHistory />\n <ConnectionOptions />\n <ConnectionGuid showGuid={showGuid} />\n </ContentWrapper>\n );\n};\n\nexport default SelectEngine;\n","import { useEffect } from 'react';\nimport auth from '@qlik/api/auth';\nimport { useRootContext } from '../contexts/RootContext';\n\nexport const useDeauthorizePrevOAuthInstance = () => {\n const { cachedConnectionsData } = useRootContext();\n\n useEffect(() => {\n // Clear any previously set host config so a fresh one is applied for the new connection.\n // Using setDefaultHostConfig(undefined) instead of logout() to avoid redirecting the browser.\n auth.setDefaultHostConfig(undefined);\n }, [cachedConnectionsData.cachedConnections.length]);\n};\n","import React from 'react';\nimport List from '@mui/material/List';\nimport ListItemText from '@mui/material/ListItemText';\nimport Typography from '@mui/material/Typography';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { useNavigate, useLocation } from 'react-router';\nimport { ListItemButton } from '@mui/material';\nimport { useAppList } from '../../hooks';\nimport { ContentWrapper } from './styles';\nimport { getAppLink } from '../../utils';\n\nimport { useRootContext } from '../../contexts/RootContext';\n\nconst AppList = () => {\n const navigate = useNavigate();\n const location = useLocation();\n const { info, glob, treatAsDesktop } = useRootContext();\n const { loading, appList } = useAppList({ glob, info });\n\n return (\n <ContentWrapper>\n <Typography variant=\"h5\" gutterBottom>\n Select an app\n </Typography>\n {loading && <CircularProgress data-testid=\"loading\" size={32} />}\n {!loading && appList && !appList.length && <Typography component=\"span\">No apps found!</Typography>}\n {appList && appList.length > 0 && (\n <List>\n {appList.map((appData) => (\n <ListItemButton\n button\n component=\"a\"\n key={appData.qDocId}\n onClick={() =>\n getAppLink({\n info,\n navigate,\n location,\n targetApp: treatAsDesktop ? appData.qDocName : appData.qDocId,\n })\n }\n >\n <ListItemText primary={appData.qTitle} secondary={appData.qDocId} />\n </ListItemButton>\n ))}\n </List>\n )}\n </ContentWrapper>\n );\n};\nexport default AppList;\n","import { useState, useEffect } from 'react';\nimport { useRootContext } from '../contexts/RootContext';\nimport { getConnectionInfo } from '../connect';\n\nexport const useAppList = ({ glob, info }) => {\n const { setInfo, setActiveStep } = useRootContext();\n const [appList, setAppList] = useState();\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n setActiveStep(1);\n getConnectionInfo().then((i) => {\n setInfo(i);\n });\n }, []);\n\n useEffect(() => {\n if (appList?.length) return;\n setLoading(true);\n\n glob\n ?.getDocList()\n ?.then((apps) => {\n setAppList(apps);\n if (apps) setLoading(false);\n })\n ?.catch((err) => {\n console.error('Failed to fetch app list:', err);\n setLoading(false);\n });\n }, [info, glob]);\n\n return { appList, loading };\n};\n","import getCsrfToken from './getCsrfToken';\n\nexport const getAppLink = async ({ navigate, location, targetApp, info }) => {\n const { search } = location;\n const protocol = info.engine.secure ? 'wss' : 'ws';\n const port = info.engine.port ? `:${info.engine.port}` : '';\n const prefix = info.engine.prefix ? `/${info.engine.prefix}` : '';\n const host = (info.engine.host === 'localhost' ? `${info.engine.host}${port}` : info.engine.host) + prefix;\n\n const csrfToken = await getCsrfToken(`https://${info.engine.host}${prefix}`);\n const csrfQuery = csrfToken ? `&qlik-csrf-token=${csrfToken}` : '';\n\n const newEngineUrl = `${protocol}://${host}/app/${encodeURIComponent(targetApp)}${csrfQuery}`;\n const modifiedEngineUrl = search.replace(info.engineUrl, newEngineUrl);\n\n navigate(`/dev/${modifiedEngineUrl}`.replace('&shouldFetchAppList=true', ''));\n};\n","import React from 'react';\n\nexport default React.createContext({\n language: null,\n theme: null,\n translator: null,\n constraints: {},\n interactions: {},\n themeApi: null,\n modelStore: {},\n selectionStore: {},\n hostConfig: null,\n queryParams: null,\n});\n","import { useState, useEffect } from 'react';\n\nexport default (initialState = {}, applyMiddleware = () => {}) => {\n const sharedState = initialState;\n const hookListeners = [];\n const subscribedListeners = {};\n\n const store = {\n get: (key) => sharedState[key],\n set: (key, value) => {\n if (typeof key === 'undefined' || typeof key === 'object') {\n throw new Error(`Invalid key: ${JSON.stringify(key)}`);\n }\n sharedState[key] = value;\n subscribedListeners[key] = applyMiddleware({ type: 'SET', value });\n return value;\n },\n clear: (key) => {\n if (typeof key === 'undefined' || typeof key === 'object') {\n throw new Error(`Invalid key: ${JSON.stringify(key)}`);\n }\n const unsubscribe = subscribedListeners[key];\n delete subscribedListeners[key];\n // oxlint-disable-next-line no-unused-expressions\n unsubscribe && unsubscribe();\n sharedState[key] = null;\n },\n dispatch: (forceNewState) => {\n hookListeners.forEach((listener) => listener(forceNewState ? {} : sharedState));\n },\n destroy: () => {\n Object.keys(subscribedListeners).forEach((key) => {\n subscribedListeners[key] && subscribedListeners[key]();\n });\n },\n };\n\n const useKeyStore = () => {\n const [, setState] = useState(sharedState);\n\n useEffect(() => {\n hookListeners.push(setState);\n return () => {\n const ix = hookListeners.indexOf(setState);\n hookListeners.splice(ix, 1);\n };\n }, [setState]);\n\n return [store];\n };\n\n return [useKeyStore, store];\n};\n","import * as stardust from '@nebula.js/stardust';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as ReactDOMClient from 'react-dom/client';\nimport * as jsxRuntime from 'react/jsx-runtime';\n\n// The modules that a visualization imports by name are the ones of this page, so there is one of each. The names are\n// the ones in lib/provided-modules.js, which the visualization is built to leave out.\nexport const SHARED = {\n '@nebula.js/stardust': stardust,\n react: React,\n 'react-dom': ReactDOM,\n 'react-dom/client': ReactDOMClient,\n 'react/jsx-runtime': jsxRuntime,\n};\n\nconst IDENTIFIER = /^[A-Za-z_$][\\w$]*$/;\n\n/**\n * The source of a module that has what an other module has, so that a visualization can import it by its name.\n */\nexport const shimSource = (name, ns) => {\n const exported = Object.keys(ns)\n .filter((key) => key !== 'default' && IDENTIFIER.test(key))\n .map((key) => `export const ${key} = shared[${JSON.stringify(key)}];`);\n return [\n `const shared = globalThis.nebulaShared[${JSON.stringify(name)}];`,\n 'export default shared.default !== undefined ? shared.default : shared;',\n ...exported,\n ].join('\\n');\n};\n\nlet importMapAdded = false;\n\n// A native import map has to be there before the first import of a module that imports by a name\nconst addImportMap = () => {\n if (importMapAdded) {\n return;\n }\n importMapAdded = true;\n globalThis.nebulaShared = SHARED;\n const imports = {};\n Object.entries(SHARED).forEach(([name, ns]) => {\n imports[name] = URL.createObjectURL(new Blob([shimSource(name, ns)], { type: 'text/javascript' }));\n });\n const script = document.createElement('script');\n script.type = 'importmap';\n script.textContent = JSON.stringify({ imports });\n document.head.appendChild(script);\n};\n\n// the visualization is the default export of a module\nconst visualization = (m) => (m && typeof m === 'object' && 'default' in m ? m.default : m);\n\nexport const getModule = async (name, url) => {\n addImportMap();\n const src = url || `/pkg/${encodeURIComponent(name)}`;\n // a new url for every load, since a module that was imported is never loaded again\n const mod = await import(/* webpackIgnore: true */ `${src}${src.includes('?') ? '&' : '?'}t=${Date.now()}`);\n return visualization(mod);\n};\n\nconst hotListeners = {};\n\nconst lightItUp = (name) => {\n if (!hotListeners[name]) {\n return;\n }\n hotListeners[name].forEach((fn) => fn());\n};\n\nconst onHotChange = (name, fn) => {\n if (!hotListeners[name]) {\n hotListeners[name] = [];\n }\n\n hotListeners[name].push(fn);\n if (window[name]) {\n fn();\n }\n return () => {\n // removeListener\n const idx = hotListeners[name].indexOf(fn);\n hotListeners[name].splice(idx, 1);\n };\n};\n\nwindow.onHotChange = onHotChange;\n\nexport default function initiateWatch(info) {\n const update = () => {\n getModule(info.supernova.name, info.supernova.url).then((mo) => {\n window[info.supernova.name] = mo;\n lightItUp(info.supernova.name);\n });\n };\n\n if (info.sock.port) {\n const ws = new WebSocket(`ws://localhost:${info.sock.port}`);\n ws.onmessage = () => {\n update();\n };\n }\n update();\n if (info.types) {\n const proms = info.types.map((t) =>\n getModule(t.name, t.url).then((mo) => {\n window[t.name] = mo;\n })\n );\n return Promise.all(proms);\n }\n return Promise.resolve();\n}\n","import { useEffect, useState } from 'react';\n\nexport default function useProperties(model) {\n const [properties, setProps] = useState();\n\n useEffect(() => {\n if (model) {\n const onChanged = () => {\n model.getProperties().then((props) => {\n setProps({ ...props });\n });\n };\n model.on('changed', onChanged);\n onChanged();\n return () => {\n model.removeListener('changed', onChanged);\n };\n }\n return () => {};\n }, [model, setProps]);\n return [properties, (p) => model.setProperties(p)];\n}\n","import React from 'react';\n\nconst AppContext = React.createContext();\n\nexport default AppContext;\n","const idGen = [\n [10, 31],\n [0, 31],\n [0, 31],\n [0, 31],\n [0, 31],\n [0, 31],\n];\nfunction toChar([min, max]) {\n return (min + ((Math.random() * (max - min)) | 0)).toString(32);\n}\n\nexport default function uid() {\n return idGen.map(toChar).join('');\n}\n","/* eslint no-param-reassign:0 */\n\nimport uid from './uid';\n\nfunction addIndex(array, index) {\n for (let i = 0; i < array.length; ++i) {\n if (array[i] >= 0 && array[i] >= index) {\n ++array[i];\n }\n }\n array.push(index);\n}\nfunction removeIndex(array, index) {\n let removeIdx = 0;\n for (let i = 0; i < array.length; ++i) {\n if (array[i] > index) {\n --array[i];\n } else if (array[i] === index) {\n removeIdx = i;\n }\n }\n array.splice(removeIdx, 1);\n return removeIdx;\n}\n\nconst nxDimension = (f) => ({\n qDef: {\n qFieldDefs: [f],\n },\n});\n\nconst nxMeasure = (f) => ({\n qDef: {\n qDef: f,\n },\n});\n\nexport default function hcHandler({ dc: hc, def, properties }) {\n hc.qDimensions = hc.qDimensions || [];\n hc.qMeasures = hc.qMeasures || [];\n hc.qInterColumnSortOrder = hc.qInterColumnSortOrder || [];\n hc.qInitialDataFetch = hc.qInitialDataFetch || [];\n hc.qColumnOrder = hc.qColumnOrder || [];\n hc.qExpansionState = hc.qExpansionState || [];\n\n const objectProperties = properties;\n\n const handler = {\n dimensions() {\n return hc.qDimensions;\n },\n measures() {\n return hc.qMeasures;\n },\n addDimension(d) {\n const dimension =\n typeof d === 'string'\n ? nxDimension(d)\n : {\n ...d,\n qDef: d.qDef || {},\n };\n dimension.qDef.cId = dimension.qDef.cId || uid();\n\n // ====== add default objects and arrays for NxDimension =====\n\n // TODO - apply autosort properties based on tags\n dimension.qDef.qSortCriterias = dimension.qDef.qSortCriterias || [\n {\n qSortByLoadOrder: 1,\n qSortByNumeric: 1,\n qSortByAscii: 1,\n },\n ];\n\n dimension.qOtherTotalSpec = dimension.qOtherTotalSpec || {};\n dimension.qAttributeExpressions = dimension.qAttributeExpressions || [];\n dimension.qAttributeDimensions = dimension.qAttributeDimensions || [];\n // ========= end defaults =============\n\n if (hc.qDimensions.length < handler.maxDimensions()) {\n hc.qDimensions.push(dimension);\n addIndex(hc.qInterColumnSortOrder, hc.qDimensions.length - 1);\n def.dimensions.added(dimension, objectProperties);\n } else {\n hc.qLayoutExclude = hc.qLayoutExclude || {};\n hc.qLayoutExclude.qHyperCubeDef = hc.qLayoutExclude.qHyperCubeDef || {};\n hc.qLayoutExclude.qHyperCubeDef.qDimensions = hc.qLayoutExclude.qHyperCubeDef.qDimensions || [];\n hc.qLayoutExclude.qHyperCubeDef.qMeasures = hc.qLayoutExclude.qHyperCubeDef.qMeasures || [];\n\n hc.qLayoutExclude.qHyperCubeDef.qDimensions.push(dimension);\n }\n return dimension;\n },\n removeDimension(idx) {\n const dimension = hc.qDimensions.splice(idx, 1)[0];\n removeIndex(hc.qInterColumnSortOrder, idx);\n def.dimensions.removed(dimension, objectProperties, idx);\n return dimension;\n },\n addMeasure(m) {\n const measure =\n typeof m === 'string'\n ? nxMeasure(m)\n : {\n ...m,\n qDef: m.qDef || {},\n };\n measure.qDef.cId = measure.qDef.cId || uid();\n\n // ====== add default objects and arrays for NxMeasure =====\n measure.qSortBy = measure.qSortBy || {\n qSortByLoadOrder: 1,\n qSortByNumeric: -1,\n };\n\n measure.qAttributeDimensions = measure.qAttributeDimensions || [];\n measure.qAttributeExpressions = measure.qAttributeExpressions || [];\n\n if (hc.qMeasures.length < handler.maxMeasures()) {\n hc.qMeasures.push(measure);\n addIndex(hc.qInterColumnSortOrder, hc.qDimensions.length + hc.qMeasures.length - 1);\n def.measures.added(measure, objectProperties);\n } else {\n hc.qLayoutExclude = hc.qLayoutExclude || {};\n hc.qLayoutExclude.qHyperCubeDef = hc.qLayoutExclude.qHyperCubeDef || {};\n hc.qLayoutExclude.qHyperCubeDef.qDimensions = hc.qLayoutExclude.qHyperCubeDef.qDimensions || [];\n hc.qLayoutExclude.qHyperCubeDef.qMeasures = hc.qLayoutExclude.qHyperCubeDef.qMeasures || [];\n\n hc.qLayoutExclude.qHyperCubeDef.qMeasures.push(measure);\n }\n },\n removeMeasure(idx) {\n const measure = hc.qMeasures.splice(idx, 1)[0];\n removeIndex(hc.qInterColumnSortOrder, hc.qDimensions.length + idx);\n def.measures.removed(measure, objectProperties, idx);\n },\n\n maxDimensions() {\n return def.dimensions.max(hc.qMeasures.length);\n },\n maxMeasures() {\n return def.measures.max(hc.qDimensions.length);\n },\n canAddDimension() {\n return hc.qDimensions.length < handler.maxDimensions();\n },\n canAddMeasure() {\n return hc.qMeasures.length < handler.maxMeasures();\n },\n };\n\n return handler;\n}\n","/* eslint no-param-reassign:0 */\n\nimport uid from './uid';\n\nconst nxDimension = (f) => ({\n qDef: {\n qFieldDefs: [f],\n },\n});\n\nexport default function loHandler({ dc: lo, def, properties }) {\n lo.qInitialDataFetch = lo.qInitialDataFetch || [];\n\n const objectProperties = properties;\n\n const handler = {\n dimensions() {\n if (!lo.qLibraryId && (!lo.qDef || !lo.qDef.qFieldDefs || lo.qDef.qFieldDefs.length === 0)) return [];\n return [lo];\n },\n measures() {\n return [];\n },\n addDimension(d) {\n const dimension =\n typeof d === 'string'\n ? nxDimension(d)\n : {\n ...d,\n qDef: d.qDef || {},\n };\n dimension.qDef.cId = dimension.qDef.cId || uid();\n\n dimension.qDef.qSortCriterias = lo.qDef.qSortCriterias || [\n {\n qSortByState: 1,\n qSortByLoadOrder: 1,\n qSortByNumeric: 1,\n qSortByAscii: 1,\n },\n ];\n Object.keys(dimension).forEach((k) => {\n lo[k] = dimension[k];\n });\n def.dimensions.added(dimension, objectProperties);\n return dimension;\n },\n removeDimension(idx) {\n const dimension = lo;\n delete lo.qDef;\n delete lo.qLibraryId;\n def.dimensions.removed(dimension, objectProperties, idx);\n return dimension;\n },\n addMeasure() {},\n removeMeasure() {},\n\n maxDimensions() {\n return 1;\n },\n maxMeasures() {\n return 0;\n },\n canAddDimension() {\n return handler.dimensions().length === 0;\n },\n canAddMeasure() {\n return false;\n },\n };\n\n return handler;\n}\n","/* eslint no-param-reassign:0 */\n\nimport uid from './uid';\n\nconst nxDimension = (f) => ({\n qDef: {\n qFieldDefs: [f],\n },\n});\n\nexport default function loContainerHandler({ dc: loc, def, properties, dimensions }) {\n const objectProperties = properties;\n\n const handler = {\n dimensions() {\n return dimensions;\n },\n measures() {\n return [];\n },\n addDimension(d) {\n const dimension =\n typeof d === 'string'\n ? nxDimension(d)\n : {\n ...d,\n qDef: d.qDef || {},\n };\n\n dimension.qDef.cId = dimension.qDef.cId || uid();\n dimension.qDef.qSortCriterias = (loc && loc.qDef.qSortCriterias) || [\n {\n qSortByState: 1,\n qSortByLoadOrder: 1,\n qSortByNumeric: 1,\n qSortByAscii: 1,\n },\n ];\n\n def.dimensions.added(dimension, objectProperties);\n return dimension;\n },\n removeDimension(idx) {\n const dimension = dimensions[idx];\n def.dimensions.removed(dimension, objectProperties, idx);\n return dimension;\n },\n // addMeasure() {},\n // removeMeasure() {},\n\n maxDimensions() {\n const { max } = def.dimensions || {};\n const maxDims = typeof max === 'function' ? max() : max;\n return maxDims || 0;\n },\n maxMeasures() {\n return 0;\n },\n canAddDimension() {\n return handler.dimensions().length < handler.maxDimensions();\n },\n canAddMeasure() {\n return false;\n },\n };\n\n return handler;\n}\n","import { useContext } from 'react';\nimport InstanceContext from '../contexts/InstanceContext';\n\nexport function useModelStore() {\n const { useModelStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n\nexport function useModelChangedStore() {\n const { useModelChangedStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n\nexport function useRpcResultStore() {\n const { useRpcResultStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n\nexport function useRpcRequestStore() {\n const { useRpcRequestStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n\nexport function useRpcRequestModelStore() {\n const { useRpcRequestModelStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n\nexport function useRpcRequestSessionModelStore() {\n const { useRpcRequestSessionModelStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n","import { useEffect, useState } from 'react';\nimport { useModelStore, useRpcRequestSessionModelStore } from './useModelStore';\n\nexport default function useSessionModel(definition, app, ...deps) {\n const key = app ? `${app.id}/${JSON.stringify(definition)}` : null;\n\n const [modelStore] = useModelStore();\n const [rpcRequestSessionModelStore] = useRpcRequestSessionModelStore();\n const [model, setModel] = useState();\n\n useEffect(() => {\n if (!app) {\n return;\n }\n // Create new session object\n const create = async () => {\n let rpcShared = rpcRequestSessionModelStore.get(key);\n if (!rpcShared) {\n rpcShared = app.createSessionObject(definition);\n rpcRequestSessionModelStore.set(key, rpcShared);\n }\n const newModel = await rpcShared;\n modelStore.set(key, newModel);\n setModel(newModel);\n };\n create();\n }, [app, ...deps]);\n\n return [model];\n}\n","import { useReducer, useEffect } from 'react';\nimport { useModelChangedStore, useRpcResultStore, useRpcRequestStore } from './useModelStore';\n\nconst sleep = (delay) =>\n new Promise((resolve) => {\n setTimeout(resolve, delay);\n });\n\nconst rpcReducer = (state, action) => {\n const { rpcResultStore, key, method } = action;\n let newState;\n switch (action.type) {\n case 'INVALID': {\n newState = {\n ...state,\n valid: false,\n invalid: true,\n validating: true,\n canCancel: true,\n canRetry: false,\n rpcRetry: false,\n };\n break;\n }\n case 'VALID': {\n newState = {\n result: {\n ...action.result,\n },\n invalid: false,\n valid: true,\n validating: false,\n canCancel: false,\n canRetry: false,\n rpcRetry: false,\n };\n break;\n }\n case 'CANCELLED': {\n newState = {\n ...state,\n invalid: true,\n valid: false,\n validating: false,\n canCancel: false,\n canRetry: true,\n rpcRetry: false,\n };\n break;\n }\n default:\n throw new Error('Undefined action');\n }\n let sharedState = rpcResultStore.get(key);\n if (!sharedState) {\n sharedState = {};\n }\n sharedState[method] = newState;\n rpcResultStore.set(key, sharedState);\n return newState;\n};\n\nexport default function useRpc(model, method) {\n const key = model ? `${model.id}` : null;\n const [rpcResultStore] = useRpcResultStore();\n const [state, dispatch] = useReducer(rpcReducer, key ? rpcResultStore.get(key) : null);\n const [modelChangedStore] = useModelChangedStore();\n const [rpcRequestStore] = useRpcRequestStore();\n\n let rpcShared;\n\n if (key) {\n rpcShared = rpcRequestStore.get(key);\n if (!rpcShared) {\n rpcShared = {};\n rpcRequestStore.set(key, rpcShared);\n }\n }\n\n const call = async (skipRetry) => {\n let cache = rpcShared[method];\n if (!cache || (cache && cache.rpcRetry)) {\n const rpc = model[method]();\n cache = {\n rpc,\n rpcRetry: false,\n };\n rpcShared[method] = cache;\n\n dispatch({\n type: 'INVALID',\n method,\n key,\n model,\n rpcResultStore,\n canCancel: true,\n });\n }\n\n try {\n // To avoid possible race condition causing an infinite loop.\n // Problem has been observed for mocked models appeared after switching to react 18 (reactDOM render -> createRoot).\n await sleep(0);\n const result = await cache.rpc;\n dispatch({ type: 'VALID', result, key, method, model, rpcResultStore });\n } catch (err) {\n if (err.code === 15 && !skipRetry) {\n // Request aborted. This will be called multiple times by hooks only retry once\n if (!cache.rpcRetry) {\n cache.rpcRetry = true;\n }\n call(true);\n }\n }\n };\n const longrunning = {\n cancel: async () => {\n const global = model.session.getObjectApi({ handle: -1 });\n await global.cancelRequest(rpcShared[method].rpc.requestId);\n dispatch({\n type: 'CANCELLED',\n key,\n method,\n model,\n rpcResultStore,\n });\n },\n retry: () => {\n rpcShared[method].rpcRetry = true;\n call();\n },\n };\n\n useEffect(() => {\n if (!model) return undefined;\n\n call();\n\n return undefined;\n }, [model, modelChangedStore.get(model && model.id), key, method]);\n\n return [\n // Result\n state && state.result,\n { validating: state && state.validating, canCancel: state && state.canCancel, canRetry: state && state.canRetry },\n // Long running api e.g cancel retry\n longrunning,\n ];\n}\n","import useRpc from './useRpc';\n\nexport default function useLayout(model) {\n const [layout, { validating, canCancel, canRetry }, longrunning] = useRpc(model, 'getLayout');\n if (model?.pureLayout && layout) {\n return [model.pureLayout, { validating, canCancel, canRetry }, longrunning];\n }\n return [layout, { validating, canCancel, canRetry }, longrunning];\n}\n\nexport function useAppLayout(model) {\n return useRpc(model, 'getAppLayout');\n}\n","import useSessionModel from '@nebula.js/nucleus/src/hooks/useSessionModel';\nimport useLayout from '@nebula.js/nucleus/src/hooks/useLayout';\n\nconst D = {\n qInfo: {\n qType: 'DimensionList',\n qId: 'DimensionList',\n },\n qDimensionListDef: {\n qType: 'dimension',\n qData: {\n labelExpression: '/qDimension/qLabelExpression',\n title: '/qMetaDef/title',\n },\n },\n};\n\nconst M = {\n qInfo: {\n qType: 'MeasureList',\n qId: 'MeasureList',\n },\n qMeasureListDef: {\n qType: 'measure',\n qData: {\n labelExpression: '/qMeasure/qLabelExpression',\n title: '/qMetaDef/title',\n },\n },\n};\n\nexport default function list(app, type = 'dimension') {\n const def = type === 'dimension' ? D : M;\n\n const [model] = useSessionModel(def, app);\n const [layout] = useLayout(model);\n return [layout ? (layout.qDimensionList || layout.qMeasureList).qItems || [] : []];\n}\n","import SvgIcon from './SvgIcon';\n\nconst search = (props) => ({\n ...props,\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M8.588 11.415a6 6 0 1 1 2.828-2.829l4.101 4a1.5 1.5 0 0 1 .014 2.134l-.707.707a1.5 1.5 0 0 1-2.108.014l-4.128-4.026ZM11 6A5 5 0 1 0 1 6a5 5 0 0 0 10 0Zm-1.52 4.888 3.934 3.837a.5.5 0 0 0 .703-.005l.707-.707a.5.5 0 0 0-.005-.711l-3.926-3.829a6.034 6.034 0 0 1-1.413 1.415Z',\n },\n },\n ],\n});\nexport default (props) => SvgIcon(search(props));\nexport { search as remove };\n","import React, { useState } from 'react';\nimport { styled } from '@mui/material/styles';\nimport { Grid, TextField } from '@mui/material';\nimport SearchIcon from '@nebula.js/ui/icons/search';\n\nconst PREFIX = 'Search';\n\nconst classes = {\n gridContainer: `${PREFIX}-gridContainer`,\n gridItem: `${PREFIX}-gridItem`,\n};\n\nconst StyledGrid = styled(Grid)(({ theme }) => ({\n [`& .${classes.gridContainer}`]: {\n padding: theme.spacing(0, 1, 0, 1),\n },\n\n [`& .${classes.gridItem}`]: {\n padding: theme.spacing(0, 1, 0, 1),\n },\n}));\n\n/**\n * Run this on small devices to reset the zoom. Required when focusing\n * an input field and the browser auto zooms the page. Browsers do not\n * expose any API for handling this currently.\n */\nfunction resetZoom() {\n const viewportMetaTag = document.querySelector('meta[name=\"viewport\"]');\n if (viewportMetaTag instanceof HTMLMetaElement) {\n viewportMetaTag.content = 'width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0';\n }\n}\n\nexport default function Search({ onChange = () => {}, onEnter = () => {}, onEscape = () => {} }) {\n const [value, setValue] = useState('');\n const handleChange = (e) => {\n setValue(e.target.value);\n onChange(e.target.value);\n };\n const onKeyDown = (e) => {\n switch (e.key) {\n case 'Enter':\n onEnter();\n setValue('');\n break;\n case 'Escape':\n onEscape();\n break;\n default:\n break;\n }\n };\n\n const placeholder = 'Search';\n\n return (\n <StyledGrid className={classes.gridContainer} container direction=\"row\" alignItems=\"center\">\n <Grid>\n <SearchIcon />\n </Grid>\n <Grid className={classes.gridItem} sx={{ flex: 1 }}>\n <TextField\n fullWidth\n autoFocus\n placeholder={placeholder}\n value={value}\n onChange={handleChange}\n onFocus={resetZoom}\n onKeyDown={onKeyDown}\n />\n </Grid>\n </StyledGrid>\n );\n}\n","import React, { useContext, useState, useMemo } from 'react';\n\nimport { Popover, List, ListSubheader, ListItemButton, ListItemText, ListItemIcon, Divider } from '@mui/material';\nimport parse from 'autosuggest-highlight/parse';\nimport match from 'autosuggest-highlight/match';\n\nimport { ChevronRight, ChevronLeft } from '@nebula.js/ui/icons';\n\nimport { useTheme } from '@nebula.js/ui/theme';\n\nimport useSessionModel from '@nebula.js/nucleus/src/hooks/useSessionModel';\nimport useLayout from '@nebula.js/nucleus/src/hooks/useLayout';\nimport useLibraryList from '../../hooks/useLibraryList';\n\nimport AppContext from '../../contexts/AppContext';\n\nimport Search from './Search';\n\nfunction Field({ field, onSelect, sub, parts }) {\n return (\n <ListItemButton onClick={() => onSelect(field.qName)} data-key={field.qName}>\n <ListItemText>\n {parts.map((part, ix) => (\n <span\n // eslint-disable-next-line react/no-array-index-key\n key={ix}\n style={part.highlight ? { flex: '0 1 auto', backgroundColor: '#FFC72A' } : { flex: '0 1 auto' }}\n >\n {part.text}\n </span>\n ))}\n </ListItemText>\n {sub && <ChevronRight fontSize=\"small\" />}\n </ListItemButton>\n );\n}\n\nfunction LibraryItem({ item, onSelect, parts }) {\n return (\n <ListItemButton onClick={() => onSelect(item.qInfo)} data-key={item.qInfo.qId}>\n <ListItemText>\n {parts.map((part, ix) => (\n <span\n // eslint-disable-next-line react/no-array-index-key\n key={ix}\n style={part.highlight ? { flex: '0 1 auto', backgroundColor: '#FFC72A' } : { flex: '0 1 auto' }}\n >\n {part.text}\n </span>\n ))}\n </ListItemText>\n </ListItemButton>\n );\n}\n\nfunction Aggr({ aggr, field, onSelect }) {\n return (\n <ListItemButton onClick={() => onSelect(aggr)} data-key={aggr}>\n <ListItemText>{`${aggr}(${field})`}</ListItemText>\n </ListItemButton>\n );\n}\n\nfunction LibraryList({ app, onSelect, title = '', type = 'dimension', searchTerm = '' }) {\n const [libraryItems] = useLibraryList(app, type);\n const sortedLibraryItems = useMemo(\n () => libraryItems.slice().sort((a, b) => a.qData.title.toLowerCase().localeCompare(b.qData.title.toLowerCase())),\n [libraryItems]\n );\n\n return libraryItems.length > 0 ? (\n <>\n <ListSubheader component=\"div\" style={{ backgroundColor: 'inherit' }}>\n {title}\n </ListSubheader>\n {sortedLibraryItems.map((item) => {\n const matches = match(item.qData.title, searchTerm);\n const parts = parse(item.qData.title, matches);\n if (searchTerm && matches.length === 0) return null;\n return <LibraryItem key={item.qInfo.qId} item={item} onSelect={onSelect} parts={parts} />;\n })}\n </>\n ) : null;\n}\n\nexport default function FieldsPopover({ alignTo, show, close, onSelected, type }) {\n const app = useContext(AppContext);\n const [selectedField, setSelectedField] = useState(null);\n const [searchTerm, setSearchTerm] = useState('');\n const theme = useTheme();\n const [model] = useSessionModel(\n {\n qInfo: {\n qType: 'FieldList',\n qId: 'FieldList',\n },\n qFieldListDef: {\n qShowDerivedFelds: false,\n qShowHidden: false,\n qShowSemantic: true,\n qShowSrcTables: true,\n qShowSystem: false,\n },\n },\n app\n );\n\n const [layout] = useLayout(model);\n\n const fields = useMemo(\n () =>\n (layout ? layout.qFieldList.qItems || [] : [])\n .slice()\n .sort((a, b) => a.qName.toLowerCase().localeCompare(b.qName.toLowerCase())),\n [layout]\n );\n\n const onSelect = (s) => {\n if (s && s.qId) {\n onSelected(s);\n close();\n } else if (type === 'measure') {\n setSelectedField(s);\n } else {\n onSelected({\n field: s,\n });\n close();\n }\n };\n\n const onAggregateSelected = (s) => {\n onSelected({\n field: selectedField,\n aggregation: s,\n });\n close();\n };\n\n return (\n <Popover\n open={show}\n onClose={close}\n anchorEl={alignTo.current}\n marginThreshold={16} // theme.spacing(1)\n elevation={3}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n PaperProps={{\n style: { minWidth: '250px', maxHeight: '300px', background: theme.palette.background.lightest },\n }}\n >\n {!selectedField && <Search onChange={setSearchTerm} />}\n {selectedField && (\n <List dense component=\"nav\">\n <ListItemButton onClick={() => setSelectedField(null)}>\n <ListItemIcon>\n <ChevronLeft />\n </ListItemIcon>\n <ListItemText>Back</ListItemText>\n </ListItemButton>\n <Divider />\n <ListSubheader component=\"div\">Aggregation</ListSubheader>\n {['sum', 'count', 'avg', 'min', 'max'].map((v) => (\n <Aggr key={v} aggr={v} field={selectedField} onSelect={onAggregateSelected} />\n ))}\n </List>\n )}\n {!selectedField && fields.length > 0 && (\n <List dense component=\"nav\" style={{ background: theme.palette.background.lightest }}>\n <LibraryList\n app={app}\n onSelect={onSelect}\n type={type}\n title={type === 'measure' ? 'Measures' : 'Dimensions'}\n searchTerm={searchTerm}\n />\n <ListSubheader component=\"div\" style={{ backgroundColor: 'inherit' }}>\n Fields\n </ListSubheader>\n {fields.map((field) => {\n const matches = match(field.qName, searchTerm);\n const parts = parse(field.qName, matches);\n if (searchTerm && matches.length === 0) return null;\n return <Field key={field.qName} field={field} onSelect={onSelect} sub={type === 'measure'} parts={parts} />;\n })}\n </List>\n )}\n </Popover>\n );\n}\n","import React, { useRef, useState, useContext } from 'react';\n\nimport {\n IconButton,\n Button,\n List,\n ListItem,\n ListItemText,\n // Divider,\n Typography,\n} from '@mui/material';\n\nimport Remove from '@nebula.js/ui/icons/remove';\n\nimport useLibraryList from '../../../hooks/useLibraryList';\n\nimport AppContext from '../../../contexts/AppContext';\nimport FieldsPopover from '../FieldsPopover';\n\nconst FieldTitle = ({ field, libraryItems }) => {\n if (field.qLibraryId) {\n const f = libraryItems.filter((ff) => ff.qInfo.qId === field.qLibraryId)[0];\n return f ? f.qData.title : '!!!';\n }\n if (field.qDef && field.qDef.qFieldDefs) {\n return field.qDef.qFieldDefs[0];\n }\n if (field.qDef && field.qDef.qDef) {\n return field.qDef.qDef;\n }\n return '???';\n};\n\nexport default function Fields({\n items,\n type = 'dimension',\n label = '',\n addLabel = 'Add',\n onAdded,\n onRemoved,\n canAdd = true,\n}) {\n const [isActive, setIsActive] = useState(false);\n const btn = useRef(null);\n const app = useContext(AppContext);\n const [libraryItems] = useLibraryList(app, type);\n\n const onAdd = () => {\n setIsActive(!isActive);\n };\n\n const onSelected = (o) => {\n if (o.qId) {\n onAdded(o);\n } else if (o) {\n if (type === 'dimension') {\n onAdded(o.field);\n } else {\n onAdded(`${o.aggregation || 'sum'}([${o.field}])`);\n }\n }\n };\n\n const onRemove = (idx) => {\n onRemoved(idx);\n };\n\n return (\n <div>\n <Typography variant=\"overline\">{label}</Typography>\n <List dense>\n {items.map((d, i) => (\n <ListItem\n disableGutters\n key={(d.qDef && d.qDef.cId) || i}\n secondaryAction={\n <IconButton onClick={() => onRemove(i)} size=\"large\">\n <Remove />\n </IconButton>\n }\n >\n <ListItemText>\n <FieldTitle field={d} libraryItems={libraryItems} type={type} />\n </ListItemText>\n </ListItem>\n ))}\n </List>\n <Button variant=\"contained\" fullWidth onClick={onAdd} ref={btn} disabled={!canAdd}>\n {addLabel}\n </Button>\n {isActive && (\n <FieldsPopover\n alignTo={btn}\n show={isActive}\n close={() => setIsActive(false)}\n onSelected={onSelected}\n type={type}\n />\n )}\n </div>\n );\n}\n","import React, { useMemo, useState } from 'react';\n\nimport hcHandler from '@nebula.js/nucleus/src/object/hc-handler';\nimport loHandler from '@nebula.js/nucleus/src/object/lo-handler';\nimport loContainerHandler from '@nebula.js/nucleus/src/object/lo-container-handler';\n\nimport { Typography } from '@mui/material';\n\nimport Fields from './Fields';\n\nconst getValue = (data, reference, defaultValue) => {\n const steps = reference.split('/');\n let dataContainer = data;\n if (dataContainer === undefined) {\n return defaultValue;\n }\n for (let i = 0; i < steps.length; ++i) {\n if (steps[i] === '') {\n continue; // eslint-disable-line no-continue\n }\n if (typeof dataContainer[steps[i]] === 'undefined') {\n return defaultValue;\n }\n dataContainer = dataContainer[steps[i]];\n }\n\n return dataContainer;\n};\n\nexport default function DataCube({ setProperties, target, properties }) {\n // Store dimensions outside of handler to support filterpanes or other containers\n // holding list objects, which do not store dimensions in an array (like hc.qDimensions).\n const [dimensions, setDimensions] = useState([]);\n\n const supportsMultipleDims = target.dimensions && target.dimensions.max && target.dimensions.max() > 1;\n const listBoxHandler = supportsMultipleDims ? loContainerHandler : loHandler;\n\n const createHandler = target.propertyPath.match('/qHyperCube') ? hcHandler : listBoxHandler;\n const dc = getValue(properties, target.propertyPath);\n const handler = useMemo(\n () =>\n createHandler({\n def: target,\n dc,\n properties,\n dimensions,\n }),\n [dc, target, properties, dimensions]\n );\n\n const onDimensionAdded = (a) => {\n const dim = typeof a === 'object' ? { qLibraryId: a.qId } : a;\n const addedDim = handler.addDimension(dim);\n setProperties(properties).then(() => {\n setDimensions([...dimensions, addedDim]);\n });\n };\n\n const onDimensionRemoved = (idx) => {\n handler.removeDimension(idx);\n setProperties(properties).then(() => {\n setDimensions([...dimensions.slice(0, idx), ...dimensions.slice(idx + 1)]);\n });\n };\n\n const onMeasureAdded = (a) => {\n handler.addMeasure(typeof a === 'object' ? { qLibraryId: a.qId } : a);\n setProperties(properties);\n };\n\n const onMeasureRemoved = (idx) => {\n handler.removeMeasure(idx);\n setProperties(properties);\n };\n\n return (\n <div style={{ width: '100%' }}>\n <Typography color=\"textSecondary\" style={{ fontFamily: 'Monaco, monospace', fontSize: '0.7rem' }}>\n {target.propertyPath}\n </Typography>\n <Fields\n key=\"dimensions\"\n onAdded={onDimensionAdded}\n onRemoved={onDimensionRemoved}\n canAdd={handler.canAddDimension()}\n items={handler.dimensions()}\n type=\"dimension\"\n label=\"Dimensions\"\n addLabel=\"Add dimension\"\n />\n <Fields\n key=\"measures\"\n onAdded={onMeasureAdded}\n onRemoved={onMeasureRemoved}\n canAdd={handler.canAddMeasure()}\n items={handler.measures()}\n type=\"measure\"\n label=\"Measures\"\n addLabel=\"Add measures\"\n />\n </div>\n );\n}\n","import React from 'react';\n\nimport { List, ListItem, Typography } from '@mui/material';\n\nimport DataCube from './DataCube';\n\nexport default function Data({ setProperties, sn, properties }) {\n if (!sn) {\n return null;\n }\n\n const { targets } = sn.qae.data;\n\n if (!targets.length) {\n return <Typography>No data targets found</Typography>;\n }\n\n return (\n <List>\n {targets.map((t) => (\n <ListItem key={t.propertyPath} divider disableGutters>\n <DataCube target={t} properties={properties} setProperties={setProperties} />\n </ListItem>\n ))}\n </List>\n );\n}\n","/* eslint no-param-reassign:0 */\nimport React, { useState, useEffect } from 'react';\n\nimport { Select, FormControl, MenuItem } from '@mui/material';\n\nlet variableList = null;\n\nasync function getVariables(app) {\n if (!variableList) {\n variableList = await app.createSessionObject({\n qInfo: {\n qType: 'VariableList',\n },\n qVariableListDef: {\n qType: 'variable',\n qShowReserved: false,\n qShowConfig: false,\n },\n });\n }\n const reply = await variableList.getLayout();\n\n const list = reply.qVariableList.qItems.map((item) => ({\n value: item.qName,\n label: item.qName.length > 50 ? `${item.qName.slice(0, 50)}...` : item.qName,\n }));\n\n return list;\n}\n// variable, {name, value}, properties\nexport default function Variable({ property, value, target, changed, app }) {\n const [s, setS] = useState(value.name);\n const [l, setL] = useState([]);\n\n useEffect(() => {\n async function fetchData() {\n const list = await getVariables(app);\n setL(list);\n }\n fetchData();\n }, []);\n\n const handleChange = (e) => {\n setS(e.target.value);\n target[property].name = e.target.value;\n target[property].value = { qStringExpression: { qExpr: `[${e.target.value}]` } };\n changed();\n };\n return l.length === 0 ? (\n <em>No variables in app</em>\n ) : (\n <FormControl size=\"small\" fullWidth>\n <Select\n onChange={handleChange}\n displayEmpty\n fullWidth\n value={s}\n renderValue={(selected) => {\n if (selected.length === 0) {\n return <em>Select a variable</em>;\n }\n return selected;\n }}\n >\n {l.map((c) => (\n <MenuItem key={c.value} value={c.value}>\n {c.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n}\n","/* eslint no-param-reassign:0 */\n/* eslint no-use-before-define:0 */\n\nimport React, { useState } from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport {\n Typography,\n Grid,\n Checkbox,\n FormControlLabel,\n TextField,\n Accordion,\n AccordionSummary,\n AccordionDetails,\n InputAdornment,\n} from '@mui/material';\n\nimport { ExpandMore } from '@nebula.js/ui/icons';\nimport Variable from './property-panel/Variable';\n\nconst PREFIX = 'AutoComponents';\n\nconst classes = {\n summary: `${PREFIX}-summary`,\n details: `${PREFIX}-details`,\n root: `${PREFIX}-root`,\n};\n\nconst StyledGrid = styled(Grid)(({ theme }) => ({\n [`& .${classes.summary}`]: {\n padding: theme.spacing(0, 1),\n backgroundColor: theme.palette.background.lighter,\n borderBottom: `1px solid ${theme.palette.divider}`,\n },\n\n [`& .${classes.details}`]: {\n padding: theme.spacing(1),\n },\n}));\n\nconst StyledAccordion = styled(Accordion)(({ theme }) => ({\n [`& .${classes.root}`]: {\n boxShadow: 'none',\n marginLeft: -theme.spacing(1),\n marginRight: -theme.spacing(1),\n '&$expanded': {\n marginLeft: -theme.spacing(1),\n marginRight: -theme.spacing(1),\n },\n },\n}));\n\nconst getType = (value, key) => {\n if (Array.isArray(value)) {\n return 'array';\n }\n\n if (enableExpressions && key === 'variable' && typeof value === 'object' && 'name' in value && 'value' in value) {\n return 'variable';\n }\n\n if (enableExpressions && value && typeof value === 'object' && 'qStringExpression' in value) {\n return 'expression';\n }\n\n if (typeof value === 'boolean') {\n return 'boolean';\n }\n if (typeof value === 'string') {\n return 'string';\n }\n if (typeof value === 'number') {\n return 'number';\n }\n if (value && typeof value === 'object') {\n return 'object';\n }\n return 'unknown';\n};\n\nfunction Bool({ property, value, target, changed }) {\n const handleChange = (e) => {\n target[property] = e.target.checked;\n changed();\n };\n return (\n <FormControlLabel\n control={<Checkbox checked={value} onChange={handleChange} />}\n label={property}\n labelPlacement=\"end\"\n />\n );\n}\n\nfunction Str({ property, value, target, changed }) {\n const [s, setS] = useState(value);\n const handleChange = (e) => {\n setS(e.target.value);\n };\n const onBlur = () => {\n if (s !== value) {\n target[property] = s;\n changed();\n }\n };\n\n return <TextField variant=\"standard\" fullWidth onChange={handleChange} onBlur={onBlur} label={property} value={s} />;\n}\n\nfunction Num({ property, value, target, changed }) {\n const [s, setS] = useState(+value);\n const handleChange = (e) => {\n setS(e.target.value);\n };\n const onBlur = () => {\n if (s !== value) {\n target[property] = +s;\n changed();\n }\n };\n\n return <TextField variant=\"standard\" fullWidth onChange={handleChange} onBlur={onBlur} label={property} value={s} />;\n}\n\nfunction Expression({ property, value, target, changed }) {\n const initial = value.qStringExpression && value.qStringExpression.qExpr ? value.qStringExpression.qExpr : '';\n const [s, setS] = useState(initial);\n const handleChange = (e) => {\n setS(e.target.value);\n };\n const onBlur = () => {\n if (s !== value) {\n target[property].qStringExpression = { qExpr: `=${s}` };\n changed();\n }\n };\n\n return (\n <TextField\n variant=\"standard\"\n InputProps={{\n startAdornment: <InputAdornment position=\"start\">=</InputAdornment>,\n }}\n fullWidth\n onChange={handleChange}\n onBlur={onBlur}\n label={property}\n value={s}\n />\n );\n}\n\nfunction Obj({ property, value, changed, app }) {\n return (\n <StyledAccordion square className={classes.root}>\n <AccordionSummary expandIcon={<ExpandMore />} className={classes.summary}>\n <Typography>{property}</Typography>\n </AccordionSummary>\n <AccordionDetails className={classes.details}>{generateComponents(value, changed, app)}</AccordionDetails>\n </StyledAccordion>\n );\n}\n\nconst registeredComponents = {\n boolean: Bool,\n string: Str,\n object: Obj,\n number: Num,\n expression: Expression,\n variable: Variable,\n};\n\nconst QRX = /^q[A-Z]/;\n\nlet enableExpressions = false;\n\nexport default function generateComponents(properties, changed, app, flags) {\n if (flags && flags.PP_EXPRESSIONS) {\n enableExpressions = true;\n }\n\n const components = Object.keys(properties)\n .map((key) => {\n if (['visualization', 'version'].indexOf(key) !== -1) {\n return false;\n }\n if (QRX.test(key)) {\n // skip q properties for now, but allow qStringExpression\n return false;\n }\n const type = getType(properties[key], key);\n if (!registeredComponents[type]) {\n return false;\n }\n\n return {\n Component: registeredComponents[type],\n property: key,\n target: properties,\n value: properties[key],\n key: `${key}:${properties[key]}`,\n };\n })\n .filter(Boolean);\n\n return (\n <StyledGrid container direction=\"column\" gap={0} alignItems=\"stretch\">\n {components.map((c) => (\n <Grid key={c.key} style={{ width: '100%' }}>\n <c.Component\n key={c.key}\n app={app}\n property={c.property}\n value={c.value}\n target={properties}\n changed={changed}\n />\n </Grid>\n ))}\n </StyledGrid>\n );\n}\n","import React, { useCallback, useState, useContext } from 'react';\n\nimport { Divider, Grid, Checkbox, FormControlLabel } from '@mui/material';\n\nimport useProperties from './useProperties';\n\nimport AppContext from '../../contexts/AppContext';\nimport Data from './property-panel/Data';\nimport generateComponents from './AutoComponents';\n\nexport default function Properties({ viz, sn, isTemp, storage, flags }) {\n const [properties, setProperties] = useProperties(viz?.model);\n const app = useContext(AppContext);\n\n const [isReadCacheEnabled, setReadCacheEnabled] = useState(storage.get('readFromCache') !== false);\n\n const handleCacheChange = (e) => {\n storage.save('readFromCache', e.target.checked);\n setReadCacheEnabled(e.target.checked);\n };\n\n const changed = useCallback(() => {\n setProperties(properties);\n }, [viz, sn, properties]);\n\n if (!sn) {\n return null;\n }\n\n if (!viz || !properties) {\n return null;\n }\n\n return (\n <div\n style={{\n minWidth: '250px',\n padding: '8px',\n }}\n >\n {isTemp && (\n <>\n <Grid item container alignItems=\"center\">\n <FormControlLabel\n control={\n <Checkbox checked={isReadCacheEnabled} onChange={handleCacheChange} value=\"isReadFromCacheEnabled\" />\n }\n label=\"Enable property cache\"\n labelPlacement=\"end\"\n />\n </Grid>\n <Divider />\n </>\n )}\n <Data properties={properties} setProperties={setProperties} sn={sn} />\n {generateComponents(properties, changed, app, flags)}\n </div>\n );\n}\n","import React, { useEffect, useState, useCallback } from 'react';\n\nimport { Button, Dialog, DialogTitle, DialogContent, DialogActions } from '@mui/material';\nimport { useTheme } from '@nebula.js/ui/theme';\nimport useRect from '@nebula.js/nucleus/src/hooks/useRect';\nimport * as monaco from '../../monaco-setup';\n\nexport default function PropertiesDialog({ model, show, close }) {\n const [objectProps, setObjectProps] = useState('');\n const [monacoEditor, setMonacoEditor] = useState(null);\n const [monacoEditorMarkers, setMonacoEditorMarkers] = useState([]);\n const [monacoRef, monacoRect, monacoNode] = useRect();\n const theme = useTheme();\n\n const onConfirm = useCallback(() => {\n if (monacoEditorMarkers.length) {\n return;\n }\n model.setProperties(JSON.parse(monacoEditor.getValue())).then(close);\n });\n\n useEffect(() => {\n if (!show) {\n return undefined;\n }\n const onChanged = () => {\n model &&\n show &&\n model.getProperties().then((props) => {\n show && setObjectProps(JSON.stringify(props || {}, null, 2));\n });\n };\n\n model.on('changed', onChanged);\n onChanged();\n return () => {\n model && model.removeListener('changed', onChanged);\n };\n }, [model && model.id, show]);\n\n useEffect(() => {\n if (!monacoRef || !monacoNode || !monacoRect || !objectProps) {\n return undefined;\n }\n const { left, top, width, height } = monacoRect;\n if (left === 0 && top === 0 && width === 0 && height === 0) {\n return undefined;\n }\n const editor = monaco.editor.create(monacoNode, {\n value: objectProps,\n language: 'json',\n scrollBeyondLastLine: false,\n theme: theme.palette.mode === 'dark' ? 'vs-dark' : 'vs-light',\n });\n editor.layout({ width: monacoRect.width, height: monacoRect.height });\n const subscription = editor.onDidChangeModelDecorations(() => {\n const m = monaco.editor.getModelMarkers();\n setMonacoEditorMarkers(m);\n });\n editor.focus();\n setMonacoEditor(editor);\n return () => {\n subscription.dispose();\n const editorModel = editor.getModel();\n if (editorModel) {\n editorModel.dispose();\n }\n editor.dispose();\n };\n }, [monacoNode, monacoRect, objectProps]);\n\n return (\n <Dialog\n disableEscapeKeyDown\n open={show}\n scroll=\"paper\"\n maxWidth=\"md\"\n onClose={close}\n PaperProps={{\n style: {\n height: '80%',\n width: '80%',\n },\n }}\n >\n <DialogTitle>Modify object properties</DialogTitle>\n <DialogContent dividers>\n <div ref={monacoRef} style={{ overflow: 'hidden', height: '100%' }} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={close}>\n Cancel\n </Button>\n <Button variant=\"contained\" onClick={onConfirm} disabled={monacoEditorMarkers.length > 0}>\n Confirm\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { useState, useCallback, useLayoutEffect } from 'react';\n\nexport default function useRect() {\n const [node, setNode] = useState();\n const [rect, setRect] = useState();\n const callbackRef = useCallback((ref) => {\n if (!ref) {\n return;\n }\n setNode(ref);\n }, []);\n const handleResize = () => {\n const { left, top, width, height } = node.getBoundingClientRect();\n setRect({ left, top, width, height });\n };\n useLayoutEffect(() => {\n if (!node) {\n return undefined;\n }\n if (typeof ResizeObserver === 'function') {\n let resizeObserver = new ResizeObserver(handleResize);\n resizeObserver.observe(node);\n return () => {\n resizeObserver.unobserve(node);\n resizeObserver.disconnect(node);\n resizeObserver = null;\n };\n }\n\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [node]);\n return [callbackRef, rect, node];\n}\n","// Monaco Editor manual worker setup\nimport * as monaco from 'monaco-editor';\n\n// Configure monaco environment with dynamic worker loading\n// eslint-disable-next-line no-restricted-globals\nself.MonacoEnvironment = {\n getWorker(_, label) {\n if (label === 'json') {\n return new Worker(new URL('monaco-editor/language/json/json.worker', import.meta.url));\n }\n return new Worker(new URL('monaco-editor/editor/editor.worker', import.meta.url));\n },\n};\n\n// Export monaco-editor\nexport * from 'monaco-editor';\nexport default monaco;\n","import React from 'react';\n\nconst VizContext = React.createContext({\n currentThemeName: null,\n activeViz: null,\n setActiveViz: () => {},\n expandedObject: null,\n setExpandedObject: () => {},\n});\n\nexport default VizContext;\n","import React from 'react';\n\nconst NebulaContext = React.createContext();\n\nexport default NebulaContext;\n","import React, {\n useEffect,\n useContext,\n useRef,\n // useState,\n} from 'react';\n\nimport NebulaContext from '../../contexts/NebulaContext';\n\nexport default function Chart({ id, onLoad }) {\n const nebbie = useContext(NebulaContext);\n const el = useRef();\n useEffect(() => {\n const n = nebbie.render({\n id,\n element: el.current,\n });\n n.then((viz) => {\n onLoad(viz, el.current);\n });\n return () => {\n n.then((v) => {\n v.destroy();\n });\n };\n }, [id]);\n\n return (\n <div\n ref={el}\n style={{\n height: '100%',\n backgroundColor: 'white',\n }}\n />\n );\n}\n","/* eslint no-underscore-dangle:0 */\nimport React, { useContext, useEffect, useState, useCallback, useRef } from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport { Grid, Toolbar, IconButton, CircularProgress } from '@mui/material';\n\nimport SvgIcon from '@nebula.js/ui/icons/SvgIcon';\nimport { useModelStore } from '@nebula.js/nucleus/src/hooks/useModelStore';\n\nimport PropsDialog from './PropertiesDialog';\n\nimport AppContext from '../../contexts/AppContext';\nimport VizContext from '../../contexts/VizContext';\n\nimport Chart from './Chart';\n\nconst PREFIX = 'Cell';\n\nconst classes = {\n secondaryIcon: `${PREFIX}-secondaryIcon`,\n drop: `${PREFIX}-drop`,\n};\n\nconst StyledGrid = styled(Grid)(({ theme }) => ({\n [`& .${classes.secondaryIcon}`]: {\n color: theme.palette.text.secondary,\n },\n\n [`& .${classes.drop}`]: {\n boxShadow: theme.shadows[1],\n borderRadius: `${theme.shape.borderRadius}px`,\n },\n}));\n\nexport default function ({ id, expandable, minHeight }) {\n const language = 'en-US'; // TODO - useLocale\n const app = useContext(AppContext);\n const [modelStore] = useModelStore();\n const [model, setModel] = useState(null);\n const [exporting, setExporting] = useState(false);\n const [localViz, setLocalViz] = useState(null);\n\n const { currentThemeName, activeViz, setActiveViz, setExpandedObject, expandedObject } = useContext(VizContext);\n\n const isExpanded = expandedObject === id;\n\n const vizRef = useRef();\n useEffect(() => {\n const v = app.getObject(id).then((m) => {\n setModel(m);\n modelStore.set(`${id}`, m);\n return m;\n });\n\n return () => {\n v.then((m) => m.emit('close'));\n };\n }, [id]);\n\n const [dialogOpen, setDialogOpen] = useState(false);\n const closeDialog = useCallback(() => {\n setDialogOpen(false);\n }, []);\n\n const onLoad = useCallback(\n (viz, el) => {\n vizRef.current = {\n viz,\n el,\n };\n setLocalViz(viz);\n },\n [id]\n );\n\n const toggleExpand = () => {\n if (isExpanded) {\n setExpandedObject(null);\n } else {\n setExpandedObject(id);\n setActiveViz(localViz);\n }\n };\n\n const snapIt = useCallback(\n (doExport = false) => {\n if (!vizRef.current) {\n return;\n }\n if (doExport) {\n setExporting(true);\n vizRef.current.viz.__DO_NOT_USE__.exportImage().then((res) => {\n if (res && res.url) {\n window.open(res.url);\n }\n setExporting(false);\n });\n } else {\n const containerSize = vizRef.current.el.getBoundingClientRect();\n vizRef.current.viz.__DO_NOT_USE__.takeSnapshot().then((snapshot) => {\n fetch('/njs/snapshot', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(snapshot),\n });\n window.open(\n `/render?snapshot=${snapshot.key}`,\n 'snapshot',\n `height=${Math.round(containerSize.height)},width=${Math.round(containerSize.width)}`\n );\n });\n }\n },\n [model, currentThemeName]\n );\n\n const activeStyle =\n !isExpanded && vizRef.current && activeViz && activeViz === vizRef.current.viz\n ? {\n boxShadow: '0px 0px 4px 2px rgba(0,100,200,0.85)',\n }\n : {};\n\n const isActive = activeViz === localViz;\n\n return (\n <StyledGrid container direction=\"column\" style={{ minHeight, height: '100%', position: 'relative' }}>\n <Grid item>\n <Toolbar variant=\"dense\" disableGutters style={{ padding: '0 0px', opacity: 1 }}>\n <PropsDialog model={model} show={dialogOpen} close={closeDialog} />\n <IconButton\n title=\"Modify object properties\"\n className={classes.secondaryIcon}\n disabled={!model}\n onClick={() => setDialogOpen(true)}\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 16 16',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M14,8 C14,8.2 14,8.4 14,8.6 L16,9.6 L15.4,11.4 L13.2,11 C13,11.3 12.8,11.7 12.5,12 L13.6,14 L12,15 L10.4,13.4 C10,13.5 9.7,13.7 9.3,13.8 L9,16 L7,16 L6.7,13.8 C6.3,13.7 5.9,13.6 5.6,13.4 L4,15 L2.4,13.9 L3.5,11.9 C3.2,11.6 3,11.3 2.8,10.9 L0.6,11.3 L0,9.6 L2,8.6 C2,8.4 2,8.2 2,8 C2,7.8 2,7.6 2,7.4 L0,6.4 L0.6,4.6 L2.8,5 C3,4.7 3.2,4.3 3.5,4 L2.4,2 L4,1 L5.6,2.6 C6,2.4 6.3,2.3 6.7,2.2 L7,0 L9,0 L9.3,2.2 C9.7,2.3 10.1,2.4 10.4,2.6 L12,1 L13.6,2.1 L12.5,4.1 C12.8,4.4 13,4.7 13.2,5.1 L15.4,4.7 L16,6.4 L14,7.4 C14,7.6 14,7.8 14,8 Z M8,11 C9.7,11 11,9.7 11,8 C11,6.3 9.7,5 8,5 C6.3,5 5,6.3 5,8 C5,9.7 6.3,11 8,11 Z',\n },\n },\n ],\n })}\n </IconButton>\n <IconButton\n title=\"Open in single render view\"\n className={classes.secondaryIcon}\n disabled={!model}\n href={\n model\n ? `${document.location.href.replace(/\\/dev\\//, '/render/')}${\n window.location.search ? '&' : '?'\n }object=${model.id}&theme=${currentThemeName}&language=${language}`\n : ''\n }\n target=\"_blank\"\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 24 24',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z',\n },\n },\n ],\n })}\n </IconButton>\n <IconButton\n title=\"Take and render as snapshot\"\n className={classes.secondaryIcon}\n disabled={!model}\n onClick={() => snapIt()}\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 24 24',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M9 2L7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z',\n },\n },\n ],\n })}\n </IconButton>\n {exporting ? (\n <CircularProgress size={24} />\n ) : (\n <IconButton\n title=\"Export as image\"\n className={classes.secondaryIcon}\n disabled={!model}\n onClick={() => snapIt(true)}\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 24 24',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z',\n },\n },\n ],\n })}\n </IconButton>\n )}\n <Grid sx={{ flex: 1 }} />\n {expandable && (\n <IconButton\n title=\"Edit\"\n className={classes.secondaryIcon}\n disabled={!localViz || isActive}\n onClick={() => setActiveViz(localViz)}\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 24 24',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z',\n },\n },\n ],\n })}\n </IconButton>\n )}\n {expandable && (\n <IconButton\n title=\"Expand\"\n disabled={!model || !localViz}\n className={classes.secondaryIcon}\n onClick={() => toggleExpand()}\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 24 24',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: isExpanded\n ? 'M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z'\n : 'M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z',\n },\n },\n ],\n })}\n </IconButton>\n )}\n </Toolbar>\n </Grid>\n <Grid item xs style={{ ...activeStyle, flex: 1, minHeight: 0 }} className={classes.drop}>\n <Chart id={id} onLoad={onLoad} />\n </Grid>\n </StyledGrid>\n );\n}\n","import React, { useEffect, useContext } from 'react';\n\nimport { Grid } from '@mui/material';\n\nimport useProperties from './useProperties';\n\nimport Cell from './Cell';\nimport NebulaContext from '../../contexts/NebulaContext';\nimport VizContext from '../../contexts/VizContext';\n\nexport default function Stage({ info, storage, uid }) {\n const nebbie = useContext(NebulaContext);\n const { activeViz, setActiveViz } = useContext(VizContext);\n const [properties] = useProperties(activeViz?.model);\n\n useEffect(() => {\n if (!uid) {\n return undefined;\n }\n const res = nebbie.render({\n type: info.supernova.name,\n properties: {\n ...(storage.get('readFromCache') !== false ? storage.props(info.supernova.name) : {}),\n qInfo: {\n qId: uid,\n qType: info.supernova.name,\n },\n },\n });\n res.then((v) => {\n setActiveViz(v);\n });\n return () => {\n res.then((v) => v.destroy());\n };\n }, [uid]);\n\n useEffect(() => {\n if (!properties) return;\n storage.props(info.supernova.name, properties);\n }, [properties]);\n\n if (!activeViz || activeViz.id !== uid) return null;\n\n return (\n <Grid\n item\n container\n justifyContent=\"center\"\n style={{\n height: '100%',\n }}\n >\n <Grid item xs style={{ flex: 1, minWidth: 0 }}>\n <Cell id={uid} />\n </Grid>\n </Grid>\n );\n}\n","import React, { useEffect, useContext, useState } from 'react';\n\nimport { useAppLayout } from '@nebula.js/nucleus/src/hooks/useLayout';\n\nimport { Grid, Typography } from '@mui/material';\n\nimport AppContext from '../../contexts/AppContext';\nimport VizContext from '../../contexts/VizContext';\nimport Cell from './Cell';\n\nexport default function Collection({ types, cache }) {\n const app = useContext(AppContext);\n const [layout] = useAppLayout(app);\n const [objects, setObjects] = useState(null);\n\n const { expandedObject } = useContext(VizContext);\n\n useEffect(() => {\n app\n .getObjects({\n qTypes: types,\n // qIncludeSessionObjects: true,\n qData: {\n title: '/qMetaDef/title',\n },\n })\n .then((list) => {\n setObjects(list.slice(0, 20)); // don't show too many to avoid slow UI\n });\n }, [layout, types.join(':')]);\n\n if (!objects) {\n return null;\n }\n\n const current = expandedObject ? objects.filter((o) => o.qInfo.qId === expandedObject) : objects;\n\n return (\n <Grid\n container\n justifyContent=\"center\"\n gap={expandedObject ? 0 : 2}\n style={{\n height: expandedObject ? '100%' : undefined,\n }}\n >\n {current[0] ? (\n current.map((c) => (\n <Grid item xs={12} md={expandedObject ? 12 : 6} lg={expandedObject ? 12 : 4} key={`${c.qInfo.qId}::${cache}`}>\n <Cell id={c.qInfo.qId} expandable minHeight={600} />\n </Grid>\n ))\n ) : (\n <Grid item>\n <div>\n <Typography display=\"inline\">Could not find any components with </Typography>\n <Typography display=\"inline\">\n <code>{`qType: \"${types[0]}\"`}</code>\n </Typography>\n <Typography display=\"inline\"> in the current app</Typography>\n </div>\n </Grid>\n )}\n </Grid>\n );\n}\n","/* eslint no-underscore-dangle:0 */\nimport React, { useEffect, useLayoutEffect, useState, useRef, useMemo } from 'react';\nimport { useNavigate } from 'react-router';\nimport { embed } from '@nebula.js/stardust';\nimport { createTheme, ThemeProvider, StyledEngineProvider } from '@nebula.js/ui/theme';\nimport { WbSunny, Brightness3, ColorLens, Language, Home } from '@nebula.js/ui/icons';\nimport InstanceContext from '@nebula.js/nucleus/src/contexts/InstanceContext';\nimport initModelStore from '@nebula.js/nucleus/src/stores/new-model-store';\nimport initSelectionStore from '@nebula.js/nucleus/src/stores/new-selections-store';\n\nimport {\n Grid,\n Toolbar,\n Button,\n IconButton,\n ToggleButtonGroup,\n ToggleButton,\n Typography,\n Tab,\n Tabs,\n Menu,\n MenuItem,\n CircularProgress,\n} from '@mui/material';\nimport initiateWatch from '../../hot';\nimport { getHostConfig } from '../../connect';\n\nimport Properties from './Properties';\nimport Stage from './Stage';\nimport Collection from './Collection';\n\nimport AppContext from '../../contexts/AppContext';\nimport NebulaContext from '../../contexts/NebulaContext';\nimport VizContext from '../../contexts/VizContext';\n\nimport storageFn from '../../storage';\nimport { useInfo, useOpenApp } from '../../hooks';\n\nconst SPACING = 2;\n\nconst languages = [\n 'en-US',\n 'it-IT',\n 'zh-CN',\n 'zh-TW',\n 'ko-KR',\n 'de-DE',\n 'sv-SE',\n 'es-ES',\n 'pt-BR',\n 'ja-JP',\n 'fr-FR',\n 'nl-NL',\n 'tr-TR',\n 'pl-PL',\n 'ru-RU',\n];\n\nconst interactions = ['select', 'active', 'passive'];\n\nfunction getInteractions(arr) {\n return {\n select: arr.indexOf('select') !== -1,\n active: arr.indexOf('active') !== -1,\n passive: arr.indexOf('passive') !== -1,\n edit: arr.indexOf('edit') !== -1,\n };\n}\n\nexport default function Visualize() {\n const uid = useRef();\n const navigate = useNavigate();\n const { info } = useInfo();\n const { waiting, app } = useOpenApp({ info });\n const storage = useMemo(() => storageFn(app), [app]);\n const [activeViz, setActiveViz] = useState(null);\n const [expandedObject, setExpandedObject] = useState(null);\n const [sn, setSupernova] = useState(null);\n const [currentThemeName, setCurrentThemeName] = useState(storage.get('themeName'));\n const [currentLanguage, setCurrentLanguage] = useState(storage.get('language') || 'en-US');\n const [currentMuiThemeName, setCurrentMuiThemeName] = useState('light');\n const [currentInteractions, setCurrentInteractions] = useState(interactions);\n const [objectListMode, setObjectListMode] = useState(storage.get('objectListMode') === true);\n const currentSelectionsRef = useRef(null);\n const [currentId, setCurrentId] = useState();\n const [themeChooserAnchorEl, setThemeChooserAnchorEl] = React.useState(null);\n const [languageChooserAnchorEl, setLanguageChooserAnchorEl] = React.useState(null);\n const [initialized, setInit] = useState(false);\n const [nebbie, setNebbie] = useState(null);\n const customThemes = Array.isArray(info?.themes) && info.themes.length ? ['light', 'dark', ...info.themes] : [];\n const [context, setContext] = useState();\n\n const theme = useMemo(() => createTheme(currentMuiThemeName), [currentMuiThemeName]);\n\n const vizContext = useMemo(\n () => ({\n currentThemeName,\n activeViz,\n setActiveViz,\n expandedObject,\n setExpandedObject,\n }),\n [activeViz, expandedObject, currentThemeName]\n );\n\n useEffect(() => {\n (async () => {\n if (info) {\n await initiateWatch(info);\n setInit(true);\n }\n })();\n }, [info]);\n\n useEffect(() => {\n if (waiting || !initialized) return;\n const n = embed(app, {\n hostConfig: info?.engine ? getHostConfig(info) : undefined,\n context: {\n theme: currentThemeName,\n language: currentLanguage,\n interactions: getInteractions(currentInteractions),\n keyboardNavigation: info?.keyboardNavigation,\n },\n load: (type) => Promise.resolve(window[type.name]),\n flags: info?.flags,\n themes: info?.themes\n ? info?.themes.map((t) => ({\n id: t,\n load: () =>\n fetch(`/theme/${t}`)\n .then((response) => response.json())\n .then((raw) => {\n setCurrentMuiThemeName(raw.type === 'dark' ? 'dark' : 'light');\n return raw;\n }),\n }))\n : null,\n });\n n.__DO_NOT_USE__.types.register(info?.supernova);\n if (info?.types) {\n info?.types.forEach((t) => {\n n.__DO_NOT_USE__.types.register(t);\n });\n }\n\n setNebbie(n);\n }, [app, info, waiting, initialized]);\n\n useLayoutEffect(() => {\n if (!nebbie) return;\n\n nebbie.context({ theme: currentThemeName });\n if (currentThemeName === 'light' || currentThemeName === 'dark') {\n setCurrentMuiThemeName(currentThemeName);\n }\n }, [nebbie, currentThemeName]);\n\n const create = () => {\n if (window[info?.supernova.name]) {\n uid.current = String(Date.now());\n setCurrentId(uid.current);\n }\n };\n\n useEffect(() => {\n if (!nebbie) return;\n\n nebbie.selections().then((s) => s.mount(currentSelectionsRef.current));\n window.onHotChange(info?.supernova.name, () => {\n nebbie.__DO_NOT_USE__.types.clearFromCache(info?.supernova.name);\n nebbie.__DO_NOT_USE__.types.register(info?.supernova);\n\n create();\n\n nebbie.__DO_NOT_USE__.types\n .get({\n name: info?.supernova.name,\n })\n .supernova()\n .then(setSupernova);\n });\n\n create();\n }, [nebbie, info]);\n\n useEffect(() => {\n const unload = () => {\n if (app) app.destroySessionObject(uid.current);\n };\n window.addEventListener('beforeunload', unload);\n\n if (app) {\n const modelStore = initModelStore(app.id);\n const selectionStore = initSelectionStore(app.id);\n setContext({\n modelStore,\n selectionStore,\n myKey: 'this is the key here',\n });\n }\n\n return () => {\n window.removeEventListener('beforeunload', unload);\n };\n }, [app]);\n\n const handleThemeChange = (t) => {\n setThemeChooserAnchorEl(null);\n storage.save('themeName', t);\n setCurrentThemeName(t);\n };\n\n const handleLanguageChange = (lang) => {\n setLanguageChooserAnchorEl(null);\n storage.save('language', lang);\n setCurrentLanguage(lang);\n nebbie && nebbie.context({ language: lang });\n };\n\n const handleInteractionsChange = (e, newValue) => {\n setCurrentInteractions(newValue);\n nebbie && nebbie.context({ interactions: getInteractions(newValue) });\n };\n\n const toggleDarkMode = () => {\n const v = currentThemeName === 'dark' ? 'light' : 'dark';\n storage.save('themeName', v);\n setCurrentThemeName(v);\n setCurrentMuiThemeName(v);\n };\n\n const handleCreateEditChange = (e, newValue) => {\n const listMode = newValue === 1;\n storage.save('objectListMode', listMode);\n if (listMode) {\n setActiveViz(null);\n setExpandedObject(null);\n }\n setObjectListMode(listMode);\n };\n // For another time: refactor away the usage of internal Nebula hooks so we don't need the InstanceContext here.\n return (\n <InstanceContext.Provider value={context}>\n <AppContext.Provider value={app}>\n <StyledEngineProvider injectFirst>\n <ThemeProvider theme={theme}>\n <NebulaContext.Provider value={nebbie}>\n <Grid\n container\n wrap=\"nowrap\"\n direction=\"column\"\n style={{ background: theme.palette.background.darkest, height: '100%' }}\n gap={0}\n >\n <Grid item>\n <Toolbar\n variant=\"dense\"\n style={{\n background: theme.palette.background.paper,\n boxShadow: theme.shadows[1],\n width: `calc(100% - 48px)`,\n }}\n >\n <Grid container gap={1} style={{ width: '100%' }}>\n <Grid item container alignItems=\"center\">\n <Grid item>\n <a href=\"https://github.com/qlik-oss/nebula.js\" target=\"_blank\" rel=\"noopener noreferrer\">\n <img\n src=\"/assets/logo.svg\"\n alt=\"nebula.js logo\"\n href=\"https://github.com/qlik-oss/nebula.js\"\n style={{ height: '24px', position: 'relative', top: '2px' }}\n />\n </a>\n </Grid>\n </Grid>\n <Grid item container alignItems=\"center\">\n <IconButton title=\"Home\" onClick={() => navigate('/')} size=\"large\">\n <Home style={{ verticalAlign: 'middle' }} />\n </IconButton>\n </Grid>\n <Grid>\n <Tabs value={objectListMode ? 1 : 0} onChange={handleCreateEditChange} aria-label=\"Navigation\">\n <Tab label={<Typography>Create</Typography>} value={0} />\n <Tab label={<Typography>Edit</Typography>} value={1} />\n </Tabs>\n </Grid>\n <Grid item container alignItems=\"center\" offset={{ md: 'auto' }}>\n <Grid item gap={1}>\n <Typography>State:</Typography>\n </Grid>\n <Grid item gap={2}>\n <ToggleButtonGroup\n size=\"small\"\n value={currentInteractions}\n onChange={handleInteractionsChange}\n color=\"primary\"\n >\n <ToggleButton value=\"select\">Select</ToggleButton>\n <ToggleButton value=\"active\">Active</ToggleButton>\n <ToggleButton value=\"passive\">Passive</ToggleButton>\n <ToggleButton value=\"edit\">Edit</ToggleButton>\n </ToggleButtonGroup>\n </Grid>\n <Grid item>\n {customThemes.length ? (\n <>\n <IconButton\n title=\"Select theme\"\n onClick={(e) => setThemeChooserAnchorEl(e.currentTarget)}\n size=\"large\"\n >\n <ColorLens fontSize=\"small\" />\n </IconButton>\n <Menu\n anchorEl={themeChooserAnchorEl}\n open={!!themeChooserAnchorEl}\n keepMounted\n onClose={() => setThemeChooserAnchorEl(null)}\n >\n {customThemes.map((t) => (\n <MenuItem\n key={t}\n selected={t === currentThemeName}\n onClick={() => handleThemeChange(t)}\n >\n {t}\n </MenuItem>\n ))}\n </Menu>\n </>\n ) : (\n <IconButton title=\"Toggle light/dark mode\" onClick={toggleDarkMode} size=\"large\">\n {currentThemeName === 'dark' ? (\n <WbSunny fontSize=\"small\" />\n ) : (\n <Brightness3 fontSize=\"small\" />\n )}\n </IconButton>\n )}\n </Grid>\n <Grid item>\n <Button\n startIcon={<Language />}\n title=\"Select language\"\n onClick={(e) => setLanguageChooserAnchorEl(e.currentTarget)}\n >\n {currentLanguage}\n </Button>\n <Menu\n anchorEl={languageChooserAnchorEl}\n open={!!languageChooserAnchorEl}\n keepMounted\n onClose={() => setLanguageChooserAnchorEl(null)}\n >\n {languages.map((t) => (\n <MenuItem\n key={t}\n selected={t === currentLanguage}\n onClick={() => handleLanguageChange(t)}\n >\n {t}\n </MenuItem>\n ))}\n </Menu>\n </Grid>\n </Grid>\n </Grid>\n </Toolbar>\n </Grid>\n <Grid item style={{ padding: theme.spacing(SPACING / 2, SPACING / 2, 0, SPACING / 2) }}>\n <div ref={currentSelectionsRef} style={{ flex: '0 0 auto', boxShadow: theme.shadows[1] }} />\n </Grid>\n <Grid\n item\n xs\n style={{\n flex: 1,\n minHeight: 0,\n overflowX: 'hidden',\n overflowY: 'auto',\n padding: theme.spacing(0, SPACING / 2, SPACING / 2, SPACING / 2),\n }}\n >\n <VizContext.Provider value={vizContext}>\n {sn ? (\n <Grid container wrap=\"nowrap\" style={{ height: '100%' }} gap={SPACING / 2}>\n <Grid item xs style={{ flex: 1, minWidth: 0 }}>\n {objectListMode ? (\n <Collection cache={currentId} types={[info?.supernova.name]} />\n ) : (\n <Stage info={info} storage={storage} uid={currentId} />\n )}\n </Grid>\n {activeViz && (\n <Grid\n item\n style={{\n background: theme.palette.background.paper,\n overflow: 'hidden auto',\n marginTop: 48,\n boxShadow: theme.shadows[1],\n padding: 0,\n }}\n >\n <Properties\n sn={sn}\n viz={activeViz}\n isTemp={!objectListMode}\n storage={storage}\n flags={info?.flags}\n />\n </Grid>\n )}\n </Grid>\n ) : (\n <Grid container wrap=\"nowrap\" style={{ paddingTop: '48px' }} justifyContent=\"center\">\n <Grid item>\n <CircularProgress />\n </Grid>\n </Grid>\n )}\n </VizContext.Provider>\n </Grid>\n </Grid>\n </NebulaContext.Provider>\n </ThemeProvider>\n </StyledEngineProvider>\n </AppContext.Provider>\n </InstanceContext.Provider>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { openAppSession } from '@qlik/api/qix';\n\nexport const useOpenApp = ({ info }) => {\n const [app, setApp] = useState(null);\n const [waiting, setWaiting] = useState(true);\n\n useEffect(() => {\n setWaiting(true);\n if (!info) return;\n handleOpenApp()\n .then((resultApp) => setApp(resultApp))\n .catch((err) => console.log(err))\n .finally(() => setWaiting(false));\n }, [info]);\n\n const handleOpenApp = async () => {\n try {\n const { clientId, webIntegrationId, engine: engineConfig = null, engine: { host } = {} } = info;\n const appId = info?.engine?.appId;\n if (!appId) throw new Error('Missing appId in connection info');\n\n if (webIntegrationId) {\n return openAppSession({\n appId,\n hostConfig: { authType: 'cookie', webIntegrationId, host },\n }).getDoc();\n }\n\n if (clientId) {\n return openAppSession({\n appId,\n hostConfig: {\n authType: 'oauth2',\n clientId,\n host,\n redirectUri: `${window.location.origin}/auth/login/callback`,\n accessTokenStorage: 'session',\n },\n }).getDoc();\n }\n\n // Local / no-auth engine (e.g. qlik-core, docker engine)\n const scheme = engineConfig.secure !== false ? 'https' : 'http';\n const localHost = `${scheme}://${engineConfig.host}${engineConfig.port ? `:${engineConfig.port}` : ''}`;\n return openAppSession({\n appId,\n hostConfig: { authType: 'noauth', host: localHost },\n }).getDoc();\n } catch (error) {\n throw new Error('Failed to open app!', { cause: error });\n }\n };\n\n return { waiting, app, setApp };\n};\n","import createKeyStore from './create-key-store';\n\nexport default function initializeStores(appId) {\n const [useRpcResultStore, rpcResultStore] = createKeyStore({});\n const [useRpcRequestStore, rpcRequestStore] = createKeyStore({});\n const [useRpcRequestSessionModelStore, rpcRequestSessionModelStore] = createKeyStore({});\n const [useRpcRequestModelStore, rpcRequestModelStore] = createKeyStore({});\n\n const [useModelChangedStore, modelChangedStore] = createKeyStore({});\n const [, modelInitializedStore] = createKeyStore({});\n\n const modelStoreMiddleware = ({ type, value: model }) => {\n const initialized = modelInitializedStore.get(model.id);\n modelInitializedStore.set(model.id, {});\n const onChanged = () => {\n rpcRequestStore.clear(model.id);\n modelChangedStore.set(model.id, {});\n modelChangedStore.dispatch(true); // Force new state to trigger hooks\n };\n const unsubscribe = () => {\n model.removeListener('closed', unsubscribe);\n model.removeListener('changed', onChanged);\n rpcResultStore.clear(model.id);\n rpcRequestStore.clear(model.id);\n rpcRequestSessionModelStore.clear(model.id);\n rpcRequestModelStore.clear(model.id);\n modelChangedStore.clear(model.id);\n modelInitializedStore.clear(model.id);\n };\n switch (type) {\n case 'SET':\n if (!initialized) {\n model.on('changed', onChanged);\n model.once('closed', unsubscribe);\n }\n break;\n default:\n break;\n }\n return unsubscribe;\n };\n\n const [useModelStore, modelStore] = createKeyStore({}, modelStoreMiddleware);\n\n const subscribe = (model) => {\n const unsubscribe = modelStoreMiddleware({ type: 'SET', value: model });\n return () => {\n unsubscribe();\n modelStore.clear(model.id);\n };\n };\n\n const destroy = () => {\n modelStore.destroy();\n };\n\n return {\n subscribe,\n destroy,\n useModelStore,\n modelStore,\n useModelChangedStore,\n useRpcResultStore,\n rpcResultStore,\n useRpcRequestStore,\n rpcRequestStore,\n useRpcRequestModelStore,\n rpcRequestModelStore,\n useRpcRequestSessionModelStore,\n rpcRequestSessionModelStore,\n modelChangedStore,\n appId,\n };\n}\n","import createKeyStore from './create-key-store';\n\nexport default function initializeStores(appId) {\n const [useAppSelectionsStore, appSelectionsStore] = createKeyStore({});\n const [useAppModalStore, appModalStore] = createKeyStore({});\n const [useModalObjectStore, modalObjectStore] = createKeyStore({});\n\n return {\n useAppSelectionsStore,\n useAppModalStore,\n appSelectionsStore,\n appModalStore,\n useModalObjectStore,\n modalObjectStore,\n appId,\n };\n}\n","import React from 'react';\nimport { Typography } from '@mui/material';\nimport { ThemeWrapper } from '../../ThemeWrapper';\nimport { ContentWrapper } from '../styles';\n\n/**\n *\n * Since we updated our OAuth redirect link to include `/auth/` part in it,\n * we are currently showing this error page for old client-ids that\n * are still trying to redirect to the /login/callback url\n * the point is to give them a quick guid about update their\n * redirect url in tenant\n */\nconst OAuthRedirectLinkError = () => (\n <ThemeWrapper>\n <ContentWrapper marginTop={5}>\n <Typography variant=\"h4\" gutterBottom>\n Error!\n </Typography>\n <Typography variant=\"subtitle1\" gutterBottom>\n OAUTH REDIRECT LINK ERROR!\n </Typography>\n\n <Typography variant=\"body2\" paragraph>\n We updated our route which was previously had the responsibility to handle the redirected link including the\n correct credentials to have{' '}\n <code>\n <b>/auth/</b>\n </code>{' '}\n part within it. This change is now impacting your redirect links if you already using your old client-id.\n </Typography>\n\n <Typography variant=\"h6\" gutterBottom>\n Here is what you need to do:\n </Typography>\n\n <Typography variant=\"body2\" paragraph>\n <b>1.</b> Go to your tenant that you created your client id\n <br />\n <br />\n <b>2.</b> Open Managment console\n <br />\n <br />\n <b>3.</b> Click on OAuth menu in left panel (if you dont see that menu it means you dont have access to it and\n you need to ask a person who has the proper access)\n <br />\n <br />\n <b>4.</b> Find your Client id and from ... menu, click on edit\n <br />\n <br />\n <b>5.</b> There is a section called "Add redirect URLs", find it and add your new link. The only\n difference is that your new link will include `/auth/` part in it, for example, if you had this redirect link\n previously:\n <code>http://localhost:8000/login/callback</code>\n <br />\n now it will be like:\n <code>\n http://localhost:8000/<b>auth/</b>login/callback\n </code>\n <br />\n <br />\n <b>6.</b> Click on save and you are set!\n <br />\n </Typography>\n </ContentWrapper>\n </ThemeWrapper>\n);\n\nexport default OAuthRedirectLinkError;\n","import React from 'react';\nimport * as ReactDOM from 'react-dom/client';\n\nimport { Root } from './components/Root';\n\nReactDOM.createRoot(document.querySelector('#app')).render(<Root />);\n","import React from 'react';\nimport { BrowserRouter, Routes, Route } from 'react-router';\nimport { RootContextProvider } from '../contexts/RootContext';\n\nimport HubLayout from './Layouts/HubLayout';\nimport SelectEngine from './Hub/SelectEngine/SelectEngine';\nimport AppList from './Hub/AppList';\nimport Visualize from './Visualize/Visualize';\nimport OAuthRedirectLinkError from './Hub/Errors/OAuthRedirectLinkError';\n\nexport const Root = () => (\n <BrowserRouter>\n <RootContextProvider>\n <Routes>\n <Route element={<HubLayout />}>\n <Route path=\"/\" element={<SelectEngine />} />\n <Route path=\"/app-list\" element={<AppList />} />\n </Route>\n <Route path=\"/dev\" element={<Visualize />} />\n <Route path=\"/login/callback\" element={<OAuthRedirectLinkError />} />\n </Routes>\n </RootContextProvider>\n </BrowserRouter>\n);\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(\n\t\tObject.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t\t__webpack_require__.f[key](chunkId, promises);\n\t\t\treturn promises;\n\t\t}, [])\n\t);\n};","__webpack_require__.hmd = (module) => {\n module = Object.create(module);\n if (!module.children) module.children = [];\n Object.defineProperty(module, 'exports', {\n enumerable: true,\n set: () => {\n throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n }\n });\n return module;\n};","// This function allow to reference chunks\n__webpack_require__.u = (chunkId) => {\n // return url for filenames not based on template\n \n // return url for filenames based on template\n return \"async/\" + chunkId + \".js\"\n}","__webpack_require__.g = (() => {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n module.paths = [];\n if (!module.children) module.children = [];\n return module;\n};","__webpack_require__.nc = undefined;","__webpack_require__.p = \"/\";"],"names":["getCsrfToken","host","token","res","fetch","err","console","urlRegex","appRegex","prefixRegx","getConnectionInfo","response","n","opts","info","params","window","pair","idx","name","value","decodeURIComponent","parseEngineURL","url","appId","appUrl","match","trimmedUrl","engineUrl","appMatch","engineMatch","undefined","rootPath","setHostConfig","webIntegrationId","clientId","auth","buildDocList","data","getItems","d","error","Error","useInfo","setInfo","useState","useEffect","i","handleSessionNotification","result","setError","setGlobal","e","app","stored","parsed","JSON","appid","s","v","p","RootContext","createContext","useRootContext","ctx","useContext","RootContextProvider","children","location","useLocation","navigate","useNavigate","storage","useMemo","storageFn","cachedConnectionsData","useCachedConnections","cachedConnections","setCachedConnections","removeCachedConnection","li","conns","addCachedConnections","protocol","prefix","newConns","connectionData","useConnection","glob","treatAsDesktop","setTreatAsDesktop","activeStep","setActiveStep","connect","engineConfig","csrfToken","scheme","port","enigma","qixSchema","handleConnectionSuccess","config","handleConnectionFailure","oops","WebSocket","rootContextValue","light","colors","dark","cache","create","definition","def","key","withDefaults","base","adaptedTheme","theme","buttonClasses","createTheme","ThemeWrapper","themeName","StyledEngineProvider","ThemeProvider","Container","ContentWrapper","styled","Box","marginTop","StepperWrapper","Stepper","CustomStepLabel","StepLabel","prop","shouldBePointer","steps","handleStepperClick","label","Step","ConnectionSteps","Outlet","showGuid","Collapse","Typography","Link","SvgIcon","param","size","style","viewBox","shapes","ix","Type","attrs","props","OptionsToConnect","List","item","ListItemButton","checkIfHistoryConnectionDisabled","ListItemText","IconButton","Remove","message","hints","hint","FormManager","fields","isCredentialProvided","inputs","setInputs","evt","URL","Grid","field","OutlinedInput","x","getFieldPlaceHolder","Button","shouldDisableSubmitBtn","Object","ConnectionOptions","tabIdx","setTabIdx","Tabs","_","id","Tab","checkIfConnectionOptionDisabled","labelKey","formFields","TabPanel","setShowGuid","useDeauthorizePrevOAuthInstance","Help","ConnectionHistory","ConnectionGuid","loading","appList","useAppList","setAppList","setLoading","apps","CircularProgress","appData","getAppLink","targetApp","search","csrfQuery","newEngineUrl","encodeURIComponent","modifiedEngineUrl","React","initialState","applyMiddleware","hookListeners","subscribedListeners","store","sharedState","unsubscribe","forceNewState","listener","setState","SHARED","stardust","ReactDOMClient","jsxRuntime","IDENTIFIER","importMapAdded","getModule","m","addImportMap","globalThis","imports","exported","ns","Blob","script","document","src","Date","hotListeners","fn","useProperties","model","properties","setProps","onChanged","AppContext","idGen","toChar","min","max","Math","uid","addIndex","array","index","removeIndex","removeIdx","hcHandler","hc","handler","dimension","measure","loHandler","lo","k","loContainerHandler","loc","dimensions","maxDims","useModelStore","useFunc","InstanceContext","useSessionModel","_key","deps","modelStore","rpcRequestSessionModelStore","useRpcRequestSessionModelStore","setModel","rpcShared","newModel","rpcReducer","state","action","newState","rpcResultStore","method","useRpc","useRpcResultStore","dispatch","useReducer","modelChangedStore","useModelChangedStore","rpcRequestStore","useRpcRequestStore","call","skipRetry","rpc","Promise","resolve","setTimeout","global","useLayout","layout","validating","canCancel","canRetry","longrunning","D","M","list","type","PREFIX","classes","StyledGrid","resetZoom","viewportMetaTag","HTMLMetaElement","Search","onChange","onEnter","onEscape","setValue","SearchIcon","TextField","Field","onSelect","sub","parts","part","ChevronRight","LibraryItem","Aggr","aggr","LibraryList","title","searchTerm","libraryItems","useLibraryList","sortedLibraryItems","a","b","ListSubheader","matches","parse","FieldsPopover","alignTo","show","close","onSelected","selectedField","setSelectedField","setSearchTerm","useTheme","onAggregateSelected","Popover","ListItemIcon","ChevronLeft","Divider","FieldTitle","f","ff","Fields","items","addLabel","onAdded","onRemoved","canAdd","isActive","setIsActive","btn","useRef","ListItem","o","DataCube","setProperties","target","setDimensions","supportsMultipleDims","createHandler","dc","getValue","reference","dataContainer","dim","addedDim","Data","sn","targets","t","variableList","StyledAccordion","Accordion","registeredComponents","property","changed","FormControlLabel","Checkbox","setS","AccordionSummary","ExpandMore","AccordionDetails","generateComponents","initial","InputAdornment","l","setL","fetchData","getVariables","reply","FormControl","Select","selected","c","MenuItem","QRX","enableExpressions","flags","components","Array","Boolean","Properties","viz","isTemp","isReadCacheEnabled","setReadCacheEnabled","useCallback","PropertiesDialog","objectProps","setObjectProps","monacoEditor","setMonacoEditor","monacoEditorMarkers","setMonacoEditorMarkers","monacoRef","monacoRect","monacoNode","useRect","node","setNode","rect","setRect","callbackRef","ref","handleResize","left","top","width","height","useLayoutEffect","ResizeObserver","resizeObserver","onConfirm","editor","monaco","subscription","editorModel","Dialog","DialogTitle","DialogContent","DialogActions","self","Worker","VizContext","NebulaContext","Chart","onLoad","nebbie","el","expandable","minHeight","exporting","setExporting","localViz","setLocalViz","currentThemeName","activeViz","setActiveViz","setExpandedObject","expandedObject","isExpanded","vizRef","dialogOpen","setDialogOpen","closeDialog","snapIt","doExport","containerSize","snapshot","activeStyle","Toolbar","PropsDialog","Stage","Cell","Collection","types","objects","setObjects","current","languages","interactions","getInteractions","arr","Visualize","waiting","useOpenApp","setApp","setWaiting","handleOpenApp","resultApp","openAppSession","localHost","setSupernova","setCurrentThemeName","currentLanguage","setCurrentLanguage","currentMuiThemeName","setCurrentMuiThemeName","currentInteractions","setCurrentInteractions","objectListMode","setObjectListMode","currentSelectionsRef","currentId","setCurrentId","themeChooserAnchorEl","setThemeChooserAnchorEl","languageChooserAnchorEl","setLanguageChooserAnchorEl","initialized","setInit","setNebbie","customThemes","context","setContext","vizContext","update","mo","ws","embed","getHostConfig","secure","raw","String","unload","initModelStore","createKeyStore","useRpcRequestModelStore","rpcRequestModelStore","modelInitializedStore","modelStoreMiddleware","subscribe","destroy","selectionStore","initSelectionStore","useAppSelectionsStore","appSelectionsStore","useAppModalStore","appModalStore","useModalObjectStore","modalObjectStore","Home","newValue","listMode","ToggleButtonGroup","ToggleButton","ColorLens","Menu","WbSunny","Brightness3","Language","SPACING","ReactDOM","BrowserRouter","Routes","Route","HubLayout","SelectEngine","AppList","OAuthRedirectLinkError","Root","Function","clearTimeout","Symbol","r"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["webpack://webpack/runtime/create_fake_namespace_object","webpack://webpack/runtime/load_script","webpack://webpack/runtime/on_chunk_loaded","webpack://webpack/runtime/jsonp_chunk_loading","../web/utils/getCsrfToken.js","../web/connect.js","../web/hooks/useInfo.js","../web/hooks/useConnection.js","../web/storage.js","../web/contexts/RootContext.jsx","../web/hooks/useCachedConnections.js","../../../packages/ui/theme/definitions/base.js","../../../packages/ui/theme/definitions/colors.js","../../../packages/ui/theme/definitions/light.js","../../../packages/ui/theme/definitions/dark.js","../../../packages/ui/theme/create.js","../web/components/ThemeWrapper.jsx","../web/components/Hub/styles.js","../web/constants/connectionSteps.js","../web/components/Hub/ConnectionSteps.jsx","../web/components/Layouts/HubLayout.jsx","../web/components/Hub/SelectEngine/ConnectionGuid.jsx","../../../packages/ui/icons/SvgIcon.jsx","../../../packages/ui/icons/remove.js","../web/constants/optionsToConnect.js","../web/utils/testRenderer.jsx","../web/components/Hub/SelectEngine/ConnectionHistory.jsx","../web/utils/checkIfHistoryConnectionDisabled.js","../web/components/Hub/SelectEngine/Error.jsx","../web/components/Hub/SelectEngine/FormManager.jsx","../web/utils/formUtils.js","../web/components/Hub/SelectEngine/ConnectionOptions.jsx","../web/utils/detectDefaultConnectionStep.js","../web/utils/checkIfConnectionOptionDisabled.js","../web/components/Hub/SelectEngine/SelectEngine.jsx","../web/hooks/useDeauthorizePrevOAuthInstance.js","../web/components/Hub/AppList.jsx","../web/hooks/useAppList.js","../web/utils/appLinkManager.js","../../../apis/nucleus/src/contexts/InstanceContext.js","../../../apis/nucleus/src/stores/create-key-store.js","../web/hot.js","../web/components/Visualize/useProperties.js","../web/contexts/AppContext.js","../../../apis/nucleus/src/object/uid.js","../../../apis/nucleus/src/object/hc-handler.js","../../../apis/nucleus/src/object/lo-handler.js","../../../apis/nucleus/src/object/lo-container-handler.js","../../../apis/nucleus/src/hooks/useModelStore.js","../../../apis/nucleus/src/hooks/useSessionModel.js","../../../apis/nucleus/src/hooks/useRpc.js","../../../apis/nucleus/src/hooks/useLayout.js","../web/hooks/useLibraryList.js","../../../packages/ui/icons/search.js","../web/components/Visualize/Search.jsx","../web/components/Visualize/FieldsPopover.jsx","../web/components/Visualize/property-panel/Fields.jsx","../web/components/Visualize/property-panel/DataCube.jsx","../web/components/Visualize/property-panel/Data.jsx","../web/components/Visualize/property-panel/Variable.jsx","../web/components/Visualize/AutoComponents.jsx","../web/components/Visualize/Properties.jsx","../web/components/Visualize/PropertiesDialog.jsx","../../../apis/nucleus/src/hooks/useRect.js","../web/monaco-setup.js","../web/contexts/VizContext.js","../web/contexts/NebulaContext.js","../web/components/Visualize/Chart.jsx","../web/components/Visualize/Cell.jsx","../web/components/Visualize/Stage.jsx","../web/components/Visualize/Collection.jsx","../web/components/Visualize/Visualize.jsx","../web/hooks/useOpenApp.js","../../../apis/nucleus/src/stores/new-model-store.js","../../../apis/nucleus/src/stores/new-selections-store.js","../web/components/Hub/Errors/OAuthRedirectLinkError.jsx","../web/eHub.jsx","../web/components/Root.jsx","webpack://webpack/runtime/compat_get_default_export","webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/ensure_chunk","webpack://webpack/runtime/esm_module_decorator","webpack://webpack/runtime/get javascript chunk filename","webpack://webpack/runtime/global","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","webpack://webpack/runtime/node_module_decorator","webpack://webpack/runtime/nonce","webpack://webpack/runtime/public_path"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\n\n\n// loadScript function to load a script via script tag\n__webpack_require__.l = function (url, done, key, chunkId) {\n\tif (inProgress[url]) {\n\t\tinProgress[url].push(done);\n\t\treturn;\n\t}\n\tvar script, needAttach;\n\tif (key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor (var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif (s.getAttribute(\"src\") == url) {\n\t\t\t\tscript = s;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\nscript.timeout = 120;\nif (__webpack_require__.nc) {\n script.setAttribute(\"nonce\", __webpack_require__.nc);\n}\n\n\n\nscript.src = url;\n\n\n\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function (prev, event) {\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns &&\n\t\t\tdoneFns.forEach(function (fn) {\n\t\t\t\treturn fn(event);\n\t\t\t});\n\t\tif (prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(\n\t\tonScriptComplete.bind(null, undefined, {\n\t\t\ttype: 'timeout',\n\t\t\ttarget: script\n\t\t}),\n\t\t120000\n\t);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif (chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor (var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--)\n\t\t\tdeferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif (\n\t\t\t\t(priority & (1 === 0) || notFulfilled >= priority) &&\n\t\t\t\tObject.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))\n\t\t\t) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif (priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif (fulfilled) {\n\t\t\tdeferred.splice(i--, 1);\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};\n","__webpack_require__.b = document.baseURI || self.location.href;\n\n // object to store loaded and loading chunks\n // undefined = chunk not loaded, null = chunk preloaded/prefetched\n // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\n var jsonpInstalledChunks = {\"qz\": 0,};\n \n __webpack_require__.f.j = function (chunkId, promises) {\n // JSONP chunk loading for javascript\nvar installedChunkData = __webpack_require__.o(jsonpInstalledChunks, chunkId)\n\t? jsonpInstalledChunks[chunkId]\n\t: undefined;\nif (installedChunkData !== 0) {\n\t// 0 means \"already installed\".\n\n\t// a Promise means \"currently loading\".\n\tif (installedChunkData) {\n\t\tpromises.push(installedChunkData[2]);\n\t} else {\n\t\tif (true) {\n\t\t\t// setup Promise in chunk cache\n\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = jsonpInstalledChunks[chunkId] = [resolve, reject]));\n\t\t\tpromises.push((installedChunkData[2] = promise));\n\n\t\t\t// start chunk loading\n\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\tvar error = new Error();\n\t\t\tvar loadingEnded = function (event) {\n\t\t\t\tif (__webpack_require__.o(jsonpInstalledChunks, chunkId)) {\n\t\t\t\t\tinstalledChunkData = jsonpInstalledChunks[chunkId];\n\t\t\t\t\tif (installedChunkData !== 0) jsonpInstalledChunks[chunkId] = undefined;\n\t\t\t\t\tif (installedChunkData) {\n\t\t\t\t\t\tvar errorType =\n\t\t\t\t\t\t\tevent && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\terror.message =\n\t\t\t\t\t\t\t'Loading chunk ' +\n\t\t\t\t\t\t\tchunkId +\n\t\t\t\t\t\t\t' failed.\\n(' +\n\t\t\t\t\t\t\terrorType +\n\t\t\t\t\t\t\t': ' +\n\t\t\t\t\t\t\trealSrc +\n\t\t\t\t\t\t\t')';\n\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t} \n\t}\n}\n\n }\n __webpack_require__.O.j = (chunkId) => (jsonpInstalledChunks[chunkId] === 0);\n// install a JSONP callback for chunk loading\nvar __rspack_jsonp = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif (chunkIds.some((id) => (jsonpInstalledChunks[id] !== 0))) {\n\t\tfor (moduleId in moreModules) {\n\t\t\tif (__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif (runtime) var result = runtime(__webpack_require__);\n\t}\n\tif (parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor (; i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif (\n\t\t\t__webpack_require__.o(jsonpInstalledChunks, chunkId) &&\n\t\t\tjsonpInstalledChunks[chunkId]\n\t\t) {\n\t\t\tjsonpInstalledChunks[chunkId][0]();\n\t\t}\n\t\tjsonpInstalledChunks[chunkId] = 0;\n\t}\n\t\n\treturn __webpack_require__.O(result);\n\t\n};\n\nvar jsonpChunkLoadingGlobal = self[\"rspackChunk\"] = self[\"rspackChunk\"] || [];\njsonpChunkLoadingGlobal.forEach(__rspack_jsonp.bind(null, 0));\njsonpChunkLoadingGlobal.push = __rspack_jsonp.bind(null, jsonpChunkLoadingGlobal.push.bind(jsonpChunkLoadingGlobal));\n","export default async function getCsrfToken(host) {\n try {\n const res = await fetch(`${host}/qps/csrftoken`, { credentials: 'include' });\n const token = res.headers.get('QLIK-CSRF-TOKEN');\n if (token) {\n return token;\n }\n return '';\n } catch (err) {\n console.log('Failed to fetch csrf-token', err);\n }\n return '';\n}\n","import enigma from 'enigma.js';\nimport qixSchema from 'enigma.js/schemas/12.2015.0.json';\nimport auth from '@qlik/api/auth';\nimport { getItems } from '@qlik/api/items';\nimport { openAppSession } from '@qlik/api/qix';\nimport getCsrfToken from './utils/getCsrfToken';\n\nconst getParams = () => {\n const opts = {};\n window.location.search\n .substring(1)\n .split('&')\n .forEach((pair) => {\n const idx = pair.indexOf('=');\n const name = pair.substr(0, idx);\n let value = decodeURIComponent(pair.substring(idx + 1));\n if (name === 'cols') {\n value = value.split(',');\n }\n opts[name] = value;\n });\n return opts;\n};\n\n// These URLS are fully constructed later using the sdk\n// QCS: wss://<tenant-url>.<region>.qlikcloud.com/app/<app-GUID>\n// QSEoW: wss://<host>/<virtual-proxy-prefix>/app/<app-GUID>\n\n// matches the wss://<host>/<virtual-proxy-prefix>/\nconst urlRegex = /(wss?):\\/\\/([^/:?&]+)(?::(\\d+))?/;\nconst appRegex = /\\/app\\/([^?&#:]+)/;\n// The prefix must be unique for all virtual proxies used by the same proxy service,\n// as this differentiates the virtual proxies and will be a part of the URL (https://[node]/[prefix]/).\n// Valid characters for prefix are \"a-z\", \"0-9\", \"-\", \".\", \"_\", \"~\".\nconst prefixRegx = /(wss?):\\/\\/([^/:?&]+)(?::(\\d+))?\\/?([a-z0-9-._~]+)?/;\n\nconst parseEngineURL = (url) => {\n const match = urlRegex.exec(url);\n if (!match) {\n return {\n engineUrl: url,\n invalid: true,\n };\n }\n\n let appId;\n const trimmedUrl = url.trim();\n let engineUrl = trimmedUrl;\n let appUrl;\n\n const appMatch = appRegex.exec(trimmedUrl);\n\n if (appMatch) {\n [, appId] = appMatch;\n engineUrl = trimmedUrl.substring(0, appMatch.index);\n appUrl = trimmedUrl;\n }\n\n const engineMatch = prefixRegx.exec(engineUrl);\n\n if (!engineMatch) {\n return {\n engineUrl: url,\n invalid: true,\n };\n }\n return {\n engine: {\n secure: match[1] === 'wss',\n host: match[2],\n port: match[3] || undefined,\n prefix: engineMatch[4] || undefined,\n appId,\n },\n engineUrl,\n appUrl,\n };\n};\n\nconst getConnectionInfo = () =>\n fetch('/info')\n .then((response) => response.json())\n .then(async (n) => {\n let info = n;\n const params = getParams();\n if (params.engine_url) {\n info = {\n ...info,\n // TODO:\n // instead of calling \"/info\" and then parsing url inside of `getConnectionInfo()`\n // we can have a hook which listens on location.search and provides this information for us\n ...parseEngineURL(params.engine_url),\n };\n } else if (params.app) {\n info = {\n ...info,\n engine: {\n ...info.engine,\n appId: params.app,\n },\n };\n }\n if (params['qlik-web-integration-id']) {\n info.webIntegrationId = params['qlik-web-integration-id'];\n }\n if (params['qlik-client-id']) {\n info.clientId = params['qlik-client-id'];\n }\n if (info.invalid) {\n return info;\n }\n const rootPath = `${info.engine.secure ? 'https' : 'http'}://${info.engine.host}`;\n return {\n ...info,\n rootPath,\n };\n });\n\nconst setHostConfig = ({ webIntegrationId, clientId, host }) => {\n if (webIntegrationId) {\n auth.setDefaultHostConfig({ authType: 'cookie', webIntegrationId, host });\n } else if (clientId) {\n auth.setDefaultHostConfig({\n authType: 'oauth2',\n clientId,\n host,\n redirectUri: `${window.location.origin}/auth/login/callback`,\n accessTokenStorage: 'session',\n });\n }\n};\n\nconst buildDocList = async () => {\n try {\n const response = await getItems({ resourceType: 'app', limit: 30, sort: '-updatedAt' });\n const { data = [] } = response.data;\n return data.map((d) => ({ qDocId: d.resourceId, qTitle: d.name }));\n } catch (error) {\n throw new Error('Failed to fetch app list', { cause: error });\n }\n};\n\nconst connect = async () => {\n try {\n const {\n clientId,\n webIntegrationId,\n engine: engineConfig,\n engine: { host },\n } = await getConnectionInfo();\n\n if (webIntegrationId) {\n setHostConfig({ webIntegrationId, host });\n return {\n getDocList: buildDocList,\n getConfiguration: async () => ({}),\n };\n }\n\n if (clientId) {\n setHostConfig({ clientId, host });\n return {\n getDocList: buildDocList,\n getConfiguration: async () => ({}),\n };\n }\n\n const csrfToken = await getCsrfToken(\n `https://${engineConfig.host}${engineConfig.prefix ? `/${engineConfig.prefix}` : ''}`\n );\n const scheme = engineConfig.secure !== false ? 'wss' : 'ws';\n const port = engineConfig.port ? `:${engineConfig.port}` : '';\n const prefix = engineConfig.prefix ? `/${engineConfig.prefix}` : '';\n const url = `${scheme}://${engineConfig.host}${port}${prefix}?qlik-csrf-token=${csrfToken}`;\n\n return enigma.create({ schema: qixSchema, url }).open();\n } catch (error) {\n throw new Error('Failed to return enigma instance', { cause: error });\n }\n};\n\n// Builds a qlik-api compatible host config from the connection info\nconst getHostConfig = ({ clientId, webIntegrationId, engine: { host, port, secure } }) => {\n if (webIntegrationId) {\n return { authType: 'cookie', webIntegrationId, host };\n }\n\n if (clientId) {\n return {\n authType: 'oauth2',\n clientId,\n host,\n redirectUri: `${window.location.origin}/auth/login/callback`,\n accessTokenStorage: 'session',\n };\n }\n\n // Local / no-auth engine (e.g. qlik-core, docker engine)\n const scheme = secure !== false ? 'https' : 'http';\n return { authType: 'noauth', host: `${scheme}://${host}${port ? `:${port}` : ''}` };\n};\n\nconst openApp = async (id) => {\n try {\n const info = await getConnectionInfo();\n return openAppSession({ appId: id, hostConfig: getHostConfig(info) }).getDoc();\n } catch (error) {\n throw new Error('Failed to open app!', { cause: error });\n }\n};\n\nexport { connect, openApp, getParams, getConnectionInfo, getHostConfig, setHostConfig, parseEngineURL };\n","import { useState, useEffect } from 'react';\nimport { getConnectionInfo } from '../connect';\n\nexport const useInfo = () => {\n const [info, setInfo] = useState();\n\n useEffect(() => {\n getConnectionInfo().then((i) => {\n setInfo(i);\n });\n }, []);\n\n return { info, setInfo };\n};\n","import { useState, useEffect } from 'react';\nimport { useLocation } from 'react-router';\nimport { connect } from '../connect';\n\nexport const useConnection = ({ info, cachedConnectionsData }) => {\n const location = useLocation();\n const [glob, setGlobal] = useState();\n const [treatAsDesktop, setTreatAsDesktop] = useState(false);\n const [error, setError] = useState();\n const [activeStep, setActiveStep] = useState(0);\n\n useEffect(() => {\n if (location.pathname === '/' || !info || !info.engineUrl) return;\n\n if (info.invalid) {\n setError({\n message: 'Connection failed',\n hints: ['The WebSocket URL is not valid.'],\n });\n return;\n }\n\n connect()\n .then((result) => handleConnectionSuccess({ result, setGlobal, setError, setTreatAsDesktop }))\n .then(() => cachedConnectionsData.addCachedConnections({ info }))\n .catch((err) => handleConnectionFailure({ error: err, info, setError }));\n }, [info, location.pathname]);\n\n return { glob, setGlobal, treatAsDesktop, setTreatAsDesktop, error, setError, activeStep, setActiveStep };\n};\n\nexport const handleConnectionSuccess = async ({ result, setGlobal, setTreatAsDesktop, setError }) => {\n handleSessionNotification({ result, setError, setGlobal });\n setGlobal(result);\n if (!result.getDocList) return;\n try {\n const config = await result.getConfiguration();\n if (config && config.qFeatures && config.qFeatures.qIsDesktop) setTreatAsDesktop(true);\n } catch (error) {\n throw new Error('Failed to get configuration');\n }\n};\n\nexport const handleConnectionFailure = ({ error, info, setError }) => {\n const oops = {\n message: 'Something went wrong, check the devtools console',\n hints: [],\n };\n if (error.target instanceof WebSocket) {\n oops.message = `Connection failed to ${info.engineUrl}`;\n if (/\\.qlik[A-Za-z0-9-]+\\.com/.test(info.engineUrl) && !info.webIntegrationId) {\n oops.hints.push('- If you are connecting to Qlik Cloud, make sure to provide a web integration id or client id.');\n oops.hints.push(\n '- For Qlik Sense on Windows, make sure the proxy setup is correct and that you are authenticated.'\n );\n oops.hints.push('- Press the ? in the top right for more information on how to set up the connection correctly.');\n }\n setError(oops);\n return;\n }\n setError(oops);\n console.error(error);\n};\n\nexport const handleSessionNotification = ({ result, setError, setGlobal }) => {\n if (result.session) {\n result.session.on('notification:OnAuthenticationInformation', (e) => {\n if (e.mustAuthenticate) {\n setError({\n message: 'Could not authenticate.',\n hints: [\n `In your virtual proxy advanced settings in the QMC, make sure to whitelist ${window.location.host}, ensure \"Has secure attribute\" is enabled and that \"SameSite attribute\" is set to \"None\".`,\n ],\n });\n setGlobal(null);\n }\n });\n }\n};\n","const storageFn = (app) => {\n const stored = window.localStorage.getItem('nebula-dev');\n const parsed = stored ? JSON.parse(stored) : {};\n const appid = app?.id;\n\n const s = {\n save(name, value) {\n parsed[name] = value;\n window.localStorage.setItem('nebula-dev', JSON.stringify(parsed));\n },\n get(name) {\n return parsed[name];\n },\n props(name, v) {\n if (v) {\n s.save(`props:${appid}:${name}`, JSON.stringify(v));\n return undefined;\n }\n const p = s.get(`props:${appid}:${name}`);\n return p ? JSON.parse(p) : {};\n },\n };\n\n return s;\n};\n\nexport default storageFn;\n","import React, { useMemo, createContext, useContext, useEffect } from 'react';\nimport { useLocation, useNavigate } from 'react-router';\nimport { useInfo, useConnection, useCachedConnections } from '../hooks';\nimport storageFn from '../storage';\n\nexport const rootContextInitialValue = {\n info: {},\n};\n\nexport const RootContext = createContext(rootContextInitialValue);\n\nexport const useRootContext = () => {\n const ctx = useContext(RootContext);\n if (!ctx) throw new Error('RootContext not defined!');\n return ctx;\n};\n\nexport const RootContextProvider = ({ children }) => {\n const location = useLocation();\n const navigate = useNavigate();\n const storage = useMemo(() => storageFn({}), []);\n const { info, setInfo } = useInfo();\n const cachedConnectionsData = useCachedConnections({ storage });\n const connectionData = useConnection({ info, cachedConnectionsData });\n\n useEffect(() => {\n if (connectionData.error) navigate('/');\n\n if (location.pathname === '/') {\n connectionData.setActiveStep(0);\n connectionData.setGlobal();\n connectionData.setTreatAsDesktop(false);\n }\n }, [location.pathname, connectionData.error]);\n\n const rootContextValue = useMemo(\n () => ({ info, setInfo, ...connectionData, storage, cachedConnectionsData }),\n [info, setInfo, connectionData, storage, cachedConnectionsData]\n );\n\n return <RootContext.Provider value={rootContextValue}>{children}</RootContext.Provider>;\n};\n","import { useState } from 'react';\n\nexport const useCachedConnections = ({ storage }) => {\n const [cachedConnections, setCachedConnections] = useState(storage.get('connections') || []);\n\n const removeCachedConnection = (li) => {\n const idx = cachedConnections.indexOf(li);\n if (li !== -1) {\n const conns = cachedConnections.slice();\n conns.splice(idx, 1);\n storage.save('connections', conns);\n setCachedConnections(conns);\n }\n };\n\n const addCachedConnections = ({ info }) => {\n let url = '';\n const protocol = info.engine.secure ? 'wss' : 'ws';\n const host = info.engine.host === 'localhost' ? `${info.engine.host}:${info.engine.port}` : info.engine.host;\n const prefix = info.engine.prefix ? `/${info.engine.prefix}` : '';\n const engineUrl = `${protocol}://${host}${prefix}`;\n\n if (info.clientId) {\n url = `${engineUrl}/?qlik-client-id=${info.clientId}`;\n } else if (info.webIntegrationId) {\n url = `${engineUrl}/?qlik-web-integration-id=${info.webIntegrationId}`;\n } else {\n url = engineUrl;\n }\n if (cachedConnections.indexOf(url) === -1 && url.length !== 0) {\n const newConns = [...cachedConnections, url];\n storage.save('connections', newConns);\n setCachedConnections(newConns);\n }\n };\n\n return { cachedConnections, removeCachedConnection, addCachedConnections };\n};\n","export default {\n typography: {\n fontSize: 14,\n htmlFontSize: 16,\n fontWeightLight: 300,\n fontWeightRegular: 400,\n fontWeightMedium: 600,\n fontFamily: ['\"Source Sans Pro\"', '\"Segoe UI\"', '\"Helvetica Neue\"', '-apple-system', 'Arial', 'sans-serif'].join(\n ','\n ),\n button: {\n textTransform: 'initial',\n fontWeight: 400,\n },\n },\n shape: {\n borderRadius: 2,\n },\n shadows: [\n 'none',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n '0px 1px 2px 0px rgba(0,0,0,0.15)',\n\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n '0px 2px 4px 0px rgba(0,0,0,0.15)',\n\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n '0px 4px 10px 0px rgba(0,0,0,0.15)',\n\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n '0px 6px 20px 0px rgba(0,0,0,0.15)',\n ],\n};\n","const colors = {\n green: '#00873D',\n greenPale: '#0AAF54',\n red: '#DC423F',\n redPale: '#F05551',\n blue: '#3F8AB3',\n bluePale: '#469DCD',\n blueDark: '#005DB9',\n\n // greyscale\n grey100: '#ffffff',\n grey98: '#FBFBFB',\n grey95: '#F2F2F2',\n grey90: '#E6E6E6',\n grey85: '#D9D9D9',\n\n grey55: '#8C8C8C',\n\n grey45: '#737373',\n grey30: '#4D4D4D',\n grey25: '#404040',\n grey20: '#333333',\n grey15: '#262626',\n grey10: '#1A1A1A',\n grey5: '#0E0E0E',\n grey0: '#000000',\n};\n\nexport default colors;\n","import colors from './colors';\n\nconst light = {\n mode: 'light',\n palette: {\n primary: {\n main: colors.grey25,\n contrastText: colors.grey100,\n },\n secondary: {\n light: '#0AAF54',\n main: '#009845',\n dark: '#006937',\n },\n text: {\n primary: colors.grey25,\n secondary: 'rgba(0, 0, 0, 0.55)',\n disabled: 'rgba(0, 0, 0, 0.3)',\n light: colors.grey100,\n dark: colors.grey0,\n },\n action: {\n active: '#545454', // color for actionable things like icon buttons\n hover: 'rgba(0, 0, 0, 0.03)', // color for hoverable things like list items\n hoverOpacity: 0.08, // used to fade primary/secondary colors\n selected: 'rgba(0, 0, 0, 0.05)', // focused things like list items\n disabled: 'rgba(0, 0, 0, 0.3)', // usually text\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n },\n background: {\n paper: colors.grey100,\n default: colors.grey100,\n // -- custom properties --\n lightest: colors.grey100,\n lighter: colors.grey98,\n darker: colors.grey95,\n darkest: colors.grey90,\n },\n // --- custom stuff ---\n custom: {\n whiteBorder: 'rgb(255, 255, 255)',\n newFocusBorder: colors.blueDark,\n focusBorder: colors.blue,\n focusOutline: 'rgba(70, 157, 205, 0.3)',\n inputBackground: 'rgba(255, 255, 255, 1)',\n disabledBackground: colors.grey45,\n disabledContrastText: colors.grey100,\n },\n selected: {\n main: colors.green,\n alternative: '#E4E4E4',\n excluded: '#BEBEBE',\n selectedExcluded: '#BEBEBE',\n possible: colors.grey100,\n selectedContrastText: colors.grey100,\n mainContrastText: colors.grey100,\n alternativeContrastText: colors.grey25,\n excludedContrastText: colors.grey25,\n selectedExcludedContrastText: colors.grey100,\n possibleContrastText: colors.grey0,\n },\n btn: {\n normal: 'rgba(255, 255, 255, 0.6)',\n hover: 'rgba(0, 0, 0, 0.03)',\n active: 'rgba(0, 0, 0, 0.1)',\n disabled: 'rgba(255, 255, 255, 0.6)',\n border: 'rgba(0, 0, 0, 0.15)',\n borderHover: 'rgba(0, 0, 0, 0.15)',\n },\n },\n};\n\nexport default light;\n","import colors from './colors';\n\nconst dark = {\n mode: 'dark',\n palette: {\n primary: {\n main: colors.grey20,\n contrastText: colors.grey100,\n },\n secondary: {\n light: '#0AAF54',\n main: '#009845',\n dark: '#006937',\n },\n text: {\n primary: colors.grey100,\n secondary: 'rgba(255, 255, 255, 0.6)',\n disabled: 'rgba(255, 255, 255, 0.3)',\n light: colors.grey100,\n dark: colors.grey0,\n },\n action: {\n // active: 'rgba(0, 0, 0, 0.55)',\n active: colors.grey100,\n hover: 'rgba(255, 255, 255, 0.05)',\n hoverOpacity: 0.08,\n selected: 'rgba(0, 0, 0, 0.03)',\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n },\n divider: 'rgba(0,0,0,0.3)',\n background: {\n default: '#323232',\n paper: '#323232',\n // -- custom properties --\n lightest: colors.grey25,\n lighter: colors.grey20,\n darker: colors.grey15,\n darkest: colors.grey10,\n },\n // -- custom --\n custom: {\n whiteBorder: 'rgb(255, 255, 255)',\n newFocusBorder: colors.blueDark,\n focusBorder: colors.blue,\n focusOutline: 'rgba(70, 157, 205, 0.3)',\n inputBackground: 'rgba(0, 0, 0, 0.2)',\n disabledBackground: colors.grey45,\n disabledContrastText: colors.grey100,\n },\n selected: {\n main: colors.green,\n alternative: colors.grey20,\n excluded: colors.grey10,\n selectedExcluded: colors.grey10,\n possible: colors.grey80,\n selectedContrastText: colors.grey100,\n mainContrastText: colors.grey100,\n alternativeContrastText: colors.grey100,\n excludedContrastText: colors.grey100,\n selectedExcludedContrastText: colors.grey100,\n possibleContrastText: colors.grey0,\n },\n btn: {\n normal: 'rgba(255, 255, 255, 0.15)',\n hover: 'rgba(255, 255, 255, 0.25)',\n active: 'rgba(0, 0, 0, 0.6)',\n disabled: 'rgba(255, 255, 255, 0.15)',\n border: 'rgba(0, 0, 0, 0.15)',\n borderHover: 'rgba(0, 0, 0, 0.30)',\n },\n },\n};\n\nexport default dark;\n","import { createTheme } from '@mui/material/styles';\nimport { buttonClasses } from '@mui/material/Button';\n\nimport base from './definitions/base';\nimport light from './definitions/light';\nimport dark from './definitions/dark';\n\nconst cache = {};\n\nconst componentOverrides = (theme) => ({\n MuiCheckbox: {\n defaultProps: {\n color: 'secondary',\n },\n },\n MuiRadio: {\n defaultProps: {\n color: 'secondary',\n },\n },\n MuiTabs: {\n defaultProps: {\n indicatorColor: 'secondary',\n },\n },\n MuiTypography: {\n styleOverrides: {\n root: {\n color: theme.palette.text.primary,\n },\n },\n },\n MuiGrid: {\n styleOverrides: {\n variants: [\n {\n props: { alignItems: 'center' },\n style: {\n 'align-items': 'center',\n },\n },\n ],\n },\n },\n MuiButtonBase: {\n defaultProps: {\n disableRipple: true,\n disableTouchRipple: true,\n focusRipple: false,\n },\n styleOverrides: {\n root: {\n borderRadius: 2,\n border: '1px solid transparent',\n // should ideally use $focusVisible, but that messes up focus in all other places where Iconbutton is used (Checkbox, Switch etc)\n '&.Mui-focused': {\n borderColor: theme.palette.custom.focusBorder,\n boxShadow: `0 0 0 2px ${theme.palette.custom.focusOutline}`,\n },\n },\n },\n },\n MuiIconButton: {\n styleOverrides: {\n root: {\n padding: 7,\n borderRadius: 2,\n border: '1px solid transparent',\n '&:hover': {\n backgroundColor: theme.palette.btn.hover,\n },\n '&.Mui-focusVisible': {\n borderColor: theme.palette.custom.focusBorder,\n boxShadow: `0 0 0 2px ${theme.palette.custom.focusOutline}`,\n },\n '&.Mui-active': {\n borderColor: 'transparent',\n boxShadow: 'none',\n backgroundColor: theme.palette.btn.active,\n },\n '&:not(.Mui-active):not(.Mui-focusVisible)': {\n borderColor: 'transparent',\n boxShadow: 'none',\n },\n },\n },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n backgroundColor: theme.palette.custom.inputBackground,\n '&:hover .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.btn.border,\n },\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: theme.palette.custom.focusBorder,\n borderWidth: 2,\n },\n },\n },\n },\n MuiButton: {\n styleOverrides: {\n outlined: {\n padding: '3px 11px',\n [`&.${buttonClasses.focusVisible}`]: {\n borderColor: theme.palette.custom.focusBorder,\n boxShadow: `0 0 0 2px ${theme.palette.custom.focusOutline}`,\n },\n },\n contained: {\n color: theme.palette.text.primary,\n padding: '3px 11px',\n border: `1px solid ${theme.palette.btn.border}`,\n backgroundColor: theme.palette.btn.normal,\n boxShadow: 'none',\n [`&.${buttonClasses.focusVisible}`]: {\n borderColor: theme.palette.custom.focusBorder,\n boxShadow: `0 0 0 2px ${theme.palette.custom.focusOutline}`,\n },\n '&:hover': {\n backgroundColor: theme.palette.btn.hover,\n borderColor: theme.palette.btn.borderHover,\n boxShadow: 'none',\n [`&.${buttonClasses.disabled}`]: {\n backgroundColor: theme.palette.btn.disabled,\n },\n },\n '&.Mui-active': {\n boxShadow: 'none',\n backgroundColor: theme.palette.btn.active,\n },\n [`&.${buttonClasses.disabled}`]: {\n backgroundColor: theme.palette.btn.disabled,\n },\n },\n },\n },\n MuiAccordionSummary: {\n styleOverrides: {\n content: {\n margin: '8px 0',\n },\n },\n },\n});\n\nexport default function create(definition) {\n let def = light;\n let name = '';\n if (typeof definition === 'string') {\n name = definition;\n if (definition !== 'light' && definition !== 'dark') {\n console.warn(`Invalid theme: '${definition}'`);\n } else if (definition === 'dark') {\n def = dark;\n }\n }\n\n const key = JSON.stringify(def);\n if (cache[key]) {\n return cache[key];\n }\n\n const withDefaults = {\n palette: {\n type: def.mode,\n ...base.palette,\n ...def.palette,\n },\n typography: {\n ...base.typography,\n },\n shadows: base.shadows,\n shape: {\n ...base.shape,\n },\n };\n\n const adaptedTheme = {\n ...withDefaults,\n components: componentOverrides(withDefaults),\n };\n\n cache[key] = createTheme(adaptedTheme);\n\n cache[key].name = name;\n\n return cache[key];\n}\n","import React, { useMemo } from 'react';\nimport Container from '@mui/material/Container';\nimport { createTheme, ThemeProvider, StyledEngineProvider } from '@nebula.js/ui/theme';\n\nexport const ThemeWrapper = ({ themeName, children }) => {\n const theme = useMemo(() => createTheme(themeName), [themeName]);\n\n return (\n <StyledEngineProvider injectFirst>\n <ThemeProvider theme={theme}>\n <Container maxWidth=\"md\">{children}</Container>\n </ThemeProvider>\n </StyledEngineProvider>\n );\n};\n","import Box from '@mui/material/Box';\nimport { styled } from '@mui/system';\nimport Stepper from '@mui/material/Stepper';\nimport StepLabel from '@mui/material/StepLabel';\n\nexport const ContentWrapper = styled(Box)(({ theme, marginTop = 0 }) => ({\n position: 'relative',\n padding: theme.spacing(2, 2),\n backgroundColor: 'white',\n borderRadius: theme.spacing(1),\n marginTop: theme.spacing(marginTop),\n}));\n\nexport const StepperWrapper = styled(Stepper)(({ theme }) => ({\n backgroundColor: 'transparent',\n padding: theme.spacing(3),\n}));\n\nexport const CustomStepLabel = styled(StepLabel, {\n shouldForwardProp: (prop) => prop !== 'shouldBePointer',\n})(({ shouldBePointer = false }) => ({\n cursor: shouldBePointer ? 'pointer' : 'default',\n}));\n","export const steps = ['Connect to engine', 'Select app', 'Develop'];\n","import React from 'react';\nimport Step from '@mui/material/Step';\nimport { useNavigate } from 'react-router';\nimport { ThemeWrapper } from '../ThemeWrapper';\nimport { StepperWrapper, CustomStepLabel } from './styles';\nimport { steps } from '../../constants/connectionSteps';\n\nimport { useRootContext } from '../../contexts/RootContext';\n\nconst ConnectionSteps = () => {\n const navigate = useNavigate();\n const { activeStep, glob, error, setError } = useRootContext();\n\n const handleStepperClick = () => {\n if (!(glob || error)) return;\n setError();\n navigate('/');\n };\n\n return (\n <ThemeWrapper themeName=\"dark\">\n <StepperWrapper alternativeLabel activeStep={activeStep}>\n {steps.map((label, i) => (\n <Step key={label}>\n <CustomStepLabel onClick={handleStepperClick} shouldBePointer={glob || error} error={!!error && !i}>\n {label}\n </CustomStepLabel>\n </Step>\n ))}\n </StepperWrapper>\n </ThemeWrapper>\n );\n};\n\nexport default ConnectionSteps;\n","import React from 'react';\nimport { Outlet } from 'react-router';\nimport ConnectionSteps from '../Hub/ConnectionSteps';\nimport { ThemeWrapper } from '../ThemeWrapper';\n\nconst HubLayout = () => (\n <ThemeWrapper>\n <ConnectionSteps />\n <Outlet />\n </ThemeWrapper>\n);\n\nexport default HubLayout;\n","import React from 'react';\nimport Link from '@mui/material/Link';\nimport Collapse from '@mui/material/Collapse';\nimport Typography from '@mui/material/Typography';\n\nconst ConnectionGuid = ({ showGuid }) => (\n <Collapse in={showGuid}>\n <Typography variant=\"h6\" gutterBottom style={{ marginTop: '1rem' }}>\n WebSocket URL\n </Typography>\n <Typography variant=\"body2\" paragraph>\n The development server needs to connect to and communicate with the Qlik Associative Engine running within any of\n Qlik's product offerings. The connection is done through the WebSocket protocol using a WebSocket URL format\n that differs slightly between products. Enter the WebSocket URL that corresponds to the Qlik product you are\n using.\n </Typography>\n\n <Typography variant=\"subtitle1\" gutterBottom>\n Qlik Cloud Services\n </Typography>\n <Typography variant=\"body2\" paragraph>\n <b>Web integration id format:</b>\n There are two ways in order to connect through WebSocket:\n <br />\n 1. <code>qlik-web-integration-id</code>\n <br />\n 2. <code>qlik-client-id</code>\n <br />\n <br />\n <b>Web integration id:</b>\n <br />\n <code>wss://<tenant>.<region>.qlikcloud.com?qlik-web-integration-id=<web-integration-id></code>\n <br />\n Example: <code>wss://qlik.eu.qlikcloud.com?qlik-web-integration-id=xxx</code>\n <br />\n <br />\n For more info, visit{' '}\n <Link\n color=\"secondary\"\n underline=\"always\"\n href=\"https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/mc-adminster-web-integrations.htm\"\n >\n Managing web integrations\n </Link>\n .\n </Typography>\n <Typography variant=\"body2\" paragraph>\n <b>OAuth Client ID URL format:</b>\n <br />\n <code>wss://<tenant>.<region>.qlikcloud.com?qlik-client-id=<client-id></code>\n <br />\n Example: <code>wss://qlik.eu.qlikcloud.com?qlik-client-id=xxx</code>\n <br />\n Redirect URL form: <code>http://localhost:8000/auth/login/callback</code>\n <br />\n The <code>qlik-web-integration-id</code> <b>OR</b> <code>qlik-client-id</code> must be present in order for QCS to\n confirm that the request originates from a whitelisted domain.\n <br />\n <br />\n </Typography>\n <Typography variant=\"subtitle1\" gutterBottom>\n Qlik Sense on Windows\n </Typography>\n <Typography variant=\"body2\" paragraph>\n WebSocket URL format: <code>wss://<sense-host.com>/<virtual-proxy-prefix></code>\n <br />\n Example: <code>wss://mycompany.com/bi</code>\n <br />\n <br />\n Note that for the Qlik Sense Proxy to allow sessions from this webpage,\n <code>{window.location.host}</code> needs to be whitelisted in QMC in your Qlik Sense on Windows deployment. In\n addition, you need to enable <i>Has secure attribute</i> and set <i>SameSite attribute</i> to <i>None</i>.\n <br />\n Also some "Additional reponse headers" needs to align with the whitelisted domain:\n <ul>\n <li>\n Access-Control-Allow-Origin: <code>{window.location.host}</code>\n </li>\n <li>Access-Control-Allow-Credentials: true</li>\n <li>Access-Control-Expose-Headers: qlik-csrf-token</li>\n </ul>\n Make sure you are logged in to Qlik Sense in another browser tab.\n </Typography>\n <Typography variant=\"subtitle1\" gutterBottom>\n Qlik Sense Desktop\n </Typography>\n <Typography variant=\"body2\" paragraph>\n WebSocket URL format: <code>ws://localhost:4848</code>\n </Typography>\n </Collapse>\n);\n\nexport default ConnectionGuid;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\n\nfunction getFontSize(size) {\n if (size === 'large') {\n return '20px';\n }\n if (size === 'small') {\n return '12px';\n }\n return '16px';\n}\n\nexport default function SvgIcon({ size, style = {}, viewBox = '0 0 16 16', shapes = [] }) {\n const s = {\n fontSize: getFontSize(size),\n display: 'inline-block',\n fontStyle: 'normal',\n lineHeight: '0',\n textAlign: 'center',\n textTransform: 'none',\n verticalAlign: '-.125em',\n textRendering: 'optimizeLegibility',\n WebkitFontSmoothing: 'antialiased',\n MozOsxFontSmoothing: 'grayscale',\n ...style,\n };\n return (\n <i style={s}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox={viewBox} fill=\"currentColor\">\n {shapes.map(({ type: Type, attrs }, ix) => (\n // eslint-disable-next-line react/no-array-index-key\n <Type key={ix} {...attrs} />\n ))}\n </svg>\n </i>\n );\n}\n","import SvgIcon from './SvgIcon';\n\nconst remove = (props) => ({\n ...props,\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M9.41421356,8 L11.8890873,5.52512627 C12.065864,5.34834957 12.0305087,4.95944084 11.8183766,4.74730881 L11.2526912,4.18162338 C11.0405592,3.96949135 10.6516504,3.93413601 10.4748737,4.1109127 L8,6.58578644 L5.52512627,4.1109127 C5.34834957,3.93413601 4.95944084,3.96949135 4.74730881,4.18162338 L4.25233406,4.67659813 C3.96949135,4.95944084 3.93413601,5.34834957 4.1109127,5.52512627 L6.58578644,8 L4.1109127,10.4748737 C3.93413601,10.6516504 3.96949135,11.0405592 4.18162338,11.2526912 L4.67659813,11.7476659 C4.95944084,12.0305087 5.34834957,12.065864 5.52512627,11.8890873 L8,9.41421356 L10.4748737,11.8890873 C10.6516504,12.065864 11.0405592,12.0305087 11.2526912,11.8183766 L11.8183766,11.2526912 C12.0305087,11.0405592 12.065864,10.6516504 11.8890873,10.4748737 L9.41421356,8 Z M8,0 C12.4,0 16,3.6 16,8 C16,12.4 12.4,16 8,16 C3.6,16 0,12.4 0,8 C0,3.6 3.6,0 8,0 Z',\n },\n },\n ],\n});\nexport default (props) => SvgIcon(remove(props));\nexport { remove };\n","export const OptionsToConnect = [\n { id: 0, label: 'Local Engine', formFields: ['Engine WebSocket URL'] },\n { id: 1, label: 'Web Integration Id', formFields: ['Engine WebSocket URL', 'Web Integration Id'] },\n { id: 2, label: 'Client Id', formFields: ['Engine WebSocket URL', 'Client Id'] },\n];\n","import React from 'react';\nimport { render } from '@testing-library/react';\nimport userEvents from '@testing-library/user-event';\nimport { createTheme, ThemeProvider } from '@nebula.js/ui/theme';\n\nimport { RootContext } from '../contexts/RootContext';\n\nconst theme = createTheme('light');\n\nexport function TestRenderer(component, contextValuesOverride) {\n const contextValue = {\n // context values\n storage: () => {},\n\n // useInfo result\n info: {},\n setInfo: () => {},\n\n // useConnection result\n glob: {},\n setGlobal: () => {},\n treatAsDesktop: false,\n setTreatAsDesktop: () => {},\n error: {},\n setError: () => {},\n activeStep: 0,\n setActiveStep: () => {},\n\n // useCachedConnections result\n cachedConnectionsData: {\n cachedConnections: [],\n addCachedConnections: () => {},\n removeCachedConnection: () => {},\n },\n\n // override what ever you want in render level\n ...contextValuesOverride,\n };\n\n const Wrapper = ({ children }) => (\n <RootContext.Provider value={contextValue}>\n <ThemeProvider theme={theme}>{children}</ThemeProvider>\n </RootContext.Provider>\n );\n\n return { ...render(component, { wrapper: Wrapper }), userEvents: userEvents.setup() };\n}\n\n// Wrapper for tests that use routing context - in tests, BrowserRouter is mocked\nexport const RouterWrapper = ({ children }) => children;\n","import React from 'react';\nimport Remove from '@nebula.js/ui/icons/remove';\nimport { useNavigate } from 'react-router';\nimport { ListItemButton, ListItemText, List, Typography, Box, IconButton } from '@mui/material';\nimport { useRootContext } from '../../../contexts/RootContext';\nimport { checkIfHistoryConnectionDisabled } from '../../../utils';\n\nconst ConnectionHistory = () => {\n const navigate = useNavigate();\n const { info, setError, cachedConnectionsData } = useRootContext();\n\n const handleHistoryItemClick = (item) => {\n setError();\n navigate(`/app-list?engine_url=${item.replace('?', '&')}`);\n };\n\n if (!cachedConnectionsData.cachedConnections.length) return null;\n\n return (\n <Box mb={2}>\n <Typography variant=\"h6\">Previous connections</Typography>\n <List>\n {cachedConnectionsData.cachedConnections.map((item) => (\n <ListItemButton\n key={item}\n component=\"a\"\n onClick={() => handleHistoryItemClick(item)}\n disabled={checkIfHistoryConnectionDisabled({ item, info })}\n >\n <ListItemText primary={item} />\n <IconButton\n onClick={() => cachedConnectionsData.removeCachedConnection(item)}\n data-testid=\"close-btn\"\n size=\"large\"\n edge=\"end\"\n >\n <Remove />\n </IconButton>\n </ListItemButton>\n ))}\n </List>\n </Box>\n );\n};\n\nexport default ConnectionHistory;\n","export const checkIfHistoryConnectionDisabled = ({ item, info }) => {\n if (!info) return false;\n\n if ((info.isClientIdProvided || info.isWebIntegrationIdProvided) && item.includes('localhost')) return true;\n if (info.isClientIdProvided) {\n if (item.includes('qlik-client-id')) return false;\n return true;\n }\n if (info.isWebIntegrationIdProvided) {\n if (item.includes('qlik-web-integration-id')) return false;\n return true;\n }\n\n return false;\n};\n","import React from 'react';\nimport Typography from '@mui/material/Typography';\n\nexport default function Error({ error: { message, hints } }) {\n return (\n <>\n <Typography variant=\"subtitle1\" color=\"error\" gutterBottom style={{ marginBottom: 0 }}>\n {message}\n </Typography>\n {hints.map((hint) => (\n <Typography key={hint} variant=\"body2\">\n {hint}\n </Typography>\n ))}\n </>\n );\n}\n","import React, { useState } from 'react';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport Grid from '@mui/material/Grid';\nimport Button from '@mui/material/Button';\nimport { useNavigate } from 'react-router';\nimport { useRootContext } from '../../../contexts/RootContext';\nimport { getFieldPlaceHolder, shouldDisableSubmitBtn } from '../../../utils';\n\nimport Error from './Error';\n\nexport default function FormManager({ info, fields, error, isCredentialProvided }) {\n const navigate = useNavigate();\n const { setError } = useRootContext();\n const [inputs, setInputs] = useState({});\n\n const handleUpdateInputs = (evt) => {\n setInputs({\n ...inputs,\n [evt.target.name]: evt.target.value,\n });\n };\n\n const handleOnSubmit = (evt) => {\n evt.preventDefault();\n setError();\n const url = new URL(inputs['engine-websocket-url']);\n if (inputs['web-integration-id']) url.searchParams.append('qlik-web-integration-id', inputs['web-integration-id']);\n if (inputs['client-id']) url.searchParams.append('qlik-client-id', inputs['client-id']);\n navigate(`/app-list?engine_url=${url.toString().replace('?', '&')}`);\n };\n\n return (\n <form onSubmit={handleOnSubmit}>\n <Grid container spacing={2} direction=\"column\" justifyContent=\"center\">\n {fields.map((field, i) => (\n <Grid size={12} key={field}>\n <OutlinedInput\n fullWidth\n autoFocus={i === 0}\n disabled={isCredentialProvided && i === 1}\n name={field\n .split(' ')\n .map((x) => x.toLowerCase())\n .join('-')}\n error={info?.invalid}\n placeholder={i === 0 ? field : getFieldPlaceHolder({ field, isCredentialProvided })}\n onChange={(evt) => handleUpdateInputs(evt)}\n />\n </Grid>\n ))}\n\n <Grid container size={12} alignItems=\"center\">\n <Grid size={10}>{error && <Error error={error} />}</Grid>\n <Grid container size={2} direction=\"row\" alignItems=\"center\" justifyContent=\"flex-end\">\n <Button\n type=\"submit\"\n variant=\"contained\"\n size=\"large\"\n disabled={shouldDisableSubmitBtn({ isCredentialProvided, inputs, fields })}\n >\n Connect\n </Button>\n </Grid>\n </Grid>\n </Grid>\n </form>\n );\n}\n","export const shouldDisableSubmitBtn = ({ isCredentialProvided, inputs, fields }) => {\n if (isCredentialProvided) {\n if (inputs['engine-websocket-url']) return false;\n return true;\n }\n\n return Object.entries(inputs).length !== fields.length || Object.values(inputs).some((x) => !x);\n};\n\nexport const getFieldPlaceHolder = ({ isCredentialProvided, field }) => {\n if (isCredentialProvided) return `You have provided \"${field}\" through cli or nebula.config.js file already!`;\n return field;\n};\n","import React, { useEffect, useState } from 'react';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport FormManager from './FormManager';\nimport { useRootContext } from '../../../contexts/RootContext';\nimport { OptionsToConnect } from '../../../constants/optionsToConnect';\nimport { detectDefaultConnectionStep, checkIfConnectionOptionDisabled } from '../../../utils';\n\nexport default function ConnectionOptions() {\n const { info, error } = useRootContext();\n const [tabIdx, setTabIdx] = useState(0);\n const handleChange = (_, idx) => setTabIdx(idx);\n\n useEffect(() => {\n const idx = detectDefaultConnectionStep(info);\n if (idx) setTabIdx(idx);\n }, [info]);\n\n return (\n <Box>\n <Typography variant=\"h6\" gutterBottom>\n New connection with:\n </Typography>\n <Box sx={{ width: '100%' }}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <Tabs value={tabIdx} onChange={handleChange} aria-label=\"basic tabs example\">\n {OptionsToConnect.map(({ id, label }) => (\n <Tab key={id} label={label} disabled={checkIfConnectionOptionDisabled({ info, label })} />\n ))}\n </Tabs>\n </Box>\n\n {OptionsToConnect.map(({ id, formFields }) => (\n <TabPanel tabIdx={tabIdx} idx={id} key={id}>\n <FormManager\n info={info}\n error={error}\n fields={formFields}\n isCredentialProvided={info?.isWebIntegrationIdProvided || info?.isClientIdProvided}\n />\n </TabPanel>\n ))}\n </Box>\n </Box>\n );\n}\n\nfunction TabPanel({ children, tabIdx, idx }) {\n if (tabIdx === idx) return <Box sx={{ p: 3, pb: 1 }}>{children}</Box>;\n return null;\n}\n","import { OptionsToConnect } from '../constants/optionsToConnect';\n\nexport const detectDefaultConnectionStep = (info) => {\n if (!info) return 0;\n if (info.isWebIntegrationIdProvided) return OptionsToConnect.findIndex((x) => x.label === 'Web Integration Id');\n if (info.isClientIdProvided) return OptionsToConnect.findIndex((x) => x.label === 'Client Id');\n return 0;\n};\n","export const checkIfConnectionOptionDisabled = ({ label, info }) => {\n if (!info) return false;\n\n const labelKey = label\n .split(' ')\n .map((x) => x.toLowerCase())\n .join('-');\n\n if (info.isWebIntegrationIdProvided) {\n if (labelKey === 'web-integration-id') return false;\n return true;\n }\n\n if (info.isClientIdProvided) {\n if (labelKey === 'client-id') return false;\n return true;\n }\n\n return false;\n};\n","import React, { useState, useEffect } from 'react';\nimport { Help } from '@nebula.js/ui/icons';\nimport IconButton from '@mui/material/IconButton';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\n\nimport ConnectionGuid from './ConnectionGuid';\nimport ConnectionHistory from './ConnectionHistory';\nimport ConnectionOptions from './ConnectionOptions';\nimport { ContentWrapper } from '../styles';\nimport { useRootContext } from '../../../contexts/RootContext';\nimport { useDeauthorizePrevOAuthInstance } from '../../../hooks';\n\nconst SelectEngine = () => {\n const { cachedConnectionsData } = useRootContext();\n const [showGuid, setShowGuid] = useState(false);\n useDeauthorizePrevOAuthInstance();\n\n useEffect(() => {\n setShowGuid(!cachedConnectionsData.cachedConnections.length);\n }, [cachedConnectionsData.cachedConnections.length]);\n\n return (\n <ContentWrapper>\n <Grid container>\n <Grid sx={{ flex: 1 }}>\n <Typography variant=\"h5\" gutterBottom>\n Connect to an engine\n </Typography>\n </Grid>\n <Grid item>\n <IconButton onClick={() => setShowGuid(!showGuid)} size=\"small\">\n <Help />\n </IconButton>\n </Grid>\n </Grid>\n\n <ConnectionHistory />\n <ConnectionOptions />\n <ConnectionGuid showGuid={showGuid} />\n </ContentWrapper>\n );\n};\n\nexport default SelectEngine;\n","import { useEffect } from 'react';\nimport auth from '@qlik/api/auth';\nimport { useRootContext } from '../contexts/RootContext';\n\nexport const useDeauthorizePrevOAuthInstance = () => {\n const { cachedConnectionsData } = useRootContext();\n\n useEffect(() => {\n // Clear any previously set host config so a fresh one is applied for the new connection.\n // Using setDefaultHostConfig(undefined) instead of logout() to avoid redirecting the browser.\n auth.setDefaultHostConfig(undefined);\n }, [cachedConnectionsData.cachedConnections.length]);\n};\n","import React from 'react';\nimport List from '@mui/material/List';\nimport ListItemText from '@mui/material/ListItemText';\nimport Typography from '@mui/material/Typography';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { useNavigate, useLocation } from 'react-router';\nimport { ListItemButton } from '@mui/material';\nimport { useAppList } from '../../hooks';\nimport { ContentWrapper } from './styles';\nimport { getAppLink } from '../../utils';\n\nimport { useRootContext } from '../../contexts/RootContext';\n\nconst AppList = () => {\n const navigate = useNavigate();\n const location = useLocation();\n const { info, glob, treatAsDesktop } = useRootContext();\n const { loading, appList } = useAppList({ glob, info });\n\n return (\n <ContentWrapper>\n <Typography variant=\"h5\" gutterBottom>\n Select an app\n </Typography>\n {loading && <CircularProgress data-testid=\"loading\" size={32} />}\n {!loading && appList && !appList.length && <Typography component=\"span\">No apps found!</Typography>}\n {appList && appList.length > 0 && (\n <List>\n {appList.map((appData) => (\n <ListItemButton\n button\n component=\"a\"\n key={appData.qDocId}\n onClick={() =>\n getAppLink({\n info,\n navigate,\n location,\n targetApp: treatAsDesktop ? appData.qDocName : appData.qDocId,\n })\n }\n >\n <ListItemText primary={appData.qTitle} secondary={appData.qDocId} />\n </ListItemButton>\n ))}\n </List>\n )}\n </ContentWrapper>\n );\n};\nexport default AppList;\n","import { useState, useEffect } from 'react';\nimport { useRootContext } from '../contexts/RootContext';\nimport { getConnectionInfo } from '../connect';\n\nexport const useAppList = ({ glob, info }) => {\n const { setInfo, setActiveStep } = useRootContext();\n const [appList, setAppList] = useState();\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n setActiveStep(1);\n getConnectionInfo().then((i) => {\n setInfo(i);\n });\n }, []);\n\n useEffect(() => {\n if (appList?.length) return;\n setLoading(true);\n\n glob\n ?.getDocList()\n ?.then((apps) => {\n setAppList(apps);\n if (apps) setLoading(false);\n })\n ?.catch((err) => {\n console.error('Failed to fetch app list:', err);\n setLoading(false);\n });\n }, [info, glob]);\n\n return { appList, loading };\n};\n","import getCsrfToken from './getCsrfToken';\n\nexport const getAppLink = async ({ navigate, location, targetApp, info }) => {\n const { search } = location;\n const protocol = info.engine.secure ? 'wss' : 'ws';\n const port = info.engine.port ? `:${info.engine.port}` : '';\n const prefix = info.engine.prefix ? `/${info.engine.prefix}` : '';\n const host = (info.engine.host === 'localhost' ? `${info.engine.host}${port}` : info.engine.host) + prefix;\n\n const csrfToken = await getCsrfToken(`https://${info.engine.host}${prefix}`);\n const csrfQuery = csrfToken ? `&qlik-csrf-token=${csrfToken}` : '';\n\n const newEngineUrl = `${protocol}://${host}/app/${encodeURIComponent(targetApp)}${csrfQuery}`;\n const modifiedEngineUrl = search.replace(info.engineUrl, newEngineUrl);\n\n navigate(`/dev/${modifiedEngineUrl}`.replace('&shouldFetchAppList=true', ''));\n};\n","import React from 'react';\n\nexport default React.createContext({\n language: null,\n theme: null,\n translator: null,\n constraints: {},\n interactions: {},\n themeApi: null,\n modelStore: {},\n selectionStore: {},\n hostConfig: null,\n queryParams: null,\n});\n","import { useState, useEffect } from 'react';\n\nexport default (initialState = {}, applyMiddleware = () => {}) => {\n const sharedState = initialState;\n const hookListeners = [];\n const subscribedListeners = {};\n\n const store = {\n get: (key) => sharedState[key],\n set: (key, value) => {\n if (typeof key === 'undefined' || typeof key === 'object') {\n throw new Error(`Invalid key: ${JSON.stringify(key)}`);\n }\n sharedState[key] = value;\n subscribedListeners[key] = applyMiddleware({ type: 'SET', value });\n return value;\n },\n clear: (key) => {\n if (typeof key === 'undefined' || typeof key === 'object') {\n throw new Error(`Invalid key: ${JSON.stringify(key)}`);\n }\n const unsubscribe = subscribedListeners[key];\n delete subscribedListeners[key];\n // oxlint-disable-next-line no-unused-expressions\n unsubscribe && unsubscribe();\n sharedState[key] = null;\n },\n dispatch: (forceNewState) => {\n hookListeners.forEach((listener) => listener(forceNewState ? {} : sharedState));\n },\n destroy: () => {\n Object.keys(subscribedListeners).forEach((key) => {\n subscribedListeners[key] && subscribedListeners[key]();\n });\n },\n };\n\n const useKeyStore = () => {\n const [, setState] = useState(sharedState);\n\n useEffect(() => {\n hookListeners.push(setState);\n return () => {\n const ix = hookListeners.indexOf(setState);\n hookListeners.splice(ix, 1);\n };\n }, [setState]);\n\n return [store];\n };\n\n return [useKeyStore, store];\n};\n","import * as stardust from '@nebula.js/stardust';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as ReactDOMClient from 'react-dom/client';\nimport * as jsxRuntime from 'react/jsx-runtime';\n\n// The modules that a visualization imports by name are the ones of this page, so there is one of each. The names are\n// the ones in lib/provided-modules.js, which the visualization is built to leave out.\nexport const SHARED = {\n '@nebula.js/stardust': stardust,\n react: React,\n 'react-dom': ReactDOM,\n 'react-dom/client': ReactDOMClient,\n 'react/jsx-runtime': jsxRuntime,\n};\n\nconst IDENTIFIER = /^[A-Za-z_$][\\w$]*$/;\n\n/**\n * The source of a module that has what an other module has, so that a visualization can import it by its name.\n */\nexport const shimSource = (name, ns) => {\n const exported = Object.keys(ns)\n .filter((key) => key !== 'default' && IDENTIFIER.test(key))\n .map((key) => `export const ${key} = shared[${JSON.stringify(key)}];`);\n return [\n `const shared = globalThis.nebulaShared[${JSON.stringify(name)}];`,\n 'export default shared.default !== undefined ? shared.default : shared;',\n ...exported,\n ].join('\\n');\n};\n\nlet importMapAdded = false;\n\n// A native import map has to be there before the first import of a module that imports by a name\nconst addImportMap = () => {\n if (importMapAdded) {\n return;\n }\n importMapAdded = true;\n globalThis.nebulaShared = SHARED;\n const imports = {};\n Object.entries(SHARED).forEach(([name, ns]) => {\n imports[name] = URL.createObjectURL(new Blob([shimSource(name, ns)], { type: 'text/javascript' }));\n });\n const script = document.createElement('script');\n script.type = 'importmap';\n script.textContent = JSON.stringify({ imports });\n document.head.appendChild(script);\n};\n\n// the visualization is the default export of a module\nconst visualization = (m) => (m && typeof m === 'object' && 'default' in m ? m.default : m);\n\nexport const getModule = async (name, url) => {\n addImportMap();\n // a new url for every load, since a module that was imported is never loaded again\n const mod = await import(/* webpackIgnore: true */ `${url}${url.includes('?') ? '&' : '?'}t=${Date.now()}`);\n return visualization(mod);\n};\n\nconst hotListeners = {};\n\nconst lightItUp = (name) => {\n if (!hotListeners[name]) {\n return;\n }\n hotListeners[name].forEach((fn) => fn());\n};\n\nconst onHotChange = (name, fn) => {\n if (!hotListeners[name]) {\n hotListeners[name] = [];\n }\n\n hotListeners[name].push(fn);\n if (window[name]) {\n fn();\n }\n return () => {\n // removeListener\n const idx = hotListeners[name].indexOf(fn);\n hotListeners[name].splice(idx, 1);\n };\n};\n\nwindow.onHotChange = onHotChange;\n\nexport default function initiateWatch(info) {\n const update = () => {\n getModule(info.supernova.name, info.supernova.url || info.supernova.module).then((mo) => {\n window[info.supernova.name] = mo;\n lightItUp(info.supernova.name);\n });\n };\n\n if (info.sock.port) {\n const ws = new WebSocket(`ws://localhost:${info.sock.port}`);\n ws.onmessage = () => {\n update();\n };\n }\n update();\n if (info.types) {\n const proms = info.types.map((t) =>\n getModule(t.name, t.url).then((mo) => {\n window[t.name] = mo;\n })\n );\n return Promise.all(proms);\n }\n return Promise.resolve();\n}\n","import { useEffect, useState } from 'react';\n\nexport default function useProperties(model) {\n const [properties, setProps] = useState();\n\n useEffect(() => {\n if (model) {\n const onChanged = () => {\n model.getProperties().then((props) => {\n setProps({ ...props });\n });\n };\n model.on('changed', onChanged);\n onChanged();\n return () => {\n model.removeListener('changed', onChanged);\n };\n }\n return () => {};\n }, [model, setProps]);\n return [properties, (p) => model.setProperties(p)];\n}\n","import React from 'react';\n\nconst AppContext = React.createContext();\n\nexport default AppContext;\n","const idGen = [\n [10, 31],\n [0, 31],\n [0, 31],\n [0, 31],\n [0, 31],\n [0, 31],\n];\nfunction toChar([min, max]) {\n return (min + ((Math.random() * (max - min)) | 0)).toString(32);\n}\n\nexport default function uid() {\n return idGen.map(toChar).join('');\n}\n","/* eslint no-param-reassign:0 */\n\nimport uid from './uid';\n\nfunction addIndex(array, index) {\n for (let i = 0; i < array.length; ++i) {\n if (array[i] >= 0 && array[i] >= index) {\n ++array[i];\n }\n }\n array.push(index);\n}\nfunction removeIndex(array, index) {\n let removeIdx = 0;\n for (let i = 0; i < array.length; ++i) {\n if (array[i] > index) {\n --array[i];\n } else if (array[i] === index) {\n removeIdx = i;\n }\n }\n array.splice(removeIdx, 1);\n return removeIdx;\n}\n\nconst nxDimension = (f) => ({\n qDef: {\n qFieldDefs: [f],\n },\n});\n\nconst nxMeasure = (f) => ({\n qDef: {\n qDef: f,\n },\n});\n\nexport default function hcHandler({ dc: hc, def, properties }) {\n hc.qDimensions = hc.qDimensions || [];\n hc.qMeasures = hc.qMeasures || [];\n hc.qInterColumnSortOrder = hc.qInterColumnSortOrder || [];\n hc.qInitialDataFetch = hc.qInitialDataFetch || [];\n hc.qColumnOrder = hc.qColumnOrder || [];\n hc.qExpansionState = hc.qExpansionState || [];\n\n const objectProperties = properties;\n\n const handler = {\n dimensions() {\n return hc.qDimensions;\n },\n measures() {\n return hc.qMeasures;\n },\n addDimension(d) {\n const dimension =\n typeof d === 'string'\n ? nxDimension(d)\n : {\n ...d,\n qDef: d.qDef || {},\n };\n dimension.qDef.cId = dimension.qDef.cId || uid();\n\n // ====== add default objects and arrays for NxDimension =====\n\n // TODO - apply autosort properties based on tags\n dimension.qDef.qSortCriterias = dimension.qDef.qSortCriterias || [\n {\n qSortByLoadOrder: 1,\n qSortByNumeric: 1,\n qSortByAscii: 1,\n },\n ];\n\n dimension.qOtherTotalSpec = dimension.qOtherTotalSpec || {};\n dimension.qAttributeExpressions = dimension.qAttributeExpressions || [];\n dimension.qAttributeDimensions = dimension.qAttributeDimensions || [];\n // ========= end defaults =============\n\n if (hc.qDimensions.length < handler.maxDimensions()) {\n hc.qDimensions.push(dimension);\n addIndex(hc.qInterColumnSortOrder, hc.qDimensions.length - 1);\n def.dimensions.added(dimension, objectProperties);\n } else {\n hc.qLayoutExclude = hc.qLayoutExclude || {};\n hc.qLayoutExclude.qHyperCubeDef = hc.qLayoutExclude.qHyperCubeDef || {};\n hc.qLayoutExclude.qHyperCubeDef.qDimensions = hc.qLayoutExclude.qHyperCubeDef.qDimensions || [];\n hc.qLayoutExclude.qHyperCubeDef.qMeasures = hc.qLayoutExclude.qHyperCubeDef.qMeasures || [];\n\n hc.qLayoutExclude.qHyperCubeDef.qDimensions.push(dimension);\n }\n return dimension;\n },\n removeDimension(idx) {\n const dimension = hc.qDimensions.splice(idx, 1)[0];\n removeIndex(hc.qInterColumnSortOrder, idx);\n def.dimensions.removed(dimension, objectProperties, idx);\n return dimension;\n },\n addMeasure(m) {\n const measure =\n typeof m === 'string'\n ? nxMeasure(m)\n : {\n ...m,\n qDef: m.qDef || {},\n };\n measure.qDef.cId = measure.qDef.cId || uid();\n\n // ====== add default objects and arrays for NxMeasure =====\n measure.qSortBy = measure.qSortBy || {\n qSortByLoadOrder: 1,\n qSortByNumeric: -1,\n };\n\n measure.qAttributeDimensions = measure.qAttributeDimensions || [];\n measure.qAttributeExpressions = measure.qAttributeExpressions || [];\n\n if (hc.qMeasures.length < handler.maxMeasures()) {\n hc.qMeasures.push(measure);\n addIndex(hc.qInterColumnSortOrder, hc.qDimensions.length + hc.qMeasures.length - 1);\n def.measures.added(measure, objectProperties);\n } else {\n hc.qLayoutExclude = hc.qLayoutExclude || {};\n hc.qLayoutExclude.qHyperCubeDef = hc.qLayoutExclude.qHyperCubeDef || {};\n hc.qLayoutExclude.qHyperCubeDef.qDimensions = hc.qLayoutExclude.qHyperCubeDef.qDimensions || [];\n hc.qLayoutExclude.qHyperCubeDef.qMeasures = hc.qLayoutExclude.qHyperCubeDef.qMeasures || [];\n\n hc.qLayoutExclude.qHyperCubeDef.qMeasures.push(measure);\n }\n },\n removeMeasure(idx) {\n const measure = hc.qMeasures.splice(idx, 1)[0];\n removeIndex(hc.qInterColumnSortOrder, hc.qDimensions.length + idx);\n def.measures.removed(measure, objectProperties, idx);\n },\n\n maxDimensions() {\n return def.dimensions.max(hc.qMeasures.length);\n },\n maxMeasures() {\n return def.measures.max(hc.qDimensions.length);\n },\n canAddDimension() {\n return hc.qDimensions.length < handler.maxDimensions();\n },\n canAddMeasure() {\n return hc.qMeasures.length < handler.maxMeasures();\n },\n };\n\n return handler;\n}\n","/* eslint no-param-reassign:0 */\n\nimport uid from './uid';\n\nconst nxDimension = (f) => ({\n qDef: {\n qFieldDefs: [f],\n },\n});\n\nexport default function loHandler({ dc: lo, def, properties }) {\n lo.qInitialDataFetch = lo.qInitialDataFetch || [];\n\n const objectProperties = properties;\n\n const handler = {\n dimensions() {\n if (!lo.qLibraryId && (!lo.qDef || !lo.qDef.qFieldDefs || lo.qDef.qFieldDefs.length === 0)) return [];\n return [lo];\n },\n measures() {\n return [];\n },\n addDimension(d) {\n const dimension =\n typeof d === 'string'\n ? nxDimension(d)\n : {\n ...d,\n qDef: d.qDef || {},\n };\n dimension.qDef.cId = dimension.qDef.cId || uid();\n\n dimension.qDef.qSortCriterias = lo.qDef.qSortCriterias || [\n {\n qSortByState: 1,\n qSortByLoadOrder: 1,\n qSortByNumeric: 1,\n qSortByAscii: 1,\n },\n ];\n Object.keys(dimension).forEach((k) => {\n lo[k] = dimension[k];\n });\n def.dimensions.added(dimension, objectProperties);\n return dimension;\n },\n removeDimension(idx) {\n const dimension = lo;\n delete lo.qDef;\n delete lo.qLibraryId;\n def.dimensions.removed(dimension, objectProperties, idx);\n return dimension;\n },\n addMeasure() {},\n removeMeasure() {},\n\n maxDimensions() {\n return 1;\n },\n maxMeasures() {\n return 0;\n },\n canAddDimension() {\n return handler.dimensions().length === 0;\n },\n canAddMeasure() {\n return false;\n },\n };\n\n return handler;\n}\n","/* eslint no-param-reassign:0 */\n\nimport uid from './uid';\n\nconst nxDimension = (f) => ({\n qDef: {\n qFieldDefs: [f],\n },\n});\n\nexport default function loContainerHandler({ dc: loc, def, properties, dimensions }) {\n const objectProperties = properties;\n\n const handler = {\n dimensions() {\n return dimensions;\n },\n measures() {\n return [];\n },\n addDimension(d) {\n const dimension =\n typeof d === 'string'\n ? nxDimension(d)\n : {\n ...d,\n qDef: d.qDef || {},\n };\n\n dimension.qDef.cId = dimension.qDef.cId || uid();\n dimension.qDef.qSortCriterias = (loc && loc.qDef.qSortCriterias) || [\n {\n qSortByState: 1,\n qSortByLoadOrder: 1,\n qSortByNumeric: 1,\n qSortByAscii: 1,\n },\n ];\n\n def.dimensions.added(dimension, objectProperties);\n return dimension;\n },\n removeDimension(idx) {\n const dimension = dimensions[idx];\n def.dimensions.removed(dimension, objectProperties, idx);\n return dimension;\n },\n // addMeasure() {},\n // removeMeasure() {},\n\n maxDimensions() {\n const { max } = def.dimensions || {};\n const maxDims = typeof max === 'function' ? max() : max;\n return maxDims || 0;\n },\n maxMeasures() {\n return 0;\n },\n canAddDimension() {\n return handler.dimensions().length < handler.maxDimensions();\n },\n canAddMeasure() {\n return false;\n },\n };\n\n return handler;\n}\n","import { useContext } from 'react';\nimport InstanceContext from '../contexts/InstanceContext';\n\nexport function useModelStore() {\n const { useModelStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n\nexport function useModelChangedStore() {\n const { useModelChangedStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n\nexport function useRpcResultStore() {\n const { useRpcResultStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n\nexport function useRpcRequestStore() {\n const { useRpcRequestStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n\nexport function useRpcRequestModelStore() {\n const { useRpcRequestModelStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n\nexport function useRpcRequestSessionModelStore() {\n const { useRpcRequestSessionModelStore: useFunc } = useContext(InstanceContext).modelStore;\n return useFunc();\n}\n","import { useEffect, useState } from 'react';\nimport { useModelStore, useRpcRequestSessionModelStore } from './useModelStore';\n\nexport default function useSessionModel(definition, app, ...deps) {\n const key = app ? `${app.id}/${JSON.stringify(definition)}` : null;\n\n const [modelStore] = useModelStore();\n const [rpcRequestSessionModelStore] = useRpcRequestSessionModelStore();\n const [model, setModel] = useState();\n\n useEffect(() => {\n if (!app) {\n return;\n }\n // Create new session object\n const create = async () => {\n let rpcShared = rpcRequestSessionModelStore.get(key);\n if (!rpcShared) {\n rpcShared = app.createSessionObject(definition);\n rpcRequestSessionModelStore.set(key, rpcShared);\n }\n const newModel = await rpcShared;\n modelStore.set(key, newModel);\n setModel(newModel);\n };\n create();\n }, [app, ...deps]);\n\n return [model];\n}\n","import { useReducer, useEffect } from 'react';\nimport { useModelChangedStore, useRpcResultStore, useRpcRequestStore } from './useModelStore';\n\nconst sleep = (delay) =>\n new Promise((resolve) => {\n setTimeout(resolve, delay);\n });\n\nconst rpcReducer = (state, action) => {\n const { rpcResultStore, key, method } = action;\n let newState;\n switch (action.type) {\n case 'INVALID': {\n newState = {\n ...state,\n valid: false,\n invalid: true,\n validating: true,\n canCancel: true,\n canRetry: false,\n rpcRetry: false,\n };\n break;\n }\n case 'VALID': {\n newState = {\n result: {\n ...action.result,\n },\n invalid: false,\n valid: true,\n validating: false,\n canCancel: false,\n canRetry: false,\n rpcRetry: false,\n };\n break;\n }\n case 'CANCELLED': {\n newState = {\n ...state,\n invalid: true,\n valid: false,\n validating: false,\n canCancel: false,\n canRetry: true,\n rpcRetry: false,\n };\n break;\n }\n default:\n throw new Error('Undefined action');\n }\n let sharedState = rpcResultStore.get(key);\n if (!sharedState) {\n sharedState = {};\n }\n sharedState[method] = newState;\n rpcResultStore.set(key, sharedState);\n return newState;\n};\n\nexport default function useRpc(model, method) {\n const key = model ? `${model.id}` : null;\n const [rpcResultStore] = useRpcResultStore();\n const [state, dispatch] = useReducer(rpcReducer, key ? rpcResultStore.get(key) : null);\n const [modelChangedStore] = useModelChangedStore();\n const [rpcRequestStore] = useRpcRequestStore();\n\n let rpcShared;\n\n if (key) {\n rpcShared = rpcRequestStore.get(key);\n if (!rpcShared) {\n rpcShared = {};\n rpcRequestStore.set(key, rpcShared);\n }\n }\n\n const call = async (skipRetry) => {\n let cache = rpcShared[method];\n if (!cache || (cache && cache.rpcRetry)) {\n const rpc = model[method]();\n cache = {\n rpc,\n rpcRetry: false,\n };\n rpcShared[method] = cache;\n\n dispatch({\n type: 'INVALID',\n method,\n key,\n model,\n rpcResultStore,\n canCancel: true,\n });\n }\n\n try {\n // To avoid possible race condition causing an infinite loop.\n // Problem has been observed for mocked models appeared after switching to react 18 (reactDOM render -> createRoot).\n await sleep(0);\n const result = await cache.rpc;\n dispatch({ type: 'VALID', result, key, method, model, rpcResultStore });\n } catch (err) {\n if (err.code === 15 && !skipRetry) {\n // Request aborted. This will be called multiple times by hooks only retry once\n if (!cache.rpcRetry) {\n cache.rpcRetry = true;\n }\n call(true);\n }\n }\n };\n const longrunning = {\n cancel: async () => {\n const global = model.session.getObjectApi({ handle: -1 });\n await global.cancelRequest(rpcShared[method].rpc.requestId);\n dispatch({\n type: 'CANCELLED',\n key,\n method,\n model,\n rpcResultStore,\n });\n },\n retry: () => {\n rpcShared[method].rpcRetry = true;\n call();\n },\n };\n\n useEffect(() => {\n if (!model) return undefined;\n\n call();\n\n return undefined;\n }, [model, modelChangedStore.get(model && model.id), key, method]);\n\n return [\n // Result\n state && state.result,\n { validating: state && state.validating, canCancel: state && state.canCancel, canRetry: state && state.canRetry },\n // Long running api e.g cancel retry\n longrunning,\n ];\n}\n","import useRpc from './useRpc';\n\nexport default function useLayout(model) {\n const [layout, { validating, canCancel, canRetry }, longrunning] = useRpc(model, 'getLayout');\n if (model?.pureLayout && layout) {\n return [model.pureLayout, { validating, canCancel, canRetry }, longrunning];\n }\n return [layout, { validating, canCancel, canRetry }, longrunning];\n}\n\nexport function useAppLayout(model) {\n return useRpc(model, 'getAppLayout');\n}\n","import useSessionModel from '@nebula.js/nucleus/src/hooks/useSessionModel';\nimport useLayout from '@nebula.js/nucleus/src/hooks/useLayout';\n\nconst D = {\n qInfo: {\n qType: 'DimensionList',\n qId: 'DimensionList',\n },\n qDimensionListDef: {\n qType: 'dimension',\n qData: {\n labelExpression: '/qDimension/qLabelExpression',\n title: '/qMetaDef/title',\n },\n },\n};\n\nconst M = {\n qInfo: {\n qType: 'MeasureList',\n qId: 'MeasureList',\n },\n qMeasureListDef: {\n qType: 'measure',\n qData: {\n labelExpression: '/qMeasure/qLabelExpression',\n title: '/qMetaDef/title',\n },\n },\n};\n\nexport default function list(app, type = 'dimension') {\n const def = type === 'dimension' ? D : M;\n\n const [model] = useSessionModel(def, app);\n const [layout] = useLayout(model);\n return [layout ? (layout.qDimensionList || layout.qMeasureList).qItems || [] : []];\n}\n","import SvgIcon from './SvgIcon';\n\nconst search = (props) => ({\n ...props,\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M8.588 11.415a6 6 0 1 1 2.828-2.829l4.101 4a1.5 1.5 0 0 1 .014 2.134l-.707.707a1.5 1.5 0 0 1-2.108.014l-4.128-4.026ZM11 6A5 5 0 1 0 1 6a5 5 0 0 0 10 0Zm-1.52 4.888 3.934 3.837a.5.5 0 0 0 .703-.005l.707-.707a.5.5 0 0 0-.005-.711l-3.926-3.829a6.034 6.034 0 0 1-1.413 1.415Z',\n },\n },\n ],\n});\nexport default (props) => SvgIcon(search(props));\nexport { search as remove };\n","import React, { useState } from 'react';\nimport { styled } from '@mui/material/styles';\nimport { Grid, TextField } from '@mui/material';\nimport SearchIcon from '@nebula.js/ui/icons/search';\n\nconst PREFIX = 'Search';\n\nconst classes = {\n gridContainer: `${PREFIX}-gridContainer`,\n gridItem: `${PREFIX}-gridItem`,\n};\n\nconst StyledGrid = styled(Grid)(({ theme }) => ({\n [`& .${classes.gridContainer}`]: {\n padding: theme.spacing(0, 1, 0, 1),\n },\n\n [`& .${classes.gridItem}`]: {\n padding: theme.spacing(0, 1, 0, 1),\n },\n}));\n\n/**\n * Run this on small devices to reset the zoom. Required when focusing\n * an input field and the browser auto zooms the page. Browsers do not\n * expose any API for handling this currently.\n */\nfunction resetZoom() {\n const viewportMetaTag = document.querySelector('meta[name=\"viewport\"]');\n if (viewportMetaTag instanceof HTMLMetaElement) {\n viewportMetaTag.content = 'width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0';\n }\n}\n\nexport default function Search({ onChange = () => {}, onEnter = () => {}, onEscape = () => {} }) {\n const [value, setValue] = useState('');\n const handleChange = (e) => {\n setValue(e.target.value);\n onChange(e.target.value);\n };\n const onKeyDown = (e) => {\n switch (e.key) {\n case 'Enter':\n onEnter();\n setValue('');\n break;\n case 'Escape':\n onEscape();\n break;\n default:\n break;\n }\n };\n\n const placeholder = 'Search';\n\n return (\n <StyledGrid className={classes.gridContainer} container direction=\"row\" alignItems=\"center\">\n <Grid>\n <SearchIcon />\n </Grid>\n <Grid className={classes.gridItem} sx={{ flex: 1 }}>\n <TextField\n fullWidth\n autoFocus\n placeholder={placeholder}\n value={value}\n onChange={handleChange}\n onFocus={resetZoom}\n onKeyDown={onKeyDown}\n />\n </Grid>\n </StyledGrid>\n );\n}\n","import React, { useContext, useState, useMemo } from 'react';\n\nimport { Popover, List, ListSubheader, ListItemButton, ListItemText, ListItemIcon, Divider } from '@mui/material';\nimport parse from 'autosuggest-highlight/parse';\nimport match from 'autosuggest-highlight/match';\n\nimport { ChevronRight, ChevronLeft } from '@nebula.js/ui/icons';\n\nimport { useTheme } from '@nebula.js/ui/theme';\n\nimport useSessionModel from '@nebula.js/nucleus/src/hooks/useSessionModel';\nimport useLayout from '@nebula.js/nucleus/src/hooks/useLayout';\nimport useLibraryList from '../../hooks/useLibraryList';\n\nimport AppContext from '../../contexts/AppContext';\n\nimport Search from './Search';\n\nfunction Field({ field, onSelect, sub, parts }) {\n return (\n <ListItemButton onClick={() => onSelect(field.qName)} data-key={field.qName}>\n <ListItemText>\n {parts.map((part, ix) => (\n <span\n // eslint-disable-next-line react/no-array-index-key\n key={ix}\n style={part.highlight ? { flex: '0 1 auto', backgroundColor: '#FFC72A' } : { flex: '0 1 auto' }}\n >\n {part.text}\n </span>\n ))}\n </ListItemText>\n {sub && <ChevronRight fontSize=\"small\" />}\n </ListItemButton>\n );\n}\n\nfunction LibraryItem({ item, onSelect, parts }) {\n return (\n <ListItemButton onClick={() => onSelect(item.qInfo)} data-key={item.qInfo.qId}>\n <ListItemText>\n {parts.map((part, ix) => (\n <span\n // eslint-disable-next-line react/no-array-index-key\n key={ix}\n style={part.highlight ? { flex: '0 1 auto', backgroundColor: '#FFC72A' } : { flex: '0 1 auto' }}\n >\n {part.text}\n </span>\n ))}\n </ListItemText>\n </ListItemButton>\n );\n}\n\nfunction Aggr({ aggr, field, onSelect }) {\n return (\n <ListItemButton onClick={() => onSelect(aggr)} data-key={aggr}>\n <ListItemText>{`${aggr}(${field})`}</ListItemText>\n </ListItemButton>\n );\n}\n\nfunction LibraryList({ app, onSelect, title = '', type = 'dimension', searchTerm = '' }) {\n const [libraryItems] = useLibraryList(app, type);\n const sortedLibraryItems = useMemo(\n () => libraryItems.slice().sort((a, b) => a.qData.title.toLowerCase().localeCompare(b.qData.title.toLowerCase())),\n [libraryItems]\n );\n\n return libraryItems.length > 0 ? (\n <>\n <ListSubheader component=\"div\" style={{ backgroundColor: 'inherit' }}>\n {title}\n </ListSubheader>\n {sortedLibraryItems.map((item) => {\n const matches = match(item.qData.title, searchTerm);\n const parts = parse(item.qData.title, matches);\n if (searchTerm && matches.length === 0) return null;\n return <LibraryItem key={item.qInfo.qId} item={item} onSelect={onSelect} parts={parts} />;\n })}\n </>\n ) : null;\n}\n\nexport default function FieldsPopover({ alignTo, show, close, onSelected, type }) {\n const app = useContext(AppContext);\n const [selectedField, setSelectedField] = useState(null);\n const [searchTerm, setSearchTerm] = useState('');\n const theme = useTheme();\n const [model] = useSessionModel(\n {\n qInfo: {\n qType: 'FieldList',\n qId: 'FieldList',\n },\n qFieldListDef: {\n qShowDerivedFelds: false,\n qShowHidden: false,\n qShowSemantic: true,\n qShowSrcTables: true,\n qShowSystem: false,\n },\n },\n app\n );\n\n const [layout] = useLayout(model);\n\n const fields = useMemo(\n () =>\n (layout ? layout.qFieldList.qItems || [] : [])\n .slice()\n .sort((a, b) => a.qName.toLowerCase().localeCompare(b.qName.toLowerCase())),\n [layout]\n );\n\n const onSelect = (s) => {\n if (s && s.qId) {\n onSelected(s);\n close();\n } else if (type === 'measure') {\n setSelectedField(s);\n } else {\n onSelected({\n field: s,\n });\n close();\n }\n };\n\n const onAggregateSelected = (s) => {\n onSelected({\n field: selectedField,\n aggregation: s,\n });\n close();\n };\n\n return (\n <Popover\n open={show}\n onClose={close}\n anchorEl={alignTo.current}\n marginThreshold={16} // theme.spacing(1)\n elevation={3}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n PaperProps={{\n style: { minWidth: '250px', maxHeight: '300px', background: theme.palette.background.lightest },\n }}\n >\n {!selectedField && <Search onChange={setSearchTerm} />}\n {selectedField && (\n <List dense component=\"nav\">\n <ListItemButton onClick={() => setSelectedField(null)}>\n <ListItemIcon>\n <ChevronLeft />\n </ListItemIcon>\n <ListItemText>Back</ListItemText>\n </ListItemButton>\n <Divider />\n <ListSubheader component=\"div\">Aggregation</ListSubheader>\n {['sum', 'count', 'avg', 'min', 'max'].map((v) => (\n <Aggr key={v} aggr={v} field={selectedField} onSelect={onAggregateSelected} />\n ))}\n </List>\n )}\n {!selectedField && fields.length > 0 && (\n <List dense component=\"nav\" style={{ background: theme.palette.background.lightest }}>\n <LibraryList\n app={app}\n onSelect={onSelect}\n type={type}\n title={type === 'measure' ? 'Measures' : 'Dimensions'}\n searchTerm={searchTerm}\n />\n <ListSubheader component=\"div\" style={{ backgroundColor: 'inherit' }}>\n Fields\n </ListSubheader>\n {fields.map((field) => {\n const matches = match(field.qName, searchTerm);\n const parts = parse(field.qName, matches);\n if (searchTerm && matches.length === 0) return null;\n return <Field key={field.qName} field={field} onSelect={onSelect} sub={type === 'measure'} parts={parts} />;\n })}\n </List>\n )}\n </Popover>\n );\n}\n","import React, { useRef, useState, useContext } from 'react';\n\nimport {\n IconButton,\n Button,\n List,\n ListItem,\n ListItemText,\n // Divider,\n Typography,\n} from '@mui/material';\n\nimport Remove from '@nebula.js/ui/icons/remove';\n\nimport useLibraryList from '../../../hooks/useLibraryList';\n\nimport AppContext from '../../../contexts/AppContext';\nimport FieldsPopover from '../FieldsPopover';\n\nconst FieldTitle = ({ field, libraryItems }) => {\n if (field.qLibraryId) {\n const f = libraryItems.filter((ff) => ff.qInfo.qId === field.qLibraryId)[0];\n return f ? f.qData.title : '!!!';\n }\n if (field.qDef && field.qDef.qFieldDefs) {\n return field.qDef.qFieldDefs[0];\n }\n if (field.qDef && field.qDef.qDef) {\n return field.qDef.qDef;\n }\n return '???';\n};\n\nexport default function Fields({\n items,\n type = 'dimension',\n label = '',\n addLabel = 'Add',\n onAdded,\n onRemoved,\n canAdd = true,\n}) {\n const [isActive, setIsActive] = useState(false);\n const btn = useRef(null);\n const app = useContext(AppContext);\n const [libraryItems] = useLibraryList(app, type);\n\n const onAdd = () => {\n setIsActive(!isActive);\n };\n\n const onSelected = (o) => {\n if (o.qId) {\n onAdded(o);\n } else if (o) {\n if (type === 'dimension') {\n onAdded(o.field);\n } else {\n onAdded(`${o.aggregation || 'sum'}([${o.field}])`);\n }\n }\n };\n\n const onRemove = (idx) => {\n onRemoved(idx);\n };\n\n return (\n <div>\n <Typography variant=\"overline\">{label}</Typography>\n <List dense>\n {items.map((d, i) => (\n <ListItem\n disableGutters\n key={(d.qDef && d.qDef.cId) || i}\n secondaryAction={\n <IconButton onClick={() => onRemove(i)} size=\"large\">\n <Remove />\n </IconButton>\n }\n >\n <ListItemText>\n <FieldTitle field={d} libraryItems={libraryItems} type={type} />\n </ListItemText>\n </ListItem>\n ))}\n </List>\n <Button variant=\"contained\" fullWidth onClick={onAdd} ref={btn} disabled={!canAdd}>\n {addLabel}\n </Button>\n {isActive && (\n <FieldsPopover\n alignTo={btn}\n show={isActive}\n close={() => setIsActive(false)}\n onSelected={onSelected}\n type={type}\n />\n )}\n </div>\n );\n}\n","import React, { useMemo, useState } from 'react';\n\nimport hcHandler from '@nebula.js/nucleus/src/object/hc-handler';\nimport loHandler from '@nebula.js/nucleus/src/object/lo-handler';\nimport loContainerHandler from '@nebula.js/nucleus/src/object/lo-container-handler';\n\nimport { Typography } from '@mui/material';\n\nimport Fields from './Fields';\n\nconst getValue = (data, reference, defaultValue) => {\n const steps = reference.split('/');\n let dataContainer = data;\n if (dataContainer === undefined) {\n return defaultValue;\n }\n for (let i = 0; i < steps.length; ++i) {\n if (steps[i] === '') {\n continue; // eslint-disable-line no-continue\n }\n if (typeof dataContainer[steps[i]] === 'undefined') {\n return defaultValue;\n }\n dataContainer = dataContainer[steps[i]];\n }\n\n return dataContainer;\n};\n\nexport default function DataCube({ setProperties, target, properties }) {\n // Store dimensions outside of handler to support filterpanes or other containers\n // holding list objects, which do not store dimensions in an array (like hc.qDimensions).\n const [dimensions, setDimensions] = useState([]);\n\n const supportsMultipleDims = target.dimensions && target.dimensions.max && target.dimensions.max() > 1;\n const listBoxHandler = supportsMultipleDims ? loContainerHandler : loHandler;\n\n const createHandler = target.propertyPath.match('/qHyperCube') ? hcHandler : listBoxHandler;\n const dc = getValue(properties, target.propertyPath);\n const handler = useMemo(\n () =>\n createHandler({\n def: target,\n dc,\n properties,\n dimensions,\n }),\n [dc, target, properties, dimensions]\n );\n\n const onDimensionAdded = (a) => {\n const dim = typeof a === 'object' ? { qLibraryId: a.qId } : a;\n const addedDim = handler.addDimension(dim);\n setProperties(properties).then(() => {\n setDimensions([...dimensions, addedDim]);\n });\n };\n\n const onDimensionRemoved = (idx) => {\n handler.removeDimension(idx);\n setProperties(properties).then(() => {\n setDimensions([...dimensions.slice(0, idx), ...dimensions.slice(idx + 1)]);\n });\n };\n\n const onMeasureAdded = (a) => {\n handler.addMeasure(typeof a === 'object' ? { qLibraryId: a.qId } : a);\n setProperties(properties);\n };\n\n const onMeasureRemoved = (idx) => {\n handler.removeMeasure(idx);\n setProperties(properties);\n };\n\n return (\n <div style={{ width: '100%' }}>\n <Typography color=\"textSecondary\" style={{ fontFamily: 'Monaco, monospace', fontSize: '0.7rem' }}>\n {target.propertyPath}\n </Typography>\n <Fields\n key=\"dimensions\"\n onAdded={onDimensionAdded}\n onRemoved={onDimensionRemoved}\n canAdd={handler.canAddDimension()}\n items={handler.dimensions()}\n type=\"dimension\"\n label=\"Dimensions\"\n addLabel=\"Add dimension\"\n />\n <Fields\n key=\"measures\"\n onAdded={onMeasureAdded}\n onRemoved={onMeasureRemoved}\n canAdd={handler.canAddMeasure()}\n items={handler.measures()}\n type=\"measure\"\n label=\"Measures\"\n addLabel=\"Add measures\"\n />\n </div>\n );\n}\n","import React from 'react';\n\nimport { List, ListItem, Typography } from '@mui/material';\n\nimport DataCube from './DataCube';\n\nexport default function Data({ setProperties, sn, properties }) {\n if (!sn) {\n return null;\n }\n\n const { targets } = sn.qae.data;\n\n if (!targets.length) {\n return <Typography>No data targets found</Typography>;\n }\n\n return (\n <List>\n {targets.map((t) => (\n <ListItem key={t.propertyPath} divider disableGutters>\n <DataCube target={t} properties={properties} setProperties={setProperties} />\n </ListItem>\n ))}\n </List>\n );\n}\n","/* eslint no-param-reassign:0 */\nimport React, { useState, useEffect } from 'react';\n\nimport { Select, FormControl, MenuItem } from '@mui/material';\n\nlet variableList = null;\n\nasync function getVariables(app) {\n if (!variableList) {\n variableList = await app.createSessionObject({\n qInfo: {\n qType: 'VariableList',\n },\n qVariableListDef: {\n qType: 'variable',\n qShowReserved: false,\n qShowConfig: false,\n },\n });\n }\n const reply = await variableList.getLayout();\n\n const list = reply.qVariableList.qItems.map((item) => ({\n value: item.qName,\n label: item.qName.length > 50 ? `${item.qName.slice(0, 50)}...` : item.qName,\n }));\n\n return list;\n}\n// variable, {name, value}, properties\nexport default function Variable({ property, value, target, changed, app }) {\n const [s, setS] = useState(value.name);\n const [l, setL] = useState([]);\n\n useEffect(() => {\n async function fetchData() {\n const list = await getVariables(app);\n setL(list);\n }\n fetchData();\n }, []);\n\n const handleChange = (e) => {\n setS(e.target.value);\n target[property].name = e.target.value;\n target[property].value = { qStringExpression: { qExpr: `[${e.target.value}]` } };\n changed();\n };\n return l.length === 0 ? (\n <em>No variables in app</em>\n ) : (\n <FormControl size=\"small\" fullWidth>\n <Select\n onChange={handleChange}\n displayEmpty\n fullWidth\n value={s}\n renderValue={(selected) => {\n if (selected.length === 0) {\n return <em>Select a variable</em>;\n }\n return selected;\n }}\n >\n {l.map((c) => (\n <MenuItem key={c.value} value={c.value}>\n {c.label}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n}\n","/* eslint no-param-reassign:0 */\n/* eslint no-use-before-define:0 */\n\nimport React, { useState } from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport {\n Typography,\n Grid,\n Checkbox,\n FormControlLabel,\n TextField,\n Accordion,\n AccordionSummary,\n AccordionDetails,\n InputAdornment,\n} from '@mui/material';\n\nimport { ExpandMore } from '@nebula.js/ui/icons';\nimport Variable from './property-panel/Variable';\n\nconst PREFIX = 'AutoComponents';\n\nconst classes = {\n summary: `${PREFIX}-summary`,\n details: `${PREFIX}-details`,\n root: `${PREFIX}-root`,\n};\n\nconst StyledGrid = styled(Grid)(({ theme }) => ({\n [`& .${classes.summary}`]: {\n padding: theme.spacing(0, 1),\n backgroundColor: theme.palette.background.lighter,\n borderBottom: `1px solid ${theme.palette.divider}`,\n },\n\n [`& .${classes.details}`]: {\n padding: theme.spacing(1),\n },\n}));\n\nconst StyledAccordion = styled(Accordion)(({ theme }) => ({\n [`& .${classes.root}`]: {\n boxShadow: 'none',\n marginLeft: -theme.spacing(1),\n marginRight: -theme.spacing(1),\n '&$expanded': {\n marginLeft: -theme.spacing(1),\n marginRight: -theme.spacing(1),\n },\n },\n}));\n\nconst getType = (value, key) => {\n if (Array.isArray(value)) {\n return 'array';\n }\n\n if (enableExpressions && key === 'variable' && typeof value === 'object' && 'name' in value && 'value' in value) {\n return 'variable';\n }\n\n if (enableExpressions && value && typeof value === 'object' && 'qStringExpression' in value) {\n return 'expression';\n }\n\n if (typeof value === 'boolean') {\n return 'boolean';\n }\n if (typeof value === 'string') {\n return 'string';\n }\n if (typeof value === 'number') {\n return 'number';\n }\n if (value && typeof value === 'object') {\n return 'object';\n }\n return 'unknown';\n};\n\nfunction Bool({ property, value, target, changed }) {\n const handleChange = (e) => {\n target[property] = e.target.checked;\n changed();\n };\n return (\n <FormControlLabel\n control={<Checkbox checked={value} onChange={handleChange} />}\n label={property}\n labelPlacement=\"end\"\n />\n );\n}\n\nfunction Str({ property, value, target, changed }) {\n const [s, setS] = useState(value);\n const handleChange = (e) => {\n setS(e.target.value);\n };\n const onBlur = () => {\n if (s !== value) {\n target[property] = s;\n changed();\n }\n };\n\n return <TextField variant=\"standard\" fullWidth onChange={handleChange} onBlur={onBlur} label={property} value={s} />;\n}\n\nfunction Num({ property, value, target, changed }) {\n const [s, setS] = useState(+value);\n const handleChange = (e) => {\n setS(e.target.value);\n };\n const onBlur = () => {\n if (s !== value) {\n target[property] = +s;\n changed();\n }\n };\n\n return <TextField variant=\"standard\" fullWidth onChange={handleChange} onBlur={onBlur} label={property} value={s} />;\n}\n\nfunction Expression({ property, value, target, changed }) {\n const initial = value.qStringExpression && value.qStringExpression.qExpr ? value.qStringExpression.qExpr : '';\n const [s, setS] = useState(initial);\n const handleChange = (e) => {\n setS(e.target.value);\n };\n const onBlur = () => {\n if (s !== value) {\n target[property].qStringExpression = { qExpr: `=${s}` };\n changed();\n }\n };\n\n return (\n <TextField\n variant=\"standard\"\n InputProps={{\n startAdornment: <InputAdornment position=\"start\">=</InputAdornment>,\n }}\n fullWidth\n onChange={handleChange}\n onBlur={onBlur}\n label={property}\n value={s}\n />\n );\n}\n\nfunction Obj({ property, value, changed, app }) {\n return (\n <StyledAccordion square className={classes.root}>\n <AccordionSummary expandIcon={<ExpandMore />} className={classes.summary}>\n <Typography>{property}</Typography>\n </AccordionSummary>\n <AccordionDetails className={classes.details}>{generateComponents(value, changed, app)}</AccordionDetails>\n </StyledAccordion>\n );\n}\n\nconst registeredComponents = {\n boolean: Bool,\n string: Str,\n object: Obj,\n number: Num,\n expression: Expression,\n variable: Variable,\n};\n\nconst QRX = /^q[A-Z]/;\n\nlet enableExpressions = false;\n\nexport default function generateComponents(properties, changed, app, flags) {\n if (flags && flags.PP_EXPRESSIONS) {\n enableExpressions = true;\n }\n\n const components = Object.keys(properties)\n .map((key) => {\n if (['visualization', 'version'].indexOf(key) !== -1) {\n return false;\n }\n if (QRX.test(key)) {\n // skip q properties for now, but allow qStringExpression\n return false;\n }\n const type = getType(properties[key], key);\n if (!registeredComponents[type]) {\n return false;\n }\n\n return {\n Component: registeredComponents[type],\n property: key,\n target: properties,\n value: properties[key],\n key: `${key}:${properties[key]}`,\n };\n })\n .filter(Boolean);\n\n return (\n <StyledGrid container direction=\"column\" gap={0} alignItems=\"stretch\">\n {components.map((c) => (\n <Grid key={c.key} style={{ width: '100%' }}>\n <c.Component\n key={c.key}\n app={app}\n property={c.property}\n value={c.value}\n target={properties}\n changed={changed}\n />\n </Grid>\n ))}\n </StyledGrid>\n );\n}\n","import React, { useCallback, useState, useContext } from 'react';\n\nimport { Divider, Grid, Checkbox, FormControlLabel } from '@mui/material';\n\nimport useProperties from './useProperties';\n\nimport AppContext from '../../contexts/AppContext';\nimport Data from './property-panel/Data';\nimport generateComponents from './AutoComponents';\n\nexport default function Properties({ viz, sn, isTemp, storage, flags }) {\n const [properties, setProperties] = useProperties(viz?.model);\n const app = useContext(AppContext);\n\n const [isReadCacheEnabled, setReadCacheEnabled] = useState(storage.get('readFromCache') !== false);\n\n const handleCacheChange = (e) => {\n storage.save('readFromCache', e.target.checked);\n setReadCacheEnabled(e.target.checked);\n };\n\n const changed = useCallback(() => {\n setProperties(properties);\n }, [viz, sn, properties]);\n\n if (!sn) {\n return null;\n }\n\n if (!viz || !properties) {\n return null;\n }\n\n return (\n <div\n style={{\n minWidth: '250px',\n padding: '8px',\n }}\n >\n {isTemp && (\n <>\n <Grid item container alignItems=\"center\">\n <FormControlLabel\n control={\n <Checkbox checked={isReadCacheEnabled} onChange={handleCacheChange} value=\"isReadFromCacheEnabled\" />\n }\n label=\"Enable property cache\"\n labelPlacement=\"end\"\n />\n </Grid>\n <Divider />\n </>\n )}\n <Data properties={properties} setProperties={setProperties} sn={sn} />\n {generateComponents(properties, changed, app, flags)}\n </div>\n );\n}\n","import React, { useEffect, useState, useCallback } from 'react';\n\nimport { Button, Dialog, DialogTitle, DialogContent, DialogActions } from '@mui/material';\nimport { useTheme } from '@nebula.js/ui/theme';\nimport useRect from '@nebula.js/nucleus/src/hooks/useRect';\nimport * as monaco from '../../monaco-setup';\n\nexport default function PropertiesDialog({ model, show, close }) {\n const [objectProps, setObjectProps] = useState('');\n const [monacoEditor, setMonacoEditor] = useState(null);\n const [monacoEditorMarkers, setMonacoEditorMarkers] = useState([]);\n const [monacoRef, monacoRect, monacoNode] = useRect();\n const theme = useTheme();\n\n const onConfirm = useCallback(() => {\n if (monacoEditorMarkers.length) {\n return;\n }\n model.setProperties(JSON.parse(monacoEditor.getValue())).then(close);\n });\n\n useEffect(() => {\n if (!show) {\n return undefined;\n }\n const onChanged = () => {\n model &&\n show &&\n model.getProperties().then((props) => {\n show && setObjectProps(JSON.stringify(props || {}, null, 2));\n });\n };\n\n model.on('changed', onChanged);\n onChanged();\n return () => {\n model && model.removeListener('changed', onChanged);\n };\n }, [model && model.id, show]);\n\n useEffect(() => {\n if (!monacoRef || !monacoNode || !monacoRect || !objectProps) {\n return undefined;\n }\n const { left, top, width, height } = monacoRect;\n if (left === 0 && top === 0 && width === 0 && height === 0) {\n return undefined;\n }\n const editor = monaco.editor.create(monacoNode, {\n value: objectProps,\n language: 'json',\n scrollBeyondLastLine: false,\n theme: theme.palette.mode === 'dark' ? 'vs-dark' : 'vs-light',\n });\n editor.layout({ width: monacoRect.width, height: monacoRect.height });\n const subscription = editor.onDidChangeModelDecorations(() => {\n const m = monaco.editor.getModelMarkers();\n setMonacoEditorMarkers(m);\n });\n editor.focus();\n setMonacoEditor(editor);\n return () => {\n subscription.dispose();\n const editorModel = editor.getModel();\n if (editorModel) {\n editorModel.dispose();\n }\n editor.dispose();\n };\n }, [monacoNode, monacoRect, objectProps]);\n\n return (\n <Dialog\n disableEscapeKeyDown\n open={show}\n scroll=\"paper\"\n maxWidth=\"md\"\n onClose={close}\n PaperProps={{\n style: {\n height: '80%',\n width: '80%',\n },\n }}\n >\n <DialogTitle>Modify object properties</DialogTitle>\n <DialogContent dividers>\n <div ref={monacoRef} style={{ overflow: 'hidden', height: '100%' }} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={close}>\n Cancel\n </Button>\n <Button variant=\"contained\" onClick={onConfirm} disabled={monacoEditorMarkers.length > 0}>\n Confirm\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n","import { useState, useCallback, useLayoutEffect } from 'react';\n\nexport default function useRect() {\n const [node, setNode] = useState();\n const [rect, setRect] = useState();\n const callbackRef = useCallback((ref) => {\n if (!ref) {\n return;\n }\n setNode(ref);\n }, []);\n const handleResize = () => {\n const { left, top, width, height } = node.getBoundingClientRect();\n setRect({ left, top, width, height });\n };\n useLayoutEffect(() => {\n if (!node) {\n return undefined;\n }\n if (typeof ResizeObserver === 'function') {\n let resizeObserver = new ResizeObserver(handleResize);\n resizeObserver.observe(node);\n return () => {\n resizeObserver.unobserve(node);\n resizeObserver.disconnect(node);\n resizeObserver = null;\n };\n }\n\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [node]);\n return [callbackRef, rect, node];\n}\n","// Monaco Editor manual worker setup\nimport * as monaco from 'monaco-editor';\n\n// Configure monaco environment with dynamic worker loading\n// eslint-disable-next-line no-restricted-globals\nself.MonacoEnvironment = {\n getWorker(_, label) {\n if (label === 'json') {\n return new Worker(new URL('monaco-editor/language/json/json.worker', import.meta.url));\n }\n return new Worker(new URL('monaco-editor/editor/editor.worker', import.meta.url));\n },\n};\n\n// Export monaco-editor\nexport * from 'monaco-editor';\nexport default monaco;\n","import React from 'react';\n\nconst VizContext = React.createContext({\n currentThemeName: null,\n activeViz: null,\n setActiveViz: () => {},\n expandedObject: null,\n setExpandedObject: () => {},\n});\n\nexport default VizContext;\n","import React from 'react';\n\nconst NebulaContext = React.createContext();\n\nexport default NebulaContext;\n","import React, {\n useEffect,\n useContext,\n useRef,\n // useState,\n} from 'react';\n\nimport NebulaContext from '../../contexts/NebulaContext';\n\nexport default function Chart({ id, onLoad }) {\n const nebbie = useContext(NebulaContext);\n const el = useRef();\n useEffect(() => {\n const n = nebbie.render({\n id,\n element: el.current,\n });\n n.then((viz) => {\n onLoad(viz, el.current);\n });\n return () => {\n n.then((v) => {\n v.destroy();\n });\n };\n }, [id]);\n\n return (\n <div\n ref={el}\n style={{\n height: '100%',\n backgroundColor: 'white',\n }}\n />\n );\n}\n","/* eslint no-underscore-dangle:0 */\nimport React, { useContext, useEffect, useState, useCallback, useRef } from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport { Grid, Toolbar, IconButton, CircularProgress } from '@mui/material';\n\nimport SvgIcon from '@nebula.js/ui/icons/SvgIcon';\nimport { useModelStore } from '@nebula.js/nucleus/src/hooks/useModelStore';\n\nimport PropsDialog from './PropertiesDialog';\n\nimport AppContext from '../../contexts/AppContext';\nimport VizContext from '../../contexts/VizContext';\n\nimport Chart from './Chart';\n\nconst PREFIX = 'Cell';\n\nconst classes = {\n secondaryIcon: `${PREFIX}-secondaryIcon`,\n drop: `${PREFIX}-drop`,\n};\n\nconst StyledGrid = styled(Grid)(({ theme }) => ({\n [`& .${classes.secondaryIcon}`]: {\n color: theme.palette.text.secondary,\n },\n\n [`& .${classes.drop}`]: {\n boxShadow: theme.shadows[1],\n borderRadius: `${theme.shape.borderRadius}px`,\n },\n}));\n\nexport default function ({ id, expandable, minHeight }) {\n const language = 'en-US'; // TODO - useLocale\n const app = useContext(AppContext);\n const [modelStore] = useModelStore();\n const [model, setModel] = useState(null);\n const [exporting, setExporting] = useState(false);\n const [localViz, setLocalViz] = useState(null);\n\n const { currentThemeName, activeViz, setActiveViz, setExpandedObject, expandedObject } = useContext(VizContext);\n\n const isExpanded = expandedObject === id;\n\n const vizRef = useRef();\n useEffect(() => {\n const v = app.getObject(id).then((m) => {\n setModel(m);\n modelStore.set(`${id}`, m);\n return m;\n });\n\n return () => {\n v.then((m) => m.emit('close'));\n };\n }, [id]);\n\n const [dialogOpen, setDialogOpen] = useState(false);\n const closeDialog = useCallback(() => {\n setDialogOpen(false);\n }, []);\n\n const onLoad = useCallback(\n (viz, el) => {\n vizRef.current = {\n viz,\n el,\n };\n setLocalViz(viz);\n },\n [id]\n );\n\n const toggleExpand = () => {\n if (isExpanded) {\n setExpandedObject(null);\n } else {\n setExpandedObject(id);\n setActiveViz(localViz);\n }\n };\n\n const snapIt = useCallback(\n (doExport = false) => {\n if (!vizRef.current) {\n return;\n }\n if (doExport) {\n setExporting(true);\n vizRef.current.viz.__DO_NOT_USE__.exportImage().then((res) => {\n if (res && res.url) {\n window.open(res.url);\n }\n setExporting(false);\n });\n } else {\n const containerSize = vizRef.current.el.getBoundingClientRect();\n vizRef.current.viz.__DO_NOT_USE__.takeSnapshot().then((snapshot) => {\n fetch('/njs/snapshot', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(snapshot),\n });\n window.open(\n `/render?snapshot=${snapshot.key}`,\n 'snapshot',\n `height=${Math.round(containerSize.height)},width=${Math.round(containerSize.width)}`\n );\n });\n }\n },\n [model, currentThemeName]\n );\n\n const activeStyle =\n !isExpanded && vizRef.current && activeViz && activeViz === vizRef.current.viz\n ? {\n boxShadow: '0px 0px 4px 2px rgba(0,100,200,0.85)',\n }\n : {};\n\n const isActive = activeViz === localViz;\n\n return (\n <StyledGrid container direction=\"column\" style={{ minHeight, height: '100%', position: 'relative' }}>\n <Grid item>\n <Toolbar variant=\"dense\" disableGutters style={{ padding: '0 0px', opacity: 1 }}>\n <PropsDialog model={model} show={dialogOpen} close={closeDialog} />\n <IconButton\n title=\"Modify object properties\"\n className={classes.secondaryIcon}\n disabled={!model}\n onClick={() => setDialogOpen(true)}\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 16 16',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M14,8 C14,8.2 14,8.4 14,8.6 L16,9.6 L15.4,11.4 L13.2,11 C13,11.3 12.8,11.7 12.5,12 L13.6,14 L12,15 L10.4,13.4 C10,13.5 9.7,13.7 9.3,13.8 L9,16 L7,16 L6.7,13.8 C6.3,13.7 5.9,13.6 5.6,13.4 L4,15 L2.4,13.9 L3.5,11.9 C3.2,11.6 3,11.3 2.8,10.9 L0.6,11.3 L0,9.6 L2,8.6 C2,8.4 2,8.2 2,8 C2,7.8 2,7.6 2,7.4 L0,6.4 L0.6,4.6 L2.8,5 C3,4.7 3.2,4.3 3.5,4 L2.4,2 L4,1 L5.6,2.6 C6,2.4 6.3,2.3 6.7,2.2 L7,0 L9,0 L9.3,2.2 C9.7,2.3 10.1,2.4 10.4,2.6 L12,1 L13.6,2.1 L12.5,4.1 C12.8,4.4 13,4.7 13.2,5.1 L15.4,4.7 L16,6.4 L14,7.4 C14,7.6 14,7.8 14,8 Z M8,11 C9.7,11 11,9.7 11,8 C11,6.3 9.7,5 8,5 C6.3,5 5,6.3 5,8 C5,9.7 6.3,11 8,11 Z',\n },\n },\n ],\n })}\n </IconButton>\n <IconButton\n title=\"Open in single render view\"\n className={classes.secondaryIcon}\n disabled={!model}\n href={\n model\n ? `${document.location.href.replace(/\\/dev\\//, '/render/')}${\n window.location.search ? '&' : '?'\n }object=${model.id}&theme=${currentThemeName}&language=${language}`\n : ''\n }\n target=\"_blank\"\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 24 24',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z',\n },\n },\n ],\n })}\n </IconButton>\n <IconButton\n title=\"Take and render as snapshot\"\n className={classes.secondaryIcon}\n disabled={!model}\n onClick={() => snapIt()}\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 24 24',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M9 2L7.17 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3.17L15 2H9zm3 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z',\n },\n },\n ],\n })}\n </IconButton>\n {exporting ? (\n <CircularProgress size={24} />\n ) : (\n <IconButton\n title=\"Export as image\"\n className={classes.secondaryIcon}\n disabled={!model}\n onClick={() => snapIt(true)}\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 24 24',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z',\n },\n },\n ],\n })}\n </IconButton>\n )}\n <Grid sx={{ flex: 1 }} />\n {expandable && (\n <IconButton\n title=\"Edit\"\n className={classes.secondaryIcon}\n disabled={!localViz || isActive}\n onClick={() => setActiveViz(localViz)}\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 24 24',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z',\n },\n },\n ],\n })}\n </IconButton>\n )}\n {expandable && (\n <IconButton\n title=\"Expand\"\n disabled={!model || !localViz}\n className={classes.secondaryIcon}\n onClick={() => toggleExpand()}\n size=\"large\"\n >\n {SvgIcon({\n size: 'medium',\n viewBox: '0 0 24 24',\n shapes: [\n {\n type: 'path',\n attrs: {\n d: isExpanded\n ? 'M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z'\n : 'M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z',\n },\n },\n ],\n })}\n </IconButton>\n )}\n </Toolbar>\n </Grid>\n <Grid item xs style={{ ...activeStyle, flex: 1, minHeight: 0 }} className={classes.drop}>\n <Chart id={id} onLoad={onLoad} />\n </Grid>\n </StyledGrid>\n );\n}\n","import React, { useEffect, useContext } from 'react';\n\nimport { Grid } from '@mui/material';\n\nimport useProperties from './useProperties';\n\nimport Cell from './Cell';\nimport NebulaContext from '../../contexts/NebulaContext';\nimport VizContext from '../../contexts/VizContext';\n\nexport default function Stage({ info, storage, uid }) {\n const nebbie = useContext(NebulaContext);\n const { activeViz, setActiveViz } = useContext(VizContext);\n const [properties] = useProperties(activeViz?.model);\n\n useEffect(() => {\n if (!uid) {\n return undefined;\n }\n const res = nebbie.render({\n type: info.supernova.name,\n properties: {\n ...(storage.get('readFromCache') !== false ? storage.props(info.supernova.name) : {}),\n qInfo: {\n qId: uid,\n qType: info.supernova.name,\n },\n },\n });\n res.then((v) => {\n setActiveViz(v);\n });\n return () => {\n res.then((v) => v.destroy());\n };\n }, [uid]);\n\n useEffect(() => {\n if (!properties) return;\n storage.props(info.supernova.name, properties);\n }, [properties]);\n\n if (!activeViz || activeViz.id !== uid) return null;\n\n return (\n <Grid\n item\n container\n justifyContent=\"center\"\n style={{\n height: '100%',\n }}\n >\n <Grid item xs style={{ flex: 1, minWidth: 0 }}>\n <Cell id={uid} />\n </Grid>\n </Grid>\n );\n}\n","import React, { useEffect, useContext, useState } from 'react';\n\nimport { useAppLayout } from '@nebula.js/nucleus/src/hooks/useLayout';\n\nimport { Grid, Typography } from '@mui/material';\n\nimport AppContext from '../../contexts/AppContext';\nimport VizContext from '../../contexts/VizContext';\nimport Cell from './Cell';\n\nexport default function Collection({ types, cache }) {\n const app = useContext(AppContext);\n const [layout] = useAppLayout(app);\n const [objects, setObjects] = useState(null);\n\n const { expandedObject } = useContext(VizContext);\n\n useEffect(() => {\n app\n .getObjects({\n qTypes: types,\n // qIncludeSessionObjects: true,\n qData: {\n title: '/qMetaDef/title',\n },\n })\n .then((list) => {\n setObjects(list.slice(0, 20)); // don't show too many to avoid slow UI\n });\n }, [layout, types.join(':')]);\n\n if (!objects) {\n return null;\n }\n\n const current = expandedObject ? objects.filter((o) => o.qInfo.qId === expandedObject) : objects;\n\n return (\n <Grid\n container\n justifyContent=\"center\"\n gap={expandedObject ? 0 : 2}\n style={{\n height: expandedObject ? '100%' : undefined,\n }}\n >\n {current[0] ? (\n current.map((c) => (\n <Grid item xs={12} md={expandedObject ? 12 : 6} lg={expandedObject ? 12 : 4} key={`${c.qInfo.qId}::${cache}`}>\n <Cell id={c.qInfo.qId} expandable minHeight={600} />\n </Grid>\n ))\n ) : (\n <Grid item>\n <div>\n <Typography display=\"inline\">Could not find any components with </Typography>\n <Typography display=\"inline\">\n <code>{`qType: \"${types[0]}\"`}</code>\n </Typography>\n <Typography display=\"inline\"> in the current app</Typography>\n </div>\n </Grid>\n )}\n </Grid>\n );\n}\n","/* eslint no-underscore-dangle:0 */\nimport React, { useEffect, useLayoutEffect, useState, useRef, useMemo } from 'react';\nimport { useNavigate } from 'react-router';\nimport { embed } from '@nebula.js/stardust';\nimport { createTheme, ThemeProvider, StyledEngineProvider } from '@nebula.js/ui/theme';\nimport { WbSunny, Brightness3, ColorLens, Language, Home } from '@nebula.js/ui/icons';\nimport InstanceContext from '@nebula.js/nucleus/src/contexts/InstanceContext';\nimport initModelStore from '@nebula.js/nucleus/src/stores/new-model-store';\nimport initSelectionStore from '@nebula.js/nucleus/src/stores/new-selections-store';\n\nimport {\n Grid,\n Toolbar,\n Button,\n IconButton,\n ToggleButtonGroup,\n ToggleButton,\n Typography,\n Tab,\n Tabs,\n Menu,\n MenuItem,\n CircularProgress,\n} from '@mui/material';\nimport initiateWatch from '../../hot';\nimport { getHostConfig } from '../../connect';\n\nimport Properties from './Properties';\nimport Stage from './Stage';\nimport Collection from './Collection';\n\nimport AppContext from '../../contexts/AppContext';\nimport NebulaContext from '../../contexts/NebulaContext';\nimport VizContext from '../../contexts/VizContext';\n\nimport storageFn from '../../storage';\nimport { useInfo, useOpenApp } from '../../hooks';\n\nconst SPACING = 2;\n\nconst languages = [\n 'en-US',\n 'it-IT',\n 'zh-CN',\n 'zh-TW',\n 'ko-KR',\n 'de-DE',\n 'sv-SE',\n 'es-ES',\n 'pt-BR',\n 'ja-JP',\n 'fr-FR',\n 'nl-NL',\n 'tr-TR',\n 'pl-PL',\n 'ru-RU',\n];\n\nconst interactions = ['select', 'active', 'passive'];\n\nfunction getInteractions(arr) {\n return {\n select: arr.indexOf('select') !== -1,\n active: arr.indexOf('active') !== -1,\n passive: arr.indexOf('passive') !== -1,\n edit: arr.indexOf('edit') !== -1,\n };\n}\n\nexport default function Visualize() {\n const uid = useRef();\n const navigate = useNavigate();\n const { info } = useInfo();\n const { waiting, app } = useOpenApp({ info });\n const storage = useMemo(() => storageFn(app), [app]);\n const [activeViz, setActiveViz] = useState(null);\n const [expandedObject, setExpandedObject] = useState(null);\n const [sn, setSupernova] = useState(null);\n const [currentThemeName, setCurrentThemeName] = useState(storage.get('themeName'));\n const [currentLanguage, setCurrentLanguage] = useState(storage.get('language') || 'en-US');\n const [currentMuiThemeName, setCurrentMuiThemeName] = useState('light');\n const [currentInteractions, setCurrentInteractions] = useState(interactions);\n const [objectListMode, setObjectListMode] = useState(storage.get('objectListMode') === true);\n const currentSelectionsRef = useRef(null);\n const [currentId, setCurrentId] = useState();\n const [themeChooserAnchorEl, setThemeChooserAnchorEl] = React.useState(null);\n const [languageChooserAnchorEl, setLanguageChooserAnchorEl] = React.useState(null);\n const [initialized, setInit] = useState(false);\n const [nebbie, setNebbie] = useState(null);\n const customThemes = Array.isArray(info?.themes) && info.themes.length ? ['light', 'dark', ...info.themes] : [];\n const [context, setContext] = useState();\n\n const theme = useMemo(() => createTheme(currentMuiThemeName), [currentMuiThemeName]);\n\n const vizContext = useMemo(\n () => ({\n currentThemeName,\n activeViz,\n setActiveViz,\n expandedObject,\n setExpandedObject,\n }),\n [activeViz, expandedObject, currentThemeName]\n );\n\n useEffect(() => {\n (async () => {\n if (info) {\n await initiateWatch(info);\n setInit(true);\n }\n })();\n }, [info]);\n\n useEffect(() => {\n if (waiting || !initialized) return;\n const n = embed(app, {\n hostConfig: info?.engine ? getHostConfig(info) : undefined,\n context: {\n theme: currentThemeName,\n language: currentLanguage,\n interactions: getInteractions(currentInteractions),\n keyboardNavigation: info?.keyboardNavigation,\n },\n load: (type) => Promise.resolve(window[type.name]),\n flags: info?.flags,\n themes: info?.themes\n ? info?.themes.map((t) => ({\n id: t,\n load: () =>\n fetch(`/theme/${t}`)\n .then((response) => response.json())\n .then((raw) => {\n setCurrentMuiThemeName(raw.type === 'dark' ? 'dark' : 'light');\n return raw;\n }),\n }))\n : null,\n });\n n.__DO_NOT_USE__.types.register(info?.supernova);\n if (info?.types) {\n info?.types.forEach((t) => {\n n.__DO_NOT_USE__.types.register(t);\n });\n }\n\n setNebbie(n);\n }, [app, info, waiting, initialized]);\n\n useLayoutEffect(() => {\n if (!nebbie) return;\n\n nebbie.context({ theme: currentThemeName });\n if (currentThemeName === 'light' || currentThemeName === 'dark') {\n setCurrentMuiThemeName(currentThemeName);\n }\n }, [nebbie, currentThemeName]);\n\n const create = () => {\n if (window[info?.supernova.name]) {\n uid.current = String(Date.now());\n setCurrentId(uid.current);\n }\n };\n\n useEffect(() => {\n if (!nebbie) return;\n\n nebbie.selections().then((s) => s.mount(currentSelectionsRef.current));\n window.onHotChange(info?.supernova.name, () => {\n nebbie.__DO_NOT_USE__.types.clearFromCache(info?.supernova.name);\n nebbie.__DO_NOT_USE__.types.register(info?.supernova);\n\n create();\n\n nebbie.__DO_NOT_USE__.types\n .get({\n name: info?.supernova.name,\n })\n .supernova()\n .then(setSupernova);\n });\n\n create();\n }, [nebbie, info]);\n\n useEffect(() => {\n const unload = () => {\n if (app) app.destroySessionObject(uid.current);\n };\n window.addEventListener('beforeunload', unload);\n\n if (app) {\n const modelStore = initModelStore(app.id);\n const selectionStore = initSelectionStore(app.id);\n setContext({\n modelStore,\n selectionStore,\n myKey: 'this is the key here',\n });\n }\n\n return () => {\n window.removeEventListener('beforeunload', unload);\n };\n }, [app]);\n\n const handleThemeChange = (t) => {\n setThemeChooserAnchorEl(null);\n storage.save('themeName', t);\n setCurrentThemeName(t);\n };\n\n const handleLanguageChange = (lang) => {\n setLanguageChooserAnchorEl(null);\n storage.save('language', lang);\n setCurrentLanguage(lang);\n nebbie && nebbie.context({ language: lang });\n };\n\n const handleInteractionsChange = (e, newValue) => {\n setCurrentInteractions(newValue);\n nebbie && nebbie.context({ interactions: getInteractions(newValue) });\n };\n\n const toggleDarkMode = () => {\n const v = currentThemeName === 'dark' ? 'light' : 'dark';\n storage.save('themeName', v);\n setCurrentThemeName(v);\n setCurrentMuiThemeName(v);\n };\n\n const handleCreateEditChange = (e, newValue) => {\n const listMode = newValue === 1;\n storage.save('objectListMode', listMode);\n if (listMode) {\n setActiveViz(null);\n setExpandedObject(null);\n }\n setObjectListMode(listMode);\n };\n // For another time: refactor away the usage of internal Nebula hooks so we don't need the InstanceContext here.\n return (\n <InstanceContext.Provider value={context}>\n <AppContext.Provider value={app}>\n <StyledEngineProvider injectFirst>\n <ThemeProvider theme={theme}>\n <NebulaContext.Provider value={nebbie}>\n <Grid\n container\n wrap=\"nowrap\"\n direction=\"column\"\n style={{ background: theme.palette.background.darkest, height: '100%' }}\n gap={0}\n >\n <Grid item>\n <Toolbar\n variant=\"dense\"\n style={{\n background: theme.palette.background.paper,\n boxShadow: theme.shadows[1],\n width: `calc(100% - 48px)`,\n }}\n >\n <Grid container gap={1} style={{ width: '100%' }}>\n <Grid item container alignItems=\"center\">\n <Grid item>\n <a href=\"https://github.com/qlik-oss/nebula.js\" target=\"_blank\" rel=\"noopener noreferrer\">\n <img\n src=\"/assets/logo.svg\"\n alt=\"nebula.js logo\"\n href=\"https://github.com/qlik-oss/nebula.js\"\n style={{ height: '24px', position: 'relative', top: '2px' }}\n />\n </a>\n </Grid>\n </Grid>\n <Grid item container alignItems=\"center\">\n <IconButton title=\"Home\" onClick={() => navigate('/')} size=\"large\">\n <Home style={{ verticalAlign: 'middle' }} />\n </IconButton>\n </Grid>\n <Grid>\n <Tabs value={objectListMode ? 1 : 0} onChange={handleCreateEditChange} aria-label=\"Navigation\">\n <Tab label={<Typography>Create</Typography>} value={0} />\n <Tab label={<Typography>Edit</Typography>} value={1} />\n </Tabs>\n </Grid>\n <Grid item container alignItems=\"center\" offset={{ md: 'auto' }}>\n <Grid item gap={1}>\n <Typography>State:</Typography>\n </Grid>\n <Grid item gap={2}>\n <ToggleButtonGroup\n size=\"small\"\n value={currentInteractions}\n onChange={handleInteractionsChange}\n color=\"primary\"\n >\n <ToggleButton value=\"select\">Select</ToggleButton>\n <ToggleButton value=\"active\">Active</ToggleButton>\n <ToggleButton value=\"passive\">Passive</ToggleButton>\n <ToggleButton value=\"edit\">Edit</ToggleButton>\n </ToggleButtonGroup>\n </Grid>\n <Grid item>\n {customThemes.length ? (\n <>\n <IconButton\n title=\"Select theme\"\n onClick={(e) => setThemeChooserAnchorEl(e.currentTarget)}\n size=\"large\"\n >\n <ColorLens fontSize=\"small\" />\n </IconButton>\n <Menu\n anchorEl={themeChooserAnchorEl}\n open={!!themeChooserAnchorEl}\n keepMounted\n onClose={() => setThemeChooserAnchorEl(null)}\n >\n {customThemes.map((t) => (\n <MenuItem\n key={t}\n selected={t === currentThemeName}\n onClick={() => handleThemeChange(t)}\n >\n {t}\n </MenuItem>\n ))}\n </Menu>\n </>\n ) : (\n <IconButton title=\"Toggle light/dark mode\" onClick={toggleDarkMode} size=\"large\">\n {currentThemeName === 'dark' ? (\n <WbSunny fontSize=\"small\" />\n ) : (\n <Brightness3 fontSize=\"small\" />\n )}\n </IconButton>\n )}\n </Grid>\n <Grid item>\n <Button\n startIcon={<Language />}\n title=\"Select language\"\n onClick={(e) => setLanguageChooserAnchorEl(e.currentTarget)}\n >\n {currentLanguage}\n </Button>\n <Menu\n anchorEl={languageChooserAnchorEl}\n open={!!languageChooserAnchorEl}\n keepMounted\n onClose={() => setLanguageChooserAnchorEl(null)}\n >\n {languages.map((t) => (\n <MenuItem\n key={t}\n selected={t === currentLanguage}\n onClick={() => handleLanguageChange(t)}\n >\n {t}\n </MenuItem>\n ))}\n </Menu>\n </Grid>\n </Grid>\n </Grid>\n </Toolbar>\n </Grid>\n <Grid item style={{ padding: theme.spacing(SPACING / 2, SPACING / 2, 0, SPACING / 2) }}>\n <div ref={currentSelectionsRef} style={{ flex: '0 0 auto', boxShadow: theme.shadows[1] }} />\n </Grid>\n <Grid\n item\n xs\n style={{\n flex: 1,\n minHeight: 0,\n overflowX: 'hidden',\n overflowY: 'auto',\n padding: theme.spacing(0, SPACING / 2, SPACING / 2, SPACING / 2),\n }}\n >\n <VizContext.Provider value={vizContext}>\n {sn ? (\n <Grid container wrap=\"nowrap\" style={{ height: '100%' }} gap={SPACING / 2}>\n <Grid item xs style={{ flex: 1, minWidth: 0 }}>\n {objectListMode ? (\n <Collection cache={currentId} types={[info?.supernova.name]} />\n ) : (\n <Stage info={info} storage={storage} uid={currentId} />\n )}\n </Grid>\n {activeViz && (\n <Grid\n item\n style={{\n background: theme.palette.background.paper,\n overflow: 'hidden auto',\n marginTop: 48,\n boxShadow: theme.shadows[1],\n padding: 0,\n }}\n >\n <Properties\n sn={sn}\n viz={activeViz}\n isTemp={!objectListMode}\n storage={storage}\n flags={info?.flags}\n />\n </Grid>\n )}\n </Grid>\n ) : (\n <Grid container wrap=\"nowrap\" style={{ paddingTop: '48px' }} justifyContent=\"center\">\n <Grid item>\n <CircularProgress />\n </Grid>\n </Grid>\n )}\n </VizContext.Provider>\n </Grid>\n </Grid>\n </NebulaContext.Provider>\n </ThemeProvider>\n </StyledEngineProvider>\n </AppContext.Provider>\n </InstanceContext.Provider>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { openAppSession } from '@qlik/api/qix';\n\nexport const useOpenApp = ({ info }) => {\n const [app, setApp] = useState(null);\n const [waiting, setWaiting] = useState(true);\n\n useEffect(() => {\n setWaiting(true);\n if (!info) return;\n handleOpenApp()\n .then((resultApp) => setApp(resultApp))\n .catch((err) => console.log(err))\n .finally(() => setWaiting(false));\n }, [info]);\n\n const handleOpenApp = async () => {\n try {\n const { clientId, webIntegrationId, engine: engineConfig = null, engine: { host } = {} } = info;\n const appId = info?.engine?.appId;\n if (!appId) throw new Error('Missing appId in connection info');\n\n if (webIntegrationId) {\n return openAppSession({\n appId,\n hostConfig: { authType: 'cookie', webIntegrationId, host },\n }).getDoc();\n }\n\n if (clientId) {\n return openAppSession({\n appId,\n hostConfig: {\n authType: 'oauth2',\n clientId,\n host,\n redirectUri: `${window.location.origin}/auth/login/callback`,\n accessTokenStorage: 'session',\n },\n }).getDoc();\n }\n\n // Local / no-auth engine (e.g. qlik-core, docker engine)\n const scheme = engineConfig.secure !== false ? 'https' : 'http';\n const localHost = `${scheme}://${engineConfig.host}${engineConfig.port ? `:${engineConfig.port}` : ''}`;\n return openAppSession({\n appId,\n hostConfig: { authType: 'noauth', host: localHost },\n }).getDoc();\n } catch (error) {\n throw new Error('Failed to open app!', { cause: error });\n }\n };\n\n return { waiting, app, setApp };\n};\n","import createKeyStore from './create-key-store';\n\nexport default function initializeStores(appId) {\n const [useRpcResultStore, rpcResultStore] = createKeyStore({});\n const [useRpcRequestStore, rpcRequestStore] = createKeyStore({});\n const [useRpcRequestSessionModelStore, rpcRequestSessionModelStore] = createKeyStore({});\n const [useRpcRequestModelStore, rpcRequestModelStore] = createKeyStore({});\n\n const [useModelChangedStore, modelChangedStore] = createKeyStore({});\n const [, modelInitializedStore] = createKeyStore({});\n\n const modelStoreMiddleware = ({ type, value: model }) => {\n const initialized = modelInitializedStore.get(model.id);\n modelInitializedStore.set(model.id, {});\n const onChanged = () => {\n rpcRequestStore.clear(model.id);\n modelChangedStore.set(model.id, {});\n modelChangedStore.dispatch(true); // Force new state to trigger hooks\n };\n const unsubscribe = () => {\n model.removeListener('closed', unsubscribe);\n model.removeListener('changed', onChanged);\n rpcResultStore.clear(model.id);\n rpcRequestStore.clear(model.id);\n rpcRequestSessionModelStore.clear(model.id);\n rpcRequestModelStore.clear(model.id);\n modelChangedStore.clear(model.id);\n modelInitializedStore.clear(model.id);\n };\n switch (type) {\n case 'SET':\n if (!initialized) {\n model.on('changed', onChanged);\n model.once('closed', unsubscribe);\n }\n break;\n default:\n break;\n }\n return unsubscribe;\n };\n\n const [useModelStore, modelStore] = createKeyStore({}, modelStoreMiddleware);\n\n const subscribe = (model) => {\n const unsubscribe = modelStoreMiddleware({ type: 'SET', value: model });\n return () => {\n unsubscribe();\n modelStore.clear(model.id);\n };\n };\n\n const destroy = () => {\n modelStore.destroy();\n };\n\n return {\n subscribe,\n destroy,\n useModelStore,\n modelStore,\n useModelChangedStore,\n useRpcResultStore,\n rpcResultStore,\n useRpcRequestStore,\n rpcRequestStore,\n useRpcRequestModelStore,\n rpcRequestModelStore,\n useRpcRequestSessionModelStore,\n rpcRequestSessionModelStore,\n modelChangedStore,\n appId,\n };\n}\n","import createKeyStore from './create-key-store';\n\nexport default function initializeStores(appId) {\n const [useAppSelectionsStore, appSelectionsStore] = createKeyStore({});\n const [useAppModalStore, appModalStore] = createKeyStore({});\n const [useModalObjectStore, modalObjectStore] = createKeyStore({});\n\n return {\n useAppSelectionsStore,\n useAppModalStore,\n appSelectionsStore,\n appModalStore,\n useModalObjectStore,\n modalObjectStore,\n appId,\n };\n}\n","import React from 'react';\nimport { Typography } from '@mui/material';\nimport { ThemeWrapper } from '../../ThemeWrapper';\nimport { ContentWrapper } from '../styles';\n\n/**\n *\n * Since we updated our OAuth redirect link to include `/auth/` part in it,\n * we are currently showing this error page for old client-ids that\n * are still trying to redirect to the /login/callback url\n * the point is to give them a quick guid about update their\n * redirect url in tenant\n */\nconst OAuthRedirectLinkError = () => (\n <ThemeWrapper>\n <ContentWrapper marginTop={5}>\n <Typography variant=\"h4\" gutterBottom>\n Error!\n </Typography>\n <Typography variant=\"subtitle1\" gutterBottom>\n OAUTH REDIRECT LINK ERROR!\n </Typography>\n\n <Typography variant=\"body2\" paragraph>\n We updated our route which was previously had the responsibility to handle the redirected link including the\n correct credentials to have{' '}\n <code>\n <b>/auth/</b>\n </code>{' '}\n part within it. This change is now impacting your redirect links if you already using your old client-id.\n </Typography>\n\n <Typography variant=\"h6\" gutterBottom>\n Here is what you need to do:\n </Typography>\n\n <Typography variant=\"body2\" paragraph>\n <b>1.</b> Go to your tenant that you created your client id\n <br />\n <br />\n <b>2.</b> Open Managment console\n <br />\n <br />\n <b>3.</b> Click on OAuth menu in left panel (if you dont see that menu it means you dont have access to it and\n you need to ask a person who has the proper access)\n <br />\n <br />\n <b>4.</b> Find your Client id and from ... menu, click on edit\n <br />\n <br />\n <b>5.</b> There is a section called "Add redirect URLs", find it and add your new link. The only\n difference is that your new link will include `/auth/` part in it, for example, if you had this redirect link\n previously:\n <code>http://localhost:8000/login/callback</code>\n <br />\n now it will be like:\n <code>\n http://localhost:8000/<b>auth/</b>login/callback\n </code>\n <br />\n <br />\n <b>6.</b> Click on save and you are set!\n <br />\n </Typography>\n </ContentWrapper>\n </ThemeWrapper>\n);\n\nexport default OAuthRedirectLinkError;\n","import React from 'react';\nimport * as ReactDOM from 'react-dom/client';\n\nimport { Root } from './components/Root';\n\nReactDOM.createRoot(document.querySelector('#app')).render(<Root />);\n","import React from 'react';\nimport { BrowserRouter, Routes, Route } from 'react-router';\nimport { RootContextProvider } from '../contexts/RootContext';\n\nimport HubLayout from './Layouts/HubLayout';\nimport SelectEngine from './Hub/SelectEngine/SelectEngine';\nimport AppList from './Hub/AppList';\nimport Visualize from './Visualize/Visualize';\nimport OAuthRedirectLinkError from './Hub/Errors/OAuthRedirectLinkError';\n\nexport const Root = () => (\n <BrowserRouter>\n <RootContextProvider>\n <Routes>\n <Route element={<HubLayout />}>\n <Route path=\"/\" element={<SelectEngine />} />\n <Route path=\"/app-list\" element={<AppList />} />\n </Route>\n <Route path=\"/dev\" element={<Visualize />} />\n <Route path=\"/login/callback\" element={<OAuthRedirectLinkError />} />\n </Routes>\n </RootContextProvider>\n </BrowserRouter>\n);\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(\n\t\tObject.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t\t__webpack_require__.f[key](chunkId, promises);\n\t\t\treturn promises;\n\t\t}, [])\n\t);\n};","__webpack_require__.hmd = (module) => {\n module = Object.create(module);\n if (!module.children) module.children = [];\n Object.defineProperty(module, 'exports', {\n enumerable: true,\n set: () => {\n throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n }\n });\n return module;\n};","// This function allow to reference chunks\n__webpack_require__.u = (chunkId) => {\n // return url for filenames not based on template\n \n // return url for filenames based on template\n return \"async/\" + chunkId + \".js\"\n}","__webpack_require__.g = (() => {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n module.paths = [];\n if (!module.children) module.children = [];\n return module;\n};","__webpack_require__.nc = undefined;","__webpack_require__.p = \"/\";"],"names":["getCsrfToken","host","token","res","fetch","err","console","urlRegex","appRegex","prefixRegx","getConnectionInfo","response","n","opts","info","params","window","pair","idx","name","value","decodeURIComponent","parseEngineURL","url","appId","appUrl","match","trimmedUrl","engineUrl","appMatch","engineMatch","undefined","rootPath","setHostConfig","webIntegrationId","clientId","auth","buildDocList","data","getItems","d","error","Error","useInfo","setInfo","useState","useEffect","i","handleSessionNotification","result","setError","setGlobal","e","app","stored","parsed","JSON","appid","s","v","p","RootContext","createContext","useRootContext","ctx","useContext","RootContextProvider","children","location","useLocation","navigate","useNavigate","storage","useMemo","storageFn","cachedConnectionsData","useCachedConnections","cachedConnections","setCachedConnections","removeCachedConnection","li","conns","addCachedConnections","protocol","prefix","newConns","connectionData","useConnection","glob","treatAsDesktop","setTreatAsDesktop","activeStep","setActiveStep","connect","engineConfig","csrfToken","scheme","port","enigma","qixSchema","handleConnectionSuccess","config","handleConnectionFailure","oops","WebSocket","rootContextValue","light","colors","dark","cache","create","definition","def","key","withDefaults","base","adaptedTheme","theme","buttonClasses","createTheme","ThemeWrapper","themeName","StyledEngineProvider","ThemeProvider","Container","ContentWrapper","styled","Box","marginTop","StepperWrapper","Stepper","CustomStepLabel","StepLabel","prop","shouldBePointer","steps","handleStepperClick","label","Step","ConnectionSteps","Outlet","showGuid","Collapse","Typography","Link","SvgIcon","param","size","style","viewBox","shapes","ix","Type","attrs","props","OptionsToConnect","List","item","ListItemButton","checkIfHistoryConnectionDisabled","ListItemText","IconButton","Remove","message","hints","hint","FormManager","fields","isCredentialProvided","inputs","setInputs","evt","URL","Grid","field","OutlinedInput","x","getFieldPlaceHolder","Button","shouldDisableSubmitBtn","Object","ConnectionOptions","tabIdx","setTabIdx","Tabs","_","id","Tab","checkIfConnectionOptionDisabled","labelKey","formFields","TabPanel","setShowGuid","useDeauthorizePrevOAuthInstance","Help","ConnectionHistory","ConnectionGuid","loading","appList","useAppList","setAppList","setLoading","apps","CircularProgress","appData","getAppLink","targetApp","search","csrfQuery","newEngineUrl","encodeURIComponent","modifiedEngineUrl","React","initialState","applyMiddleware","hookListeners","subscribedListeners","store","sharedState","unsubscribe","forceNewState","listener","setState","SHARED","stardust","ReactDOMClient","jsxRuntime","IDENTIFIER","importMapAdded","getModule","m","addImportMap","globalThis","imports","exported","ns","Blob","script","document","Date","hotListeners","fn","useProperties","model","properties","setProps","onChanged","AppContext","idGen","toChar","min","max","Math","uid","addIndex","array","index","removeIndex","removeIdx","hcHandler","hc","handler","dimension","measure","loHandler","lo","k","loContainerHandler","loc","dimensions","maxDims","useModelStore","useFunc","InstanceContext","useSessionModel","_key","deps","modelStore","rpcRequestSessionModelStore","useRpcRequestSessionModelStore","setModel","rpcShared","newModel","rpcReducer","state","action","newState","rpcResultStore","method","useRpc","useRpcResultStore","dispatch","useReducer","modelChangedStore","useModelChangedStore","rpcRequestStore","useRpcRequestStore","call","skipRetry","rpc","Promise","resolve","setTimeout","global","useLayout","layout","validating","canCancel","canRetry","longrunning","D","M","list","type","PREFIX","classes","StyledGrid","resetZoom","viewportMetaTag","HTMLMetaElement","Search","onChange","onEnter","onEscape","setValue","SearchIcon","TextField","Field","onSelect","sub","parts","part","ChevronRight","LibraryItem","Aggr","aggr","LibraryList","title","searchTerm","libraryItems","useLibraryList","sortedLibraryItems","a","b","ListSubheader","matches","parse","FieldsPopover","alignTo","show","close","onSelected","selectedField","setSelectedField","setSearchTerm","useTheme","onAggregateSelected","Popover","ListItemIcon","ChevronLeft","Divider","FieldTitle","f","ff","Fields","items","addLabel","onAdded","onRemoved","canAdd","isActive","setIsActive","btn","useRef","ListItem","o","DataCube","setProperties","target","setDimensions","supportsMultipleDims","createHandler","dc","getValue","reference","dataContainer","dim","addedDim","Data","sn","targets","t","variableList","StyledAccordion","Accordion","registeredComponents","property","changed","FormControlLabel","Checkbox","setS","AccordionSummary","ExpandMore","AccordionDetails","generateComponents","initial","InputAdornment","l","setL","fetchData","getVariables","reply","FormControl","Select","selected","c","MenuItem","QRX","enableExpressions","flags","components","Array","Boolean","Properties","viz","isTemp","isReadCacheEnabled","setReadCacheEnabled","useCallback","PropertiesDialog","objectProps","setObjectProps","monacoEditor","setMonacoEditor","monacoEditorMarkers","setMonacoEditorMarkers","monacoRef","monacoRect","monacoNode","useRect","node","setNode","rect","setRect","callbackRef","ref","handleResize","left","top","width","height","useLayoutEffect","ResizeObserver","resizeObserver","onConfirm","editor","monaco","subscription","editorModel","Dialog","DialogTitle","DialogContent","DialogActions","self","Worker","VizContext","NebulaContext","Chart","onLoad","nebbie","el","expandable","minHeight","exporting","setExporting","localViz","setLocalViz","currentThemeName","activeViz","setActiveViz","setExpandedObject","expandedObject","isExpanded","vizRef","dialogOpen","setDialogOpen","closeDialog","snapIt","doExport","containerSize","snapshot","activeStyle","Toolbar","PropsDialog","Stage","Cell","Collection","types","objects","setObjects","current","languages","interactions","getInteractions","arr","Visualize","waiting","useOpenApp","setApp","setWaiting","handleOpenApp","resultApp","openAppSession","localHost","setSupernova","setCurrentThemeName","currentLanguage","setCurrentLanguage","currentMuiThemeName","setCurrentMuiThemeName","currentInteractions","setCurrentInteractions","objectListMode","setObjectListMode","currentSelectionsRef","currentId","setCurrentId","themeChooserAnchorEl","setThemeChooserAnchorEl","languageChooserAnchorEl","setLanguageChooserAnchorEl","initialized","setInit","setNebbie","customThemes","context","setContext","vizContext","update","mo","ws","embed","getHostConfig","secure","raw","String","unload","initModelStore","createKeyStore","useRpcRequestModelStore","rpcRequestModelStore","modelInitializedStore","modelStoreMiddleware","subscribe","destroy","selectionStore","initSelectionStore","useAppSelectionsStore","appSelectionsStore","useAppModalStore","appModalStore","useModalObjectStore","modalObjectStore","Home","newValue","listMode","ToggleButtonGroup","ToggleButton","ColorLens","Menu","WbSunny","Brightness3","Language","SPACING","ReactDOM","BrowserRouter","Routes","Route","HubLayout","SelectEngine","AppList","OAuthRedirectLinkError","Root","Function","clearTimeout","Symbol","r"],"mappings":"uBACI,EADA,ECAA,ECAA,ECKM,EAsDN,EA6BA,E,inHCxFW,eAAeA,EAAaC,CAAI,EAC7C,GAAI,CAEF,IAAMC,EAAQC,AADF,OAAMC,MAAM,CAAC,EAAEH,EAAK,cAAc,CAAC,CAAE,CAAE,YAAa,SAAU,EAAC,EACzD,OAAO,CAAC,GAAG,CAAC,mBAC9B,GAAIC,EACF,OAAOA,CAGX,CAAE,MAAOG,EAAK,CACZC,QAAQ,GAAG,CAAC,6BAA8BD,EAC5C,CACA,MAAO,EACT,CCiBA,IAAME,EAAW,mCACXC,EAAW,oBAIXC,EAAa,sDA6CbC,EAAoB,IACxBN,MAAM,SACH,IAAI,CAAC,AAACO,GAAaA,EAAS,IAAI,IAChC,IAAI,CAAC,MAAOC,IACX,IA3EEC,EA2EEC,EAAOF,EACLG,GA5EJF,EAAO,CAAC,EACdG,OAAO,QAAQ,CAAC,MAAM,CACnB,SAAS,CAAC,GACV,KAAK,CAAC,KACN,OAAO,CAAC,AAACC,IACR,IAAMC,EAAMD,EAAK,OAAO,CAAC,KACnBE,EAAOF,EAAK,MAAM,CAAC,EAAGC,GACxBE,EAAQC,mBAAmBJ,EAAK,SAAS,CAACC,EAAM,GAChDC,AAAS,UAATA,GACFC,CAAAA,EAAQA,EAAM,KAAK,CAAC,IAAG,EAEzBP,CAAI,CAACM,EAAK,CAAGC,CACf,GACKP,GAuFH,GAvBIE,EAAO,UAAU,CACnBD,EAAO,CACL,GAAGA,CAAI,CAIP,GAAGQ,AAvDU,CAACC,IACtB,IAQIC,EAGAC,EAXEC,EAAQnB,EAAS,IAAI,CAACgB,GAC5B,GAAI,CAACG,EACH,MAAO,CACL,UAAWH,EACX,QAAS,EACX,EAIF,IAAMI,EAAaJ,EAAI,IAAI,GACvBK,EAAYD,EAGVE,EAAWrB,EAAS,IAAI,CAACmB,GAE3BE,IACF,EAAGL,EAAM,CAAGK,EACZD,EAAYD,EAAW,SAAS,CAAC,EAAGE,EAAS,KAAK,EAClDJ,EAASE,GAGX,IAAMG,EAAcrB,EAAW,IAAI,CAACmB,UAEpC,AAAKE,EAME,CACL,OAAQ,CACN,OAAQJ,AAAa,QAAbA,CAAK,CAAC,EAAE,CAChB,KAAMA,CAAK,CAAC,EAAE,CACd,KAAMA,CAAK,CAAC,EAAE,EAAIK,OAClB,OAAQD,CAAW,CAAC,EAAE,EAAIC,OAC1BP,MAAAA,CACF,EACAI,UAAAA,EACAH,OAAAA,CACF,EAfS,CACL,UAAWF,EACX,QAAS,EACX,CAaJ,GAc4BR,EAAO,UAAU,CAAC,AACtC,EACSA,EAAO,GAAG,EACnBD,CAAAA,EAAO,CACL,GAAGA,CAAI,CACP,OAAQ,CACN,GAAGA,EAAK,MAAM,CACd,MAAOC,EAAO,GAAG,AACnB,CACF,GAEEA,CAAM,CAAC,0BAA0B,EACnCD,CAAAA,EAAK,gBAAgB,CAAGC,CAAM,CAAC,0BAA0B,AAAD,EAEtDA,CAAM,CAAC,iBAAiB,EAC1BD,CAAAA,EAAK,QAAQ,CAAGC,CAAM,CAAC,iBAAiB,AAAD,EAErCD,EAAK,OAAO,CACd,OAAOA,EAET,IAAMkB,EAAW,CAAC,EAAElB,EAAK,MAAM,CAAC,MAAM,CAAG,QAAU,OAAO,GAAG,EAAEA,EAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CACjF,MAAO,CACL,GAAGA,CAAI,CACPkB,SAAAA,CACF,CACF,GAEEC,EAAgB,AAAC,I,GAAA,CAAEC,iBAAAA,CAAgB,CAAEC,SAAAA,CAAQ,CAAElC,KAAAA,CAAI,CAAE,GACrDiC,EACFE,EAAAA,EAAAA,CAAAA,oBAAyB,CAAC,CAAE,SAAU,SAAUF,iBAAAA,EAAkBjC,KAAAA,CAAK,GAC9DkC,GACTC,EAAAA,EAAAA,CAAAA,oBAAyB,CAAC,CACxB,SAAU,SACVD,SAAAA,EACAlC,KAAAA,EACA,YAAa,CAAC,EAAEe,OAAO,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAC5D,mBAAoB,SACtB,EAEJ,EAEMqB,EAAe,UACnB,GAAI,CAEF,GAAM,CAAEC,KAAAA,EAAO,EAAE,CAAE,CAAG3B,AADL,OAAM4B,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAS,CAAE,aAAc,MAAO,MAAO,GAAI,KAAM,YAAa,EAAC,EACvD,IAAI,CACnC,OAAOD,EAAK,GAAG,CAAC,AAACE,GAAO,EAAE,OAAQA,EAAE,UAAU,CAAE,OAAQA,EAAE,IAAI,AAAC,GACjE,CAAE,MAAOC,EAAO,CACd,MAAM,AAAIC,MAAM,2BAA4B,CAAE,MAAOD,CAAM,EAC7D,CACF,ECzIaE,EAAU,KACrB,GAAM,CAAC7B,EAAM8B,EAAQ,CAAGC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IAQxB,MANAC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACRpC,IAAoB,IAAI,CAAC,AAACqC,IACxBH,EAAQG,EACV,EACF,EAAG,EAAE,EAEE,CAAEjC,KAAAA,EAAM8B,QAAAA,CAAQ,CACzB,ECmDaI,EAA4B,AAAC,I,GAAA,CAAEC,OAAAA,CAAM,CAAEC,SAAAA,CAAQ,CAAEC,UAAAA,CAAS,CAAE,EACnEF,CAAAA,EAAO,OAAO,EAChBA,EAAO,OAAO,CAAC,EAAE,CAAC,2CAA4C,AAACG,IACzDA,EAAE,gBAAgB,GACpBF,EAAS,CACP,QAAS,0BACT,MAAO,CACL,CAAC,2EAA2E,EAAElC,OAAO,QAAQ,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAC/L,AACH,GACAmC,EAAU,MAEd,EAEJ,ECpDA,MA1BkB,AAACE,IACjB,IAAMC,EAAStC,OAAO,YAAY,CAAC,OAAO,CAAC,cACrCuC,EAASD,EAASE,KAAK,KAAK,CAACF,GAAU,CAAC,EACxCG,EAAQJ,GAAK,GAEbK,EAAI,CACR,KAAKvC,CAAI,CAAEC,CAAK,EACdmC,CAAM,CAACpC,EAAK,CAAGC,EACfJ,OAAO,YAAY,CAAC,OAAO,CAAC,aAAcwC,KAAK,SAAS,CAACD,GAC3D,EACA,IAAIpC,GACKoC,CAAM,CAACpC,EAAK,CAErB,MAAMA,CAAI,CAAEwC,CAAC,EACX,GAAIA,EAAG,YACLD,EAAE,IAAI,CAAC,CAAC,MAAM,EAAED,EAAM,CAAC,EAAEtC,EAAK,CAAC,CAAEqC,KAAK,SAAS,CAACG,IAGlD,IAAMC,EAAIF,EAAE,GAAG,CAAC,CAAC,MAAM,EAAED,EAAM,CAAC,EAAEtC,EAAK,CAAC,EACxC,OAAOyC,EAAIJ,KAAK,KAAK,CAACI,GAAK,CAAC,CAC9B,CACF,EAEA,OAAOF,CACT,ECfO,IAAMG,EAAcC,AAAAA,GAAAA,EAAAA,aAAAA,AAAAA,EAJY,CACrC,KAAM,CAAC,CACT,GAIaC,EAAiB,KAC5B,IAAMC,EAAMC,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EAAWJ,GACvB,GAAI,CAACG,EAAK,MAAM,AAAItB,MAAM,4BAC1B,OAAOsB,CACT,EAEaE,EAAsB,AAAC,I,GAAA,CAAEC,SAAAA,CAAQ,CAAE,GACxCC,EAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,IACXC,EAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,IACXC,EAAUC,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAQ,IAAMC,EAAU,CAAC,GAAI,EAAE,EACzC,CAAE5D,KAAAA,CAAI,CAAE8B,QAAAA,CAAO,CAAE,CAAGD,IACpBgC,EAAwBC,ACpBI,CAAC,I,GAAA,CAAEJ,QAAAA,CAAO,CAAE,GACxC,CAACK,EAAmBC,EAAqB,CAAGjC,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS2B,EAAQ,GAAG,CAAC,gBAAkB,EAAE,EAiC3F,MAAO,CAAEK,kBAAAA,EAAmBE,uBA/BG,AAACC,IAC9B,IAAM9D,EAAM2D,EAAkB,OAAO,CAACG,GACtC,GAAIA,AAAO,KAAPA,EAAW,CACb,IAAMC,EAAQJ,EAAkB,KAAK,GACrCI,EAAM,MAAM,CAAC/D,EAAK,GAClBsD,EAAQ,IAAI,CAAC,cAAeS,GAC5BH,EAAqBG,EACvB,CACF,EAuBoDC,qBArBvB,AAAC,I,GAAA,CAAEpE,KAAAA,CAAI,CAAE,GAChCS,EAAM,GACJ4D,EAAWrE,EAAK,MAAM,CAAC,MAAM,CAAG,MAAQ,KACxCb,EAAOa,AAAqB,cAArBA,EAAK,MAAM,CAAC,IAAI,CAAmB,CAAC,EAAEA,EAAK,MAAM,CAAC,IAAI,CAAC,CAAC,EAAEA,EAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAGA,EAAK,MAAM,CAAC,IAAI,CACtGsE,EAAStE,EAAK,MAAM,CAAC,MAAM,CAAG,CAAC,CAAC,EAAEA,EAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAG,GACzDc,EAAY,CAAC,EAAEuD,EAAS,GAAG,EAAElF,EAAK,EAAEmF,EAAO,CAAC,CASlD,GANE7D,EADET,EAAK,QAAQ,CACT,CAAC,EAAEc,EAAU,iBAAiB,EAAEd,EAAK,QAAQ,CAAC,CAAC,CAC5CA,EAAK,gBAAgB,CACxB,CAAC,EAAEc,EAAU,0BAA0B,EAAEd,EAAK,gBAAgB,CAAC,CAAC,CAEhEc,EAEJiD,AAAmC,KAAnCA,EAAkB,OAAO,CAACtD,IAAeA,AAAe,IAAfA,EAAI,MAAM,CAAQ,CAC7D,IAAM8D,EAAW,IAAIR,EAAmBtD,EAAI,CAC5CiD,EAAQ,IAAI,CAAC,cAAea,GAC5BP,EAAqBO,EACvB,CACF,CAEyE,CAC3E,GDfqD,CAAEb,QAAAA,CAAQ,GACvDc,EAAiBC,AFnBI,CAAC,I,GAAA,CAAEzE,KAAAA,CAAI,CAAE6D,sBAAAA,CAAqB,CAAE,GACrDP,EAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,IACX,CAACmB,EAAMrC,EAAU,CAAGN,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IACpB,CAAC4C,EAAgBC,EAAkB,CAAG7C,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IAC/C,CAACJ,EAAOS,EAAS,CAAGL,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IACpB,CAAC8C,EAAYC,EAAc,CAAG/C,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,GAmB7C,MAjBAC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,GAAIsB,AAAsB,MAAtBA,EAAS,QAAQ,EAAatD,GAASA,EAAK,SAAS,EAEzD,GAAIA,EAAK,OAAO,CAAE,YAChBoC,EAAS,CACP,QAAS,oBACT,MAAO,CAAC,kCAAkC,AAC5C,GAIF2C,AFwHY,WACd,GAAI,CACF,GAAM,CACJ1D,SAAAA,CAAQ,CACRD,iBAAAA,CAAgB,CAChB,OAAQ4D,CAAY,CACpB,OAAQ,CAAE7F,KAAAA,CAAI,CAAE,CACjB,CAAG,MAAMS,IAEV,GAAIwB,EAEF,OADAD,EAAc,CAAEC,iBAAAA,EAAkBjC,KAAAA,CAAK,GAChC,CACL,WAAYoC,EACZ,iBAAkB,SAAa,EAAC,EAClC,EAGF,GAAIF,EAEF,OADAF,EAAc,CAAEE,SAAAA,EAAUlC,KAAAA,CAAK,GACxB,CACL,WAAYoC,EACZ,iBAAkB,SAAa,EAAC,EAClC,EAGF,IAAM0D,EAAY,MAAM/F,EACtB,CAAC,QAAQ,EAAE8F,EAAa,IAAI,CAAC,EAAEA,EAAa,MAAM,CAAG,CAAC,CAAC,EAAEA,EAAa,MAAM,CAAC,CAAC,CAAG,GAAG,CAAC,EAEjFE,EAASF,AAAwB,KAAxBA,EAAa,MAAM,CAAa,MAAQ,KACjDG,EAAOH,EAAa,IAAI,CAAG,CAAC,CAAC,EAAEA,EAAa,IAAI,CAAC,CAAC,CAAG,GACrDV,EAASU,EAAa,MAAM,CAAG,CAAC,CAAC,EAAEA,EAAa,MAAM,CAAC,CAAC,CAAG,GAC3DvE,EAAM,CAAC,EAAEyE,EAAO,GAAG,EAAEF,EAAa,IAAI,CAAC,EAAEG,EAAK,EAAEb,EAAO,iBAAiB,EAAEW,EAAU,CAAC,CAE3F,OAAOG,IAAAA,MAAa,CAAC,CAAE,OAAQC,EAAW5E,IAAAA,CAAI,GAAG,IAAI,EACvD,CAAE,MAAOkB,EAAO,CACd,MAAM,AAAIC,MAAM,mCAAoC,CAAE,MAAOD,CAAM,EACrE,CACF,KE5JO,IAAI,CAAC,AAACQ,GAAWmD,AAQe,OAAO,I,GAAA,CAAEnD,OAAAA,CAAM,CAAEE,UAAAA,CAAS,CAAEuC,kBAAAA,CAAiB,CAAExC,SAAAA,CAAQ,CAAE,GAG9F,GAFAF,EAA0B,CAAEC,OAAAA,EAAQC,SAAAA,EAAUC,UAAAA,CAAU,GACxDA,EAAUF,GACLA,EAAO,UAAU,CACtB,GAAI,CACF,IAAMoD,EAAS,MAAMpD,EAAO,gBAAgB,EACxCoD,CAAAA,GAAUA,EAAO,SAAS,EAAIA,EAAO,SAAS,CAAC,UAAU,EAAEX,EAAkB,GACnF,CAAE,MAAOjD,EAAO,CACd,MAAM,AAAIC,MAAM,8BAClB,CACF,GAlBgD,CAAEO,OAAAA,EAAQE,UAAAA,EAAWD,SAAAA,EAAUwC,kBAAAA,CAAkB,IAC1F,IAAI,CAAC,IAAMf,EAAsB,oBAAoB,CAAC,CAAE7D,KAAAA,CAAK,IAC7D,KAAK,CAAC,AAACT,GAAQiG,AAkBiB,CAAC,I,GAAA,CAAE7D,MAAAA,CAAK,CAAE3B,KAAAA,CAAI,CAAEoC,SAAAA,CAAQ,CAAE,GACzDqD,EAAO,CACX,QAAS,mDACT,MAAO,EAAE,AACX,EACA,GAAI9D,EAAM,MAAM,YAAY+D,UAAW,CACrCD,EAAK,OAAO,CAAG,CAAC,qBAAqB,EAAEzF,EAAK,SAAS,CAAC,CAAC,CACnD,2BAA2B,IAAI,CAACA,EAAK,SAAS,GAAK,CAACA,EAAK,gBAAgB,GAC3EyF,EAAK,KAAK,CAAC,IAAI,CAAC,kGAChBA,EAAK,KAAK,CAAC,IAAI,CACb,qGAEFA,EAAK,KAAK,CAAC,IAAI,CAAC,mGAElBrD,EAASqD,GACT,MACF,CACArD,EAASqD,GACTjG,QAAQ,KAAK,CAACmC,EAChB,GArC8C,CAAE,MAAOpC,EAAKS,KAAAA,EAAMoC,SAAAA,CAAS,IACzE,EAAG,CAACpC,EAAMsD,EAAS,QAAQ,CAAC,EAErB,CAAEoB,KAAAA,EAAMrC,UAAAA,EAAWsC,eAAAA,EAAgBC,kBAAAA,EAAmBjD,MAAAA,EAAOS,SAAAA,EAAUyC,WAAAA,EAAYC,cAAAA,CAAc,CAC1G,GENuC,CAAE9E,KAAAA,EAAM6D,sBAAAA,CAAsB,GAEnE7B,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACJwC,EAAe,KAAK,EAAEhB,EAAS,KAET,MAAtBF,EAAS,QAAQ,GACnBkB,EAAe,aAAa,CAAC,GAC7BA,EAAe,SAAS,GACxBA,EAAe,iBAAiB,CAAC,IAErC,EAAG,CAAClB,EAAS,QAAQ,CAAEkB,EAAe,KAAK,CAAC,EAE5C,IAAMmB,EAAmBhC,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EACvB,IAAO,EAAE3D,KAAAA,EAAM8B,QAAAA,EAAS,GAAG0C,CAAc,CAAEd,QAAAA,EAASG,sBAAAA,CAAsB,GAC1E,CAAC7D,EAAM8B,EAAS0C,EAAgBd,EAASG,EAAsB,EAGjE,MAAO,UAACd,EAAY,QAAQ,EAAC,MAAO4C,E,SAAmBtC,C,EACzD,E,wEEzCA,EAAe,CACb,WAAY,CACV,SAAU,GACV,aAAc,GACd,gBAAiB,IACjB,kBAAmB,IACnB,iBAAkB,IAClB,WAAY,+EAGZ,OAAQ,CACN,cAAe,UACf,WAAY,GACd,CACF,EACA,MAAO,CACL,aAAc,CAChB,EACA,QAAS,CACP,OACA,mCACA,mCACA,mCACA,mCACA,mCACA,mCAEA,mCACA,mCACA,mCACA,mCACA,mCACA,mCAEA,oCACA,oCACA,oCACA,oCACA,oCACA,oCAEA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACD,AACH,ECpBA,EA5Be,CACb,MAAO,UACP,UAAW,UACX,IAAK,UACL,QAAS,UACT,KAAM,UACN,SAAU,UACV,SAAU,UAGV,QAAS,UACT,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UAER,OAAQ,UAER,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,OAAQ,UACR,MAAO,UACP,MAAO,SACT,ECxBA,IAAMuC,EAAQ,CACZ,KAAM,QACN,QAAS,CACP,QAAS,CACP,KAAMC,EAAAA,MAAa,CACnB,aAAcA,EAAAA,OAAc,AAC9B,EACA,UAAW,CACT,MAAO,UACP,KAAM,UACN,KAAM,SACR,EACA,KAAM,CACJ,QAASA,EAAAA,MAAa,CACtB,UAAW,sBACX,SAAU,qBACV,MAAOA,EAAAA,OAAc,CACrB,KAAMA,EAAAA,KAAY,AACpB,EACA,OAAQ,CACN,OAAQ,UACR,MAAO,sBACP,aAAc,IACd,SAAU,sBACV,SAAU,qBACV,mBAAoB,qBACtB,EACA,WAAY,CACV,MAAOA,EAAAA,OAAc,CACrB,QAASA,EAAAA,OAAc,CAEvB,SAAUA,EAAAA,OAAc,CACxB,QAASA,EAAAA,MAAa,CACtB,OAAQA,EAAAA,MAAa,CACrB,QAASA,EAAAA,MAAa,AACxB,EAEA,OAAQ,CACN,YAAa,qBACb,eAAgBA,EAAAA,QAAe,CAC/B,YAAaA,EAAAA,IAAW,CACxB,aAAc,0BACd,gBAAiB,yBACjB,mBAAoBA,EAAAA,MAAa,CACjC,qBAAsBA,EAAAA,OAAc,AACtC,EACA,SAAU,CACR,KAAMA,EAAAA,KAAY,CAClB,YAAa,UACb,SAAU,UACV,iBAAkB,UAClB,SAAUA,EAAAA,OAAc,CACxB,qBAAsBA,EAAAA,OAAc,CACpC,iBAAkBA,EAAAA,OAAc,CAChC,wBAAyBA,EAAAA,MAAa,CACtC,qBAAsBA,EAAAA,MAAa,CACnC,6BAA8BA,EAAAA,OAAc,CAC5C,qBAAsBA,EAAAA,KAAY,AACpC,EACA,IAAK,CACH,OAAQ,2BACR,MAAO,sBACP,OAAQ,qBACR,SAAU,2BACV,OAAQ,sBACR,YAAa,qBACf,CACF,CACF,ECpEMC,EAAO,CACX,KAAM,OACN,QAAS,CACP,QAAS,CACP,KAAMD,EAAAA,MAAa,CACnB,aAAcA,EAAAA,OAAc,AAC9B,EACA,UAAW,CACT,MAAO,UACP,KAAM,UACN,KAAM,SACR,EACA,KAAM,CACJ,QAASA,EAAAA,OAAc,CACvB,UAAW,2BACX,SAAU,2BACV,MAAOA,EAAAA,OAAc,CACrB,KAAMA,EAAAA,KAAY,AACpB,EACA,OAAQ,CAEN,OAAQA,EAAAA,OAAc,CACtB,MAAO,4BACP,aAAc,IACd,SAAU,sBACV,SAAU,2BACV,mBAAoB,qBACtB,EACA,QAAS,kBACT,WAAY,CACV,QAAS,UACT,MAAO,UAEP,SAAUA,EAAAA,MAAa,CACvB,QAASA,EAAAA,MAAa,CACtB,OAAQA,EAAAA,MAAa,CACrB,QAASA,EAAAA,MAAa,AACxB,EAEA,OAAQ,CACN,YAAa,qBACb,eAAgBA,EAAAA,QAAe,CAC/B,YAAaA,EAAAA,IAAW,CACxB,aAAc,0BACd,gBAAiB,qBACjB,mBAAoBA,EAAAA,MAAa,CACjC,qBAAsBA,EAAAA,OAAc,AACtC,EACA,SAAU,CACR,KAAMA,EAAAA,KAAY,CAClB,YAAaA,EAAAA,MAAa,CAC1B,SAAUA,EAAAA,MAAa,CACvB,iBAAkBA,EAAAA,MAAa,CAC/B,SAAUA,EAAAA,MAAa,CACvB,qBAAsBA,EAAAA,OAAc,CACpC,iBAAkBA,EAAAA,OAAc,CAChC,wBAAyBA,EAAAA,OAAc,CACvC,qBAAsBA,EAAAA,OAAc,CACpC,6BAA8BA,EAAAA,OAAc,CAC5C,qBAAsBA,EAAAA,KAAY,AACpC,EACA,IAAK,CACH,OAAQ,4BACR,MAAO,4BACP,OAAQ,qBACR,SAAU,4BACV,OAAQ,sBACR,YAAa,qBACf,CACF,CACF,ECjEME,EAAQ,CAAC,EA4IA,SAASC,EAAOC,CAAU,EACvC,IAAIC,EF5ESN,EE6ETvF,EAAO,EACe,WAAtB,OAAO4F,IACT5F,EAAO4F,EACHA,AAAe,UAAfA,GAA0BA,AAAe,SAAfA,EAC5BzG,QAAQ,IAAI,CAAC,CAAC,gBAAgB,EAAEyG,EAAW,CAAC,CAAC,EACpCA,AAAe,SAAfA,GACTC,CAAAA,EDjFSJ,CCiFHA,GAIV,IAAMK,EAAMzD,KAAK,SAAS,CAACwD,GAC3B,GAAIH,CAAK,CAACI,EAAI,CACZ,OAAOJ,CAAK,CAACI,EAAI,CAGnB,IAAMC,EAAe,CACnB,QAAS,CACP,KAAMF,EAAI,IAAI,CACd,GAAGG,EAAK,OAAO,CACf,GAAGH,EAAI,OAAO,AAChB,EACA,WAAY,CACV,GAAGG,EAAK,UAAU,AACpB,EACA,QAASA,EAAK,OAAO,CACrB,MAAO,CACL,GAAGA,EAAK,KAAK,AACf,CACF,EAEMC,EAAe,CACnB,GAAGF,CAAY,CACf,WA5KmC,CACrC,YAAa,CACX,aAAc,CACZ,MAAO,WACT,CACF,EACA,SAAU,CACR,aAAc,CACZ,MAAO,WACT,CACF,EACA,QAAS,CACP,aAAc,CACZ,eAAgB,WAClB,CACF,EACA,cAAe,CACb,eAAgB,CACd,KAAM,CACJ,MAAOG,AAyJoBH,EAzJd,OAAO,CAAC,IAAI,CAAC,OAAO,AACnC,CACF,CACF,EACA,QAAS,CACP,eAAgB,CACd,SAAU,CACR,CACE,MAAO,CAAE,WAAY,QAAS,EAC9B,MAAO,CACL,cAAe,QACjB,CACF,EACD,AACH,CACF,EACA,cAAe,CACb,aAAc,CACZ,cAAe,GACf,mBAAoB,GACpB,YAAa,EACf,EACA,eAAgB,CACd,KAAM,CACJ,aAAc,EACd,OAAQ,wBAER,gBAAiB,CACf,YAAaG,AA6HYH,EA7HN,OAAO,CAAC,MAAM,CAAC,WAAW,CAC7C,UAAW,CAAC,UAAU,EAAEG,AA4HCH,EA5HK,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,AAC7D,CACF,CACF,CACF,EACA,cAAe,CACb,eAAgB,CACd,KAAM,CACJ,QAAS,EACT,aAAc,EACd,OAAQ,wBACR,UAAW,CACT,gBAAiBG,AAgHQH,EAhHF,OAAO,CAAC,GAAG,CAAC,KAAK,AAC1C,EACA,qBAAsB,CACpB,YAAaG,AA6GYH,EA7GN,OAAO,CAAC,MAAM,CAAC,WAAW,CAC7C,UAAW,CAAC,UAAU,EAAEG,AA4GCH,EA5GK,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,AAC7D,EACA,eAAgB,CACd,YAAa,cACb,UAAW,OACX,gBAAiBG,AAuGQH,EAvGF,OAAO,CAAC,GAAG,CAAC,MAAM,AAC3C,EACA,4CAA6C,CAC3C,YAAa,cACb,UAAW,MACb,CACF,CACF,CACF,EACA,iBAAkB,CAChB,eAAgB,CACd,KAAM,CACJ,gBAAiBG,AA2FUH,EA3FJ,OAAO,CAAC,MAAM,CAAC,eAAe,CACrD,2CAA4C,CAC1C,YAAaG,AAyFYH,EAzFN,OAAO,CAAC,GAAG,CAAC,MAAM,AACvC,EACA,iDAAkD,CAChD,YAAaG,AAsFYH,EAtFN,OAAO,CAAC,MAAM,CAAC,WAAW,CAC7C,YAAa,CACf,CACF,CACF,CACF,EACA,UAAW,CACT,eAAgB,CACd,SAAU,CACR,QAAS,WACT,CAAC,CAAC,EAAE,EAAEI,EAAAA,CAAAA,CAAAA,YAA0B,CAAC,CAAC,CAAC,CAAE,CACnC,YAAaD,AA2EYH,EA3EN,OAAO,CAAC,MAAM,CAAC,WAAW,CAC7C,UAAW,CAAC,UAAU,EAAEG,AA0ECH,EA1EK,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,AAC7D,CACF,EACA,UAAW,CACT,MAAOG,AAsEoBH,EAtEd,OAAO,CAAC,IAAI,CAAC,OAAO,CACjC,QAAS,WACT,OAAQ,CAAC,UAAU,EAAEG,AAoEMH,EApEA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAC/C,gBAAiBG,AAmEUH,EAnEJ,OAAO,CAAC,GAAG,CAAC,MAAM,CACzC,UAAW,OACX,CAAC,CAAC,EAAE,EAAEI,EAAAA,CAAAA,CAAAA,YAA0B,CAAC,CAAC,CAAC,CAAE,CACnC,YAAaD,AAgEYH,EAhEN,OAAO,CAAC,MAAM,CAAC,WAAW,CAC7C,UAAW,CAAC,UAAU,EAAEG,AA+DCH,EA/DK,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,AAC7D,EACA,UAAW,CACT,gBAAiBG,AA4DQH,EA5DF,OAAO,CAAC,GAAG,CAAC,KAAK,CACxC,YAAaG,AA2DYH,EA3DN,OAAO,CAAC,GAAG,CAAC,WAAW,CAC1C,UAAW,OACX,CAAC,CAAC,EAAE,EAAEI,EAAAA,CAAAA,CAAAA,QAAsB,CAAC,CAAC,CAAC,CAAE,CAC/B,gBAAiBD,AAwDMH,EAxDA,OAAO,CAAC,GAAG,CAAC,QAAQ,AAC7C,CACF,EACA,eAAgB,CACd,UAAW,OACX,gBAAiBG,AAmDQH,EAnDF,OAAO,CAAC,GAAG,CAAC,MAAM,AAC3C,EACA,CAAC,CAAC,EAAE,EAAEI,EAAAA,CAAAA,CAAAA,QAAsB,CAAC,CAAC,CAAC,CAAE,CAC/B,gBAAiBD,AAgDQH,EAhDF,OAAO,CAAC,GAAG,CAAC,QAAQ,AAC7C,CACF,CACF,CACF,EACA,oBAAqB,CACnB,eAAgB,CACd,QAAS,CACP,OAAQ,OACV,CACF,CACF,CACF,CAqCE,EAMA,OAJAL,CAAK,CAACI,EAAI,CAAGM,AAAAA,GAAAA,EAAAA,CAAAA,AAAAA,EAAYH,GAEzBP,CAAK,CAACI,EAAI,CAAC,IAAI,CAAG9F,EAEX0F,CAAK,CAACI,EAAI,AACnB,CCzLO,IAAMO,EAAe,AAAC,I,GAAA,CAAEC,UAAAA,CAAS,CAAEtD,SAAAA,CAAQ,CAAE,GAC5CkD,EAAQ5C,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAQ,IAAM8C,EAAYE,GAAY,CAACA,EAAU,EAE/D,MACE,UAACC,EAAAA,CAAoBA,CAAAA,CAAC,YAAW,G,SAC/B,UAACC,EAAAA,CAAaA,CAAAA,CAAC,MAAON,E,SACpB,UAACO,EAAAA,CAASA,CAAAA,CAAC,SAAS,K,SAAMzD,C,MAIlC,E,4CCTO,IAAM0D,EAAiBC,AAAAA,GAAAA,EAAAA,CAAAA,AAAAA,EAAOC,EAAAA,CAAGA,EAAE,AAAC,I,GAAA,CAAEV,MAAAA,CAAK,CAAEW,UAAAA,EAAY,CAAC,CAAE,G,MAAM,CACvE,SAAU,WACV,QAASX,EAAM,OAAO,CAAC,EAAG,GAC1B,gBAAiB,QACjB,aAAcA,EAAM,OAAO,CAAC,GAC5B,UAAWA,EAAM,OAAO,CAACW,EAC3B,C,GAEaC,EAAiBH,AAAAA,GAAAA,EAAAA,CAAAA,AAAAA,EAAOI,EAAAA,CAAOA,EAAE,AAAC,I,GAAA,CAAEb,MAAAA,CAAK,CAAE,G,MAAM,CAC5D,gBAAiB,cACjB,QAASA,EAAM,OAAO,CAAC,EACzB,C,GAEac,EAAkBL,AAAAA,GAAAA,EAAAA,CAAAA,AAAAA,EAAOM,EAAAA,CAASA,CAAE,CAC/C,kBAAmB,AAACC,GAASA,AAAS,oBAATA,CAC/B,GAAG,AAAC,I,GAAA,CAAEC,gBAAAA,EAAkB,EAAK,CAAE,G,MAAM,CACnC,OAAQA,EAAkB,UAAY,SACxC,C,GCtBaC,EAAQ,CAAC,oBAAqB,aAAc,UAAU,CCkCnE,MAzBwB,KACtB,IAAMjE,EAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,IACX,CAAEoB,WAAAA,CAAU,CAAEH,KAAAA,CAAI,CAAE/C,MAAAA,CAAK,CAAES,SAAAA,CAAQ,CAAE,CAAGa,IAExCyE,EAAqB,KACnBhD,CAAAA,GAAQ/C,CAAI,IAClBS,IACAoB,EAAS,KACX,EAEA,MACE,UAACkD,EAAYA,CAAC,UAAU,O,SACtB,UAACS,EAAcA,CAAC,iBAAgB,GAAC,WAAYtC,E,SAC1C4C,EAAAA,GAAS,CAAC,CAACE,EAAO1F,IACjB,UAAC2F,EAAAA,CAAIA,CAAAA,C,SACH,UAACP,EAAeA,CAAC,QAASK,EAAoB,gBAAiBhD,GAAQ/C,EAAO,MAAO,CAAC,CAACA,GAAS,CAACM,E,SAC9F0F,C,IAFMA,G,IASrB,ECpBA,GAPkB,IAChB,WAACjB,EAAYA,C,UACX,UAACmB,EAAeA,CAAAA,GAChB,UAACC,EAAAA,EAAMA,CAAAA,CAAAA,G,oECoFX,GAvFuB,AAAC,I,GAAA,CAAEC,SAAAA,CAAQ,CAAE,G,MAClC,WAACC,GAAAA,CAAQA,CAAAA,CAAC,GAAID,E,UACZ,UAACE,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,KAAK,aAAY,GAAC,MAAO,CAAE,UAAW,MAAO,E,SAAG,e,GAGpE,UAACA,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,QAAQ,UAAS,G,SAAC,oV,GAOtC,UAACA,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,YAAY,aAAY,G,SAAC,qB,GAG7C,WAACA,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,QAAQ,UAAS,G,UACnC,UAAC,K,SAAE,4B,GAA8B,4DAEjC,UAAC,SAAK,MACH,UAAC,Q,SAAK,yB,GACT,UAAC,SAAK,MACH,UAAC,Q,SAAK,gB,GACT,UAAC,SACD,UAAC,SACD,UAAC,K,SAAE,qB,GACH,UAAC,SACD,UAAC,Q,SAAK,oF,GACN,UAAC,SAAK,YACG,UAAC,Q,SAAK,yD,GACf,UAAC,SACD,UAAC,SAAK,uBACe,IACrB,UAACC,GAAAA,CAAIA,CAAAA,CACH,MAAM,YACN,UAAU,SACV,KAAK,sH,SACN,2B,GAEM,I,GAGT,WAACD,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,QAAQ,UAAS,G,UACnC,UAAC,K,SAAE,6B,GACH,UAAC,SACD,UAAC,Q,SAAK,kE,GACN,UAAC,SAAK,YACG,UAAC,Q,SAAK,gD,GACf,UAAC,SAAK,sBACa,UAAC,Q,SAAK,2C,GACzB,UAAC,SAAK,OACF,UAAC,Q,SAAK,yB,GAA8B,IAAC,UAAC,K,SAAE,I,GAAM,IAAC,UAAC,Q,SAAK,gB,GAAqB,sGAE9E,UAAC,SACD,UAAC,S,GAEH,UAACA,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,YAAY,aAAY,G,SAAC,uB,GAG7C,WAACA,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,QAAQ,UAAS,G,UAAC,yBACd,UAAC,Q,SAAK,+C,GAC5B,UAAC,SAAK,YACG,UAAC,Q,SAAK,wB,GACf,UAAC,SACD,UAAC,SAAK,0EAEN,UAAC,Q,SAAM/H,OAAO,QAAQ,CAAC,IAAI,GAAQ,6GACN,UAAC,K,SAAE,sB,GAAwB,YAAS,UAAC,K,SAAE,oB,GAAsB,OAAI,UAAC,K,SAAE,M,GAAQ,IACzG,UAAC,SAAK,qFAEN,WAAC,M,UACC,WAAC,M,UAAG,gCAC2B,UAAC,Q,SAAMA,OAAO,QAAQ,CAAC,IAAI,G,GAE1D,UAAC,M,SAAG,wC,GACJ,UAAC,M,SAAG,gD,MACD,oE,GAGP,UAAC+H,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,YAAY,aAAY,G,SAAC,oB,GAG7C,WAACA,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,QAAQ,UAAS,G,UAAC,yBACd,UAAC,Q,SAAK,qB,UC1EnB,SAASE,GAAQC,CAAwD,E,GAAxDA,CAAEC,KAAAA,CAAI,CAAEC,MAAAA,EAAQ,CAAC,CAAC,CAAEC,QAAAA,EAAU,WAAW,CAAEC,OAAAA,EAAS,EAAE,CAAE,CAAxDJ,EACxBxF,EAAI,CACR,SAXF,AAAIyF,AAAS,UAWWA,EAVf,OAELA,AAAS,UAQWA,EAPf,OAEF,OAML,QAAS,eACT,UAAW,SACX,WAAY,IACZ,UAAW,SACX,cAAe,OACf,cAAe,UACf,cAAe,qBACf,oBAAqB,cACrB,oBAAqB,YACrB,GAAGC,CAAK,AACV,EACA,MACE,UAAC,KAAE,MAAO1F,E,SACR,UAAC,OAAI,MAAM,6BAA6B,MAAM,MAAM,OAAO,MAAM,QAAS2F,EAAS,KAAK,e,SACrFC,EAAO,GAAG,CAAC,CAAC,EAAuBC,K,GAAvB,CAAE,KAAMC,CAAI,CAAEC,MAAAA,CAAK,CAAE,G,MAEhC,UAACD,EAAAA,CAAe,GAAGC,CAAK,EAAbF,E,MAKrB,CCxBA,OAAgB,AAAAG,GAAUT,GAXC,CACzB,GAUuCS,CAAK,CAT5C,OAAQ,CACN,CACE,KAAM,OACN,MAAO,CACL,EAAG,s2BACL,CACF,EACD,AACH,G,iCCZO,IAAMC,GAAmB,CAC9B,CAAE,GAAI,EAAG,MAAO,eAAgB,WAAY,CAAC,uBAAuB,AAAC,EACrE,CAAE,GAAI,EAAG,MAAO,qBAAsB,WAAY,CAAC,uBAAwB,qBAAqB,AAAC,EACjG,CAAE,GAAI,EAAG,MAAO,YAAa,WAAY,CAAC,uBAAwB,YAAY,AAAC,EAChF,C,gBCGapC,EAAY,SCsC1B,OAtC0B,KACxB,IAAMjD,EAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,IACX,CAAEzD,KAAAA,CAAI,CAAEoC,SAAAA,CAAQ,CAAEyB,sBAAAA,CAAqB,CAAE,CAAGZ,WAOlD,AAAKY,EAAsB,iBAAiB,CAAC,MAAM,CAGjD,WAACoD,EAAAA,CAAGA,CAAAA,CAAC,GAAI,E,UACP,UAACgB,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,K,SAAK,sB,GACzB,UAACa,GAAAA,CAAIA,CAAAA,C,SACFjF,EAAsB,iBAAiB,CAAC,GAAG,CAAC,AAACkF,GAC5C,WAACC,GAAAA,CAAcA,CAAAA,CAEb,UAAU,IACV,QAAS,KAdjB5G,IACAoB,EAAS,CAAC,qBAAqB,EAAEuF,AAaaA,EAbR,OAAO,CAAC,IAAK,KAAK,CAAC,GAcjD,SAAUE,AC3B0B,CAAC,I,GAAA,CAAEF,KAAAA,CAAI,CAAE/I,KAAAA,CAAI,CAAE,SAC7D,CAAI,CAACA,MAEAA,CAAAA,CAAAA,EAAK,kBAAkB,EAAIA,EAAK,0BAAyB,GAAM+I,EAAK,QAAQ,CAAC,YAAW,IACzF/I,EAAK,kBAAkB,EACrB+I,EAAK,QAAQ,CAAC,oBAGhB/I,EAAK,0BAA0B,GAC7B+I,EAAK,QAAQ,CAAC,4BAKtB,GDauD,CAAEA,KAAAA,EAAM/I,KAAAA,CAAK,G,UAExD,UAACkJ,GAAAA,CAAYA,CAAAA,CAAC,QAASH,C,GACvB,UAACI,GAAAA,CAAUA,CAAAA,CACT,QAAS,IAAMtF,EAAsB,sBAAsB,CAACkF,GAC5D,cAAY,YACZ,KAAK,QACL,KAAK,M,SAEL,UAACK,GAAMA,CAAAA,E,KAZJL,G,MAR6C,IA2B9D,E,4CExCe,SAASnH,GAAMwG,CAA6B,E,GAA7BA,CAAE,MAAO,CAAEiB,QAAAA,CAAO,CAAEC,MAAAA,CAAK,CAAE,CAAE,CAA7BlB,EAC5B,MACE,uB,UACE,UAACH,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,YAAY,MAAM,QAAQ,aAAY,GAAC,MAAO,CAAE,aAAc,CAAE,E,SACjFoB,C,GAEFC,EAAM,GAAG,CAAC,AAACC,GACV,UAACtB,GAAAA,CAAUA,CAAAA,CAAY,QAAQ,Q,SAC5BsB,C,EADcA,I,EAMzB,CCNe,SAASC,GAAYpB,CAA6C,E,GAA7CA,CAAEpI,KAAAA,CAAI,CAAEyJ,OAAAA,CAAM,CAAE9H,MAAAA,CAAK,CAAE+H,qBAAAA,CAAoB,CAAE,CAA7CtB,EAC5B5E,EAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,IACX,CAAErB,SAAAA,CAAQ,CAAE,CAAGa,IACf,CAAC0G,EAAQC,EAAU,CAAG7H,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,CAAC,GAkBtC,MACE,UAAC,QAAK,SAVe,AAAC8H,IACtBA,EAAI,cAAc,GAClBzH,IACA,IAAM3B,EAAM,IAAIqJ,IAAIH,CAAM,CAAC,uBAAuB,CAC9CA,CAAAA,CAAM,CAAC,qBAAqB,EAAElJ,EAAI,YAAY,CAAC,MAAM,CAAC,0BAA2BkJ,CAAM,CAAC,qBAAqB,EAC7GA,CAAM,CAAC,YAAY,EAAElJ,EAAI,YAAY,CAAC,MAAM,CAAC,iBAAkBkJ,CAAM,CAAC,YAAY,EACtFnG,EAAS,CAAC,qBAAqB,EAAE/C,EAAI,QAAQ,GAAG,OAAO,CAAC,IAAK,KAAK,CAAC,CACrE,E,SAII,WAACsJ,GAAAA,CAAIA,CAAAA,CAAC,UAAS,GAAC,QAAS,EAAG,UAAU,SAAS,eAAe,S,UAC3DN,EAAO,GAAG,CAAC,CAACO,EAAO/H,IAClB,UAAC8H,GAAAA,CAAIA,CAAAA,CAAC,KAAM,G,SACV,UAACE,GAAAA,CAAaA,CAAAA,CACZ,UAAS,GACT,UAAWhI,AAAM,IAANA,EACX,SAAUyH,GAAwBzH,AAAM,IAANA,EAClC,KAAM+H,EACH,KAAK,CAAC,KACN,GAAG,CAAC,AAACE,GAAMA,EAAE,WAAW,IACxB,IAAI,CAAC,KACR,MAAOlK,GAAM,QACb,YAAaiC,AAAM,IAANA,EAAU+H,EAAQG,ACpCV,CAAC,I,GAAA,CAAET,qBAAAA,CAAoB,CAAEM,MAAAA,CAAK,CAAE,UACjE,AAAIN,EAA6B,CAAC,mBAAmB,EAAEM,EAAM,+CAA+C,CAAC,CACtGA,CACT,GDiCiE,CAAEA,MAAAA,EAAON,qBAAAA,CAAqB,GACjF,SAAU,AAACG,IA9BrBD,EAAU,CACR,GAAGD,CAAM,CACT,CAACE,AA4B6CA,EA5BzC,MAAM,CAAC,IAAI,CAAC,CAAEA,AA4B2BA,EA5BvB,MAAM,CAAC,KAAK,AACrC,G,IAgB2BG,IAgBvB,WAACD,GAAAA,CAAIA,CAAAA,CAAC,UAAS,GAAC,KAAM,GAAI,WAAW,S,UACnC,UAACA,GAAAA,CAAIA,CAAAA,CAAC,KAAM,G,SAAKpI,GAAS,UAACC,GAAKA,CAAC,MAAOD,C,KACxC,UAACoI,GAAAA,CAAIA,CAAAA,CAAC,UAAS,GAAC,KAAM,EAAG,UAAU,MAAM,WAAW,SAAS,eAAe,W,SAC1E,UAACK,GAAAA,CAAMA,CAAAA,CACL,KAAK,SACL,QAAQ,YACR,KAAK,QACL,SAAUC,AC1Dc,CAAC,I,GAAA,CAAEX,qBAAAA,CAAoB,CAAEC,OAAAA,CAAM,CAAEF,OAAAA,CAAM,CAAE,UAC7E,AAAIC,GACEC,CAAM,CAAC,uBAAuB,CAI7BW,OAAO,OAAO,CAACX,GAAQ,MAAM,GAAKF,EAAO,MAAM,EAAIa,OAAO,MAAM,CAACX,GAAQ,IAAI,CAAC,AAACO,GAAM,CAACA,EAC/F,GDmD+C,CAAER,qBAAAA,EAAsBC,OAAAA,EAAQF,OAAAA,CAAO,G,SACzE,S,YAQb,CEzDe,SAASc,KACtB,GAAM,CAAEvK,KAAAA,CAAI,CAAE2B,MAAAA,CAAK,CAAE,CAAGsB,IAClB,CAACuH,EAAQC,EAAU,CAAG1I,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,GAQrC,MALAC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,IAAM5B,ECbR,ADa0CJ,ECZtCA,ADYsCA,ECZjC,0BAA0B,CAAS6I,GAAiB,SAAS,CAAC,AAACqB,GAAMA,AAAY,uBAAZA,EAAE,KAAK,EACjFlK,ADWsCA,ECXjC,kBAAkB,CAAS6I,GAAiB,SAAS,CAAC,AAACqB,GAAMA,AAAY,cAAZA,EAAE,KAAK,EACtE,EAHW,CDcZ9J,CAAAA,GAAKqK,EAAUrK,EACrB,EAAG,CAACJ,EAAK,EAGP,WAACiH,EAAAA,CAAGA,CAAAA,C,UACF,UAACgB,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,KAAK,aAAY,G,SAAC,sB,GAGtC,WAAChB,EAAAA,CAAGA,CAAAA,CAAC,GAAI,CAAE,MAAO,MAAO,E,UACvB,UAACA,EAAAA,CAAGA,CAAAA,CAAC,GAAI,CAAE,aAAc,EAAG,YAAa,SAAU,E,SACjD,UAACyD,GAAAA,CAAIA,CAAAA,CAAC,MAAOF,EAAQ,SAdR,CAACG,EAAGvK,IAAQqK,EAAUrK,GAcU,aAAW,qB,SACrDyI,GAAiB,GAAG,CAAC,AAAC,I,GAAA,CAAE+B,GAAAA,CAAE,CAAEjD,MAAAA,CAAK,CAAE,G,MAClC,UAACkD,GAAAA,CAAGA,CAAAA,CAAU,MAAOlD,EAAO,SAAUmD,AE7BL,CAAC,I,GAAA,CAAEnD,MAAAA,CAAK,CAAE3H,KAAAA,CAAI,CAAE,GAC7D,GAAI,CAACA,EAAM,MAAO,GAElB,IAAM+K,EAAWpD,EACd,KAAK,CAAC,KACN,GAAG,CAAC,AAACuC,GAAMA,EAAE,WAAW,IACxB,IAAI,CAAC,YAER,AAAIlK,EAAK,0BAA0B,CAC7B+K,AAAa,uBAAbA,IAIF/K,EAAK,kBAAkB,EACrB+K,AAAa,cAAbA,CAKR,GFUoF,CAAE/K,KAAAA,EAAM2H,MAAAA,CAAM,E,EAA1EiD,E,OAKf/B,GAAiB,GAAG,CAAC,AAAC,I,GAAA,CAAE+B,GAAAA,CAAE,CAAEI,WAAAA,CAAU,CAAE,G,MACvC,UAACC,GAAAA,CAAS,OAAQT,EAAQ,IAAKI,E,SAC7B,UAACpB,GAAWA,CACV,KAAMxJ,EACN,MAAO2B,EACP,OAAQqJ,EACR,qBAAsBhL,GAAM,4BAA8BA,GAAM,kB,IAL5B4K,E,QAYlD,CAEA,SAASK,GAAS7C,CAAyB,E,GAAzBA,CAAE/E,SAAAA,CAAQ,CAAEmH,OAAAA,CAAM,CAAEpK,IAAAA,CAAG,CAAE,CAAzBgI,SAChB,AAAIoC,IAAWpK,EAAY,UAAC6G,EAAAA,CAAGA,CAAAA,CAAC,GAAI,CAAE,EAAG,EAAG,GAAI,CAAE,E,SAAI5D,C,GAC/C,IACT,CGRA,OA/BqB,KACnB,GAAM,CAAEQ,sBAAAA,CAAqB,CAAE,CAAGZ,IAC5B,CAAC8E,EAAUmD,EAAY,CAAGnJ,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IAOzC,MANAoJ,ACZ6C,MAC7C,GAAM,CAAEtH,sBAAAA,CAAqB,CAAE,CAAGZ,IAElCjB,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KAGRV,EAAAA,EAAAA,CAAAA,oBAAyB,CAACL,OAC5B,EAAG,CAAC4C,EAAsB,iBAAiB,CAAC,MAAM,CAAC,CACrD,KDME7B,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACRkJ,EAAY,CAACrH,EAAsB,iBAAiB,CAAC,MAAM,CAC7D,EAAG,CAACA,EAAsB,iBAAiB,CAAC,MAAM,CAAC,EAGjD,WAACkD,EAAcA,C,UACb,WAACgD,GAAAA,CAAIA,CAAAA,CAAC,UAAS,G,UACb,UAACA,GAAAA,CAAIA,CAAAA,CAAC,GAAI,CAAE,KAAM,CAAE,E,SAClB,UAAC9B,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,KAAK,aAAY,G,SAAC,sB,KAIxC,UAAC8B,GAAAA,CAAIA,CAAAA,CAAC,KAAI,G,SACR,UAACZ,GAAAA,CAAUA,CAAAA,CAAC,QAAS,IAAM+B,EAAY,CAACnD,GAAW,KAAK,Q,SACtD,UAACqD,GAAAA,CAAIA,CAAAA,CAAAA,E,QAKX,UAACC,GAAiBA,CAAAA,GAClB,UAACd,GAAiBA,CAAAA,GAClB,UAACe,GAAcA,CAAC,SAAUvD,C,KAGhC,E,WEQA,GArCgB,KACd,IAAMvE,EAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,IACXH,EAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,IACX,CAAEvD,KAAAA,CAAI,CAAE0E,KAAAA,CAAI,CAAEC,eAAAA,CAAc,CAAE,CAAG1B,IACjC,CAAEsI,QAAAA,CAAO,CAAEC,QAAAA,CAAO,CAAE,CAAGC,ACbL,CAAC,I,GAAA,CAAE/G,KAAAA,CAAI,CAAE1E,KAAAA,CAAI,CAAE,GACjC,CAAE8B,QAAAA,CAAO,CAAEgD,cAAAA,CAAa,CAAE,CAAG7B,IAC7B,CAACuI,EAASE,EAAW,CAAG3J,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IACxB,CAACwJ,EAASI,EAAW,CAAG5J,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IAyBvC,MAvBAC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR8C,EAAc,GACdlF,IAAoB,IAAI,CAAC,AAACqC,IACxBH,EAAQG,EACV,EACF,EAAG,EAAE,EAELD,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACJwJ,GAAS,SACbG,EAAW,IAEXjH,GACI,cACA,KAAK,AAACkH,IACNF,EAAWE,GACPA,GAAMD,EAAW,GACvB,IACE,MAAM,AAACpM,IACPC,QAAQ,KAAK,CAAC,4BAA6BD,GAC3CoM,EAAW,GACb,GACJ,EAAG,CAAC3L,EAAM0E,EAAK,EAER,CAAE8G,QAAAA,EAASD,QAAAA,CAAQ,CAC5B,GDhB0C,CAAE7G,KAAAA,EAAM1E,KAAAA,CAAK,GAErD,MACE,WAAC+G,EAAcA,C,UACb,UAACkB,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,KAAK,aAAY,G,SAAC,e,GAGrCsD,GAAW,UAACM,GAAAA,CAAgBA,CAAAA,CAAC,cAAY,UAAU,KAAM,E,GACzD,CAACN,GAAWC,GAAW,CAACA,EAAQ,MAAM,EAAI,UAACvD,GAAAA,CAAUA,CAAAA,CAAC,UAAU,O,SAAO,gB,GACvEuD,GAAWA,EAAQ,MAAM,CAAG,GAC3B,UAAC1C,GAAAA,CAAIA,CAAAA,C,SACF0C,EAAQ,GAAG,CAAC,AAACM,GACZ,UAAC9C,GAAAA,CAAcA,CAAAA,CACb,OAAM,GACN,UAAU,IAEV,QAAS,IACP+C,AEhCU,OAAO,I,GAAA,CAAEvI,SAAAA,CAAQ,CAAEF,SAAAA,CAAQ,CAAE0I,UAAAA,CAAS,CAAEhM,KAAAA,CAAI,CAAE,GAChE,CAAEiM,OAAAA,CAAM,CAAE,CAAG3I,EACbe,EAAWrE,EAAK,MAAM,CAAC,MAAM,CAAG,MAAQ,KACxCmF,EAAOnF,EAAK,MAAM,CAAC,IAAI,CAAG,CAAC,CAAC,EAAEA,EAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAG,GACnDsE,EAAStE,EAAK,MAAM,CAAC,MAAM,CAAG,CAAC,CAAC,EAAEA,EAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAG,GACzDb,EAAQa,AAAAA,CAAAA,AAAqB,cAArBA,EAAK,MAAM,CAAC,IAAI,CAAmB,CAAC,EAAEA,EAAK,MAAM,CAAC,IAAI,CAAC,EAAEmF,EAAK,CAAC,CAAGnF,EAAK,MAAM,CAAC,IAAG,EAAKsE,EAE9FW,EAAY,MAAM/F,EAAa,CAAC,QAAQ,EAAEc,EAAK,MAAM,CAAC,IAAI,CAAC,EAAEsE,EAAO,CAAC,EACrE4H,EAAYjH,EAAY,CAAC,iBAAiB,EAAEA,EAAU,CAAC,CAAG,GAE1DkH,EAAe,CAAC,EAAE9H,EAAS,GAAG,EAAElF,EAAK,KAAK,EAAEiN,mBAAmBJ,GAAW,EAAEE,EAAU,CAAC,CACvFG,EAAoBJ,EAAO,OAAO,CAACjM,EAAK,SAAS,CAAEmM,GAEzD3I,EAAS,CAAC,KAAK,EAAE6I,EAAkB,CAAC,CAAC,OAAO,CAAC,2BAA4B,IAC3E,GFkB2B,CACTrM,KAAAA,EACAwD,SAAAA,EACAF,SAAAA,EACA,UAAWqB,EAAiBmH,EAAQ,QAAQ,CAAGA,EAAQ,MAAM,AAC/D,G,SAGF,UAAC5C,GAAAA,CAAYA,CAAAA,CAAC,QAAS4C,EAAQ,MAAM,CAAE,UAAWA,EAAQ,MAAM,E,EAV3DA,EAAQ,MAAM,E,KAiBjC,E,iEG/CA,GAAeQ,EAAAA,aAAmB,CAAC,CACjC,SAAU,KACV,MAAO,KACP,WAAY,KACZ,YAAa,CAAC,EACd,aAAc,CAAC,EACf,SAAU,KACV,WAAY,CAAC,EACb,eAAgB,CAAC,EACjB,WAAY,KACZ,YAAa,IACf,GCXe,c,IAACC,EAAe,UAAfA,MAAAA,CAAAA,GAAAA,AAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAe,CAAC,EAAGC,EAAkB,UAAlBA,MAAAA,CAAAA,GAAAA,AAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAkB,KAAO,EAEpDC,EAAgB,EAAE,CAClBC,EAAsB,CAAC,EAEvBC,EAAQ,CACZ,IAAK,AAACxG,GAAQyG,AALIL,CAKO,CAACpG,EAAI,CAC9B,IAAK,CAACA,EAAK7F,KACT,GAAI,AAAe,SAAR6F,GAAuB,AAAe,UAAf,OAAOA,EACvC,MAAM,AAAIvE,MAAM,CAAC,aAAa,EAAEc,KAAK,SAAS,CAACyD,GAAK,CAAC,EAIvD,OAFAyG,AAVgBL,CAUL,CAACpG,EAAI,CAAG7F,EACnBoM,CAAmB,CAACvG,EAAI,CAAGqG,EAAgB,CAAE,KAAM,MAAOlM,MAAAA,CAAM,GACzDA,CACT,EACA,MAAO,AAAC6F,IACN,GAAI,AAAe,SAARA,GAAuB,AAAe,UAAf,OAAOA,EACvC,MAAM,AAAIvE,MAAM,CAAC,aAAa,EAAEc,KAAK,SAAS,CAACyD,GAAK,CAAC,EAEvD,IAAM0G,EAAcH,CAAmB,CAACvG,EAAI,AAC5C,QAAOuG,CAAmB,CAACvG,EAAI,CAE/B0G,GAAeA,IACfD,AAtBgBL,CAsBL,CAACpG,EAAI,CAAG,IACrB,EACA,SAAU,AAAC2G,IACTL,EAAc,OAAO,CAAC,AAACM,GAAaA,EAASD,EAAgB,CAAC,EAzB9CP,GA0BlB,EACA,QAAS,KACPjC,OAAO,IAAI,CAACoC,GAAqB,OAAO,CAAC,AAACvG,IACxCuG,CAAmB,CAACvG,EAAI,EAAIuG,CAAmB,CAACvG,EAAI,EACtD,EACF,CACF,EAgBA,MAAO,CAda,KAClB,GAAM,EAAG6G,EAAS,CAAGjL,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAnCHwK,GA6ClB,MARAvK,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACRyK,EAAc,IAAI,CAACO,GACZ,KACL,IAAMvE,EAAKgE,EAAc,OAAO,CAACO,GACjCP,EAAc,MAAM,CAAChE,EAAI,EAC3B,GACC,CAACuE,EAAS,EAEN,CAACL,EAAM,AAChB,EAEqBA,EAAM,AAC7B,C,qEC5CO,IAAMM,GAAS,CACpB,sBAAuBC,GACvB,MAAOZ,EACP,Y,UACA,mBAAoBa,EACpB,oBAAqBC,CACvB,EAEMC,GAAa,qBAgBfC,GAAiB,GAsBRC,GAAY,MAAOlN,EAAMI,SAFf+M,EAMrB,MAHAC,AApBmB,MACnB,GAAIH,GACF,OAEFA,GAAiB,GACjBI,WAAW,YAAY,CAAGT,GAC1B,IAAMU,EAAU,CAAC,EACjBrD,OAAO,OAAO,CAAC2C,IAAQ,OAAO,CAAC,AAAC,I,IApB1BW,EAoB0B,CAACvN,EAAMwN,EAAG,EACxCF,CAAAA,CAAO,CAACtN,EAAK,CAAGyJ,IAAI,eAAe,CAAC,IAAIgE,KAAK,EArBzCF,EAAWtD,OAAO,IAAI,CAqBqCuD,GApB9D,MAAM,CAAC,AAAC1H,GAAQA,AAAQ,YAARA,GAAqBkH,GAAW,IAAI,CAAClH,IACrD,GAAG,CAAC,AAACA,GAAQ,CAAC,aAAa,EAAEA,EAAI,UAAU,EAAEzD,KAAK,SAAS,CAACyD,GAAK,EAAE,CAAC,EAChE,CACL,CAAC,uCAAuC,EAAEzD,KAAK,SAAS,CAiBCrC,GAjBM,EAAE,CAAC,CAClE,4EACGuN,EACJ,CAAC,IAAI,CAAC,OAc8D,CAAE,CAAE,KAAM,iBAAkB,GACjG,GACA,IAAMG,EAASC,SAAS,aAAa,CAAC,SACtCD,CAAAA,EAAO,IAAI,CAAG,YACdA,EAAO,WAAW,CAAGrL,KAAK,SAAS,CAAC,CAAEiL,QAAAA,CAAQ,GAC9CK,SAAS,IAAI,CAAC,WAAW,CAACD,EAC5B,KAG8BP,CAAPA,EAKT,MAAM,MAAM,CAA2B,CAAC,EAAE/M,EAAI,EAAEA,EAAI,QAAQ,CAAC,KAAO,IAAM,IAAI,EAAE,EAAEwN,KAAK,GAAG,GAAG,CAAC,IALzE,AAAa,UAAb,OAAOT,GAAkB,YAAaA,EAAIA,EAAE,OAAO,CAAGA,CAOzF,EAEMU,GAAe,CAAC,CAyBtBhO,CAAAA,OAAO,WAAW,CAhBE,CAACG,EAAM8N,KACrB,AAACD,EAAY,CAAC7N,EAAK,EACrB6N,CAAAA,EAAY,CAAC7N,EAAK,CAAG,EAAE,AAAD,EAGxB6N,EAAY,CAAC7N,EAAK,CAAC,IAAI,CAAC8N,GACpBjO,MAAM,CAACG,EAAK,EACd8N,IAEK,KAEL,IAAM/N,EAAM8N,EAAY,CAAC7N,EAAK,CAAC,OAAO,CAAC8N,GACvCD,EAAY,CAAC7N,EAAK,CAAC,MAAM,CAACD,EAAK,EACjC,G,sCCjFa,SAASgO,GAAcC,CAAK,EACzC,GAAM,CAACC,EAAYC,EAAS,CAAGxM,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IAiB/B,MAfAC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,GAAIqM,EAAO,CACT,IAAMG,EAAY,KAChBH,EAAM,aAAa,GAAG,IAAI,CAAC,AAACzF,IAC1B2F,EAAS,CAAE,GAAG3F,CAAK,AAAC,EACtB,EACF,EAGA,OAFAyF,EAAM,EAAE,CAAC,UAAWG,GACpBA,IACO,KACLH,EAAM,cAAc,CAAC,UAAWG,EAClC,CACF,CACA,MAAO,KAAO,CAChB,EAAG,CAACH,EAAOE,EAAS,EACb,CAACD,EAAY,AAACxL,GAAMuL,EAAM,aAAa,CAACvL,GAAG,AACpD,CCnBA,IAAM2L,GAAanC,EAAAA,aAAmB,G,eCFtC,IAAMoC,GAAQ,CACZ,CAAC,GAAI,GAAG,CACR,CAAC,EAAG,GAAG,CACP,CAAC,EAAG,GAAG,CACP,CAAC,EAAG,GAAG,CACP,CAAC,EAAG,GAAG,CACP,CAAC,EAAG,GAAG,CACR,CACD,SAASC,GAAOvG,CAAU,E,GAAVA,CAACwG,EAAKC,EAAI,CAAVzG,EACd,MAAQwG,AAAAA,CAAAA,EAAQE,CAAAA,KAAK,MAAM,GAAMD,CAAAA,EAAMD,CAAE,EAAM,EAAC,EAAG,QAAQ,CAAC,GAC9D,CAEe,SAASG,KACtB,OAAOL,GAAM,GAAG,CAACC,IAAQ,IAAI,CAAC,GAChC,CCVA,SAASK,GAASC,CAAK,CAAEC,CAAK,EAC5B,IAAK,IAAIjN,EAAI,EAAGA,EAAIgN,EAAM,MAAM,CAAE,EAAEhN,EAC9BgN,CAAK,CAAChN,EAAE,EAAI,GAAKgN,CAAK,CAAChN,EAAE,EAAIiN,GAC/B,EAAED,CAAK,CAAChN,EAAE,CAGdgN,EAAM,IAAI,CAACC,EACb,CACA,SAASC,GAAYF,CAAK,CAAEC,CAAK,EAC/B,IAAIE,EAAY,EAChB,IAAK,IAAInN,EAAI,EAAGA,EAAIgN,EAAM,MAAM,CAAE,EAAEhN,EAC9BgN,CAAK,CAAChN,EAAE,CAAGiN,EACb,EAAED,CAAK,CAAChN,EAAE,CACDgN,CAAK,CAAChN,EAAE,GAAKiN,GACtBE,CAAAA,EAAYnN,CAAAA,EAIhB,OADAgN,EAAM,MAAM,CAACG,EAAW,GACjBA,CACT,CAce,SAASC,GAAUjH,CAA2B,E,GAA3BA,CAAE,GAAIkH,CAAE,CAAEpJ,IAAAA,CAAG,CAAEoI,WAAAA,CAAU,CAAE,CAA3BlG,CAChCkH,CAAAA,EAAG,WAAW,CAAGA,EAAG,WAAW,EAAI,EAAE,CACrCA,EAAG,SAAS,CAAGA,EAAG,SAAS,EAAI,EAAE,CACjCA,EAAG,qBAAqB,CAAGA,EAAG,qBAAqB,EAAI,EAAE,CACzDA,EAAG,iBAAiB,CAAGA,EAAG,iBAAiB,EAAI,EAAE,CACjDA,EAAG,YAAY,CAAGA,EAAG,YAAY,EAAI,EAAE,CACvCA,EAAG,eAAe,CAAGA,EAAG,eAAe,EAAI,EAAE,CAI7C,IAAMC,EAAU,CACd,eACSD,EAAG,WAAW,CAEvB,aACSA,EAAG,SAAS,CAErB,aAAa5N,CAAC,EACZ,IAAM8N,EACJ,AAAa,UAAb,OAAO9N,EA/Ba,CAC1B,KAAM,CACJ,WAAY,CA8BQA,EA9BL,AACjB,CACF,EA6BY,CACE,GAAGA,CAAC,CACJ,KAAMA,EAAE,IAAI,EAAI,CAAC,CACnB,EA+BN,OA9BA8N,EAAU,IAAI,CAAC,GAAG,CAAGA,EAAU,IAAI,CAAC,GAAG,EAAIT,KAK3CS,EAAU,IAAI,CAAC,cAAc,CAAGA,EAAU,IAAI,CAAC,cAAc,EAAI,CAC/D,CACE,iBAAkB,EAClB,eAAgB,EAChB,aAAc,CAChB,EACD,CAEDA,EAAU,eAAe,CAAGA,EAAU,eAAe,EAAI,CAAC,EAC1DA,EAAU,qBAAqB,CAAGA,EAAU,qBAAqB,EAAI,EAAE,CACvEA,EAAU,oBAAoB,CAAGA,EAAU,oBAAoB,EAAI,EAAE,CAGjEF,EAAG,WAAW,CAAC,MAAM,CAAGC,EAAQ,aAAa,IAC/CD,EAAG,WAAW,CAAC,IAAI,CAACE,GACpBR,GAASM,EAAG,qBAAqB,CAAEA,EAAG,WAAW,CAAC,MAAM,CAAG,GAC3DpJ,EAAI,UAAU,CAAC,KAAK,CAACsJ,EAtCFlB,KAwCnBgB,EAAG,cAAc,CAAGA,EAAG,cAAc,EAAI,CAAC,EAC1CA,EAAG,cAAc,CAAC,aAAa,CAAGA,EAAG,cAAc,CAAC,aAAa,EAAI,CAAC,EACtEA,EAAG,cAAc,CAAC,aAAa,CAAC,WAAW,CAAGA,EAAG,cAAc,CAAC,aAAa,CAAC,WAAW,EAAI,EAAE,CAC/FA,EAAG,cAAc,CAAC,aAAa,CAAC,SAAS,CAAGA,EAAG,cAAc,CAAC,aAAa,CAAC,SAAS,EAAI,EAAE,CAE3FA,EAAG,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAACE,IAE5CA,CACT,EACA,gBAAgBpP,CAAG,EACjB,IAAMoP,EAAYF,EAAG,WAAW,CAAC,MAAM,CAAClP,EAAK,EAAE,CAAC,EAAE,CAGlD,OAFA+O,GAAYG,EAAG,qBAAqB,CAAElP,GACtC8F,EAAI,UAAU,CAAC,OAAO,CAACsJ,EApDFlB,EAoD+BlO,GAC7CoP,CACT,EACA,WAAWhC,CAAC,EACV,IAAMiC,EACJ,AAAa,UAAb,OAAOjC,EAvEW,CACxB,KAAM,CACJ,KAsEkBA,CArEpB,CACF,EAqEY,CACE,GAAGA,CAAC,CACJ,KAAMA,EAAE,IAAI,EAAI,CAAC,CACnB,CACNiC,CAAAA,EAAQ,IAAI,CAAC,GAAG,CAAGA,EAAQ,IAAI,CAAC,GAAG,EAAIV,KAGvCU,EAAQ,OAAO,CAAGA,EAAQ,OAAO,EAAI,CACnC,iBAAkB,EAClB,eAAgB,EAClB,EAEAA,EAAQ,oBAAoB,CAAGA,EAAQ,oBAAoB,EAAI,EAAE,CACjEA,EAAQ,qBAAqB,CAAGA,EAAQ,qBAAqB,EAAI,EAAE,CAE/DH,EAAG,SAAS,CAAC,MAAM,CAAGC,EAAQ,WAAW,IAC3CD,EAAG,SAAS,CAAC,IAAI,CAACG,GAClBT,GAASM,EAAG,qBAAqB,CAAEA,EAAG,WAAW,CAAC,MAAM,CAAGA,EAAG,SAAS,CAAC,MAAM,CAAG,GACjFpJ,EAAI,QAAQ,CAAC,KAAK,CAACuJ,EA7EAnB,KA+EnBgB,EAAG,cAAc,CAAGA,EAAG,cAAc,EAAI,CAAC,EAC1CA,EAAG,cAAc,CAAC,aAAa,CAAGA,EAAG,cAAc,CAAC,aAAa,EAAI,CAAC,EACtEA,EAAG,cAAc,CAAC,aAAa,CAAC,WAAW,CAAGA,EAAG,cAAc,CAAC,aAAa,CAAC,WAAW,EAAI,EAAE,CAC/FA,EAAG,cAAc,CAAC,aAAa,CAAC,SAAS,CAAGA,EAAG,cAAc,CAAC,aAAa,CAAC,SAAS,EAAI,EAAE,CAE3FA,EAAG,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAACG,GAEnD,EACA,cAAcrP,CAAG,EACf,IAAMqP,EAAUH,EAAG,SAAS,CAAC,MAAM,CAAClP,EAAK,EAAE,CAAC,EAAE,CAC9C+O,GAAYG,EAAG,qBAAqB,CAAEA,EAAG,WAAW,CAAC,MAAM,CAAGlP,GAC9D8F,EAAI,QAAQ,CAAC,OAAO,CAACuJ,EA1FAnB,EA0F2BlO,EAClD,EAEA,kBACS8F,EAAI,UAAU,CAAC,GAAG,CAACoJ,EAAG,SAAS,CAAC,MAAM,EAE/C,gBACSpJ,EAAI,QAAQ,CAAC,GAAG,CAACoJ,EAAG,WAAW,CAAC,MAAM,EAE/C,oBACSA,EAAG,WAAW,CAAC,MAAM,CAAGC,EAAQ,aAAa,GAEtD,kBACSD,EAAG,SAAS,CAAC,MAAM,CAAGC,EAAQ,WAAW,EAEpD,EAEA,OAAOA,CACT,CC/Ie,SAASG,GAAUtH,CAA2B,E,GAA3BA,CAAE,GAAIuH,CAAE,CAAEzJ,IAAAA,CAAG,CAAEoI,WAAAA,CAAU,CAAE,CAA3BlG,CAChCuH,CAAAA,EAAG,iBAAiB,CAAGA,EAAG,iBAAiB,EAAI,EAAE,CAIjD,IAAMJ,EAAU,CACd,eACE,AAAI,AAACI,EAAG,UAAU,EAAK,AAACA,EAAG,IAAI,EAAKA,EAAG,IAAI,CAAC,UAAU,EAAIA,AAA8B,IAA9BA,EAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAC5E,CAACA,EAAG,CADwF,EAAE,CAGvG,aACS,EAAE,CAEX,aAAajO,CAAC,EACZ,IAAM8N,EACJ,AAAa,UAAb,OAAO9N,EArBa,CAC1B,KAAM,CACJ,WAAY,CAoBQA,EApBL,AACjB,CACF,EAmBY,CACE,GAAGA,CAAC,CACJ,KAAMA,EAAE,IAAI,EAAI,CAAC,CACnB,EAeN,OAdA8N,EAAU,IAAI,CAAC,GAAG,CAAGA,EAAU,IAAI,CAAC,GAAG,EAAIT,KAE3CS,EAAU,IAAI,CAAC,cAAc,CAAGG,EAAG,IAAI,CAAC,cAAc,EAAI,CACxD,CACE,aAAc,EACd,iBAAkB,EAClB,eAAgB,EAChB,aAAc,CAChB,EACD,CACDrF,OAAO,IAAI,CAACkF,GAAW,OAAO,CAAC,AAACI,IAC9BD,CAAE,CAACC,EAAE,CAAGJ,CAAS,CAACI,EAAE,AACtB,GACA1J,EAAI,UAAU,CAAC,KAAK,CAACsJ,EA/BAlB,GAgCdkB,CACT,EACA,gBAAgBpP,IAEd,OAAOuP,EAAG,IAAI,CACd,OAAOA,EAAG,UAAU,CACpBzJ,EAAI,UAAU,CAAC,OAAO,CAHJyJ,EAnCGrB,EAsC+BlO,GAHlCuP,GAMpB,aAAc,EACd,gBAAiB,EAEjB,kBACS,EAET,gBACS,EAET,oBACSJ,AAAgC,IAAhCA,EAAQ,UAAU,GAAG,MAAM,CAEpC,kBACS,EAEX,EAEA,OAAOA,CACT,CC9De,SAASM,GAAmBzH,CAAwC,E,GAAxCA,CAAE,GAAI0H,CAAG,CAAE5J,IAAAA,CAAG,CAAEoI,WAAAA,CAAU,CAAEyB,WAAAA,CAAU,CAAE,CAAxC3H,EAGnCmH,EAAU,CACd,eACSQ,EAET,aACS,EAAE,CAEX,aAAarO,CAAC,EACZ,IAAM8N,EACJ,AAAa,UAAb,OAAO9N,EAlBa,CAC1B,KAAM,CACJ,WAAY,CAiBQA,EAjBL,AACjB,CACF,EAgBY,CACE,GAAGA,CAAC,CACJ,KAAMA,EAAE,IAAI,EAAI,CAAC,CACnB,EAaN,OAXA8N,EAAU,IAAI,CAAC,GAAG,CAAGA,EAAU,IAAI,CAAC,GAAG,EAAIT,KAC3CS,EAAU,IAAI,CAAC,cAAc,CAAIM,GAAOA,EAAI,IAAI,CAAC,cAAc,EAAK,CAClE,CACE,aAAc,EACd,iBAAkB,EAClB,eAAgB,EAChB,aAAc,CAChB,EACD,CAED5J,EAAI,UAAU,CAAC,KAAK,CAACsJ,EA5BAlB,GA6BdkB,CACT,EACA,gBAAgBpP,CAAG,EACjB,IAAMoP,EAAYO,CAAU,CAAC3P,EAAI,CAEjC,OADA8F,EAAI,UAAU,CAAC,OAAO,CAACsJ,EAjCFlB,EAiC+BlO,GAC7CoP,CACT,EAIA,gBACE,GAAM,CAAEX,IAAAA,CAAG,CAAE,CAAG3I,EAAI,UAAU,EAAI,CAAC,EAEnC,MAAO8J,AADS,CAAe,YAAf,OAAOnB,EAAqBA,IAAQA,CAAE,GACpC,CACpB,EACA,gBACS,EAET,oBACSU,EAAQ,UAAU,GAAG,MAAM,CAAGA,EAAQ,aAAa,GAE5D,kBACS,EAEX,EAEA,OAAOA,CACT,CChEO,SAASU,KACd,GAAM,CAAE,cAAeC,CAAO,CAAE,CAAG/M,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EAAWgN,IAAiB,UAAU,CACzE,OAAOD,GACT,CCHe,SAASE,GAAgBnK,CAAU,CAAE1D,CAAG,EAAE8N,IAAAA,IAAAA,EAAAA,UAAAA,MAAAA,CAAGC,EAAHD,AAAAA,MAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAGC,CAAI,CAAPD,EAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAO,CAC9D,IAAMlK,EAAM5D,EAAM,CAAC,EAAEA,EAAI,EAAE,CAAC,CAAC,EAAEG,KAAK,SAAS,CAACuD,GAAY,CAAC,CAAG,KAExD,CAACsK,EAAW,CAAGN,KACf,CAACO,EAA4B,CAAGC,ADqBjC,WACL,GAAM,CAAE,+BAAgCP,CAAO,CAAE,CAAG/M,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EAAWgN,IAAiB,UAAU,CAC1F,OAAOD,GACT,ICvBQ,CAAC7B,EAAOqC,EAAS,CAAG3O,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IAoB1B,MAlBAC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,AAAKO,GAcLyD,AAVe,WACb,IAAI2K,EAAYH,EAA4B,GAAG,CAACrK,GAC3CwK,IACHA,EAAYpO,EAAI,mBAAmB,CAAC0D,GACpCuK,EAA4B,GAAG,CAACrK,EAAKwK,IAEvC,IAAMC,EAAW,MAAMD,EACvBJ,EAAW,GAAG,CAACpK,EAAKyK,GACpBF,EAASE,EACX,IAEF,EAAG,CAACrO,KAAQ+N,EAAK,EAEV,CAACjC,EAAM,AAChB,CCrBA,IAAMwC,GAAa,CAACC,EAAOC,KACzB,IACIC,EADE,CAAEC,eAAAA,CAAc,CAAE9K,IAAAA,CAAG,CAAE+K,OAAAA,CAAM,CAAE,CAAGH,EAExC,OAAQA,EAAO,IAAI,EACjB,IAAK,UACHC,EAAW,CACT,GAAGF,CAAK,CACR,MAAO,GACP,QAAS,GACT,WAAY,GACZ,UAAW,GACX,SAAU,GACV,SAAU,EACZ,EACA,KAEF,KAAK,QACHE,EAAW,CACT,OAAQ,CACN,GAAGD,EAAO,MAAM,AAClB,EACA,QAAS,GACT,MAAO,GACP,WAAY,GACZ,UAAW,GACX,SAAU,GACV,SAAU,EACZ,EACA,KAEF,KAAK,YACHC,EAAW,CACT,GAAGF,CAAK,CACR,QAAS,GACT,MAAO,GACP,WAAY,GACZ,UAAW,GACX,SAAU,GACV,SAAU,EACZ,EACA,KAEF,SACE,MAAM,AAAIlP,MAAM,mBACpB,CACA,IAAIgL,EAAcqE,EAAe,GAAG,CAAC9K,GAMrC,OALI,AAACyG,GACHA,CAAAA,EAAc,CAAC,GAEjBA,CAAW,CAACsE,EAAO,CAAGF,EACtBC,EAAe,GAAG,CAAC9K,EAAKyG,GACjBoE,CACT,EAEe,SAASG,GAAO9C,CAAK,CAAE6C,CAAM,EAC1C,IAMIP,EANExK,EAAMkI,EAAQ,CAAC,EAAEA,EAAM,EAAE,CAAC,CAAC,CAAG,KAC9B,CAAC4C,EAAe,CAAGG,AFnDpB,WACL,GAAM,CAAE,kBAAmBlB,CAAO,CAAE,CAAG/M,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EAAWgN,IAAiB,UAAU,CAC7E,OAAOD,GACT,IEiDQ,CAACY,EAAOO,EAAS,CAAGC,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EAAWT,GAAY1K,EAAM8K,EAAe,GAAG,CAAC9K,GAAO,MAC3E,CAACoL,EAAkB,CAAGC,AF1DvB,WACL,GAAM,CAAE,qBAAsBtB,CAAO,CAAE,CAAG/M,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EAAWgN,IAAiB,UAAU,CAChF,OAAOD,GACT,IEwDQ,CAACuB,EAAgB,CAAGC,AFjDrB,WACL,GAAM,CAAE,mBAAoBxB,CAAO,CAAE,CAAG/M,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EAAWgN,IAAiB,UAAU,CAC9E,OAAOD,GACT,IEkDM/J,IACFwK,CAAAA,EAAYc,EAAgB,GAAG,CAACtL,EAAG,IAEjCwK,EAAY,CAAC,EACbc,EAAgB,GAAG,CAACtL,EAAKwK,KAI7B,IAAMgB,EAAO,MAAOC,IAClB,IAAI7L,EAAQ4K,CAAS,CAACO,EAAO,CACzB,EAACnL,GAAUA,GAASA,EAAM,QAAQ,AAAD,IAEnCA,EAAQ,CACN8L,IAFUxD,CAAK,CAAC6C,EAAO,GAGvB,SAAU,EACZ,EACAP,CAAS,CAACO,EAAO,CAAGnL,EAEpBsL,EAAS,CACP,KAAM,UACNH,OAAAA,EACA/K,IAAAA,EACAkI,MAAAA,EACA4C,eAAAA,EACA,UAAW,EACb,IAGF,GAAI,CAGF,MAlGJ,IAAIa,QAAQ,AAACC,IACXC,WAAWD,EAiGG,EAhGhB,GAiGI,IAAM5P,EAAS,MAAM4D,EAAM,GAAG,CAC9BsL,EAAS,CAAE,KAAM,QAASlP,OAAAA,EAAQgE,IAAAA,EAAK+K,OAAAA,EAAQ7C,MAAAA,EAAO4C,eAAAA,CAAe,EACvE,CAAE,MAAO1R,EAAK,CACK,KAAbA,EAAI,IAAI,EAAYqS,IAElB,AAAC7L,EAAM,QAAQ,EACjBA,CAAAA,EAAM,QAAQ,CAAG,EAAG,EAEtB4L,EAAK,IAET,CACF,EA2BA,MARA3P,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACHqM,GAELsD,GAGF,EAAG,CAACtD,EAAOkD,EAAkB,GAAG,CAAClD,GAASA,EAAM,EAAE,EAAGlI,EAAK+K,EAAO,EAE1D,CAELJ,GAASA,EAAM,MAAM,CACrB,CAAE,WAAYA,GAASA,EAAM,UAAU,CAAE,UAAWA,GAASA,EAAM,SAAS,CAAE,SAAUA,GAASA,EAAM,QAAQ,AAAC,EA7B9F,CAClB,OAAQ,UACN,IAAMmB,EAAS5D,EAAM,OAAO,CAAC,YAAY,CAAC,CAAE,OAAQ,EAAG,EACvD,OAAM4D,EAAO,aAAa,CAACtB,CAAS,CAACO,EAAO,CAAC,GAAG,CAAC,SAAS,EAC1DG,EAAS,CACP,KAAM,YACNlL,IAAAA,EACA+K,OAAAA,EACA7C,MAAAA,EACA4C,eAAAA,CACF,EACF,EACA,MAAO,KACLN,CAAS,CAACO,EAAO,CAAC,QAAQ,CAAG,GAC7BS,GACF,CACF,EAgBC,AACH,CClJe,SAASO,GAAU7D,CAAK,EACrC,GAAM,CAAC8D,EAAQ,CAAEC,WAAAA,CAAU,CAAEC,UAAAA,CAAS,CAAEC,SAAAA,CAAQ,CAAE,CAAEC,EAAY,CAAGpB,GAAO9C,EAAO,oBACjF,AAAIA,GAAO,YAAc8D,EAChB,CAAC9D,EAAM,UAAU,CAAE,CAAE+D,WAAAA,EAAYC,UAAAA,EAAWC,SAAAA,CAAS,EAAGC,EAAY,CAEtE,CAACJ,EAAQ,CAAEC,WAAAA,EAAYC,UAAAA,EAAWC,SAAAA,CAAS,EAAGC,EAAY,AACnE,CCLA,IAAMC,GAAI,CACR,MAAO,CACL,MAAO,gBACP,IAAK,eACP,EACA,kBAAmB,CACjB,MAAO,YACP,MAAO,CACL,gBAAiB,+BACjB,MAAO,iBACT,CACF,CACF,EAEMC,GAAI,CACR,MAAO,CACL,MAAO,cACP,IAAK,aACP,EACA,gBAAiB,CACf,MAAO,UACP,MAAO,CACL,gBAAiB,6BACjB,MAAO,iBACT,CACF,CACF,EAEe,SAASC,GAAKnQ,CAAG,E,IAAEoQ,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,AAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAO,YAGjC,CAACtE,EAAM,CAAG+B,GAFJuC,AAAS,cAATA,EAAuBH,GAAIC,GAEFlQ,GAC/B,CAAC4P,EAAO,CAAGD,GAAU7D,GAC3B,MAAO,CAAC8D,GAAUA,AAAAA,CAAAA,EAAO,cAAc,EAAIA,EAAO,YAAW,EAAG,MAAM,EAAI,EAAE,CAAM,AACpF,C,4HCxBA,GAAgB,AAAAvJ,GAAUT,GAXC,CACzB,GAUuCS,CAAK,CAT5C,OAAQ,CACN,CACE,KAAM,OACN,MAAO,CACL,EAAG,iRACL,CACF,EACD,AACH,GCPA,IAAMgK,GAAS,SAETC,GAAU,CACd,cAAe,CAAC,EAAED,GAAO,cAAc,CAAC,CACxC,SAAU,CAAC,EAAEA,GAAO,SAAS,CAAC,AAChC,EAEME,GAAa9L,AAAAA,GAAAA,GAAAA,CAAAA,AAAAA,EAAO+C,GAAAA,CAAIA,EAAE,AAAC,I,GAAA,CAAExD,MAAAA,CAAK,CAAE,G,MAAM,CAC9C,CAAC,CAAC,GAAG,EAAEsM,GAAQ,aAAa,CAAC,CAAC,CAAC,CAAE,CAC/B,QAAStM,EAAM,OAAO,CAAC,EAAG,EAAG,EAAG,EAClC,EAEA,CAAC,CAAC,GAAG,EAAEsM,GAAQ,QAAQ,CAAC,CAAC,CAAC,CAAE,CAC1B,QAAStM,EAAM,OAAO,CAAC,EAAG,EAAG,EAAG,EAClC,CACF,C,GAOA,SAASwM,KACP,IAAMC,EAAkBhF,SAAS,aAAa,CAAC,wBAC3CgF,CAAAA,aAA2BC,iBAC7BD,CAAAA,EAAgB,OAAO,CAAG,6EAA4E,CAE1G,CAEe,SAASE,GAAO9K,CAAgE,E,GAAhEA,CAAE+K,SAAAA,EAAW,KAAO,CAAC,CAAEC,QAAAA,EAAU,KAAO,CAAC,CAAEC,SAAAA,EAAW,KAAO,CAAC,CAAE,CAAhEjL,EACvB,CAAC9H,EAAOgT,EAAS,CAAGvR,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IAqBnC,MACE,WAAC+Q,GAAAA,CAAW,UAAWD,GAAQ,aAAa,CAAE,UAAS,GAAC,UAAU,MAAM,WAAW,S,UACjF,UAAC9I,GAAAA,CAAIA,CAAAA,C,SACH,UAACwJ,GAAUA,CAAAA,E,GAEb,UAACxJ,GAAAA,CAAIA,CAAAA,CAAC,UAAW8I,GAAQ,QAAQ,CAAE,GAAI,CAAE,KAAM,CAAE,E,SAC/C,UAACW,GAAAA,CAASA,CAAAA,CACR,UAAS,GACT,UAAS,GACT,YAXY,SAYZ,MAAOlT,EACP,SA/Ba,AAACgC,IACpBgR,EAAShR,EAAE,MAAM,CAAC,KAAK,EACvB6Q,EAAS7Q,EAAE,MAAM,CAAC,KAAK,CACzB,EA6BQ,QAASyQ,GACT,UA7BU,AAACzQ,IACjB,OAAQA,EAAE,GAAG,EACX,IAAK,QACH8Q,IACAE,EAAS,IACT,KACF,KAAK,SACHD,GAIJ,CACF,C,OAsBF,CCxDA,SAASI,GAAMrL,CAA+B,E,GAA/BA,CAAE4B,MAAAA,CAAK,CAAE0J,SAAAA,CAAQ,CAAEC,IAAAA,CAAG,CAAEC,MAAAA,CAAK,CAAE,CAA/BxL,EACb,MACE,WAACY,GAAAA,CAAcA,CAAAA,CAAC,QAAS,IAAM0K,EAAS1J,EAAM,KAAK,EAAG,WAAUA,EAAM,KAAK,C,UACzE,UAACd,GAAAA,CAAYA,CAAAA,C,SACV0K,EAAM,GAAG,CAAC,CAACC,EAAMpL,IAChB,UAAC,QAGC,MAAOoL,EAAK,SAAS,CAAG,CAAE,KAAM,WAAY,gBAAiB,SAAU,EAAI,CAAE,KAAM,UAAW,E,SAE7FA,EAAK,IAAI,EAHLpL,G,GAOVkL,GAAO,UAACG,GAAAA,CAAYA,CAAAA,CAAC,SAAS,O,KAGrC,CAEA,SAASC,GAAY3L,CAAyB,E,GAAzBA,CAAEW,KAAAA,CAAI,CAAE2K,SAAAA,CAAQ,CAAEE,MAAAA,CAAK,CAAE,CAAzBxL,EACnB,MACE,UAACY,GAAAA,CAAcA,CAAAA,CAAC,QAAS,IAAM0K,EAAS3K,EAAK,KAAK,EAAG,WAAUA,EAAK,KAAK,CAAC,GAAG,C,SAC3E,UAACG,GAAAA,CAAYA,CAAAA,C,SACV0K,EAAM,GAAG,CAAC,CAACC,EAAMpL,IAChB,UAAC,QAGC,MAAOoL,EAAK,SAAS,CAAG,CAAE,KAAM,WAAY,gBAAiB,SAAU,EAAI,CAAE,KAAM,UAAW,E,SAE7FA,EAAK,IAAI,EAHLpL,G,IASjB,CAEA,SAASuL,GAAK5L,CAAyB,E,GAAzBA,CAAE6L,KAAAA,CAAI,CAAEjK,MAAAA,CAAK,CAAE0J,SAAAA,CAAQ,CAAE,CAAzBtL,EACZ,MACE,UAACY,GAAAA,CAAcA,CAAAA,CAAC,QAAS,IAAM0K,EAASO,GAAO,WAAUA,E,SACvD,UAAC/K,GAAAA,CAAYA,CAAAA,C,SAAE,CAAC,EAAE+K,EAAK,CAAC,EAAEjK,EAAM,CAAC,CAAC,E,EAGxC,CAEA,SAASkK,GAAY9L,CAAkE,E,GAAlEA,CAAE7F,IAAAA,CAAG,CAAEmR,SAAAA,CAAQ,CAAES,MAAAA,EAAQ,EAAE,CAAExB,KAAAA,EAAO,WAAW,CAAEyB,WAAAA,EAAa,EAAE,CAAE,CAAlEhM,EACb,CAACiM,EAAa,CAAGC,GAAe/R,EAAKoQ,GACrC4B,EAAqB5Q,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EACzB,IAAM0Q,EAAa,KAAK,GAAG,IAAI,CAAC,CAACG,EAAGC,IAAMD,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,aAAa,CAACC,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,KAC7G,CAACJ,EAAa,EAGhB,OAAOA,EAAa,MAAM,CAAG,EAC3B,uB,UACE,UAACK,GAAAA,CAAaA,CAAAA,CAAC,UAAU,MAAM,MAAO,CAAE,gBAAiB,SAAU,E,SAChEP,C,GAEFI,EAAmB,GAAG,CAAC,AAACxL,IACvB,IAAM4L,EAAU/T,KAAMmI,EAAK,KAAK,CAAC,KAAK,CAAEqL,GAClCR,EAAQgB,KAAM7L,EAAK,KAAK,CAAC,KAAK,CAAE4L,UACtC,AAAIP,GAAcO,AAAmB,IAAnBA,EAAQ,MAAM,CAAe,KACxC,UAACZ,GAAAA,CAAiC,KAAMhL,EAAM,SAAU2K,EAAU,MAAOE,C,EAAvD7K,EAAK,KAAK,CAAC,GAAG,CACzC,G,GAEA,IACN,CAEe,SAAS8L,GAAczM,CAA0C,E,GAA1CA,CAAE0M,QAAAA,CAAO,CAAEC,KAAAA,CAAI,CAAEC,MAAAA,CAAK,CAAEC,WAAAA,CAAU,CAAEtC,KAAAA,CAAI,CAAE,CAA1CvK,EAC9B7F,EAAMY,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EZlFCsL,IYmFP,CAACyG,EAAeC,EAAiB,CAAGpT,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,MAC7C,CAACqS,EAAYgB,EAAc,CAAGrT,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IACvCwE,EAAQ8O,AAAAA,GAAAA,EAAAA,CAAAA,AAAAA,IACR,CAAChH,EAAM,CAAG+B,GACd,CACE,MAAO,CACL,MAAO,YACP,IAAK,WACP,EACA,cAAe,CACb,kBAAmB,GACnB,YAAa,GACb,cAAe,GACf,eAAgB,GAChB,YAAa,EACf,CACF,EACA7N,GAGI,CAAC4P,EAAO,CAAGD,GAAU7D,GAErB5E,EAAS9F,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EACb,IACGwO,AAAAA,CAAAA,GAASA,EAAO,UAAU,CAAC,MAAM,EAAI,EAAE,AAAI,EACzC,KAAK,GACL,IAAI,CAAC,CAACqC,EAAGC,IAAMD,EAAE,KAAK,CAAC,WAAW,GAAG,aAAa,CAACC,EAAE,KAAK,CAAC,WAAW,KAC3E,CAACtC,EAAO,EAGJuB,EAAW,AAAC9Q,IACZA,GAAKA,EAAE,GAAG,EACZqS,EAAWrS,GACXoS,KACSrC,AAAS,YAATA,EACTwC,EAAiBvS,IAEjBqS,EAAW,CACT,MAAOrS,CACT,GACAoS,IAEJ,EAEMM,EAAsB,AAAC1S,IAC3BqS,EAAW,CACT,MAAOC,EACP,YAAatS,CACf,GACAoS,GACF,EAEA,MACE,WAACO,GAAAA,EAAOA,CAAAA,CACN,KAAMR,EACN,QAASC,EACT,SAAUF,EAAQ,OAAO,CACzB,gBAAiB,GACjB,UAAW,EACX,aAAc,CACZ,SAAU,SACV,WAAY,QACd,EACA,gBAAiB,CACf,SAAU,MACV,WAAY,QACd,EACA,WAAY,CACV,MAAO,CAAE,SAAU,QAAS,UAAW,QAAS,WAAYvO,EAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,AAAC,CAChG,E,UAEC,CAAC2O,GAAiB,UAAChC,GAAMA,CAAC,SAAUkC,C,GACpCF,GACC,WAACpM,GAAAA,CAAIA,CAAAA,CAAC,MAAK,GAAC,UAAU,M,UACpB,WAACE,GAAAA,CAAcA,CAAAA,CAAC,QAAS,IAAMmM,EAAiB,M,UAC9C,UAACK,GAAAA,CAAYA,CAAAA,C,SACX,UAACC,GAAAA,CAAWA,CAAAA,CAAAA,E,GAEd,UAACvM,GAAAA,CAAYA,CAAAA,C,SAAC,M,MAEhB,UAACwM,GAAAA,CAAOA,CAAAA,CAAAA,GACR,UAAChB,GAAAA,CAAaA,CAAAA,CAAC,UAAU,M,SAAM,a,GAC9B,CAAC,MAAO,QAAS,MAAO,MAAO,MAAM,CAAC,GAAG,CAAC,AAAC7R,GAC1C,UAACmR,GAAAA,CAAa,KAAMnR,EAAG,MAAOqS,EAAe,SAAUI,C,EAA5CzS,I,GAIhB,CAACqS,GAAiBzL,EAAO,MAAM,CAAG,GACjC,WAACX,GAAAA,CAAIA,CAAAA,CAAC,MAAK,GAAC,UAAU,MAAM,MAAO,CAAE,WAAYvC,EAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,AAAC,E,UACjF,UAAC2N,GAAAA,CACC,IAAK3R,EACL,SAAUmR,EACV,KAAMf,EACN,MAAOA,AAAS,YAATA,EAAqB,WAAa,aACzC,WAAYyB,C,GAEd,UAACM,GAAAA,CAAaA,CAAAA,CAAC,UAAU,MAAM,MAAO,CAAE,gBAAiB,SAAU,E,SAAG,Q,GAGrEjL,EAAO,GAAG,CAAC,AAACO,IACX,IAAM2K,EAAU/T,KAAMoJ,EAAM,KAAK,CAAEoK,GAC7BR,EAAQgB,KAAM5K,EAAM,KAAK,CAAE2K,UACjC,AAAIP,GAAcO,AAAmB,IAAnBA,EAAQ,MAAM,CAAe,KACxC,UAAClB,GAAAA,CAAwB,MAAOzJ,EAAO,SAAU0J,EAAU,IAAKf,AAAS,YAATA,EAAoB,MAAOiB,C,EAA/E5J,EAAM,KAAK,CAChC,G,KAKV,CCjLA,IAAM2L,GAAa,AAAC,I,GAAA,CAAE3L,MAAAA,CAAK,CAAEqK,aAAAA,CAAY,CAAE,GACzC,GAAIrK,EAAM,UAAU,CAAE,CACpB,IAAM4L,EAAIvB,EAAa,MAAM,CAAC,AAACwB,GAAOA,EAAG,KAAK,CAAC,GAAG,GAAK7L,EAAM,UAAU,CAAC,CAAC,EAAE,CAC3E,OAAO4L,EAAIA,EAAE,KAAK,CAAC,KAAK,CAAG,KAC7B,QACA,AAAI5L,EAAM,IAAI,EAAIA,EAAM,IAAI,CAAC,UAAU,CAC9BA,EAAM,IAAI,CAAC,UAAU,CAAC,EAAE,CAE7BA,EAAM,IAAI,EAAIA,EAAM,IAAI,CAAC,IAAI,CACxBA,EAAM,IAAI,CAAC,IAAI,CAEjB,KACT,EAEe,SAAS8L,GAAO1N,CAQ9B,E,GAR8BA,CAC7B2N,MAAAA,CAAK,CACLpD,KAAAA,EAAO,WAAW,CAClBhL,MAAAA,EAAQ,EAAE,CACVqO,SAAAA,EAAW,KAAK,CAChBC,QAAAA,CAAO,CACPC,UAAAA,CAAS,CACTC,OAAAA,EAAS,EAAI,CACd,CAR8B/N,EASvB,CAACgO,EAAUC,EAAY,CAAGtU,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IACnCuU,EAAMC,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAO,MAEb,CAAClC,EAAa,CAAGC,GADXnR,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EbxCCsL,IayC8BkE,GAsB3C,MACE,WAAC,O,UACC,UAAC1K,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,W,SAAYN,C,GAChC,UAACmB,GAAAA,CAAIA,CAAAA,CAAC,MAAK,G,SACRiN,EAAM,GAAG,CAAC,CAACrU,EAAGO,IACb,UAACuU,GAAAA,EAAQA,CAAAA,CACP,eAAc,GAEd,gBACE,UAACrN,GAAAA,CAAUA,CAAAA,CAAC,QAAS,KAZ/B+M,EAY8CjU,IAAI,KAAK,Q,SAC3C,UAACmH,GAAMA,CAAAA,E,YAIX,UAACF,GAAAA,CAAYA,CAAAA,C,SACX,UAACyM,GAAAA,CAAW,MAAOjU,EAAG,aAAc2S,EAAc,KAAM1B,C,MARpDjR,EAAE,IAAI,EAAIA,EAAE,IAAI,CAAC,GAAG,EAAKO,G,GAarC,UAACmI,GAAAA,CAAMA,CAAAA,CAAC,QAAQ,YAAY,UAAS,GAAC,QAxC5B,KACZiM,EAAY,CAACD,EACf,EAsC0D,IAAKE,EAAK,SAAU,CAACH,E,SACxEH,C,GAEFI,GACC,UAACvB,GAAaA,CACZ,QAASyB,EACT,KAAMF,EACN,MAAO,IAAMC,EAAY,IACzB,WA5CW,AAACI,IACdA,EAAE,GAAG,CACPR,EAAQQ,GACCA,IACL9D,AAAS,cAATA,EACFsD,EAAQQ,EAAE,KAAK,EAEfR,EAAQ,CAAC,EAAEQ,EAAE,WAAW,EAAI,MAAM,EAAE,EAAEA,EAAE,KAAK,CAAC,EAAE,CAAC,EAGvD,EAmCQ,KAAM9D,C,KAKhB,CCxEe,SAAS+D,GAAStO,CAAqC,E,GAArCA,CAAEuO,cAAAA,CAAa,CAAEC,OAAAA,CAAM,CAAEtI,WAAAA,CAAU,CAAE,CAArClG,EAGzB,CAAC2H,EAAY8G,EAAc,CAAG9U,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,EAAE,EAEzC+U,EAAuBF,EAAO,UAAU,EAAIA,EAAO,UAAU,CAAC,GAAG,EAAIA,EAAO,UAAU,CAAC,GAAG,GAAK,EAG/FG,EAAgBH,EAAO,YAAY,CAAC,KAAK,CAAC,eAAiBvH,GAF1CyH,EAAuBjH,GAAqBH,GAG7DsH,EAAKC,AA5BI,EAACzV,EAAM0V,KACtB,IAAMzP,EAAQyP,EAAU,KAAK,CAAC,KAC1BC,EAAgB3V,EACpB,GAAI2V,AAAkBlW,SAAlBkW,GAGJ,IAAK,IAAIlV,EAAI,EAAGA,EAAIwF,EAAM,MAAM,CAAE,EAAExF,EAClC,GAAIwF,AAAa,KAAbA,CAAK,CAACxF,EAAE,EAGZ,GAAI,AAAmC,SAA5BkV,CAAa,CAAC1P,CAAK,CAACxF,EAAE,CAAC,CAChC,OAEFkV,EAAgBA,CAAa,CAAC1P,CAAK,CAACxF,EAAE,CAAC,CAGzC,OAAOkV,EACT,GAWsB7I,EAAYsI,EAAO,YAAY,EAC7CrH,EAAU5L,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EACd,IACEoT,EAAc,CACZ,IAAKH,EACLI,GAAAA,EACA1I,WAAAA,EACAyB,WAAAA,CACF,GACF,CAACiH,EAAIJ,EAAQtI,EAAYyB,EAAW,EA4BtC,MACE,WAAC,OAAI,MAAO,CAAE,MAAO,MAAO,E,UAC1B,UAAC9H,GAAAA,CAAUA,CAAAA,CAAC,MAAM,gBAAgB,MAAO,CAAE,WAAY,oBAAqB,SAAU,QAAS,E,SAC5F2O,EAAO,YAAY,GAEtB,UAACd,GAAMA,CAEL,QAhCmB,AAACtB,IACxB,IAAM4C,EAAM,AAAa,UAAb,OAAO5C,EAAiB,CAAE,WAAYA,EAAE,GAAG,AAAC,EAAIA,EACtD6C,EAAW9H,EAAQ,YAAY,CAAC6H,GACtCT,EAAcrI,GAAY,IAAI,CAAC,KAC7BuI,EAAc,IAAI9G,EAAYsH,EAAS,CACzC,EACF,EA2BM,UAzBqB,AAACjX,IAC1BmP,EAAQ,eAAe,CAACnP,GACxBuW,EAAcrI,GAAY,IAAI,CAAC,KAC7BuI,EAAc,IAAI9G,EAAW,KAAK,CAAC,EAAG3P,MAAS2P,EAAW,KAAK,CAAC3P,EAAM,GAAG,CAC3E,EACF,EAqBM,OAAQmP,EAAQ,eAAe,GAC/B,MAAOA,EAAQ,UAAU,GACzB,KAAK,YACL,MAAM,aACN,SAAS,e,EAPL,cASN,UAACuG,GAAMA,CAEL,QA3BiB,AAACtB,IACtBjF,EAAQ,UAAU,CAAC,AAAa,UAAb,OAAOiF,EAAiB,CAAE,WAAYA,EAAE,GAAG,AAAC,EAAIA,GACnEmC,EAAcrI,EAChB,EAyBM,UAvBmB,AAAClO,IACxBmP,EAAQ,aAAa,CAACnP,GACtBuW,EAAcrI,EAChB,EAqBM,OAAQiB,EAAQ,aAAa,GAC7B,MAAOA,EAAQ,QAAQ,GACvB,KAAK,UACL,MAAM,WACN,SAAS,c,EAPL,Y,EAWZ,CChGe,SAAS+H,GAAKlP,CAAiC,E,GAAjCA,CAAEuO,cAAAA,CAAa,CAAEY,GAAAA,CAAE,CAAEjJ,WAAAA,CAAU,CAAE,CAAjClG,EAC3B,GAAI,CAACmP,EACH,OAAO,KAGT,GAAM,CAAEC,QAAAA,CAAO,CAAE,CAAGD,EAAG,GAAG,CAAC,IAAI,QAE/B,AAAKC,EAAQ,MAAM,CAKjB,UAAC1O,GAAAA,CAAIA,CAAAA,C,SACF0O,EAAQ,GAAG,CAAC,AAACC,GACZ,UAACjB,GAAAA,EAAQA,CAAAA,CAAsB,QAAO,GAAC,eAAc,G,SACnD,UAACE,GAAQA,CAAC,OAAQe,EAAG,WAAYnJ,EAAY,cAAeqI,C,IAD/Cc,EAAE,YAAY,E,GAN1B,UAACxP,GAAAA,CAAUA,CAAAA,C,SAAC,uB,EAYvB,C,iFCrBA,IAAIyP,GAAe,KCiBb9E,GAAS,iBAETC,GAAU,CACd,QAAS,CAAC,EAAED,GAAO,QAAQ,CAAC,CAC5B,QAAS,CAAC,EAAEA,GAAO,QAAQ,CAAC,CAC5B,KAAM,CAAC,EAAEA,GAAO,KAAK,CAAC,AACxB,EAEME,GAAa9L,AAAAA,GAAAA,GAAAA,CAAAA,AAAAA,EAAO+C,GAAAA,CAAIA,EAAE,AAAC,I,GAAA,CAAExD,MAAAA,CAAK,CAAE,G,MAAM,CAC9C,CAAC,CAAC,GAAG,EAAEsM,GAAQ,OAAO,CAAC,CAAC,CAAC,CAAE,CACzB,QAAStM,EAAM,OAAO,CAAC,EAAG,GAC1B,gBAAiBA,EAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CACjD,aAAc,CAAC,UAAU,EAAEA,EAAM,OAAO,CAAC,OAAO,CAAC,CAAC,AACpD,EAEA,CAAC,CAAC,GAAG,EAAEsM,GAAQ,OAAO,CAAC,CAAC,CAAC,CAAE,CACzB,QAAStM,EAAM,OAAO,CAAC,EACzB,CACF,C,GAEMoR,GAAkB3Q,AAAAA,GAAAA,GAAAA,CAAAA,AAAAA,EAAO4Q,GAAAA,CAASA,EAAE,AAAC,I,GAAA,CAAErR,MAAAA,CAAK,CAAE,G,MAAM,CACxD,CAAC,CAAC,GAAG,EAAEsM,GAAQ,IAAI,CAAC,CAAC,CAAC,CAAE,CACtB,UAAW,OACX,WAAY,CAACtM,EAAM,OAAO,CAAC,GAC3B,YAAa,CAACA,EAAM,OAAO,CAAC,GAC5B,aAAc,CACZ,WAAY,CAACA,EAAM,OAAO,CAAC,GAC3B,YAAa,CAACA,EAAM,OAAO,CAAC,EAC9B,CACF,CACF,C,GAiHMsR,GAAuB,CAC3B,QApFF,SAAczP,CAAoC,E,GAApCA,CAAE0P,SAAAA,CAAQ,CAAExX,MAAAA,CAAK,CAAEsW,OAAAA,CAAM,CAAEmB,QAAAA,CAAO,CAAE,CAApC3P,EAKZ,MACE,UAAC4P,GAAAA,CAAgBA,CAAAA,CACf,QAAS,UAACC,GAAAA,CAAQA,CAAAA,CAAC,QAAS3X,EAAO,SANlB,AAACgC,IACpBsU,CAAM,CAACkB,EAAS,CAAGxV,EAAE,MAAM,CAAC,OAAO,CACnCyV,GACF,C,GAII,MAAOD,EACP,eAAe,K,EAGrB,EAyEE,OAvEF,SAAa1P,CAAoC,E,GAApCA,CAAE0P,SAAAA,CAAQ,CAAExX,MAAAA,CAAK,CAAEsW,OAAAA,CAAM,CAAEmB,QAAAA,CAAO,CAAE,CAApC3P,EACL,CAACxF,EAAGsV,EAAK,CAAGnW,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAASzB,GAW3B,MAAO,UAACkT,GAAAA,CAASA,CAAAA,CAAC,QAAQ,WAAW,UAAS,GAAC,SAV1B,AAAClR,IACpB4V,EAAK5V,EAAE,MAAM,CAAC,KAAK,CACrB,EAQuE,OAPxD,KACTM,IAAMtC,IACRsW,CAAM,CAACkB,EAAS,CAAGlV,EACnBmV,IAEJ,EAEuF,MAAOD,EAAU,MAAOlV,C,EACjH,EA2DE,OAdF,SAAawF,CAAiC,E,GAAjCA,CAAE0P,SAAAA,CAAQ,CAAExX,MAAAA,CAAK,CAAEyX,QAAAA,CAAO,CAAExV,IAAAA,CAAG,CAAE,CAAjC6F,EACX,MACE,WAACuP,GAAAA,CAAgB,OAAM,GAAC,UAAW9E,GAAQ,IAAI,C,UAC7C,UAACsF,GAAAA,CAAgBA,CAAAA,CAAC,WAAY,UAACC,GAAAA,CAAUA,CAAAA,CAAAA,GAAK,UAAWvF,GAAQ,OAAO,C,SACtE,UAAC5K,GAAAA,CAAUA,CAAAA,C,SAAE6P,C,KAEf,UAACO,GAAAA,CAAgBA,CAAAA,CAAC,UAAWxF,GAAQ,OAAO,C,SAAGyF,GAAmBhY,EAAOyX,EAASxV,E,KAGxF,EAME,OA1DF,SAAa6F,CAAoC,E,GAApCA,CAAE0P,SAAAA,CAAQ,CAAExX,MAAAA,CAAK,CAAEsW,OAAAA,CAAM,CAAEmB,QAAAA,CAAO,CAAE,CAApC3P,EACL,CAACxF,EAAGsV,EAAK,CAAGnW,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,CAACzB,GAW5B,MAAO,UAACkT,GAAAA,CAASA,CAAAA,CAAC,QAAQ,WAAW,UAAS,GAAC,SAV1B,AAAClR,IACpB4V,EAAK5V,EAAE,MAAM,CAAC,KAAK,CACrB,EAQuE,OAPxD,KACTM,IAAMtC,IACRsW,CAAM,CAACkB,EAAS,CAAG,CAAClV,EACpBmV,IAEJ,EAEuF,MAAOD,EAAU,MAAOlV,C,EACjH,EA8CE,WA5CF,SAAoBwF,CAAoC,E,GAApCA,CAAE0P,SAAAA,CAAQ,CAAExX,MAAAA,CAAK,CAAEsW,OAAAA,CAAM,CAAEmB,QAAAA,CAAO,CAAE,CAApC3P,EACZmQ,EAAUjY,EAAM,iBAAiB,EAAIA,EAAM,iBAAiB,CAAC,KAAK,CAAGA,EAAM,iBAAiB,CAAC,KAAK,CAAG,GACrG,CAACsC,EAAGsV,EAAK,CAAGnW,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAASwW,GAW3B,MACE,UAAC/E,GAAAA,CAASA,CAAAA,CACR,QAAQ,WACR,WAAY,CACV,eAAgB,UAACgF,GAAAA,CAAcA,CAAAA,CAAC,SAAS,Q,SAAQ,G,EACnD,EACA,UAAS,GACT,SAjBiB,AAAClW,IACpB4V,EAAK5V,EAAE,MAAM,CAAC,KAAK,CACrB,EAgBI,OAfW,KACTM,IAAMtC,IACRsW,CAAM,CAACkB,EAAS,CAAC,iBAAiB,CAAG,CAAE,MAAO,CAAC,CAAC,EAAElV,EAAE,CAAC,AAAC,EACtDmV,IAEJ,EAWI,MAAOD,EACP,MAAOlV,C,EAGb,EAmBE,SD7Ia,SAAkBwF,CAAyC,E,GAAzCA,CAAE0P,SAAAA,CAAQ,CAAExX,MAAAA,CAAK,CAAEsW,OAAAA,CAAM,CAAEmB,QAAAA,CAAO,CAAExV,IAAAA,CAAG,CAAE,CAAzC6F,EACzB,CAACxF,EAAGsV,EAAK,CAAGnW,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAASzB,EAAM,IAAI,EAC/B,CAACmY,EAAGC,EAAK,CAAG3W,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,EAAE,QAE7BC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,MAKR2W,AAJA,iBAEED,EADa,MAAME,AA7BzB,eAA4BrW,CAAG,EAoB7B,OAnBI,AAACmV,IACHA,CAAAA,GAAe,MAAMnV,EAAI,mBAAmB,CAAC,CAC3C,MAAO,CACL,MAAO,cACT,EACA,iBAAkB,CAChB,MAAO,WACP,cAAe,GACf,YAAa,EACf,CACF,EAAC,EAIUsW,AAFC,OAAMnB,GAAa,SAAS,EAAC,EAExB,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,AAAC3O,GAAU,EACrD,MAAOA,EAAK,KAAK,CACjB,MAAOA,EAAK,KAAK,CAAC,MAAM,CAAG,GAAK,CAAC,EAAEA,EAAK,KAAK,CAAC,KAAK,CAAC,EAAG,IAAI,GAAG,CAAC,CAAGA,EAAK,KAAK,AAC9E,GAGF,EAQsCxG,GAElC,GAEF,EAAG,EAAE,EAQEkW,AAAa,IAAbA,EAAE,MAAM,CACb,UAAC,M,SAAG,qB,GAEJ,UAACK,GAAAA,CAAWA,CAAAA,CAAC,KAAK,QAAQ,UAAS,G,SACjC,UAACC,GAAAA,CAAMA,CAAAA,CACL,SAXe,AAACzW,IACpB4V,EAAK5V,EAAE,MAAM,CAAC,KAAK,EACnBsU,CAAM,CAACkB,EAAS,CAAC,IAAI,CAAGxV,EAAE,MAAM,CAAC,KAAK,CACtCsU,CAAM,CAACkB,EAAS,CAAC,KAAK,CAAG,CAAE,kBAAmB,CAAE,MAAO,CAAC,CAAC,EAAExV,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,AAAC,CAAE,EAC/EyV,GACF,EAOM,aAAY,GACZ,UAAS,GACT,MAAOnV,EACP,YAAa,AAACoW,GACZ,AAAIA,AAAoB,IAApBA,EAAS,MAAM,CACV,UAAC,M,SAAG,mB,GAENA,E,SAGRP,EAAE,GAAG,CAAC,AAACQ,GACN,UAACC,GAAAA,CAAQA,CAAAA,CAAe,MAAOD,EAAE,KAAK,C,SACnCA,EAAE,KAAK,EADKA,EAAE,KAAK,E,IAOhC,CCoGA,EAEME,GAAM,UAERC,GAAoB,GAET,SAASd,GAAmBhK,CAAU,CAAEyJ,CAAO,CAAExV,CAAG,CAAE8W,CAAK,EACpEA,GAASA,EAAM,cAAc,EAC/BD,CAAAA,GAAoB,EAAG,EAGzB,IAAME,EAAahP,OAAO,IAAI,CAACgE,GAC5B,GAAG,CAAC,AAACnI,QAlIO7F,EAmIX,GAAkD,KAA9C,CAAC,gBAAiB,UAAU,CAAC,OAAO,CAAC6F,IAGrCgT,GAAI,IAAI,CAAChT,GAFX,MAAO,GAMT,IAAMwM,GA1IKrS,EA0IUgO,CAAU,CAACnI,EAAI,CAzIxC,AAAIoT,MAAM,OAAO,CAACjZ,GACT,QAGL8Y,IAAqBjT,AAAQ,aAqISA,GArIK,AAAiB,UAAjB,OAAO7F,GAAsB,SAAUA,GAAS,UAAWA,EACjG,WAGL8Y,IAAqB9Y,GAAS,AAAiB,UAAjB,OAAOA,GAAsB,sBAAuBA,EAC7E,aAGL,AAAiB,WAAjB,OAAOA,EACF,UAEL,AAAiB,UAAjB,OAAOA,EACF,SAEL,AAAiB,UAAjB,OAAOA,EACF,SAELA,GAAS,AAAiB,UAAjB,OAAOA,EACX,SAEF,iBAkHH,CAAI,CAACuX,EAAoB,CAAClF,EAAK,EAIxB,CACL,UAAWkF,EAAoB,CAAClF,EAAK,CACrC,SAAUxM,EACV,OAAQmI,EACR,MAAOA,CAAU,CAACnI,EAAI,CACtB,IAAK,CAAC,EAAEA,EAAI,CAAC,EAAEmI,CAAU,CAACnI,EAAI,CAAC,CAAC,AAClC,CACF,GACC,MAAM,CAACqT,SAEV,MACE,UAAC1G,GAAUA,CAAC,UAAS,GAAC,UAAU,SAAS,IAAK,EAAG,WAAW,U,SACzDwG,EAAW,GAAG,CAAC,AAACL,GACf,UAAClP,GAAAA,CAAIA,CAAAA,CAAa,MAAO,CAAE,MAAO,MAAO,E,SACvC,UAACkP,EAAE,SAAS,EAEV,IAAK1W,EACL,SAAU0W,EAAE,QAAQ,CACpB,MAAOA,EAAE,KAAK,CACd,OAAQ3K,EACR,QAASyJ,C,EALJkB,EAAE,GAAG,C,EAFHA,EAAE,GAAG,E,EAaxB,CCrNe,SAASQ,GAAWrR,CAAmC,E,GAAnCA,CAAEsR,IAAAA,CAAG,CAAEnC,GAAAA,CAAE,CAAEoC,OAAAA,CAAM,CAAEjW,QAAAA,CAAO,CAAE2V,MAAAA,CAAK,CAAE,CAAnCjR,EAC3B,CAACkG,EAAYqI,EAAc,CAAGvI,GAAcsL,GAAK,OACjDnX,EAAMY,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,ElBRCsL,IkBUP,CAACmL,EAAoBC,EAAoB,CAAG9X,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS2B,AAAiC,KAAjCA,EAAQ,GAAG,CAAC,kBAOjEqU,EAAU+B,AAAAA,GAAAA,EAAAA,WAAAA,AAAAA,EAAY,KAC1BnD,EAAcrI,EAChB,EAAG,CAACoL,EAAKnC,EAAIjJ,EAAW,SAExB,AAAKiJ,GAIAmC,GAAQpL,EAKX,WAAC,OACC,MAAO,CACL,SAAU,QACV,QAAS,KACX,E,UAECqL,GACC,uB,UACE,UAAC5P,GAAAA,CAAIA,CAAAA,CAAC,KAAI,GAAC,UAAS,GAAC,WAAW,S,SAC9B,UAACiO,GAAAA,CAAgBA,CAAAA,CACf,QACE,UAACC,GAAAA,CAAQA,CAAAA,CAAC,QAAS2B,EAAoB,SA7B3B,AAACtX,IACzBoB,EAAQ,IAAI,CAAC,gBAAiBpB,EAAE,MAAM,CAAC,OAAO,EAC9CuX,EAAoBvX,EAAE,MAAM,CAAC,OAAO,CACtC,EA0BkF,MAAM,wB,GAE5E,MAAM,wBACN,eAAe,K,KAGnB,UAACoT,GAAAA,CAAOA,CAAAA,CAAAA,G,GAGZ,UAAC4B,GAAIA,CAAC,WAAYhJ,EAAY,cAAeqI,EAAe,GAAIY,C,GAC/De,GAAmBhK,EAAYyJ,EAASxV,EAAK8W,G,GA7BzC,IAgCX,C,2DCnDe,SAASU,GAAiB3R,CAAsB,E,GAAtBA,CAAEiG,MAAAA,CAAK,CAAE0G,KAAAA,CAAI,CAAEC,MAAAA,CAAK,CAAE,CAAtB5M,EACjC,CAAC4R,EAAaC,EAAe,CAAGlY,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IACzC,CAACmY,EAAcC,EAAgB,CAAGpY,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,MAC3C,CAACqY,EAAqBC,EAAuB,CAAGtY,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,EAAE,EAC3D,CAACuY,EAAWC,EAAYC,EAAW,CAAGC,ACT/B,WACb,GAAM,CAACC,EAAMC,EAAQ,CAAG5Y,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IAClB,CAAC6Y,EAAMC,EAAQ,CAAG9Y,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IAClB+Y,EAAchB,AAAAA,GAAAA,EAAAA,WAAAA,AAAAA,EAAY,AAACiB,IAC1BA,GAGLJ,EAAQI,EACV,EAAG,EAAE,EACCC,EAAe,KACnB,GAAM,CAAEC,KAAAA,CAAI,CAAEC,IAAAA,CAAG,CAAEC,MAAAA,CAAK,CAAEC,OAAAA,CAAM,CAAE,CAAGV,EAAK,qBAAqB,GAC/DG,EAAQ,CAAEI,KAAAA,EAAMC,IAAAA,EAAKC,MAAAA,EAAOC,OAAAA,CAAO,EACrC,EAqBA,MApBAC,AAAAA,GAAAA,EAAAA,eAAAA,AAAAA,EAAgB,KACd,GAAKX,GAGL,GAAI,AAA0B,YAA1B,OAAOY,eAA+B,CACxC,IAAIC,EAAiB,IAAID,eAAeN,GAExC,OADAO,EAAe,OAAO,CAACb,GAChB,KACLa,EAAe,SAAS,CAACb,GACzBa,EAAe,UAAU,CAACb,GAC1Ba,EAAiB,IACnB,CACF,CAIA,OAFAP,IACA9a,OAAO,gBAAgB,CAAC,SAAU8a,GAC3B,KACL9a,OAAO,mBAAmB,CAAC,SAAU8a,EACvC,EACF,EAAG,CAACN,EAAK,EACF,CAACI,EAAaF,EAAMF,EAAK,AAClC,IDxBQnU,EAAQ8O,AAAAA,GAAAA,EAAAA,CAAAA,AAAAA,IAERmG,EAAY1B,AAAAA,GAAAA,EAAAA,WAAAA,AAAAA,EAAY,KACxBM,EAAoB,MAAM,EAG9B/L,EAAM,aAAa,CAAC3L,KAAK,KAAK,CAACwX,EAAa,QAAQ,KAAK,IAAI,CAAClF,EAChE,GAoDA,MAlDAhT,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,GAAI,CAAC+S,EACH,OAEF,IAAMvG,EAAY,KAChBH,GACE0G,GACA1G,EAAM,aAAa,GAAG,IAAI,CAAC,AAACzF,IAC1BmM,GAAQkF,EAAevX,KAAK,SAAS,CAACkG,GAAS,CAAC,EAAG,KAAM,GAC3D,EACJ,EAIA,OAFAyF,EAAM,EAAE,CAAC,UAAWG,GACpBA,IACO,KACLH,GAASA,EAAM,cAAc,CAAC,UAAWG,EAC3C,CACF,EAAG,CAACH,GAASA,EAAM,EAAE,CAAE0G,EAAK,EAE5B/S,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,GAAI,CAACsY,GAAa,CAACE,GAAc,CAACD,GAAc,CAACP,EAC/C,OAEF,GAAM,CAAEiB,KAAAA,CAAI,CAAEC,IAAAA,CAAG,CAAEC,MAAAA,CAAK,CAAEC,OAAAA,CAAM,CAAE,CAAGb,EACrC,GAAIU,AAAS,IAATA,GAAcC,AAAQ,IAARA,GAAaC,AAAU,IAAVA,GAAeC,AAAW,IAAXA,EAC5C,OAEF,IAAMK,EAASC,GAAAA,EAAAA,CAAAA,MAAoB,CAAClB,EAAY,CAC9C,MAAOR,EACP,SAAU,OACV,qBAAsB,GACtB,MAAOzT,AAAuB,SAAvBA,EAAM,OAAO,CAAC,IAAI,CAAc,UAAY,UACrD,GACAkV,EAAO,MAAM,CAAC,CAAE,MAAOlB,EAAW,KAAK,CAAE,OAAQA,EAAW,MAAM,AAAC,GACnE,IAAMoB,EAAeF,EAAO,2BAA2B,CAAC,KAEtDpB,EADUqB,GAAAA,EAAAA,CAAAA,eAA6B,GAEzC,GAGA,OAFAD,EAAO,KAAK,GACZtB,EAAgBsB,GACT,KACLE,EAAa,OAAO,GACpB,IAAMC,EAAcH,EAAO,QAAQ,EAC/BG,CAAAA,GACFA,EAAY,OAAO,GAErBH,EAAO,OAAO,EAChB,CACF,EAAG,CAACjB,EAAYD,EAAYP,EAAY,EAGtC,WAAC6B,GAAAA,CAAMA,CAAAA,CACL,qBAAoB,GACpB,KAAM9G,EACN,OAAO,QACP,SAAS,KACT,QAASC,EACT,WAAY,CACV,MAAO,CACL,OAAQ,MACR,MAAO,KACT,CACF,E,UAEA,UAAC8G,GAAAA,CAAWA,CAAAA,C,SAAC,0B,GACb,UAACC,GAAAA,CAAaA,CAAAA,CAAC,SAAQ,G,SACrB,UAAC,OAAI,IAAKzB,EAAW,MAAO,CAAE,SAAU,SAAU,OAAQ,MAAO,C,KAEnE,WAAC0B,GAAAA,CAAaA,CAAAA,C,UACZ,UAAC5R,GAAAA,CAAMA,CAAAA,CAAC,QAAQ,YAAY,QAAS4K,E,SAAO,Q,GAG5C,UAAC5K,GAAAA,CAAMA,CAAAA,CAAC,QAAQ,YAAY,QAASoR,EAAW,SAAUpB,EAAoB,MAAM,CAAG,E,SAAG,S,QAMlG,CE9FA6B,KAAK,iBAAiB,CAAG,CACvB,WAAUtR,EAAGhD,QAEEuU,OADTvU,AAAU,SAAVA,EACgB,IAAImC,IAAI,gBAA0D,EAEpE,IAAIA,IAAI,cAAqD,EAEnF,ECVA,IAAMqS,GAAa7P,EAAAA,aAAmB,CAAC,CACrC,iBAAkB,KAClB,UAAW,KACX,aAAc,KAAO,EACrB,eAAgB,KAChB,kBAAmB,KAAO,CAC5B,GCNM8P,GAAgB9P,EAAAA,aAAmB,GCO1B,SAAS+P,GAAMjU,CAAc,E,GAAdA,CAAEwC,GAAAA,CAAE,CAAE0R,OAAAA,CAAM,CAAE,CAAdlU,EACtBmU,EAASpZ,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EDNFiZ,ICOPI,EAAKjG,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,IAgBX,MAfAvU,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,IAAMlC,EAAIyc,EAAO,MAAM,CAAC,CACtB3R,GAAAA,EACA,QAAS4R,EAAG,OAAO,AACrB,GAIA,OAHA1c,EAAE,IAAI,CAAC,AAAC4Z,IACN4C,EAAO5C,EAAK8C,EAAG,OAAO,CACxB,GACO,KACL1c,EAAE,IAAI,CAAC,AAAC+C,IACNA,EAAE,OAAO,EACX,EACF,CACF,EAAG,CAAC+H,EAAG,EAGL,UAAC,OACC,IAAK4R,EACL,MAAO,CACL,OAAQ,OACR,gBAAiB,OACnB,C,EAGN,CCnBA,IAAM5J,GAAS,OAETC,GAAU,CACd,cAAe,CAAC,EAAED,GAAO,cAAc,CAAC,CACxC,KAAM,CAAC,EAAEA,GAAO,KAAK,CAAC,AACxB,EAEME,GAAa9L,AAAAA,GAAAA,GAAAA,CAAAA,AAAAA,EAAO+C,GAAAA,CAAIA,EAAE,AAAC,I,GAAA,CAAExD,MAAAA,CAAK,CAAE,G,MAAM,CAC9C,CAAC,CAAC,GAAG,EAAEsM,GAAQ,aAAa,CAAC,CAAC,CAAC,CAAE,CAC/B,MAAOtM,EAAM,OAAO,CAAC,IAAI,CAAC,SAAS,AACrC,EAEA,CAAC,CAAC,GAAG,EAAEsM,GAAQ,IAAI,CAAC,CAAC,CAAC,CAAE,CACtB,UAAWtM,EAAM,OAAO,CAAC,EAAE,CAC3B,aAAc,CAAC,EAAEA,EAAM,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,AAC/C,CACF,C,GAEe,SAAS,GAAC6B,CAA6B,E,GAA7BA,CAAEwC,GAAAA,CAAE,CAAE6R,WAAAA,CAAU,CAAEC,UAAAA,CAAS,CAAE,CAA7BtU,EAEjB7F,EAAMY,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EzBjCCsL,IyBkCP,CAAC8B,EAAW,CAAGN,KACf,CAAC5B,EAAOqC,EAAS,CAAG3O,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,MAC7B,CAAC4a,EAAWC,EAAa,CAAG7a,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IACrC,CAAC8a,EAAUC,EAAY,CAAG/a,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,MAEnC,CAAEgb,iBAAAA,CAAgB,CAAEC,UAAAA,CAAS,CAAEC,aAAAA,CAAY,CAAEC,kBAAAA,CAAiB,CAAEC,eAAAA,CAAc,CAAE,CAAGha,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EHjC5EgZ,IGmCPiB,EAAaD,IAAmBvS,EAEhCyS,EAAS9G,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,IACfvU,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,IAAMa,EAAIN,EAAI,SAAS,CAACqI,GAAI,IAAI,CAAC,AAAC4C,IAChCkD,EAASlD,GACT+C,EAAW,GAAG,CAAC,CAAC,EAAE3F,EAAG,CAAC,CAAE4C,GACjBA,IAGT,MAAO,KACL3K,EAAE,IAAI,CAAC,AAAC2K,GAAMA,EAAE,IAAI,CAAC,SACvB,CACF,EAAG,CAAC5C,EAAG,EAEP,GAAM,CAAC0S,EAAYC,EAAc,CAAGxb,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IACvCyb,EAAc1D,AAAAA,GAAAA,EAAAA,WAAAA,AAAAA,EAAY,KAC9ByD,EAAc,GAChB,EAAG,EAAE,EAECjB,EAASxC,AAAAA,GAAAA,EAAAA,WAAAA,AAAAA,EACb,CAACJ,EAAK8C,KACJa,EAAO,OAAO,CAAG,CACf3D,IAAAA,EACA8C,GAAAA,CACF,EACAM,EAAYpD,EACd,EACA,CAAC9O,EAAG,EAYA6S,EAAS3D,AAAAA,GAAAA,EAAAA,WAAAA,AAAAA,EACb,W,IAAC4D,EAAW,UAAXA,MAAAA,CAAAA,GAAAA,AAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,EAAAA,SAAAA,CAAAA,EAAAA,CACC,GAAKL,EAAO,OAAO,CAGnB,GAAIK,EACFd,EAAa,IACbS,EAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,AAAChe,IAChDA,GAAOA,EAAI,GAAG,EAChBa,OAAO,IAAI,CAACb,EAAI,GAAG,EAErBud,EAAa,GACf,OACK,CACL,IAAMe,EAAgBN,EAAO,OAAO,CAAC,EAAE,CAAC,qBAAqB,GAC7DA,EAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,AAACO,IACrDte,MAAM,gBAAiB,CACrB,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAMoD,KAAK,SAAS,CAACkb,EACvB,GACA1d,OAAO,IAAI,CACT,CAAC,iBAAiB,EAAE0d,EAAS,GAAG,CAAC,CAAC,CAClC,WACA,CAAC,OAAO,EAAE9O,KAAK,KAAK,CAAC6O,EAAc,MAAM,EAAE,OAAO,EAAE7O,KAAK,KAAK,CAAC6O,EAAc,KAAK,EAAE,CAAC,CAEzF,EACF,CACF,EACA,CAACtP,EAAO0O,EAAiB,EAGrBc,EACJ,CAACT,GAAcC,EAAO,OAAO,EAAIL,GAAaA,IAAcK,EAAO,OAAO,CAAC,GAAG,CAC1E,CACE,UAAW,sCACb,EACA,CAAC,EAIP,MACE,WAACvK,GAAUA,CAAC,UAAS,GAAC,UAAU,SAAS,MAAO,CAAE4J,UAAAA,EAAW,OAAQ,OAAQ,SAAU,UAAW,E,UAChG,UAAC3S,GAAAA,CAAIA,CAAAA,CAAC,KAAI,G,SACR,WAAC+T,GAAAA,CAAOA,CAAAA,CAAC,QAAQ,QAAQ,eAAc,GAAC,MAAO,CAAE,QAAS,QAAS,QAAS,CAAE,E,UAC5E,UAACC,GAAWA,CAAC,MAAO1P,EAAO,KAAMiP,EAAY,MAAOE,C,GACpD,UAACrU,GAAAA,CAAUA,CAAAA,CACT,MAAM,2BACN,UAAW0J,GAAQ,aAAa,CAChC,SAAU,CAACxE,EACX,QAAS,IAAMkP,EAAc,IAC7B,KAAK,Q,SAEJpV,GAAQ,CACP,KAAM,SACN,QAAS,YACT,OAAQ,CACN,CACE,KAAM,OACN,MAAO,CACL,EAAG,wmBACL,CACF,EACD,AACH,E,GAEF,UAACgB,GAAAA,CAAUA,CAAAA,CACT,MAAM,6BACN,UAAW0J,GAAQ,aAAa,CAChC,SAAU,CAACxE,EACX,KACEA,EACI,GAAGL,SAAS,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAW,cAC3C9N,OAAO,QAAQ,CAAC,MAAM,CAAG,IAAM,aACvBmO,EAAM,EAAE,UAAU0O,kBAAuC,CACnE,GAEN,OAAO,SACP,KAAK,Q,SAEJ5U,GAAQ,CACP,KAAM,SACN,QAAS,YACT,OAAQ,CACN,CACE,KAAM,OACN,MAAO,CACL,EAAG,oIACL,CACF,EACD,AACH,E,GAEF,UAACgB,GAAAA,CAAUA,CAAAA,CACT,MAAM,8BACN,UAAW0J,GAAQ,aAAa,CAChC,SAAU,CAACxE,EACX,QAAS,IAAMoP,IACf,KAAK,Q,SAEJtV,GAAQ,CACP,KAAM,SACN,QAAS,YACT,OAAQ,CACN,CACE,KAAM,OACN,MAAO,CACL,EAAG,2JACL,CACF,EACD,AACH,E,GAEDwU,EACC,UAAC9Q,GAAAA,CAAgBA,CAAAA,CAAC,KAAM,E,GAExB,UAAC1C,GAAAA,CAAUA,CAAAA,CACT,MAAM,kBACN,UAAW0J,GAAQ,aAAa,CAChC,SAAU,CAACxE,EACX,QAAS,IAAMoP,EAAO,IACtB,KAAK,Q,SAEJtV,GAAQ,CACP,KAAM,SACN,QAAS,YACT,OAAQ,CACN,CACE,KAAM,OACN,MAAO,CACL,EAAG,0HACL,CACF,EACD,AACH,E,GAGJ,UAAC4B,GAAAA,CAAIA,CAAAA,CAAC,GAAI,CAAE,KAAM,CAAE,C,GACnB0S,GACC,UAACtT,GAAAA,CAAUA,CAAAA,CACT,MAAM,OACN,UAAW0J,GAAQ,aAAa,CAChC,SAAU,CAACgK,GAvGNG,IAAcH,EAwGnB,QAAS,IAAMI,EAAaJ,GAC5B,KAAK,Q,SAEJ1U,GAAQ,CACP,KAAM,SACN,QAAS,YACT,OAAQ,CACN,CACE,KAAM,OACN,MAAO,CACL,EAAG,uJACL,CACF,EACD,AACH,E,GAGHsU,GACC,UAACtT,GAAAA,CAAUA,CAAAA,CACT,MAAM,SACN,SAAU,CAACkF,GAAS,CAACwO,EACrB,UAAWhK,GAAQ,aAAa,CAChC,QAAS,SA/KfuK,EACFF,EAAkB,OAElBA,EAAkBtS,GAClBqS,EAAaJ,KA4KL,KAAK,Q,SAEJ1U,GAAQ,CACP,KAAM,SACN,QAAS,YACT,OAAQ,CACN,CACE,KAAM,OACN,MAAO,CACL,EAAGiV,EACC,gFACA,gFACN,CACF,EACD,AACH,E,QAKR,UAACrT,GAAAA,CAAIA,CAAAA,CAAC,KAAI,GAAC,GAAE,GAAC,MAAO,CAAE,GAAG8T,CAAW,CAAE,KAAM,EAAG,UAAW,CAAE,EAAG,UAAWhL,GAAQ,IAAI,C,SACrF,UAACwJ,GAAKA,CAAC,GAAIzR,EAAI,OAAQ0R,C,OAI/B,CC5Qe,SAAS0B,GAAM5V,CAAsB,E,GAAtBA,CAAEpI,KAAAA,CAAI,CAAE0D,QAAAA,CAAO,CAAEqL,IAAAA,CAAG,CAAE,CAAtB3G,EACtBmU,EAASpZ,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EHPFiZ,IGQP,CAAEY,UAAAA,CAAS,CAAEC,aAAAA,CAAY,CAAE,CAAG9Z,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,EJFvBgZ,IIGP,CAAC7N,EAAW,CAAGF,GAAc4O,GAAW,aA6B9C,CA3BAhb,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,GAAI,CAAC+M,EACH,OAEF,IAAM1P,EAAMkd,EAAO,MAAM,CAAC,CACxB,KAAMvc,EAAK,SAAS,CAAC,IAAI,CACzB,WAAY,CACV,GAAI0D,AAAiC,KAAjCA,EAAQ,GAAG,CAAC,iBAA6BA,EAAQ,KAAK,CAAC1D,EAAK,SAAS,CAAC,IAAI,EAAI,CAAC,CAAC,CACpF,MAAO,CACL,IAAK+O,EACL,MAAO/O,EAAK,SAAS,CAAC,IAAI,AAC5B,CACF,CACF,GAIA,OAHAX,EAAI,IAAI,CAAC,AAACwD,IACRoa,EAAapa,EACf,GACO,KACLxD,EAAI,IAAI,CAAC,AAACwD,GAAMA,EAAE,OAAO,GAC3B,CACF,EAAG,CAACkM,EAAI,EAER/M,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACHsM,GACL5K,EAAQ,KAAK,CAAC1D,EAAK,SAAS,CAAC,IAAI,CAAEsO,EACrC,EAAG,CAACA,EAAW,EAEX,AAAC0O,GAAaA,EAAU,EAAE,GAAKjO,GAGjC,UAAChF,GAAAA,CAAIA,CAAAA,CACH,KAAI,GACJ,UAAS,GACT,eAAe,SACf,MAAO,CACL,OAAQ,MACV,E,SAEA,UAACA,GAAAA,CAAIA,CAAAA,CAAC,KAAI,GAAC,GAAE,GAAC,MAAO,CAAE,KAAM,EAAG,SAAU,CAAE,E,SAC1C,UAACkU,GAAIA,CAAC,GAAIlP,C,OAZ+B,IAgBjD,CChDe,SAASmP,GAAW9V,CAAgB,E,GAAhBA,CAAE+V,MAAAA,CAAK,CAAEpY,MAAAA,CAAK,CAAE,CAAhBqC,EAC3B7F,EAAMY,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,E3BPCsL,I2BQP,CAAC0D,EAAO,CnBDPhB,GmBCuB5O,EnBDT,gBmBEf,CAAC6b,EAASC,EAAW,CAAGtc,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,MAEjC,CAAEob,eAAAA,CAAc,CAAE,CAAGha,AAAAA,GAAAA,EAAAA,UAAAA,AAAAA,ELLdgZ,IKqBb,GAdAna,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACRO,EACG,UAAU,CAAC,CACV,OAAQ4b,EAER,MAAO,CACL,MAAO,iBACT,CACF,GACC,IAAI,CAAC,AAACzL,IACL2L,EAAW3L,EAAK,KAAK,CAAC,EAAG,IAC3B,EACJ,EAAG,CAACP,EAAQgM,EAAM,IAAI,CAAC,KAAK,EAExB,CAACC,EACH,OAAO,KAGT,IAAME,EAAUnB,EAAiBiB,EAAQ,MAAM,CAAC,AAAC3H,GAAMA,EAAE,KAAK,CAAC,GAAG,GAAK0G,GAAkBiB,EAEzF,MACE,UAACrU,GAAAA,CAAIA,CAAAA,CACH,UAAS,GACT,eAAe,SACf,IAAKoT,AAAqB,GAArBA,EACL,MAAO,CACL,OAAQA,EAAiB,OAASlc,MACpC,E,SAECqd,CAAO,CAAC,EAAE,CACTA,EAAQ,GAAG,CAAC,AAACrF,GACX,UAAClP,GAAAA,CAAIA,CAAAA,CAAC,KAAI,GAAC,GAAI,GAAI,GAAIoT,EAAiB,GAAK,EAAG,GAAIA,EAAiB,GAAK,E,SACxE,UAACc,GAAIA,CAAC,GAAIhF,EAAE,KAAK,CAAC,GAAG,CAAE,WAAU,GAAC,UAAW,G,IADmC,CAAC,EAAEA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAElT,EAAM,CAAC,GAK9G,UAACgE,GAAAA,CAAIA,CAAAA,CAAC,KAAI,G,SACR,WAAC,O,UACC,UAAC9B,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,S,SAAS,qC,GAC7B,UAACA,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,S,SAClB,UAAC,Q,SAAM,CAAC,QAAQ,EAAEkW,CAAK,CAAC,EAAE,CAAC,CAAC,CAAC,E,GAE/B,UAAClW,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,S,SAAS,qB,SAMzC,CCzBA,IAAMsW,GAAY,CAChB,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACD,CAEKC,GAAe,CAAC,SAAU,SAAU,UAAU,CAEpD,SAASC,GAAgBC,CAAG,EAC1B,MAAO,CACL,OAAQA,AAA0B,KAA1BA,EAAI,OAAO,CAAC,UACpB,OAAQA,AAA0B,KAA1BA,EAAI,OAAO,CAAC,UACpB,QAASA,AAA2B,KAA3BA,EAAI,OAAO,CAAC,WACrB,KAAMA,AAAwB,KAAxBA,EAAI,OAAO,CAAC,OACpB,CACF,CAEe,SAASC,KACtB,IAAM5P,EAAMwH,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,IACN/S,EAAWC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,IACX,CAAEzD,KAAAA,CAAI,CAAE,CAAG6B,IACX,CAAE+c,QAAAA,CAAO,CAAErc,IAAAA,CAAG,CAAE,CAAGsc,ACtED,CAAC,I,GAAA,CAAE7e,KAAAA,CAAI,CAAE,GAC3B,CAACuC,EAAKuc,EAAO,CAAG/c,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,MACzB,CAAC6c,EAASG,EAAW,CAAGhd,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IAEvCC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR+c,EAAW,IACN/e,GACLgf,IACG,IAAI,CAAC,AAACC,GAAcH,EAAOG,IAC3B,KAAK,CAAC,AAAC1f,GAAQC,QAAQ,GAAG,CAACD,IAC3B,OAAO,CAAC,IAAMwf,EAAW,IAC9B,EAAG,CAAC/e,EAAK,EAET,IAAMgf,EAAgB,UACpB,GAAI,CACF,GAAM,CAAE3d,SAAAA,CAAQ,CAAED,iBAAAA,CAAgB,CAAE,OAAQ4D,EAAe,IAAI,CAAE,OAAQ,CAAE7F,KAAAA,CAAI,CAAE,CAAG,CAAC,CAAC,CAAE,CAAGa,EACrFU,EAAQV,GAAM,QAAQ,MAC5B,GAAI,CAACU,EAAO,MAAM,AAAIkB,MAAM,oCAE5B,GAAIR,EACF,MAAO8d,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAe,CACpBxe,MAAAA,EACA,WAAY,CAAE,SAAU,SAAUU,iBAAAA,EAAkBjC,KAAAA,CAAK,CAC3D,GAAG,MAAM,GAGX,GAAIkC,EACF,MAAO6d,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAe,CACpBxe,MAAAA,EACA,WAAY,CACV,SAAU,SACVW,SAAAA,EACAlC,KAAAA,EACA,YAAa,CAAC,EAAEe,OAAO,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAC5D,mBAAoB,SACtB,CACF,GAAG,MAAM,GAIX,IAAMgF,EAASF,AAAwB,KAAxBA,EAAa,MAAM,CAAa,QAAU,OACnDma,EAAY,CAAC,EAAEja,EAAO,GAAG,EAAEF,EAAa,IAAI,CAAC,EAAEA,EAAa,IAAI,CAAG,CAAC,CAAC,EAAEA,EAAa,IAAI,CAAC,CAAC,CAAG,GAAG,CAAC,CACvG,MAAOka,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAe,CACpBxe,MAAAA,EACA,WAAY,CAAE,SAAU,SAAU,KAAMye,CAAU,CACpD,GAAG,MAAM,EACX,CAAE,MAAOxd,EAAO,CACd,MAAM,AAAIC,MAAM,sBAAuB,CAAE,MAAOD,CAAM,EACxD,CACF,EAEA,MAAO,CAAEid,QAAAA,EAASrc,IAAAA,EAAKuc,OAAAA,CAAO,CAChC,GDkBsC,CAAE9e,KAAAA,CAAK,GACrC0D,EAAUC,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAQ,IAAMC,EAAUrB,GAAM,CAACA,EAAI,EAC7C,CAACya,EAAWC,EAAa,CAAGlb,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,MACrC,CAACob,EAAgBD,EAAkB,CAAGnb,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,MAC/C,CAACwV,EAAI6H,EAAa,CAAGrd,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,MAC9B,CAACgb,EAAkBsC,EAAoB,CAAGtd,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS2B,EAAQ,GAAG,CAAC,cAC/D,CAAC4b,EAAiBC,EAAmB,CAAGxd,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS2B,EAAQ,GAAG,CAAC,aAAe,SAC5E,CAAC8b,EAAqBC,EAAuB,CAAG1d,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,SACzD,CAAC2d,EAAqBC,EAAuB,CAAG5d,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAASyc,IACzD,CAACoB,EAAgBC,EAAkB,CAAG9d,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS2B,AAAkC,KAAlCA,EAAQ,GAAG,CAAC,mBAC3Doc,EAAuBvJ,AAAAA,GAAAA,EAAAA,MAAAA,AAAAA,EAAO,MAC9B,CAACwJ,EAAWC,EAAa,CAAGje,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IAC5B,CAACke,EAAsBC,EAAwB,CAAG5T,EAAAA,QAAc,CAAC,MACjE,CAAC6T,EAAyBC,EAA2B,CAAG9T,EAAAA,QAAc,CAAC,MACvE,CAAC+T,EAAaC,EAAQ,CAAGve,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,IAClC,CAACwa,EAAQgE,EAAU,CAAGxe,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,EAAS,MAC/Bye,EAAejH,MAAM,OAAO,CAACvZ,GAAM,SAAWA,EAAK,MAAM,CAAC,MAAM,CAAG,CAAC,QAAS,UAAWA,EAAK,MAAM,CAAC,CAAG,EAAE,CACzG,CAACygB,EAASC,EAAW,CAAG3e,AAAAA,GAAAA,EAAAA,QAAAA,AAAAA,IAExBwE,EAAQ5C,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EAAQ,IAAM8C,EAAY+Y,GAAsB,CAACA,EAAoB,EAE7EmB,EAAahd,AAAAA,GAAAA,EAAAA,OAAAA,AAAAA,EACjB,IAAO,EACLoZ,iBAAAA,EACAC,UAAAA,EACAC,aAAAA,EACAE,eAAAA,EACAD,kBAAAA,CACF,GACA,CAACF,EAAWG,EAAgBJ,EAAiB,EAG/C/a,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACP,WACC,GAAIhC,EAAM,K9BlBR4gB,C8BmBA,Q9BnBAA,EAAS,KACbrT,GAAUvN,A8BkBcA,E9BlBT,SAAS,CAAC,IAAI,CAAEA,A8BkBPA,E9BlBY,SAAS,CAAC,GAAG,EAAIA,A8BkB7BA,E9BlBkC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,AAAC6gB,QA3BnExgB,CA4BbH,CAAAA,MAAM,CAACF,A8BiBeA,E9BjBV,SAAS,CAAC,IAAI,CAAC,CAAG6gB,EA3B7B3S,EAAY,CADA7N,EA6BHL,A8BgBYA,E9BhBP,SAAS,CAAC,IAAI,CA5BV,EAGvBkO,EAAY,CAAC7N,EAAK,CAAC,OAAO,CAAC,AAAC8N,GAAOA,IA0BjC,EACF,EASA,CAPInO,A8BYsBA,E9BZjB,IAAI,CAAC,IAAI,EAEhB8gB,CADW,IAAIpb,UAAU,CAAC,eAAe,EAAE1F,A8BWnBA,E9BXwB,IAAI,CAAC,IAAI,CAAC,CAAC,EACxD,SAAS,CAAG,KACb4gB,GACF,GAEFA,IACI5gB,A8BKsBA,E9BLjB,KAAK,EAML8R,QAAQ,GAAG,CALJ9R,A8BIUA,E9BJL,KAAK,CAAC,GAAG,CAAC,AAACyX,GAC5BlK,GAAUkK,EAAE,IAAI,CAAEA,EAAE,GAAG,EAAE,IAAI,CAAC,AAACoJ,IAC7B3gB,MAAM,CAACuX,EAAE,IAAI,CAAC,CAAGoJ,CACnB,KAIG/O,QAAQ,OAAO,I8BFhBwO,EAAQ,GACV,CACF,IACF,EAAG,CAACtgB,EAAK,EAETgC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,GAAI4c,GAAW,CAACyB,EAAa,OAC7B,IAAMvgB,EAAIihB,AAAAA,GAAAA,GAAAA,KAAAA,AAAAA,EAAMxe,EAAK,CACnB,WAAYvC,GAAM,OAASghB,AlEiEX,CAAC,I,GAAA,CAAE3f,SAAAA,CAAQ,CAAED,iBAAAA,CAAgB,CAAE,OAAQ,CAAEjC,KAAAA,CAAI,CAAEgG,KAAAA,CAAI,CAAE8b,OAAAA,CAAM,CAAE,CAAE,UACnF,AAAI7f,EACK,CAAE,SAAU,SAAUA,iBAAAA,EAAkBjC,KAAAA,CAAK,EAGlDkC,EACK,CACL,SAAU,SACVA,SAAAA,EACAlC,KAAAA,EACA,YAAa,CAAC,EAAEe,OAAO,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAC5D,mBAAoB,SACtB,EAKK,CAAE,SAAU,SAAU,KAAM,CAAC,EADrB+gB,AAAW,KAAXA,EAAmB,QAAU,OACC,GAAG,EAAE9hB,EAAK,EAAEgG,EAAO,CAAC,CAAC,EAAEA,EAAK,CAAC,CAAG,GAAG,CAAC,AAAC,CACpF,GkEnF+CnF,GAAQiB,OACjD,QAAS,CACP,MAAO8b,EACP,SAAUuC,EACV,aAAcb,GAAgBiB,GAC9B,mBAAoB1f,GAAM,kBAC5B,EACA,KAAM,AAAC2S,GAASb,QAAQ,OAAO,CAAC5R,MAAM,CAACyS,EAAK,IAAI,CAAC,EACjD,MAAO3S,GAAM,MACb,OAAQA,GAAM,OACVA,GAAM,OAAO,IAAI,AAACyX,GAAO,EACvB,GAAIA,EACJ,KAAM,IACJnY,MAAM,CAAC,OAAO,EAAEmY,EAAE,CAAC,EAChB,IAAI,CAAC,AAAC5X,GAAaA,EAAS,IAAI,IAChC,IAAI,CAAC,AAACqhB,IACLzB,EAAuByB,AAAa,SAAbA,EAAI,IAAI,CAAc,OAAS,SAC/CA,GAEf,IACA,IACN,GACAphB,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,CAACE,GAAM,WAClCA,GAAM,OACRA,GAAM,MAAM,QAAQ,AAACyX,IACnB3X,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC2X,EAClC,GAGF8I,EAAUzgB,EACZ,EAAG,CAACyC,EAAKvC,EAAM4e,EAASyB,EAAY,EAEpChF,AAAAA,GAAAA,EAAAA,eAAAA,AAAAA,EAAgB,KACTkB,IAELA,EAAO,OAAO,CAAC,CAAE,MAAOQ,CAAiB,GACrCA,CAAAA,AAAqB,UAArBA,GAAgCA,AAAqB,SAArBA,CAA0B,GAC5D0C,EAAuB1C,GAE3B,EAAG,CAACR,EAAQQ,EAAiB,EAE7B,IAAM/W,EAAS,KACT9F,MAAM,CAACF,GAAM,UAAU,KAAK,GAC9B+O,EAAI,OAAO,CAAGoS,OAAOlT,KAAK,GAAG,IAC7B+R,EAAajR,EAAI,OAAO,EAE5B,QAEA/M,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACHua,IAELA,EAAO,UAAU,GAAG,IAAI,CAAC,AAAC3Z,GAAMA,EAAE,KAAK,CAACkd,EAAqB,OAAO,GACpE5f,OAAO,WAAW,CAACF,GAAM,UAAU,KAAM,KACvCuc,EAAO,cAAc,CAAC,KAAK,CAAC,cAAc,CAACvc,GAAM,UAAU,MAC3Duc,EAAO,cAAc,CAAC,KAAK,CAAC,QAAQ,CAACvc,GAAM,WAE3CgG,IAEAuW,EAAO,cAAc,CAAC,KAAK,CACxB,GAAG,CAAC,CACH,KAAMvc,GAAM,UAAU,IACxB,GACC,SAAS,GACT,IAAI,CAACof,EACV,GAEApZ,IACF,EAAG,CAACuW,EAAQvc,EAAK,EAEjBgC,AAAAA,GAAAA,EAAAA,SAAAA,AAAAA,EAAU,KACR,IAAMof,EAAS,KACT7e,GAAKA,EAAI,oBAAoB,CAACwM,EAAI,OAAO,CAC/C,EAaA,OAZA7O,OAAO,gBAAgB,CAAC,eAAgBkhB,GAEpC7e,GAGFme,EAAW,CACTnQ,WAHiB8Q,AE/LV,SAA0B3gB,CAAK,EAC5C,GAAM,CAAC0Q,EAAmBH,EAAe,CAAGqQ,GAAe,CAAC,GACtD,CAAC5P,EAAoBD,EAAgB,CAAG6P,GAAe,CAAC,GACxD,CAAC7Q,EAAgCD,EAA4B,CAAG8Q,GAAe,CAAC,GAChF,CAACC,EAAyBC,EAAqB,CAAGF,GAAe,CAAC,GAElE,CAAC9P,EAAsBD,EAAkB,CAAG+P,GAAe,CAAC,GAC5D,EAAGG,EAAsB,CAAGH,GAAe,CAAC,GAE5CI,EAAuB,AAAC,I,GAAA,CAAE/O,KAAAA,CAAI,CAAE,MAAOtE,CAAK,CAAE,GAC5CgS,EAAcoB,EAAsB,GAAG,CAACpT,EAAM,EAAE,EACtDoT,EAAsB,GAAG,CAACpT,EAAM,EAAE,CAAE,CAAC,GACrC,IAAMG,EAAY,KAChBiD,EAAgB,KAAK,CAACpD,EAAM,EAAE,EAC9BkD,EAAkB,GAAG,CAAClD,EAAM,EAAE,CAAE,CAAC,GACjCkD,EAAkB,QAAQ,CAAC,GAC7B,EACM1E,EAAc,KAClBwB,EAAM,cAAc,CAAC,SAAUxB,GAC/BwB,EAAM,cAAc,CAAC,UAAWG,GAChCyC,EAAe,KAAK,CAAC5C,EAAM,EAAE,EAC7BoD,EAAgB,KAAK,CAACpD,EAAM,EAAE,EAC9BmC,EAA4B,KAAK,CAACnC,EAAM,EAAE,EAC1CmT,EAAqB,KAAK,CAACnT,EAAM,EAAE,EACnCkD,EAAkB,KAAK,CAAClD,EAAM,EAAE,EAChCoT,EAAsB,KAAK,CAACpT,EAAM,EAAE,CACtC,EAWA,MATO,QADCsE,IAEC0N,IACHhS,EAAM,EAAE,CAAC,UAAWG,GACpBH,EAAM,IAAI,CAAC,SAAUxB,KAMpBA,CACT,EAEM,CAACoD,EAAeM,EAAW,CAAG+Q,GAAe,CAAC,EAAGI,GAcvD,MAAO,CACLC,UAbgB,AAACtT,IACjB,IAAMxB,EAAc6U,EAAqB,CAAE,KAAM,MAAO,MAAOrT,CAAM,GACrE,MAAO,KACLxB,IACA0D,EAAW,KAAK,CAAClC,EAAM,EAAE,CAC3B,CACF,EAQEuT,QANc,KACdrR,EAAW,OAAO,EACpB,EAKEN,cAAAA,EACAM,WAAAA,EACAiB,qBAAAA,EACAJ,kBAAAA,EACAH,eAAAA,EACAS,mBAAAA,EACAD,gBAAAA,EACA8P,wBAAAA,EACAC,qBAAAA,EACA/Q,+BAAAA,EACAD,4BAAAA,EACAe,kBAAAA,EACA7Q,MAAAA,CACF,CACF,EFwHwC6B,EAAI,EAAE,EAItCsf,eAHqBC,AGhMd,SAA0BphB,CAAK,EAC5C,GAAM,CAACqhB,EAAuBC,EAAmB,CAAGV,GAAe,CAAC,GAC9D,CAACW,EAAkBC,EAAc,CAAGZ,GAAe,CAAC,GACpD,CAACa,EAAqBC,EAAiB,CAAGd,GAAe,CAAC,GAEhE,MAAO,CACLS,sBAAAA,EACAE,iBAAAA,EACAD,mBAAAA,EACAE,cAAAA,EACAC,oBAAAA,EACAC,iBAAAA,EACA1hB,MAAAA,CACF,CACF,EHkLgD6B,EAAI,EAAE,EAI9C,MAAO,sBACT,GAGK,KACLrC,OAAO,mBAAmB,CAAC,eAAgBkhB,EAC7C,CACF,EAAG,CAAC7e,EAAI,EAsCN,UAAC4N,GAAAA,QAAwB,EAAC,MAAOsQ,E,SAC/B,UAAChS,A5BhPQA,G4BgPRA,QAAmB,EAAC,MAAOlM,E,SAC1B,UAACqE,EAAAA,CAAoBA,CAAAA,CAAC,YAAW,G,SAC/B,UAACC,EAAAA,CAAaA,CAAAA,CAAC,MAAON,E,SACpB,UAAC6V,ALnPEA,GKmPFA,QAAsB,EAAC,MAAOG,E,SAC7B,WAACxS,GAAAA,CAAIA,CAAAA,CACH,UAAS,GACT,KAAK,SACL,UAAU,SACV,MAAO,CAAE,WAAYxD,EAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAE,OAAQ,MAAO,EACtE,IAAK,E,UAEL,UAACwD,GAAAA,CAAIA,CAAAA,CAAC,KAAI,G,SACR,UAAC+T,GAAAA,CAAOA,CAAAA,CACN,QAAQ,QACR,MAAO,CACL,WAAYvX,EAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAC1C,UAAWA,EAAM,OAAO,CAAC,EAAE,CAC3B,MAAO,mBACT,E,SAEA,WAACwD,GAAAA,CAAIA,CAAAA,CAAC,UAAS,GAAC,IAAK,EAAG,MAAO,CAAE,MAAO,MAAO,E,UAC7C,UAACA,GAAAA,CAAIA,CAAAA,CAAC,KAAI,GAAC,UAAS,GAAC,WAAW,S,SAC9B,UAACA,GAAAA,CAAIA,CAAAA,CAAC,KAAI,G,SACR,UAAC,KAAE,KAAK,wCAAwC,OAAO,SAAS,IAAI,sB,SAClE,UAAC,OACC,IAAI,mBACJ,IAAI,iBACJ,KAAK,wCACL,MAAO,CAAE,OAAQ,OAAQ,SAAU,WAAY,IAAK,KAAM,C,SAKlE,UAACA,GAAAA,CAAIA,CAAAA,CAAC,KAAI,GAAC,UAAS,GAAC,WAAW,S,SAC9B,UAACZ,GAAAA,CAAUA,CAAAA,CAAC,MAAM,OAAO,QAAS,IAAM3F,EAAS,KAAM,KAAK,Q,SAC1D,UAAC6e,GAAAA,CAAIA,CAAAA,CAAC,MAAO,CAAE,cAAe,QAAS,C,OAG3C,UAACtY,GAAAA,CAAIA,CAAAA,C,SACH,WAACW,GAAAA,CAAIA,CAAAA,CAAC,MAAOkV,GAAAA,EAAwB,SAnD5B,CAACtd,EAAGggB,KACjC,IAAMC,EAAWD,AAAa,IAAbA,EACjB5e,EAAQ,IAAI,CAAC,iBAAkB6e,GAC3BA,IACFtF,EAAa,MACbC,EAAkB,OAEpB2C,EAAkB0C,EACpB,EA2C6F,aAAW,a,UAChF,UAAC1X,GAAAA,CAAGA,CAAAA,CAAC,MAAO,UAAC5C,GAAAA,CAAUA,CAAAA,C,SAAC,Q,GAAqB,MAAO,C,GACpD,UAAC4C,GAAAA,CAAGA,CAAAA,CAAC,MAAO,UAAC5C,GAAAA,CAAUA,CAAAA,C,SAAC,M,GAAmB,MAAO,C,QAGtD,WAAC8B,GAAAA,CAAIA,CAAAA,CAAC,KAAI,GAAC,UAAS,GAAC,WAAW,SAAS,OAAQ,CAAE,GAAI,MAAO,E,UAC5D,UAACA,GAAAA,CAAIA,CAAAA,CAAC,KAAI,GAAC,IAAK,E,SACd,UAAC9B,GAAAA,CAAUA,CAAAA,C,SAAC,Q,KAEd,UAAC8B,GAAAA,CAAIA,CAAAA,CAAC,KAAI,GAAC,IAAK,E,SACd,WAACyY,GAAAA,CAAiBA,CAAAA,CAChB,KAAK,QACL,MAAO9C,EACP,SA5EO,CAACpd,EAAGggB,KACnC3C,EAAuB2C,GACvB/F,GAAUA,EAAO,OAAO,CAAC,CAAE,aAAckC,GAAgB6D,EAAU,EACrE,EA0E0B,MAAM,U,UAEN,UAACG,GAAAA,CAAYA,CAAAA,CAAC,MAAM,S,SAAS,Q,GAC7B,UAACA,GAAAA,CAAYA,CAAAA,CAAC,MAAM,S,SAAS,Q,GAC7B,UAACA,GAAAA,CAAYA,CAAAA,CAAC,MAAM,U,SAAU,S,GAC9B,UAACA,GAAAA,CAAYA,CAAAA,CAAC,MAAM,O,SAAO,M,QAG/B,UAAC1Y,GAAAA,CAAIA,CAAAA,CAAC,KAAI,G,SACPyW,EAAa,MAAM,CAClB,uB,UACE,UAACrX,GAAAA,CAAUA,CAAAA,CACT,MAAM,eACN,QAAS,AAAC7G,GAAM4d,EAAwB5d,EAAE,aAAa,EACvD,KAAK,Q,SAEL,UAACogB,GAAAA,CAASA,CAAAA,CAAC,SAAS,O,KAEtB,UAACC,GAAAA,CAAIA,CAAAA,CACH,SAAU1C,EACV,KAAM,CAAC,CAACA,EACR,YAAW,GACX,QAAS,IAAMC,EAAwB,M,SAEtCM,EAAa,GAAG,CAAC,AAAC/I,GACjB,UAACyB,GAAAA,CAAQA,CAAAA,CAEP,SAAUzB,IAAMsF,EAChB,QAAS,KArHzCmD,EAAwB,MACxBxc,EAAQ,IAAI,CAAC,YAoHoD+T,GAnHjE4H,EAmHiE5H,I,SAEhCA,C,EAJIA,G,MAUb,UAACtO,GAAAA,CAAUA,CAAAA,CAAC,MAAM,yBAAyB,QA5G9C,KACrB,IAAMtG,EAAIka,AAAqB,SAArBA,EAA8B,QAAU,OAClDrZ,EAAQ,IAAI,CAAC,YAAab,GAC1Bwc,EAAoBxc,GACpB4c,EAAuB5c,EACzB,EAuG8F,KAAK,Q,SACtEka,AAAqB,SAArBA,EACC,UAAC6F,GAAAA,CAAOA,CAAAA,CAAC,SAAS,O,GAElB,UAACC,GAAAA,CAAWA,CAAAA,CAAC,SAAS,O,OAK9B,WAAC9Y,GAAAA,CAAIA,CAAAA,CAAC,KAAI,G,UACR,UAACK,GAAAA,CAAMA,CAAAA,CACL,UAAW,UAAC0Y,GAAAA,CAAQA,CAAAA,CAAAA,GACpB,MAAM,kBACN,QAAS,AAACxgB,GAAM8d,EAA2B9d,EAAE,aAAa,E,SAEzDgd,C,GAEH,UAACqD,GAAAA,CAAIA,CAAAA,CACH,SAAUxC,EACV,KAAM,CAAC,CAACA,EACR,YAAW,GACX,QAAS,IAAMC,EAA2B,M,SAEzC7B,GAAU,GAAG,CAAC,AAAC9G,GACd,UAACyB,GAAAA,CAAQA,CAAAA,CAEP,SAAUzB,IAAM6H,EAChB,QAAS,KAlJrCc,EAA2B,MAC3B1c,EAAQ,IAAI,CAAC,WAiJmD+T,GAhJhE8H,EAgJgE9H,GA/IhE8E,GAAUA,EAAO,OAAO,CAAC,CAAE,SA+IqC9E,CA/ItB,I,SAiJbA,C,EAJIA,G,gBAarB,UAAC1N,GAAAA,CAAIA,CAAAA,CAAC,KAAI,GAAC,MAAO,CAAE,QAASxD,EAAM,OAAO,CAACwc,EAAaA,EAAa,EAAGA,EAAa,E,SACnF,UAAC,OAAI,IAAKjD,EAAsB,MAAO,CAAE,KAAM,WAAY,UAAWvZ,EAAM,OAAO,CAAC,EAAE,AAAC,C,KAEzF,UAACwD,GAAAA,CAAIA,CAAAA,CACH,KAAI,GACJ,GAAE,GACF,MAAO,CACL,KAAM,EACN,UAAW,EACX,UAAW,SACX,UAAW,OACX,QAASxD,EAAM,OAAO,CAAC,EAAGwc,EAAaA,EAAaA,EACtD,E,SAEA,UAAC5G,ANvXJA,GMuXIA,QAAmB,EAAC,MAAOwE,E,SACzBpJ,EACC,WAACxN,GAAAA,CAAIA,CAAAA,CAAC,UAAS,GAAC,KAAK,SAAS,MAAO,CAAE,OAAQ,MAAO,EAAG,IAAKgZ,E,UAC5D,UAAChZ,GAAAA,CAAIA,CAAAA,CAAC,KAAI,GAAC,GAAE,GAAC,MAAO,CAAE,KAAM,EAAG,SAAU,CAAE,E,SACzC6V,EACC,UAAC1B,GAAUA,CAAC,MAAO6B,EAAW,MAAO,CAAC/f,GAAM,UAAU,KAAK,GAE3D,UAACge,GAAKA,CAAC,KAAMhe,EAAM,QAAS0D,EAAS,IAAKqc,C,KAG7C/C,GACC,UAACjT,GAAAA,CAAIA,CAAAA,CACH,KAAI,GACJ,MAAO,CACL,WAAYxD,EAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAC1C,SAAU,cACV,UAAW,GACX,UAAWA,EAAM,OAAO,CAAC,EAAE,CAC3B,QAAS,CACX,E,SAEA,UAACkT,GAAUA,CACT,GAAIlC,EACJ,IAAKyF,EACL,OAAQ,CAAC4C,EACT,QAASlc,EACT,MAAO1D,GAAM,K,QAMrB,UAAC+J,GAAAA,CAAIA,CAAAA,CAAC,UAAS,GAAC,KAAK,SAAS,MAAO,CAAE,WAAY,MAAO,EAAG,eAAe,S,SAC1E,UAACA,GAAAA,CAAIA,CAAAA,CAAC,KAAI,G,SACR,UAAC8B,GAAAA,CAAgBA,CAAAA,CAAAA,E,qBAa3C,CI5WA,OAvD+B,IAC7B,UAACnF,EAAYA,C,SACX,WAACK,EAAcA,CAAC,UAAW,E,UACzB,UAACkB,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,KAAK,aAAY,G,SAAC,Q,GAGtC,UAACA,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,YAAY,aAAY,G,SAAC,4B,GAI7C,WAACA,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,QAAQ,UAAS,G,UAAC,2IAER,IAC5B,UAAC,Q,SACC,UAAC,K,SAAE,Q,KACG,IAAI,4G,GAId,UAACA,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,KAAK,aAAY,G,SAAC,8B,GAItC,WAACA,GAAAA,CAAUA,CAAAA,CAAC,QAAQ,QAAQ,UAAS,G,UACnC,UAAC,K,SAAE,I,GAAM,qDACT,UAAC,SACD,UAAC,SACD,UAAC,K,SAAE,I,GAAM,0BACT,UAAC,SACD,UAAC,SACD,UAAC,K,SAAE,I,GAAM,4JAET,UAAC,SACD,UAAC,SACD,UAAC,K,SAAE,I,GAAM,wDACT,UAAC,SACD,UAAC,SACD,UAAC,K,SAAE,I,GAAM,oNAGT,UAAC,Q,SAAK,sC,GACN,UAAC,SAAK,uBAEN,WAAC,Q,UAAK,yBACkB,UAAC,K,SAAE,O,GAAS,iB,GAEpC,UAAC,SACD,UAAC,SACD,UAAC,K,SAAE,I,GAAM,kCACT,UAAC,S,QCzDT+a,EAAAA,UAAmB,CAAChV,SAAS,aAAa,CAAC,SAAS,MAAM,CAAC,UCKvC,IAClB,UAACiV,EAAAA,EAAaA,CAAAA,C,SACZ,UAAC7f,EAAmBA,C,SAClB,WAAC8f,EAAAA,EAAMA,CAAAA,C,UACL,WAACC,EAAAA,EAAKA,CAAAA,CAAC,QAAS,UAACC,GAASA,CAAAA,G,UACxB,UAACD,EAAAA,EAAKA,CAAAA,CAAC,KAAK,IAAI,QAAS,UAACE,GAAYA,CAAAA,E,GACtC,UAACF,EAAAA,EAAKA,CAAAA,CAAC,KAAK,YAAY,QAAS,UAACG,GAAOA,CAAAA,E,MAE3C,UAACH,EAAAA,EAAKA,CAAAA,CAAC,KAAK,OAAO,QAAS,UAACxE,GAASA,CAAAA,E,GACtC,UAACwE,EAAAA,EAAKA,CAAAA,CAAC,KAAK,kBAAkB,QAAS,UAACI,GAAsBA,CAAAA,E,UDdNC,CAAAA,G,uJEJhE,EAAoB,CAAC,CAAG,AAAC,IACxB,IAAI,EAAS,GAAU,EAAO,UAAU,CACvC,IAAO,EAAO,OAAU,CACxB,IAAO,EAER,OADA,EAAoB,CAAC,CAAC,EAAQ,CAAE,EAAG,CAAO,GACnC,CACR,E9EPI,EAAWlZ,OAAO,cAAc,CAAG,AAAC,GAASA,OAAO,cAAc,CAAC,GAAQ,AAAC,GAAS,EAAI,SAAS,CAQtG,EAAoB,CAAC,CAAG,SAAS,CAAK,CAAE,CAAI,EAE3C,GADG,AAAO,EAAP,GAAU,GAAQ,IAAI,CAAC,EAAK,EACrB,EAAP,GACA,AAAiB,UAAjB,OAAO,GAAsB,IACpB,EAAP,GAAa,EAAM,UAAU,EAC9B,AAAQ,GAAP,GAAc,AAAsB,YAAtB,OAAO,EAAM,IAAI,EAHvB,OAAO,EAKpB,IAAI,EAAKA,OAAO,MAAM,CAAC,MACtB,EAAoB,CAAC,CAAC,GACvB,IAAI,EAAM,CAAC,EACX,EAAiB,GAAkB,CAAC,KAAM,EAAS,CAAC,GAAI,EAAS,EAAE,EAAG,EAAS,GAAU,CACzF,IAAI,IAAI,EAAU,AAAO,EAAP,GAAY,EAAO,AAAC,CAAkB,UAAlB,OAAO,GAAuB,AAAkB,YAAlB,OAAO,CAAoB,GAAM,CAAC,CAAC,EAAe,OAAO,CAAC,GAAU,EAAU,EAAS,GAC1JA,OAAO,mBAAmB,CAAC,GAAS,OAAO,CAAC,AAAC,IAAU,CAAG,CAAC,EAAI,CAAG,IAAO,CAAK,CAAC,EAAI,AAAE,GAItF,OAFA,EAAI,OAAU,CAAG,IAAO,EACxB,EAAoB,CAAC,CAAC,EAAI,GACnB,CACR,E+EzBA,EAAoB,CAAC,CAAG,CAAChI,EAAS,EAAS,KAC1C,IAAI,EAAS,CAAC,EAAM,KACnB,IAAI,IAAI,KAAO,EACX,EAAoB,CAAC,CAAC,EAAM,IAAQ,CAAC,EAAoB,CAAC,CAACA,EAAS,IACtEgI,OAAO,cAAc,CAAChI,EAAS,EAAK,CAAE,WAAY,GAAM,CAAC,EAAK,CAAE,CAAI,CAAC,EAAI,AAAC,EAG7E,EACA,EAAO,EAAS,OAChB,EAAO,EAAQ,QAChB,ECVA,EAAoB,CAAC,CAAG,CAAC,EAGzB,EAAoB,CAAC,CAAG,AAAC,GACjBwP,QAAQ,GAAG,CACjBxH,OAAO,IAAI,CAAC,EAAoB,CAAC,EAAE,MAAM,CAAC,CAAC,EAAU,KACpD,EAAoB,CAAC,CAAC,EAAI,CAAC,EAAS,GAC7B,GACL,EAAE,GCRP,EAAoB,GAAG,CAAG,AAAC,IAErB,AAAC,AADL,GAASA,OAAO,MAAM,CAAC,EAAM,EACjB,QAAQ,EAAE,GAAO,QAAQ,CAAG,EAAE,AAAD,EACzCA,OAAO,cAAc,CAAC,EAAQ,UAAW,CACrC,WAAY,GACZ,IAAK,KACD,MAAM,AAAI1I,MAAM,0FAA4F,EAAO,EAAE,CACzH,CACJ,GACO,GCRT,EAAoB,CAAC,CAAG,AAAC,GAIhB,SAAW,EAAU,MCL9B,EAAoB,CAAC,CAAG,AAAC,MACxB,GAAI,AAAsB,UAAtB,OAAO8L,WAAyB,OAAOA,WAC3C,GAAI,CACH,OAAO,IAAI,EAAI,AAAI+V,SAAS,gBAC7B,CAAE,MAAOnhB,EAAG,CACX,GAAI,AAAkB,UAAlB,OAAOpC,OAAqB,OAAOA,MACxC,CACD,KCPA,EAAoB,CAAC,CAAG,CAAC,EAAK,IAAUoK,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAK,GnFA9E,EAAa,CAAC,EAIlB,EAAoB,CAAC,CAAG,SAAU,CAAG,CAAE,CAAI,CAAE,CAAG,CAAE,CAAO,EACxD,GAAI,CAAU,CAAC,EAAI,CAAE,YACpB,CAAU,CAAC,EAAI,CAAC,IAAI,CAAC,GAItB,GAAI,AAAQ,SAAR,EAEH,IAAK,IAHF,EAAQ,EAEP,EAAU0D,SAAS,oBAAoB,CAAC,UACnC,EAAI,EAAG,EAAI,EAAQ,MAAM,CAAE,IAAK,CACxC,IAAI,EAAI,CAAO,CAAC,EAAE,CAClB,GAAI,EAAE,YAAY,CAAC,QAAU,EAAK,CACjC,EAAS,EACT,KACD,CACD,CAEI,IACJ,EAAa,GAGf,AAFE,GAASA,SAAS,aAAa,CAAC,SAAQ,EAEnC,OAAO,CAAG,IACb,EAAoB,EAAE,EACxB,EAAO,YAAY,CAAC,QAAS,EAAoB,EAAE,EAKrD,EAAO,GAAG,CAAG,GAKZ,CAAU,CAAC,EAAI,CAAG,CAAC,EAAK,CACxB,IAAI,EAAmB,SAAU,CAAI,CAAE,CAAK,EAC3C,EAAO,OAAO,CAAG,EAAO,MAAM,CAAG,KACjC0V,aAAa,GACb,IAAI,EAAU,CAAU,CAAC,EAAI,CAO7B,GANA,OAAO,CAAU,CAAC,EAAI,CACtB,EAAO,UAAU,EAAI,EAAO,UAAU,CAAC,WAAW,CAAC,GACnD,GACC,EAAQ,OAAO,CAAC,SAAU,CAAE,EAC3B,OAAO,EAAG,EACX,GACG,EAAM,OAAO,EAAK,EACvB,EACI,EAAU1R,WACb,EAAiB,IAAI,CAAC,KAAM,OAAW,CACtC,KAAM,UACN,OAAQ,CACT,GACA,KAED,GAAO,OAAO,CAAG,EAAiB,IAAI,CAAC,KAAM,EAAO,OAAO,EAC3D,EAAO,MAAM,CAAG,EAAiB,IAAI,CAAC,KAAM,EAAO,MAAM,EACzD,GAAchE,SAAS,IAAI,CAAC,WAAW,CAAC,EACzC,EoF1DA,EAAoB,CAAC,CAAG,AAAC1L,IACrB,AAAkB,IAAlB,OAAOqhB,QAA0BA,OAAO,WAAW,EACrDrZ,OAAO,cAAc,CAAChI,EAASqhB,OAAO,WAAW,CAAE,CAAE,MAAO,QAAS,GAEtErZ,OAAO,cAAc,CAAChI,EAAS,aAAc,CAAE,MAAO,EAAK,EAC5D,ECNA,EAAoB,GAAG,CAAG,AAAC,IACzB,EAAO,KAAK,CAAG,EAAE,CACb,AAAC,EAAO,QAAQ,EAAE,GAAO,QAAQ,CAAG,EAAE,AAAD,EAClC,GCHT,EAAoB,EAAE,CAAG,OrFArB,EAAW,EAAE,CACjB,EAAoB,CAAC,CAAG,CAAC,EAAQ,EAAU,EAAI,KAC9C,GAAI,EAAU,CACb,EAAW,GAAY,EACvB,IAAK,IAAI,EAAI,EAAS,MAAM,CAAE,EAAI,GAAK,CAAQ,CAAC,EAAI,EAAE,CAAC,EAAE,CAAG,EAAU,IACrE,CAAQ,CAAC,EAAE,CAAG,CAAQ,CAAC,EAAI,EAAE,AAC9B,EAAQ,CAAC,EAAE,CAAG,CAAC,EAAU,EAAI,EAAS,CACtC,MACD,CAEA,IAAK,IADD,EAAe,GAAQ,CAClB,EAAI,EAAG,EAAI,EAAS,MAAM,CAAE,IAAK,CAGzC,IAAK,GAFD,CAAC,EAAU,EAAI,EAAS,CAAG,CAAQ,CAAC,EAAE,CACtC,EAAY,GACP,EAAI,EAAG,EAAI,EAAS,MAAM,CAAE,IAEnC,AAAC,CAAY,GAAZ,GAAwB,GAAgB,CAAO,GAChDgI,OAAO,IAAI,CAAC,EAAoB,CAAC,EAAE,KAAK,CAAC,AAAC,GAAS,EAAoB,CAAC,CAAC,EAAI,CAAC,CAAQ,CAAC,EAAE,GAEzF,EAAS,MAAM,CAAC,IAAK,IAErB,EAAY,GACR,EAAW,GAAc,GAAe,CAAO,GAGrD,GAAI,EAAW,CACd,EAAS,MAAM,CAAC,IAAK,GACrB,IAAI,EAAI,GACJ,AAAM,UAAN,GAAiB,GAAS,EAC/B,CACD,CACA,OAAO,CACR,EsF/BA,EAAoB,CAAC,CAAG,IrFAxB,EAAoB,CAAC,CAAG0D,SAAS,OAAO,EAAIiO,KAAK,QAAQ,CAAC,IAAI,CAKpD,EAAuB,CAAC,GAAM,CAAE,EAElC,EAAoB,CAAC,CAAC,CAAC,CAAG,SAAU,CAAO,CAAE,CAAQ,EAE7D,IAAI,EAAqB,EAAoB,CAAC,CAAC,EAAsB,GAClE,CAAoB,CAAC,EAAQ,CAC7B,OACH,GAAI,AAAuB,IAAvB,EAIH,GAAI,EACH,EAAS,IAAI,CAAC,CAAkB,CAAC,EAAE,MAC7B,CAGL,IAAI,EAAU,IAAInK,QAAQ,CAAC,EAAS8R,IAAY,EAAqB,CAAoB,CAAC,EAAQ,CAAG,CAAC,EAASA,EAAO,EACtH,EAAS,IAAI,CAAE,CAAkB,CAAC,EAAE,CAAG,GAGvC,IAAI,EAAM,EAAoB,CAAC,CAAG,EAAoB,CAAC,CAAC,GAEpD,EAAQ,AAAIhiB,QAwBhB,EAAoB,CAAC,CAAC,EAvBH,SAAU,CAAK,EACjC,GAAI,EAAoB,CAAC,CAAC,EAAsB,KAE3C,AAAuB,IAD3B,GAAqB,CAAoB,CAAC,EAAQ,AAAD,GACnB,EAAoB,CAAC,EAAQ,CAAG,MAAQ,EAClE,GAAoB,CACvB,IAAI,EACH,GAAU,CAAe,SAAf,EAAM,IAAI,CAAc,UAAY,EAAM,IAAI,AAAD,EACpD,EAAU,GAAS,EAAM,MAAM,EAAI,EAAM,MAAM,CAAC,GAAG,AACvD,GAAM,OAAO,CACZ,iBACA,EACA,cACA,EACA,KACA,EACA,IACD,EAAM,IAAI,CAAG,iBACb,EAAM,IAAI,CAAG,EACb,EAAM,OAAO,CAAG,EAChB,CAAkB,CAAC,EAAE,CAAC,EACvB,CAEF,EACyC,SAAW,EAAS,EAE/D,CAGO,EACA,EAAoB,CAAC,CAAC,CAAC,CAAG,AAAC,GAAa,AAAkC,IAAlC,CAAoB,CAAC,EAAQ,CAEzE,EAAiB,CAAC,EAA4B,KACjD,IAGI,EAAU,EAHV,CAAC,EAAU,EAAa,EAAQ,CAAG,EAGhB,EAAI,EAC3B,GAAI,EAAS,IAAI,CAAC,AAAC,GAAQ,AAA6B,IAA7B,CAAoB,CAAC,EAAG,EAAU,CAC5D,IAAK,KAAY,EACZ,EAAoB,CAAC,CAAC,EAAa,IACtC,GAAoB,CAAC,CAAC,EAAS,CAAG,CAAW,CAAC,EAAS,AAAD,EAGxD,GAAI,EAAS,IAAI,EAAS,EAAQ,EACnC,CAEA,IADI,GAA4B,EAA2B,GACpD,EAAI,EAAS,MAAM,CAAE,IAC3B,EAAU,CAAQ,CAAC,EAAE,CAEpB,EAAoB,CAAC,CAAC,EAAsB,IAC5C,CAAoB,CAAC,EAAQ,EAE7B,CAAoB,CAAC,EAAQ,CAAC,EAAE,GAEjC,CAAoB,CAAC,EAAQ,CAAG,EAGjC,OAAO,EAAoB,CAAC,CAAC,EAE9B,EAGA,CADI,EAA0Bqa,KAAK,WAAc,CAAGA,KAAK,WAAc,EAAI,EAAE,EACrD,OAAO,CAAC,EAAe,IAAI,CAAC,KAAM,IAC1D,EAAwB,IAAI,CAAG,EAAe,IAAI,CAAC,KAAM,EAAwB,IAAI,CAAC,IAAI,CAAC,I"}
|