UNPKG

123 kBSource Map (JSON)View Raw
1{"version":3,"file":"single-spa.dev.js","sources":["../../node_modules/custom-event/index.js","../../src/applications/app-errors.js","../../src/applications/app.helpers.js","../../src/utils/assign.js","../../src/utils/find.js","../../src/lifecycles/lifecycle.helpers.js","../../src/lifecycles/bootstrap.js","../../src/lifecycles/unmount.js","../../src/lifecycles/mount.js","../../src/lifecycles/update.js","../../src/parcels/mount-parcel.js","../../src/lifecycles/prop.helpers.js","../../src/applications/timeouts.js","../../src/lifecycles/load.js","../../src/utils/runtime-environment.js","../../src/navigation/navigation-events.js","../../src/jquery-support.js","../../src/lifecycles/unload.js","../../src/applications/apps.js","../../src/navigation/reroute.js","../../src/start.js","../../src/devtools/devtools.js","../../src/single-spa.js"],"sourcesContent":["\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n","import { objectType, toName } from \"./app.helpers\";\n\nlet errorHandlers = [];\n\nexport function handleAppError(err, app, newStatus) {\n const transformedErr = transformErr(err, app, newStatus);\n\n if (errorHandlers.length) {\n errorHandlers.forEach((handler) => handler(transformedErr));\n } else {\n setTimeout(() => {\n throw transformedErr;\n });\n }\n}\n\nexport function addErrorHandler(handler) {\n if (typeof handler !== \"function\") {\n throw Error(\n formatErrorMessage(\n 28,\n __DEV__ && \"a single-spa error handler must be a function\"\n )\n );\n }\n\n errorHandlers.push(handler);\n}\n\nexport function removeErrorHandler(handler) {\n if (typeof handler !== \"function\") {\n throw Error(\n formatErrorMessage(\n 29,\n __DEV__ && \"a single-spa error handler must be a function\"\n )\n );\n }\n\n let removedSomething = false;\n errorHandlers = errorHandlers.filter((h) => {\n const isHandler = h === handler;\n removedSomething = removedSomething || isHandler;\n return !isHandler;\n });\n\n return removedSomething;\n}\n\nexport function formatErrorMessage(code, msg, ...args) {\n return `single-spa minified message #${code}: ${\n msg ? msg + \" \" : \"\"\n }See https://single-spa.js.org/error/?code=${code}${\n args.length ? `&arg=${args.join(\"&arg=\")}` : \"\"\n }`;\n}\n\nexport function transformErr(ogErr, appOrParcel, newStatus) {\n const errPrefix = `${objectType(appOrParcel)} '${toName(\n appOrParcel\n )}' died in status ${appOrParcel.status}: `;\n\n let result;\n\n if (ogErr instanceof Error) {\n try {\n ogErr.message = errPrefix + ogErr.message;\n } catch (err) {\n /* Some errors have read-only message properties, in which case there is nothing\n * that we can do.\n */\n }\n result = ogErr;\n } else {\n console.warn(\n formatErrorMessage(\n 30,\n __DEV__ &&\n `While ${appOrParcel.status}, '${toName(\n appOrParcel\n )}' rejected its lifecycle function promise with a non-Error. This will cause stack traces to not be accurate.`,\n appOrParcel.status,\n toName(appOrParcel)\n )\n );\n try {\n result = Error(errPrefix + JSON.stringify(ogErr));\n } catch (err) {\n // If it's not an Error and you can't stringify it, then what else can you even do to it?\n result = ogErr;\n }\n }\n\n result.appOrParcelName = toName(appOrParcel);\n\n // We set the status after transforming the error so that the error message\n // references the state the application was in before the status change.\n appOrParcel.status = newStatus;\n\n return result;\n}\n","import { handleAppError } from \"./app-errors.js\";\n\n// App statuses\nexport const NOT_LOADED = \"NOT_LOADED\";\nexport const LOADING_SOURCE_CODE = \"LOADING_SOURCE_CODE\";\nexport const NOT_BOOTSTRAPPED = \"NOT_BOOTSTRAPPED\";\nexport const BOOTSTRAPPING = \"BOOTSTRAPPING\";\nexport const NOT_MOUNTED = \"NOT_MOUNTED\";\nexport const MOUNTING = \"MOUNTING\";\nexport const MOUNTED = \"MOUNTED\";\nexport const UPDATING = \"UPDATING\";\nexport const UNMOUNTING = \"UNMOUNTING\";\nexport const UNLOADING = \"UNLOADING\";\nexport const LOAD_ERROR = \"LOAD_ERROR\";\nexport const SKIP_BECAUSE_BROKEN = \"SKIP_BECAUSE_BROKEN\";\n\nexport function isActive(app) {\n return app.status === MOUNTED;\n}\n\nexport function shouldBeActive(app) {\n try {\n return app.activeWhen(window.location);\n } catch (err) {\n handleAppError(err, app, SKIP_BECAUSE_BROKEN);\n return false;\n }\n}\n\nexport function toName(app) {\n return app.name;\n}\n\nexport function isParcel(appOrParcel) {\n return Boolean(appOrParcel.unmountThisParcel);\n}\n\nexport function objectType(appOrParcel) {\n return isParcel(appOrParcel) ? \"parcel\" : \"application\";\n}\n","// Object.assign() is not available in IE11. And the babel compiled output for object spread\n// syntax checks a bunch of Symbol stuff and is almost a kb. So this function is the smaller replacement.\nexport function assign() {\n for (let i = arguments.length - 1; i > 0; i--) {\n for (let key in arguments[i]) {\n if (key === \"__proto__\") {\n continue;\n }\n arguments[i - 1][key] = arguments[i][key];\n }\n }\n\n return arguments[0];\n}\n","/* the array.prototype.find polyfill on npmjs.com is ~20kb (not worth it)\n * and lodash is ~200kb (not worth it)\n */\n\nexport function find(arr, func) {\n for (let i = 0; i < arr.length; i++) {\n if (func(arr[i])) {\n return arr[i];\n }\n }\n\n return null;\n}\n","import { find } from \"../utils/find.js\";\nimport { objectType, toName } from \"../applications/app.helpers.js\";\nimport { formatErrorMessage } from \"../applications/app-errors.js\";\n\nexport function validLifecycleFn(fn) {\n return fn && (typeof fn === \"function\" || isArrayOfFns(fn));\n\n function isArrayOfFns(arr) {\n return (\n Array.isArray(arr) && !find(arr, (item) => typeof item !== \"function\")\n );\n }\n}\n\nexport function flattenFnArray(appOrParcel, lifecycle) {\n let fns = appOrParcel[lifecycle] || [];\n fns = Array.isArray(fns) ? fns : [fns];\n if (fns.length === 0) {\n fns = [() => Promise.resolve()];\n }\n\n const type = objectType(appOrParcel);\n const name = toName(appOrParcel);\n\n return function (props) {\n return fns.reduce((resultPromise, fn, index) => {\n return resultPromise.then(() => {\n const thisPromise = fn(props);\n return smellsLikeAPromise(thisPromise)\n ? thisPromise\n : Promise.reject(\n formatErrorMessage(\n 15,\n __DEV__ &&\n `Within ${type} ${name}, the lifecycle function ${lifecycle} at array index ${index} did not return a promise`,\n type,\n name,\n lifecycle,\n index\n )\n );\n });\n }, Promise.resolve());\n };\n}\n\nexport function smellsLikeAPromise(promise) {\n return (\n promise &&\n typeof promise.then === \"function\" &&\n typeof promise.catch === \"function\"\n );\n}\n","import {\n NOT_BOOTSTRAPPED,\n BOOTSTRAPPING,\n NOT_MOUNTED,\n SKIP_BECAUSE_BROKEN,\n} from \"../applications/app.helpers.js\";\nimport { reasonableTime } from \"../applications/timeouts.js\";\nimport { handleAppError, transformErr } from \"../applications/app-errors.js\";\n\nexport function toBootstrapPromise(appOrParcel, hardFail) {\n return Promise.resolve().then(() => {\n if (appOrParcel.status !== NOT_BOOTSTRAPPED) {\n return appOrParcel;\n }\n\n appOrParcel.status = BOOTSTRAPPING;\n\n if (!appOrParcel.bootstrap) {\n // Default implementation of bootstrap\n return Promise.resolve().then(successfulBootstrap);\n }\n\n return reasonableTime(appOrParcel, \"bootstrap\")\n .then(successfulBootstrap)\n .catch((err) => {\n if (hardFail) {\n throw transformErr(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n } else {\n handleAppError(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n return appOrParcel;\n }\n });\n });\n\n function successfulBootstrap() {\n appOrParcel.status = NOT_MOUNTED;\n return appOrParcel;\n }\n}\n","import {\n UNMOUNTING,\n NOT_MOUNTED,\n MOUNTED,\n SKIP_BECAUSE_BROKEN,\n} from \"../applications/app.helpers.js\";\nimport { handleAppError, transformErr } from \"../applications/app-errors.js\";\nimport { reasonableTime } from \"../applications/timeouts.js\";\n\nexport function toUnmountPromise(appOrParcel, hardFail) {\n return Promise.resolve().then(() => {\n if (appOrParcel.status !== MOUNTED) {\n return appOrParcel;\n }\n appOrParcel.status = UNMOUNTING;\n\n const unmountChildrenParcels = Object.keys(\n appOrParcel.parcels\n ).map((parcelId) => appOrParcel.parcels[parcelId].unmountThisParcel());\n\n let parcelError;\n\n return Promise.all(unmountChildrenParcels)\n .then(unmountAppOrParcel, (parcelError) => {\n // There is a parcel unmount error\n return unmountAppOrParcel().then(() => {\n // Unmounting the app/parcel succeeded, but unmounting its children parcels did not\n const parentError = Error(parcelError.message);\n if (hardFail) {\n throw transformErr(parentError, appOrParcel, SKIP_BECAUSE_BROKEN);\n } else {\n handleAppError(parentError, appOrParcel, SKIP_BECAUSE_BROKEN);\n }\n });\n })\n .then(() => appOrParcel);\n\n function unmountAppOrParcel() {\n // We always try to unmount the appOrParcel, even if the children parcels failed to unmount.\n return reasonableTime(appOrParcel, \"unmount\")\n .then(() => {\n // The appOrParcel needs to stay in a broken status if its children parcels fail to unmount\n if (!parcelError) {\n appOrParcel.status = NOT_MOUNTED;\n }\n })\n .catch((err) => {\n if (hardFail) {\n throw transformErr(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n } else {\n handleAppError(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n }\n });\n }\n });\n}\n","import {\n NOT_MOUNTED,\n MOUNTED,\n SKIP_BECAUSE_BROKEN,\n} from \"../applications/app.helpers.js\";\nimport { handleAppError, transformErr } from \"../applications/app-errors.js\";\nimport { reasonableTime } from \"../applications/timeouts.js\";\nimport CustomEvent from \"custom-event\";\nimport { toUnmountPromise } from \"./unmount.js\";\n\nlet beforeFirstMountFired = false;\nlet firstMountFired = false;\n\nexport function toMountPromise(appOrParcel, hardFail) {\n return Promise.resolve().then(() => {\n if (appOrParcel.status !== NOT_MOUNTED) {\n return appOrParcel;\n }\n\n if (!beforeFirstMountFired) {\n window.dispatchEvent(new CustomEvent(\"single-spa:before-first-mount\"));\n beforeFirstMountFired = true;\n }\n\n return reasonableTime(appOrParcel, \"mount\")\n .then(() => {\n appOrParcel.status = MOUNTED;\n\n if (!firstMountFired) {\n window.dispatchEvent(new CustomEvent(\"single-spa:first-mount\"));\n firstMountFired = true;\n }\n\n return appOrParcel;\n })\n .catch((err) => {\n // If we fail to mount the appOrParcel, we should attempt to unmount it before putting in SKIP_BECAUSE_BROKEN\n // We temporarily put the appOrParcel into MOUNTED status so that toUnmountPromise actually attempts to unmount it\n // instead of just doing a no-op.\n appOrParcel.status = MOUNTED;\n return toUnmountPromise(appOrParcel, true).then(\n setSkipBecauseBroken,\n setSkipBecauseBroken\n );\n\n function setSkipBecauseBroken() {\n if (!hardFail) {\n handleAppError(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n return appOrParcel;\n } else {\n throw transformErr(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n }\n }\n });\n });\n}\n","import {\n UPDATING,\n MOUNTED,\n SKIP_BECAUSE_BROKEN,\n toName,\n} from \"../applications/app.helpers.js\";\nimport {\n transformErr,\n formatErrorMessage,\n} from \"../applications/app-errors.js\";\nimport { reasonableTime } from \"../applications/timeouts.js\";\n\nexport function toUpdatePromise(parcel) {\n return Promise.resolve().then(() => {\n if (parcel.status !== MOUNTED) {\n throw Error(\n formatErrorMessage(\n 32,\n __DEV__ &&\n `Cannot update parcel '${toName(\n parcel\n )}' because it is not mounted`,\n toName(parcel)\n )\n );\n }\n\n parcel.status = UPDATING;\n\n return reasonableTime(parcel, \"update\")\n .then(() => {\n parcel.status = MOUNTED;\n return parcel;\n })\n .catch((err) => {\n throw transformErr(err, parcel, SKIP_BECAUSE_BROKEN);\n });\n });\n}\n","import {\n validLifecycleFn,\n flattenFnArray,\n} from \"../lifecycles/lifecycle.helpers.js\";\nimport {\n NOT_BOOTSTRAPPED,\n NOT_MOUNTED,\n MOUNTED,\n LOADING_SOURCE_CODE,\n SKIP_BECAUSE_BROKEN,\n toName,\n} from \"../applications/app.helpers.js\";\nimport { toBootstrapPromise } from \"../lifecycles/bootstrap.js\";\nimport { toMountPromise } from \"../lifecycles/mount.js\";\nimport { toUpdatePromise } from \"../lifecycles/update.js\";\nimport { toUnmountPromise } from \"../lifecycles/unmount.js\";\nimport { ensureValidAppTimeouts } from \"../applications/timeouts.js\";\nimport { formatErrorMessage } from \"../applications/app-errors.js\";\n\nlet parcelCount = 0;\nconst rootParcels = { parcels: {} };\n\n// This is a public api, exported to users of single-spa\nexport function mountRootParcel() {\n return mountParcel.apply(rootParcels, arguments);\n}\n\nexport function mountParcel(config, customProps) {\n const owningAppOrParcel = this;\n\n // Validate inputs\n if (!config || (typeof config !== \"object\" && typeof config !== \"function\")) {\n throw Error(\n formatErrorMessage(\n 2,\n __DEV__ &&\n \"Cannot mount parcel without a config object or config loading function\"\n )\n );\n }\n\n if (config.name && typeof config.name !== \"string\") {\n throw Error(\n formatErrorMessage(\n 3,\n __DEV__ &&\n `Parcel name must be a string, if provided. Was given ${typeof config.name}`,\n typeof config.name\n )\n );\n }\n\n if (typeof customProps !== \"object\") {\n throw Error(\n formatErrorMessage(\n 4,\n __DEV__ &&\n `Parcel ${name} has invalid customProps -- must be an object but was given ${typeof customProps}`,\n name,\n typeof customProps\n )\n );\n }\n\n if (!customProps.domElement) {\n throw Error(\n formatErrorMessage(\n 5,\n __DEV__ &&\n `Parcel ${name} cannot be mounted without a domElement provided as a prop`,\n name\n )\n );\n }\n\n const id = parcelCount++;\n\n const passedConfigLoadingFunction = typeof config === \"function\";\n const configLoadingFunction = passedConfigLoadingFunction\n ? config\n : () => Promise.resolve(config);\n\n // Internal representation\n const parcel = {\n id,\n parcels: {},\n status: passedConfigLoadingFunction\n ? LOADING_SOURCE_CODE\n : NOT_BOOTSTRAPPED,\n customProps,\n parentName: toName(owningAppOrParcel),\n unmountThisParcel() {\n return mountPromise\n .then(() => {\n if (parcel.status !== MOUNTED) {\n throw Error(\n formatErrorMessage(\n 6,\n __DEV__ &&\n `Cannot unmount parcel '${name}' -- it is in a ${parcel.status} status`,\n name,\n parcel.status\n )\n );\n }\n return toUnmountPromise(parcel, true);\n })\n .then((value) => {\n if (parcel.parentName) {\n delete owningAppOrParcel.parcels[parcel.id];\n }\n\n return value;\n })\n .then((value) => {\n resolveUnmount(value);\n return value;\n })\n .catch((err) => {\n parcel.status = SKIP_BECAUSE_BROKEN;\n rejectUnmount(err);\n throw err;\n });\n },\n };\n\n // We return an external representation\n let externalRepresentation;\n\n // Add to owning app or parcel\n owningAppOrParcel.parcels[id] = parcel;\n\n let loadPromise = configLoadingFunction();\n\n if (!loadPromise || typeof loadPromise.then !== \"function\") {\n throw Error(\n formatErrorMessage(\n 7,\n __DEV__ &&\n `When mounting a parcel, the config loading function must return a promise that resolves with the parcel config`\n )\n );\n }\n\n loadPromise = loadPromise.then((config) => {\n if (!config) {\n throw Error(\n formatErrorMessage(\n 8,\n __DEV__ &&\n `When mounting a parcel, the config loading function returned a promise that did not resolve with a parcel config`\n )\n );\n }\n\n const name = config.name || `parcel-${id}`;\n\n if (\n // ES Module objects don't have the object prototype\n Object.prototype.hasOwnProperty.call(config, \"bootstrap\") &&\n !validLifecycleFn(config.bootstrap)\n ) {\n throw Error(\n formatErrorMessage(\n 9,\n __DEV__ && `Parcel ${name} provided an invalid bootstrap function`,\n name\n )\n );\n }\n\n if (!validLifecycleFn(config.mount)) {\n throw Error(\n formatErrorMessage(\n 10,\n __DEV__ && `Parcel ${name} must have a valid mount function`,\n name\n )\n );\n }\n\n if (!validLifecycleFn(config.unmount)) {\n throw Error(\n formatErrorMessage(\n 11,\n __DEV__ && `Parcel ${name} must have a valid unmount function`,\n name\n )\n );\n }\n\n if (config.update && !validLifecycleFn(config.update)) {\n throw Error(\n formatErrorMessage(\n 12,\n __DEV__ && `Parcel ${name} provided an invalid update function`,\n name\n )\n );\n }\n\n const bootstrap = flattenFnArray(config, \"bootstrap\");\n const mount = flattenFnArray(config, \"mount\");\n const unmount = flattenFnArray(config, \"unmount\");\n\n parcel.status = NOT_BOOTSTRAPPED;\n parcel.name = name;\n parcel.bootstrap = bootstrap;\n parcel.mount = mount;\n parcel.unmount = unmount;\n parcel.timeouts = ensureValidAppTimeouts(config.timeouts);\n\n if (config.update) {\n parcel.update = flattenFnArray(config, \"update\");\n externalRepresentation.update = function (customProps) {\n parcel.customProps = customProps;\n\n return promiseWithoutReturnValue(toUpdatePromise(parcel));\n };\n }\n });\n\n // Start bootstrapping and mounting\n // The .then() causes the work to be put on the event loop instead of happening immediately\n const bootstrapPromise = loadPromise.then(() =>\n toBootstrapPromise(parcel, true)\n );\n const mountPromise = bootstrapPromise.then(() =>\n toMountPromise(parcel, true)\n );\n\n let resolveUnmount, rejectUnmount;\n\n const unmountPromise = new Promise((resolve, reject) => {\n resolveUnmount = resolve;\n rejectUnmount = reject;\n });\n\n externalRepresentation = {\n mount() {\n return promiseWithoutReturnValue(\n Promise.resolve().then(() => {\n if (parcel.status !== NOT_MOUNTED) {\n throw Error(\n formatErrorMessage(\n 13,\n __DEV__ &&\n `Cannot mount parcel '${name}' -- it is in a ${parcel.status} status`,\n name,\n parcel.status\n )\n );\n }\n\n // Add to owning app or parcel\n owningAppOrParcel.parcels[id] = parcel;\n\n return toMountPromise(parcel);\n })\n );\n },\n unmount() {\n return promiseWithoutReturnValue(parcel.unmountThisParcel());\n },\n getStatus() {\n return parcel.status;\n },\n loadPromise: promiseWithoutReturnValue(loadPromise),\n bootstrapPromise: promiseWithoutReturnValue(bootstrapPromise),\n mountPromise: promiseWithoutReturnValue(mountPromise),\n unmountPromise: promiseWithoutReturnValue(unmountPromise),\n };\n\n return externalRepresentation;\n}\n\nfunction promiseWithoutReturnValue(promise) {\n return promise.then(() => null);\n}\n","import * as singleSpa from \"../single-spa.js\";\nimport { mountParcel } from \"../parcels/mount-parcel.js\";\nimport { assign } from \"../utils/assign.js\";\nimport { isParcel, toName } from \"../applications/app.helpers.js\";\nimport { formatErrorMessage } from \"../applications/app-errors.js\";\n\nexport function getProps(appOrParcel) {\n const name = toName(appOrParcel);\n let customProps =\n typeof appOrParcel.customProps === \"function\"\n ? appOrParcel.customProps(name, window.location)\n : appOrParcel.customProps;\n if (\n typeof customProps !== \"object\" ||\n customProps === null ||\n Array.isArray(customProps)\n ) {\n customProps = {};\n console.warn(\n formatErrorMessage(\n 40,\n __DEV__ &&\n `single-spa: ${name}'s customProps function must return an object. Received ${customProps}`\n ),\n name,\n customProps\n );\n }\n const result = assign({}, customProps, {\n name,\n mountParcel: mountParcel.bind(appOrParcel),\n singleSpa,\n });\n\n if (isParcel(appOrParcel)) {\n result.unmountSelf = appOrParcel.unmountThisParcel;\n }\n\n return result;\n}\n","import { assign } from \"../utils/assign\";\nimport { getProps } from \"../lifecycles/prop.helpers\";\nimport { objectType, toName } from \"./app.helpers\";\nimport { formatErrorMessage } from \"./app-errors\";\n\nconst defaultWarningMillis = 1000;\n\nconst globalTimeoutConfig = {\n bootstrap: {\n millis: 4000,\n dieOnTimeout: false,\n warningMillis: defaultWarningMillis,\n },\n mount: {\n millis: 3000,\n dieOnTimeout: false,\n warningMillis: defaultWarningMillis,\n },\n unmount: {\n millis: 3000,\n dieOnTimeout: false,\n warningMillis: defaultWarningMillis,\n },\n unload: {\n millis: 3000,\n dieOnTimeout: false,\n warningMillis: defaultWarningMillis,\n },\n update: {\n millis: 3000,\n dieOnTimeout: false,\n warningMillis: defaultWarningMillis,\n },\n};\n\nexport function setBootstrapMaxTime(time, dieOnTimeout, warningMillis) {\n if (typeof time !== \"number\" || time <= 0) {\n throw Error(\n formatErrorMessage(\n 16,\n __DEV__ &&\n `bootstrap max time must be a positive integer number of milliseconds`\n )\n );\n }\n\n globalTimeoutConfig.bootstrap = {\n millis: time,\n dieOnTimeout,\n warningMillis: warningMillis || defaultWarningMillis,\n };\n}\n\nexport function setMountMaxTime(time, dieOnTimeout, warningMillis) {\n if (typeof time !== \"number\" || time <= 0) {\n throw Error(\n formatErrorMessage(\n 17,\n __DEV__ &&\n `mount max time must be a positive integer number of milliseconds`\n )\n );\n }\n\n globalTimeoutConfig.mount = {\n millis: time,\n dieOnTimeout,\n warningMillis: warningMillis || defaultWarningMillis,\n };\n}\n\nexport function setUnmountMaxTime(time, dieOnTimeout, warningMillis) {\n if (typeof time !== \"number\" || time <= 0) {\n throw Error(\n formatErrorMessage(\n 18,\n __DEV__ &&\n `unmount max time must be a positive integer number of milliseconds`\n )\n );\n }\n\n globalTimeoutConfig.unmount = {\n millis: time,\n dieOnTimeout,\n warningMillis: warningMillis || defaultWarningMillis,\n };\n}\n\nexport function setUnloadMaxTime(time, dieOnTimeout, warningMillis) {\n if (typeof time !== \"number\" || time <= 0) {\n throw Error(\n formatErrorMessage(\n 19,\n __DEV__ &&\n `unload max time must be a positive integer number of milliseconds`\n )\n );\n }\n\n globalTimeoutConfig.unload = {\n millis: time,\n dieOnTimeout,\n warningMillis: warningMillis || defaultWarningMillis,\n };\n}\n\nexport function reasonableTime(appOrParcel, lifecycle) {\n const timeoutConfig = appOrParcel.timeouts[lifecycle];\n const warningPeriod = timeoutConfig.warningMillis;\n const type = objectType(appOrParcel);\n\n return new Promise((resolve, reject) => {\n let finished = false;\n let errored = false;\n\n appOrParcel[lifecycle](getProps(appOrParcel))\n .then((val) => {\n finished = true;\n resolve(val);\n })\n .catch((val) => {\n finished = true;\n reject(val);\n });\n\n setTimeout(() => maybeTimingOut(1), warningPeriod);\n setTimeout(() => maybeTimingOut(true), timeoutConfig.millis);\n\n const errMsg = formatErrorMessage(\n 31,\n __DEV__ &&\n `Lifecycle function ${lifecycle} for ${type} ${toName(\n appOrParcel\n )} lifecycle did not resolve or reject for ${timeoutConfig.millis} ms.`,\n lifecycle,\n type,\n toName(appOrParcel),\n timeoutConfig.millis\n );\n\n function maybeTimingOut(shouldError) {\n if (!finished) {\n if (shouldError === true) {\n errored = true;\n if (timeoutConfig.dieOnTimeout) {\n reject(Error(errMsg));\n } else {\n console.error(errMsg);\n //don't resolve or reject, we're waiting this one out\n }\n } else if (!errored) {\n const numWarnings = shouldError;\n const numMillis = numWarnings * warningPeriod;\n console.warn(errMsg);\n if (numMillis + warningPeriod < timeoutConfig.millis) {\n setTimeout(() => maybeTimingOut(numWarnings + 1), warningPeriod);\n }\n }\n }\n }\n });\n}\n\nexport function ensureValidAppTimeouts(timeouts) {\n const result = {};\n\n for (let key in globalTimeoutConfig) {\n result[key] = assign(\n {},\n globalTimeoutConfig[key],\n (timeouts && timeouts[key]) || {}\n );\n }\n\n return result;\n}\n","import {\n LOAD_ERROR,\n NOT_BOOTSTRAPPED,\n LOADING_SOURCE_CODE,\n SKIP_BECAUSE_BROKEN,\n NOT_LOADED,\n objectType,\n toName,\n} from \"../applications/app.helpers.js\";\nimport { ensureValidAppTimeouts } from \"../applications/timeouts.js\";\nimport {\n handleAppError,\n formatErrorMessage,\n} from \"../applications/app-errors.js\";\nimport {\n flattenFnArray,\n smellsLikeAPromise,\n validLifecycleFn,\n} from \"./lifecycle.helpers.js\";\nimport { getProps } from \"./prop.helpers.js\";\nimport { assign } from \"../utils/assign.js\";\n\nexport function toLoadPromise(app) {\n return Promise.resolve().then(() => {\n if (app.loadPromise) {\n return app.loadPromise;\n }\n\n if (app.status !== NOT_LOADED && app.status !== LOAD_ERROR) {\n return app;\n }\n\n app.status = LOADING_SOURCE_CODE;\n\n let appOpts, isUserErr;\n\n return (app.loadPromise = Promise.resolve()\n .then(() => {\n const loadPromise = app.loadApp(getProps(app));\n if (!smellsLikeAPromise(loadPromise)) {\n // The name of the app will be prepended to this error message inside of the handleAppError function\n isUserErr = true;\n throw Error(\n formatErrorMessage(\n 33,\n __DEV__ &&\n `single-spa loading function did not return a promise. Check the second argument to registerApplication('${toName(\n app\n )}', loadingFunction, activityFunction)`,\n toName(app)\n )\n );\n }\n return loadPromise.then((val) => {\n app.loadErrorTime = null;\n\n appOpts = val;\n\n let validationErrMessage, validationErrCode;\n\n if (typeof appOpts !== \"object\") {\n validationErrCode = 34;\n if (__DEV__) {\n validationErrMessage = `does not export anything`;\n }\n }\n\n if (\n // ES Modules don't have the Object prototype\n Object.prototype.hasOwnProperty.call(appOpts, \"bootstrap\") &&\n !validLifecycleFn(appOpts.bootstrap)\n ) {\n validationErrCode = 35;\n if (__DEV__) {\n validationErrMessage = `does not export a valid bootstrap function or array of functions`;\n }\n }\n\n if (!validLifecycleFn(appOpts.mount)) {\n validationErrCode = 36;\n if (__DEV__) {\n validationErrMessage = `does not export a mount function or array of functions`;\n }\n }\n\n if (!validLifecycleFn(appOpts.unmount)) {\n validationErrCode = 37;\n if (__DEV__) {\n validationErrMessage = `does not export a unmount function or array of functions`;\n }\n }\n\n const type = objectType(appOpts);\n\n if (validationErrCode) {\n let appOptsStr;\n try {\n appOptsStr = JSON.stringify(appOpts);\n } catch {}\n console.error(\n formatErrorMessage(\n validationErrCode,\n __DEV__ &&\n `The loading function for single-spa ${type} '${toName(\n app\n )}' resolved with the following, which does not have bootstrap, mount, and unmount functions`,\n type,\n toName(app),\n appOptsStr\n ),\n appOpts\n );\n handleAppError(validationErrMessage, app, SKIP_BECAUSE_BROKEN);\n return app;\n }\n\n if (appOpts.devtools && appOpts.devtools.overlays) {\n app.devtools.overlays = assign(\n {},\n app.devtools.overlays,\n appOpts.devtools.overlays\n );\n }\n\n app.status = NOT_BOOTSTRAPPED;\n app.bootstrap = flattenFnArray(appOpts, \"bootstrap\");\n app.mount = flattenFnArray(appOpts, \"mount\");\n app.unmount = flattenFnArray(appOpts, \"unmount\");\n app.unload = flattenFnArray(appOpts, \"unload\");\n app.timeouts = ensureValidAppTimeouts(appOpts.timeouts);\n\n delete app.loadPromise;\n\n return app;\n });\n })\n .catch((err) => {\n delete app.loadPromise;\n\n let newStatus;\n if (isUserErr) {\n newStatus = SKIP_BECAUSE_BROKEN;\n } else {\n newStatus = LOAD_ERROR;\n app.loadErrorTime = new Date().getTime();\n }\n handleAppError(err, app, newStatus);\n\n return app;\n }));\n });\n}\n","export const isInBrowser = typeof window !== \"undefined\";\n","import { reroute } from \"./reroute.js\";\nimport { find } from \"../utils/find.js\";\nimport { formatErrorMessage } from \"../applications/app-errors.js\";\nimport { isInBrowser } from \"../utils/runtime-environment.js\";\nimport { isStarted } from \"../start.js\";\n\n/* We capture navigation event listeners so that we can make sure\n * that application navigation listeners are not called until\n * single-spa has ensured that the correct applications are\n * unmounted and mounted.\n */\nconst capturedEventListeners = {\n hashchange: [],\n popstate: [],\n};\n\nexport const routingEventsListeningTo = [\"hashchange\", \"popstate\"];\n\nexport function navigateToUrl(obj) {\n let url;\n if (typeof obj === \"string\") {\n url = obj;\n } else if (this && this.href) {\n url = this.href;\n } else if (\n obj &&\n obj.currentTarget &&\n obj.currentTarget.href &&\n obj.preventDefault\n ) {\n url = obj.currentTarget.href;\n obj.preventDefault();\n } else {\n throw Error(\n formatErrorMessage(\n 14,\n __DEV__ &&\n `singleSpaNavigate/navigateToUrl must be either called with a string url, with an <a> tag as its context, or with an event whose currentTarget is an <a> tag`\n )\n );\n }\n\n const current = parseUri(window.location.href);\n const destination = parseUri(url);\n\n if (url.indexOf(\"#\") === 0) {\n window.location.hash = destination.hash;\n } else if (current.host !== destination.host && destination.host) {\n if (process.env.BABEL_ENV === \"test\") {\n return { wouldHaveReloadedThePage: true };\n } else {\n window.location.href = url;\n }\n } else if (\n destination.pathname === current.pathname &&\n destination.search === current.search\n ) {\n window.location.hash = destination.hash;\n } else {\n // different path, host, or query params\n window.history.pushState(null, null, url);\n }\n}\n\nexport function callCapturedEventListeners(eventArguments) {\n if (eventArguments) {\n const eventType = eventArguments[0].type;\n if (routingEventsListeningTo.indexOf(eventType) >= 0) {\n capturedEventListeners[eventType].forEach((listener) => {\n try {\n // The error thrown by application event listener should not break single-spa down.\n // Just like https://github.com/single-spa/single-spa/blob/85f5042dff960e40936f3a5069d56fc9477fac04/src/navigation/reroute.js#L140-L146 did\n listener.apply(this, eventArguments);\n } catch (e) {\n setTimeout(() => {\n throw e;\n });\n }\n });\n }\n }\n}\n\nlet urlRerouteOnly;\n\nexport function setUrlRerouteOnly(val) {\n urlRerouteOnly = val;\n}\n\nfunction urlReroute() {\n reroute([], arguments);\n}\n\nfunction patchedUpdateState(updateState, methodName) {\n return function () {\n const urlBefore = window.location.href;\n const result = updateState.apply(this, arguments);\n const urlAfter = window.location.href;\n\n if (!urlRerouteOnly || urlBefore !== urlAfter) {\n if (isStarted()) {\n // fire an artificial popstate event once single-spa is started,\n // so that single-spa applications know about routing that\n // occurs in a different application\n window.dispatchEvent(\n createPopStateEvent(window.history.state, methodName)\n );\n } else {\n // do not fire an artificial popstate event before single-spa is started,\n // since no single-spa applications need to know about routing events\n // outside of their own router.\n reroute([]);\n }\n }\n\n return result;\n };\n}\n\nfunction createPopStateEvent(state, originalMethodName) {\n // https://github.com/single-spa/single-spa/issues/224 and https://github.com/single-spa/single-spa-angular/issues/49\n // We need a popstate event even though the browser doesn't do one by default when you call replaceState, so that\n // all the applications can reroute. We explicitly identify this extraneous event by setting singleSpa=true and\n // singleSpaTrigger=<pushState|replaceState> on the event instance.\n let evt;\n try {\n evt = new PopStateEvent(\"popstate\", { state });\n } catch (err) {\n // IE 11 compatibility https://github.com/single-spa/single-spa/issues/299\n // https://docs.microsoft.com/en-us/openspecs/ie_standards/ms-html5e/bd560f47-b349-4d2c-baa8-f1560fb489dd\n evt = document.createEvent(\"PopStateEvent\");\n evt.initPopStateEvent(\"popstate\", false, false, state);\n }\n evt.singleSpa = true;\n evt.singleSpaTrigger = originalMethodName;\n return evt;\n}\n\nif (isInBrowser) {\n // We will trigger an app change for any routing events.\n window.addEventListener(\"hashchange\", urlReroute);\n window.addEventListener(\"popstate\", urlReroute);\n\n // Monkeypatch addEventListener so that we can ensure correct timing\n const originalAddEventListener = window.addEventListener;\n const originalRemoveEventListener = window.removeEventListener;\n window.addEventListener = function (eventName, fn) {\n if (typeof fn === \"function\") {\n if (\n routingEventsListeningTo.indexOf(eventName) >= 0 &&\n !find(capturedEventListeners[eventName], (listener) => listener === fn)\n ) {\n capturedEventListeners[eventName].push(fn);\n return;\n }\n }\n\n return originalAddEventListener.apply(this, arguments);\n };\n\n window.removeEventListener = function (eventName, listenerFn) {\n if (typeof listenerFn === \"function\") {\n if (routingEventsListeningTo.indexOf(eventName) >= 0) {\n capturedEventListeners[eventName] = capturedEventListeners[\n eventName\n ].filter((fn) => fn !== listenerFn);\n return;\n }\n }\n\n return originalRemoveEventListener.apply(this, arguments);\n };\n\n window.history.pushState = patchedUpdateState(\n window.history.pushState,\n \"pushState\"\n );\n window.history.replaceState = patchedUpdateState(\n window.history.replaceState,\n \"replaceState\"\n );\n\n if (window.singleSpaNavigate) {\n console.warn(\n formatErrorMessage(\n 41,\n __DEV__ &&\n \"single-spa has been loaded twice on the page. This can result in unexpected behavior.\"\n )\n );\n } else {\n /* For convenience in `onclick` attributes, we expose a global function for navigating to\n * whatever an <a> tag's href is.\n */\n window.singleSpaNavigate = navigateToUrl;\n }\n}\n\nfunction parseUri(str) {\n const anchor = document.createElement(\"a\");\n anchor.href = str;\n return anchor;\n}\n","import { routingEventsListeningTo } from \"./navigation/navigation-events.js\";\n\nlet hasInitialized = false;\n\nexport function ensureJQuerySupport(jQuery = window.jQuery) {\n if (!jQuery) {\n if (window.$ && window.$.fn && window.$.fn.jquery) {\n jQuery = window.$;\n }\n }\n\n if (jQuery && !hasInitialized) {\n const originalJQueryOn = jQuery.fn.on;\n const originalJQueryOff = jQuery.fn.off;\n\n jQuery.fn.on = function (eventString, fn) {\n return captureRoutingEvents.call(\n this,\n originalJQueryOn,\n window.addEventListener,\n eventString,\n fn,\n arguments\n );\n };\n\n jQuery.fn.off = function (eventString, fn) {\n return captureRoutingEvents.call(\n this,\n originalJQueryOff,\n window.removeEventListener,\n eventString,\n fn,\n arguments\n );\n };\n\n hasInitialized = true;\n }\n}\n\nfunction captureRoutingEvents(\n originalJQueryFunction,\n nativeFunctionToCall,\n eventString,\n fn,\n originalArgs\n) {\n if (typeof eventString !== \"string\") {\n return originalJQueryFunction.apply(this, originalArgs);\n }\n\n const eventNames = eventString.split(/\\s+/);\n eventNames.forEach((eventName) => {\n if (routingEventsListeningTo.indexOf(eventName) >= 0) {\n nativeFunctionToCall(eventName, fn);\n eventString = eventString.replace(eventName, \"\");\n }\n });\n\n if (eventString.trim() === \"\") {\n return this;\n } else {\n return originalJQueryFunction.apply(this, originalArgs);\n }\n}\n","import {\n NOT_MOUNTED,\n UNLOADING,\n NOT_LOADED,\n LOAD_ERROR,\n SKIP_BECAUSE_BROKEN,\n toName,\n} from \"../applications/app.helpers.js\";\nimport { handleAppError } from \"../applications/app-errors.js\";\nimport { reasonableTime } from \"../applications/timeouts.js\";\n\nconst appsToUnload = {};\n\nexport function toUnloadPromise(app) {\n return Promise.resolve().then(() => {\n const unloadInfo = appsToUnload[toName(app)];\n\n if (!unloadInfo) {\n /* No one has called unloadApplication for this app,\n */\n return app;\n }\n\n if (app.status === NOT_LOADED) {\n /* This app is already unloaded. We just need to clean up\n * anything that still thinks we need to unload the app.\n */\n finishUnloadingApp(app, unloadInfo);\n return app;\n }\n\n if (app.status === UNLOADING) {\n /* Both unloadApplication and reroute want to unload this app.\n * It only needs to be done once, though.\n */\n return unloadInfo.promise.then(() => app);\n }\n\n if (app.status !== NOT_MOUNTED && app.status !== LOAD_ERROR) {\n /* The app cannot be unloaded until it is unmounted.\n */\n return app;\n }\n\n const unloadPromise =\n app.status === LOAD_ERROR\n ? Promise.resolve()\n : reasonableTime(app, \"unload\");\n\n app.status = UNLOADING;\n\n return unloadPromise\n .then(() => {\n finishUnloadingApp(app, unloadInfo);\n return app;\n })\n .catch((err) => {\n errorUnloadingApp(app, unloadInfo, err);\n return app;\n });\n });\n}\n\nfunction finishUnloadingApp(app, unloadInfo) {\n delete appsToUnload[toName(app)];\n\n // Unloaded apps don't have lifecycles\n delete app.bootstrap;\n delete app.mount;\n delete app.unmount;\n delete app.unload;\n\n app.status = NOT_LOADED;\n\n /* resolve the promise of whoever called unloadApplication.\n * This should be done after all other cleanup/bookkeeping\n */\n unloadInfo.resolve();\n}\n\nfunction errorUnloadingApp(app, unloadInfo, err) {\n delete appsToUnload[toName(app)];\n\n // Unloaded apps don't have lifecycles\n delete app.bootstrap;\n delete app.mount;\n delete app.unmount;\n delete app.unload;\n\n handleAppError(err, app, SKIP_BECAUSE_BROKEN);\n unloadInfo.reject(err);\n}\n\nexport function addAppToUnload(app, promiseGetter, resolve, reject) {\n appsToUnload[toName(app)] = { app, resolve, reject };\n Object.defineProperty(appsToUnload[toName(app)], \"promise\", {\n get: promiseGetter,\n });\n}\n\nexport function getAppUnloadInfo(appName) {\n return appsToUnload[appName];\n}\n","import { ensureJQuerySupport } from \"../jquery-support.js\";\nimport {\n isActive,\n toName,\n NOT_LOADED,\n NOT_BOOTSTRAPPED,\n NOT_MOUNTED,\n MOUNTED,\n LOAD_ERROR,\n SKIP_BECAUSE_BROKEN,\n LOADING_SOURCE_CODE,\n shouldBeActive,\n} from \"./app.helpers.js\";\nimport { reroute } from \"../navigation/reroute.js\";\nimport { find } from \"../utils/find.js\";\nimport { toUnmountPromise } from \"../lifecycles/unmount.js\";\nimport {\n toUnloadPromise,\n getAppUnloadInfo,\n addAppToUnload,\n} from \"../lifecycles/unload.js\";\nimport { formatErrorMessage } from \"./app-errors.js\";\nimport { isInBrowser } from \"../utils/runtime-environment.js\";\nimport { assign } from \"../utils/assign\";\n\nconst apps = [];\n\nexport function getAppChanges() {\n const appsToUnload = [],\n appsToUnmount = [],\n appsToLoad = [],\n appsToMount = [];\n\n // We re-attempt to download applications in LOAD_ERROR after a timeout of 200 milliseconds\n const currentTime = new Date().getTime();\n\n apps.forEach((app) => {\n const appShouldBeActive =\n app.status !== SKIP_BECAUSE_BROKEN && shouldBeActive(app);\n\n switch (app.status) {\n case LOAD_ERROR:\n if (appShouldBeActive && currentTime - app.loadErrorTime >= 200) {\n appsToLoad.push(app);\n }\n break;\n case NOT_LOADED:\n case LOADING_SOURCE_CODE:\n if (appShouldBeActive) {\n appsToLoad.push(app);\n }\n break;\n case NOT_BOOTSTRAPPED:\n case NOT_MOUNTED:\n if (!appShouldBeActive && getAppUnloadInfo(toName(app))) {\n appsToUnload.push(app);\n } else if (appShouldBeActive) {\n appsToMount.push(app);\n }\n break;\n case MOUNTED:\n if (!appShouldBeActive) {\n appsToUnmount.push(app);\n }\n break;\n // all other statuses are ignored\n }\n });\n\n return { appsToUnload, appsToUnmount, appsToLoad, appsToMount };\n}\n\nexport function getMountedApps() {\n return apps.filter(isActive).map(toName);\n}\n\nexport function getAppNames() {\n return apps.map(toName);\n}\n\n// used in devtools, not (currently) exposed as a single-spa API\nexport function getRawAppData() {\n return [...apps];\n}\n\nexport function getAppStatus(appName) {\n const app = find(apps, (app) => toName(app) === appName);\n return app ? app.status : null;\n}\n\nexport function registerApplication(\n appNameOrConfig,\n appOrLoadApp,\n activeWhen,\n customProps\n) {\n const registration = sanitizeArguments(\n appNameOrConfig,\n appOrLoadApp,\n activeWhen,\n customProps\n );\n\n if (getAppNames().indexOf(registration.name) !== -1)\n throw Error(\n formatErrorMessage(\n 21,\n __DEV__ &&\n `There is already an app registered with name ${registration.name}`,\n registration.name\n )\n );\n\n apps.push(\n assign(\n {\n loadErrorTime: null,\n status: NOT_LOADED,\n parcels: {},\n devtools: {\n overlays: {\n options: {},\n selectors: [],\n },\n },\n },\n registration\n )\n );\n\n if (isInBrowser) {\n ensureJQuerySupport();\n reroute();\n }\n}\n\nexport function checkActivityFunctions(location = window.location) {\n return apps.filter((app) => app.activeWhen(location)).map(toName);\n}\n\nexport function unregisterApplication(appName) {\n if (apps.filter((app) => toName(app) === appName).length === 0) {\n throw Error(\n formatErrorMessage(\n 25,\n __DEV__ &&\n `Cannot unregister application '${appName}' because no such application has been registered`,\n appName\n )\n );\n }\n\n return unloadApplication(appName).then(() => {\n const appIndex = apps.map(toName).indexOf(appName);\n apps.splice(appIndex, 1);\n });\n}\n\nexport function unloadApplication(appName, opts = { waitForUnmount: false }) {\n if (typeof appName !== \"string\") {\n throw Error(\n formatErrorMessage(\n 26,\n __DEV__ && `unloadApplication requires a string 'appName'`\n )\n );\n }\n const app = find(apps, (App) => toName(App) === appName);\n if (!app) {\n throw Error(\n formatErrorMessage(\n 27,\n __DEV__ &&\n `Could not unload application '${appName}' because no such application has been registered`,\n appName\n )\n );\n }\n\n const appUnloadInfo = getAppUnloadInfo(toName(app));\n if (opts && opts.waitForUnmount) {\n // We need to wait for unmount before unloading the app\n\n if (appUnloadInfo) {\n // Someone else is already waiting for this, too\n return appUnloadInfo.promise;\n } else {\n // We're the first ones wanting the app to be resolved.\n const promise = new Promise((resolve, reject) => {\n addAppToUnload(app, () => promise, resolve, reject);\n });\n return promise;\n }\n } else {\n /* We should unmount the app, unload it, and remount it immediately.\n */\n\n let resultPromise;\n\n if (appUnloadInfo) {\n // Someone else is already waiting for this app to unload\n resultPromise = appUnloadInfo.promise;\n immediatelyUnloadApp(app, appUnloadInfo.resolve, appUnloadInfo.reject);\n } else {\n // We're the first ones wanting the app to be resolved.\n resultPromise = new Promise((resolve, reject) => {\n addAppToUnload(app, () => resultPromise, resolve, reject);\n immediatelyUnloadApp(app, resolve, reject);\n });\n }\n\n return resultPromise;\n }\n}\n\nfunction immediatelyUnloadApp(app, resolve, reject) {\n toUnmountPromise(app)\n .then(toUnloadPromise)\n .then(() => {\n resolve();\n setTimeout(() => {\n // reroute, but the unload promise is done\n reroute();\n });\n })\n .catch(reject);\n}\n\nfunction validateRegisterWithArguments(\n name,\n appOrLoadApp,\n activeWhen,\n customProps\n) {\n if (typeof name !== \"string\" || name.length === 0)\n throw Error(\n formatErrorMessage(\n 20,\n __DEV__ &&\n `The 1st argument to registerApplication must be a non-empty string 'appName'`\n )\n );\n\n if (!appOrLoadApp)\n throw Error(\n formatErrorMessage(\n 23,\n __DEV__ &&\n \"The 2nd argument to registerApplication must be an application or loading application function\"\n )\n );\n\n if (typeof activeWhen !== \"function\")\n throw Error(\n formatErrorMessage(\n 24,\n __DEV__ &&\n \"The 3rd argument to registerApplication must be an activeWhen function\"\n )\n );\n\n if (!validCustomProps(customProps))\n throw Error(\n formatErrorMessage(\n 22,\n __DEV__ &&\n \"The optional 4th argument is a customProps and must be an object\"\n )\n );\n}\n\nexport function validateRegisterWithConfig(config) {\n if (Array.isArray(config) || config === null)\n throw Error(\n formatErrorMessage(\n 39,\n __DEV__ && \"Configuration object can't be an Array or null!\"\n )\n );\n const validKeys = [\"name\", \"app\", \"activeWhen\", \"customProps\"];\n const invalidKeys = Object.keys(config).reduce(\n (invalidKeys, prop) =>\n validKeys.indexOf(prop) >= 0 ? invalidKeys : invalidKeys.concat(prop),\n []\n );\n if (invalidKeys.length !== 0)\n throw Error(\n formatErrorMessage(\n 38,\n __DEV__ &&\n `The configuration object accepts only: ${validKeys.join(\n \", \"\n )}. Invalid keys: ${invalidKeys.join(\", \")}.`,\n validKeys.join(\", \"),\n invalidKeys.join(\", \")\n )\n );\n if (typeof config.name !== \"string\" || config.name.length === 0)\n throw Error(\n formatErrorMessage(\n 20,\n __DEV__ &&\n \"The config.name on registerApplication must be a non-empty string\"\n )\n );\n if (typeof config.app !== \"object\" && typeof config.app !== \"function\")\n throw Error(\n formatErrorMessage(\n 20,\n __DEV__ &&\n \"The config.app on registerApplication must be an application or a loading function\"\n )\n );\n const allowsStringAndFunction = (activeWhen) =>\n typeof activeWhen === \"string\" || typeof activeWhen === \"function\";\n if (\n !allowsStringAndFunction(config.activeWhen) &&\n !(\n Array.isArray(config.activeWhen) &&\n config.activeWhen.every(allowsStringAndFunction)\n )\n )\n throw Error(\n formatErrorMessage(\n 24,\n __DEV__ &&\n \"The config.activeWhen on registerApplication must be a string, function or an array with both\"\n )\n );\n if (!validCustomProps(config.customProps))\n throw Error(\n formatErrorMessage(\n 22,\n __DEV__ && \"The optional config.customProps must be an object\"\n )\n );\n}\n\nfunction validCustomProps(customProps) {\n return (\n !customProps ||\n typeof customProps === \"function\" ||\n (typeof customProps === \"object\" &&\n customProps !== null &&\n !Array.isArray(customProps))\n );\n}\n\nfunction sanitizeArguments(\n appNameOrConfig,\n appOrLoadApp,\n activeWhen,\n customProps\n) {\n const usingObjectAPI = typeof appNameOrConfig === \"object\";\n\n const registration = {\n name: null,\n loadApp: null,\n activeWhen: null,\n customProps: null,\n };\n\n if (usingObjectAPI) {\n validateRegisterWithConfig(appNameOrConfig);\n registration.name = appNameOrConfig.name;\n registration.loadApp = appNameOrConfig.app;\n registration.activeWhen = appNameOrConfig.activeWhen;\n registration.customProps = appNameOrConfig.customProps;\n } else {\n validateRegisterWithArguments(\n appNameOrConfig,\n appOrLoadApp,\n activeWhen,\n customProps\n );\n registration.name = appNameOrConfig;\n registration.loadApp = appOrLoadApp;\n registration.activeWhen = activeWhen;\n registration.customProps = customProps;\n }\n\n registration.loadApp = sanitizeLoadApp(registration.loadApp);\n registration.customProps = sanitizeCustomProps(registration.customProps);\n registration.activeWhen = sanitizeActiveWhen(registration.activeWhen);\n\n return registration;\n}\n\nfunction sanitizeLoadApp(loadApp) {\n if (typeof loadApp !== \"function\") {\n return () => Promise.resolve(loadApp);\n }\n\n return loadApp;\n}\n\nfunction sanitizeCustomProps(customProps) {\n return customProps ? customProps : {};\n}\n\nfunction sanitizeActiveWhen(activeWhen) {\n let activeWhenArray = Array.isArray(activeWhen) ? activeWhen : [activeWhen];\n activeWhenArray = activeWhenArray.map((activeWhenOrPath) =>\n typeof activeWhenOrPath === \"function\"\n ? activeWhenOrPath\n : pathToActiveWhen(activeWhenOrPath)\n );\n\n return (location) =>\n activeWhenArray.some((activeWhen) => activeWhen(location));\n}\n\nexport function pathToActiveWhen(path, exactMatch) {\n const regex = toDynamicPathValidatorRegex(path, exactMatch);\n\n return (location) => {\n // compatible with IE10\n let origin = location.origin;\n if (!origin) {\n origin = `${location.protocol}//${location.host}`;\n }\n const route = location.href\n .replace(origin, \"\")\n .replace(location.search, \"\")\n .split(\"?\")[0];\n return regex.test(route);\n };\n}\n\nfunction toDynamicPathValidatorRegex(path, exactMatch) {\n let lastIndex = 0,\n inDynamic = false,\n regexStr = \"^\";\n\n if (path[0] !== \"/\") {\n path = \"/\" + path;\n }\n\n for (let charIndex = 0; charIndex < path.length; charIndex++) {\n const char = path[charIndex];\n const startOfDynamic = !inDynamic && char === \":\";\n const endOfDynamic = inDynamic && char === \"/\";\n if (startOfDynamic || endOfDynamic) {\n appendToRegex(charIndex);\n }\n }\n\n appendToRegex(path.length);\n return new RegExp(regexStr, \"i\");\n\n function appendToRegex(index) {\n const anyCharMaybeTrailingSlashRegex = \"[^/]+/?\";\n const commonStringSubPath = escapeStrRegex(path.slice(lastIndex, index));\n\n regexStr += inDynamic\n ? anyCharMaybeTrailingSlashRegex\n : commonStringSubPath;\n\n if (index === path.length) {\n if (inDynamic) {\n if (exactMatch) {\n // Ensure exact match paths that end in a dynamic portion don't match\n // urls with characters after a slash after the dynamic portion.\n regexStr += \"$\";\n }\n } else {\n // For exact matches, expect no more characters. Otherwise, allow\n // any characters.\n const suffix = exactMatch ? \"\" : \".*\";\n\n regexStr =\n // use charAt instead as we could not use es6 method endsWith\n regexStr.charAt(regexStr.length - 1) === \"/\"\n ? `${regexStr}${suffix}$`\n : `${regexStr}(/${suffix})?(#.*)?$`;\n }\n }\n\n inDynamic = !inDynamic;\n lastIndex = index;\n }\n\n function escapeStrRegex(str) {\n // borrowed from https://github.com/sindresorhus/escape-string-regexp/blob/master/index.js\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\");\n }\n}\n","import CustomEvent from \"custom-event\";\nimport { isStarted } from \"../start.js\";\nimport { toLoadPromise } from \"../lifecycles/load.js\";\nimport { toBootstrapPromise } from \"../lifecycles/bootstrap.js\";\nimport { toMountPromise } from \"../lifecycles/mount.js\";\nimport { toUnmountPromise } from \"../lifecycles/unmount.js\";\nimport {\n getAppStatus,\n getAppChanges,\n getMountedApps,\n} from \"../applications/apps.js\";\nimport {\n callCapturedEventListeners,\n navigateToUrl,\n} from \"./navigation-events.js\";\nimport { toUnloadPromise } from \"../lifecycles/unload.js\";\nimport {\n toName,\n shouldBeActive,\n NOT_MOUNTED,\n MOUNTED,\n NOT_LOADED,\n SKIP_BECAUSE_BROKEN,\n} from \"../applications/app.helpers.js\";\nimport { assign } from \"../utils/assign.js\";\nimport { isInBrowser } from \"../utils/runtime-environment.js\";\n\nlet appChangeUnderway = false,\n peopleWaitingOnAppChange = [],\n currentUrl = isInBrowser && window.location.href;\n\nexport function triggerAppChange() {\n // Call reroute with no arguments, intentionally\n return reroute();\n}\n\nexport function reroute(pendingPromises = [], eventArguments) {\n if (appChangeUnderway) {\n return new Promise((resolve, reject) => {\n peopleWaitingOnAppChange.push({\n resolve,\n reject,\n eventArguments,\n });\n });\n }\n\n const {\n appsToUnload,\n appsToUnmount,\n appsToLoad,\n appsToMount,\n } = getAppChanges();\n let appsThatChanged,\n navigationIsCanceled = false,\n oldUrl = currentUrl,\n newUrl = (currentUrl = window.location.href);\n\n if (isStarted()) {\n appChangeUnderway = true;\n appsThatChanged = appsToUnload.concat(\n appsToLoad,\n appsToUnmount,\n appsToMount\n );\n return performAppChanges();\n } else {\n appsThatChanged = appsToLoad;\n return loadApps();\n }\n\n function cancelNavigation() {\n navigationIsCanceled = true;\n }\n\n function loadApps() {\n return Promise.resolve().then(() => {\n const loadPromises = appsToLoad.map(toLoadPromise);\n\n return (\n Promise.all(loadPromises)\n .then(callAllEventListeners)\n // there are no mounted apps, before start() is called, so we always return []\n .then(() => [])\n .catch((err) => {\n callAllEventListeners();\n throw err;\n })\n );\n });\n }\n\n function performAppChanges() {\n return Promise.resolve().then(() => {\n // https://github.com/single-spa/single-spa/issues/545\n window.dispatchEvent(\n new CustomEvent(\n appsThatChanged.length === 0\n ? \"single-spa:before-no-app-change\"\n : \"single-spa:before-app-change\",\n getCustomEventDetail(true)\n )\n );\n\n window.dispatchEvent(\n new CustomEvent(\n \"single-spa:before-routing-event\",\n getCustomEventDetail(true, { cancelNavigation })\n )\n );\n\n if (navigationIsCanceled) {\n window.dispatchEvent(\n new CustomEvent(\n \"single-spa:before-mount-routing-event\",\n getCustomEventDetail(true)\n )\n );\n finishUpAndReturn();\n navigateToUrl(oldUrl);\n return;\n }\n\n const unloadPromises = appsToUnload.map(toUnloadPromise);\n\n const unmountUnloadPromises = appsToUnmount\n .map(toUnmountPromise)\n .map((unmountPromise) => unmountPromise.then(toUnloadPromise));\n\n const allUnmountPromises = unmountUnloadPromises.concat(unloadPromises);\n\n const unmountAllPromise = Promise.all(allUnmountPromises);\n\n unmountAllPromise.then(() => {\n window.dispatchEvent(\n new CustomEvent(\n \"single-spa:before-mount-routing-event\",\n getCustomEventDetail(true)\n )\n );\n });\n\n /* We load and bootstrap apps while other apps are unmounting, but we\n * wait to mount the app until all apps are finishing unmounting\n */\n const loadThenMountPromises = appsToLoad.map((app) => {\n return toLoadPromise(app).then((app) =>\n tryToBootstrapAndMount(app, unmountAllPromise)\n );\n });\n\n /* These are the apps that are already bootstrapped and just need\n * to be mounted. They each wait for all unmounting apps to finish up\n * before they mount.\n */\n const mountPromises = appsToMount\n .filter((appToMount) => appsToLoad.indexOf(appToMount) < 0)\n .map((appToMount) => {\n return tryToBootstrapAndMount(appToMount, unmountAllPromise);\n });\n return unmountAllPromise\n .catch((err) => {\n callAllEventListeners();\n throw err;\n })\n .then(() => {\n /* Now that the apps that needed to be unmounted are unmounted, their DOM navigation\n * events (like hashchange or popstate) should have been cleaned up. So it's safe\n * to let the remaining captured event listeners to handle about the DOM event.\n */\n callAllEventListeners();\n\n return Promise.all(loadThenMountPromises.concat(mountPromises))\n .catch((err) => {\n pendingPromises.forEach((promise) => promise.reject(err));\n throw err;\n })\n .then(finishUpAndReturn);\n });\n });\n }\n\n function finishUpAndReturn() {\n const returnValue = getMountedApps();\n pendingPromises.forEach((promise) => promise.resolve(returnValue));\n\n try {\n const appChangeEventName =\n appsThatChanged.length === 0\n ? \"single-spa:no-app-change\"\n : \"single-spa:app-change\";\n window.dispatchEvent(\n new CustomEvent(appChangeEventName, getCustomEventDetail())\n );\n window.dispatchEvent(\n new CustomEvent(\"single-spa:routing-event\", getCustomEventDetail())\n );\n } catch (err) {\n /* We use a setTimeout because if someone else's event handler throws an error, single-spa\n * needs to carry on. If a listener to the event throws an error, it's their own fault, not\n * single-spa's.\n */\n setTimeout(() => {\n throw err;\n });\n }\n\n /* Setting this allows for subsequent calls to reroute() to actually perform\n * a reroute instead of just getting queued behind the current reroute call.\n * We want to do this after the mounting/unmounting is done but before we\n * resolve the promise for the `reroute` function.\n */\n appChangeUnderway = false;\n\n if (peopleWaitingOnAppChange.length > 0) {\n /* While we were rerouting, someone else triggered another reroute that got queued.\n * So we need reroute again.\n */\n const nextPendingPromises = peopleWaitingOnAppChange;\n peopleWaitingOnAppChange = [];\n reroute(nextPendingPromises);\n }\n\n return returnValue;\n }\n\n /* We need to call all event listeners that have been delayed because they were\n * waiting on single-spa. This includes haschange and popstate events for both\n * the current run of performAppChanges(), but also all of the queued event listeners.\n * We want to call the listeners in the same order as if they had not been delayed by\n * single-spa, which means queued ones first and then the most recent one.\n */\n function callAllEventListeners() {\n pendingPromises.forEach((pendingPromise) => {\n callCapturedEventListeners(pendingPromise.eventArguments);\n });\n\n callCapturedEventListeners(eventArguments);\n }\n\n function getCustomEventDetail(isBeforeChanges = false, extraProperties) {\n const newAppStatuses = {};\n const appsByNewStatus = {\n // for apps that were mounted\n [MOUNTED]: [],\n // for apps that were unmounted\n [NOT_MOUNTED]: [],\n // apps that were forcibly unloaded\n [NOT_LOADED]: [],\n // apps that attempted to do something but are broken now\n [SKIP_BECAUSE_BROKEN]: [],\n };\n\n if (isBeforeChanges) {\n appsToLoad.concat(appsToMount).forEach((app, index) => {\n addApp(app, MOUNTED);\n });\n appsToUnload.forEach((app) => {\n addApp(app, NOT_LOADED);\n });\n appsToUnmount.forEach((app) => {\n addApp(app, NOT_MOUNTED);\n });\n } else {\n appsThatChanged.forEach((app) => {\n addApp(app);\n });\n }\n\n const result = {\n detail: {\n newAppStatuses,\n appsByNewStatus,\n totalAppChanges: appsThatChanged.length,\n originalEvent: eventArguments?.[0],\n oldUrl,\n newUrl,\n navigationIsCanceled,\n },\n };\n\n if (extraProperties) {\n assign(result.detail, extraProperties);\n }\n\n return result;\n\n function addApp(app, status) {\n const appName = toName(app);\n status = status || getAppStatus(appName);\n newAppStatuses[appName] = status;\n const statusArr = (appsByNewStatus[status] =\n appsByNewStatus[status] || []);\n statusArr.push(appName);\n }\n }\n}\n\n/**\n * Let's imagine that some kind of delay occurred during application loading.\n * The user without waiting for the application to load switched to another route,\n * this means that we shouldn't bootstrap and mount that application, thus we check\n * twice if that application should be active before bootstrapping and mounting.\n * https://github.com/single-spa/single-spa/issues/524\n */\nfunction tryToBootstrapAndMount(app, unmountAllPromise) {\n if (shouldBeActive(app)) {\n return toBootstrapPromise(app).then((app) =>\n unmountAllPromise.then(() =>\n shouldBeActive(app) ? toMountPromise(app) : app\n )\n );\n } else {\n return unmountAllPromise.then(() => app);\n }\n}\n","import { reroute } from \"./navigation/reroute.js\";\nimport { formatErrorMessage } from \"./applications/app-errors.js\";\nimport { setUrlRerouteOnly } from \"./navigation/navigation-events.js\";\nimport { isInBrowser } from \"./utils/runtime-environment.js\";\n\nlet started = false;\n\nexport function start(opts) {\n started = true;\n if (opts && opts.urlRerouteOnly) {\n setUrlRerouteOnly(opts.urlRerouteOnly);\n }\n if (isInBrowser) {\n reroute();\n }\n}\n\nexport function isStarted() {\n return started;\n}\n\nif (isInBrowser) {\n setTimeout(() => {\n if (!started) {\n console.warn(\n formatErrorMessage(\n 1,\n __DEV__ &&\n `singleSpa.start() has not been called, 5000ms after single-spa was loaded. Before start() is called, apps can be declared and loaded, but not bootstrapped or mounted.`\n )\n );\n }\n }, 5000);\n}\n","import { getRawAppData, unregisterApplication } from \"../applications/apps\";\nimport { reroute } from \"../navigation/reroute\";\nimport { NOT_LOADED } from \"../applications/app.helpers\";\nimport { toLoadPromise } from \"../lifecycles/load\";\nimport { toBootstrapPromise } from \"../lifecycles/bootstrap\";\n\nexport default {\n getRawAppData,\n reroute,\n NOT_LOADED,\n toLoadPromise,\n toBootstrapPromise,\n unregisterApplication,\n};\n","export { start } from \"./start.js\";\nexport { ensureJQuerySupport } from \"./jquery-support.js\";\nexport {\n setBootstrapMaxTime,\n setMountMaxTime,\n setUnmountMaxTime,\n setUnloadMaxTime,\n} from \"./applications/timeouts.js\";\nexport {\n registerApplication,\n unregisterApplication,\n getMountedApps,\n getAppStatus,\n unloadApplication,\n checkActivityFunctions,\n getAppNames,\n pathToActiveWhen,\n} from \"./applications/apps.js\";\nexport { navigateToUrl } from \"./navigation/navigation-events.js\";\nexport { triggerAppChange } from \"./navigation/reroute.js\";\nexport {\n addErrorHandler,\n removeErrorHandler,\n} from \"./applications/app-errors.js\";\nexport { mountRootParcel } from \"./parcels/mount-parcel.js\";\n\nexport {\n NOT_LOADED,\n LOADING_SOURCE_CODE,\n NOT_BOOTSTRAPPED,\n BOOTSTRAPPING,\n NOT_MOUNTED,\n MOUNTING,\n UPDATING,\n LOAD_ERROR,\n MOUNTED,\n UNMOUNTING,\n SKIP_BECAUSE_BROKEN,\n} from \"./applications/app.helpers.js\";\n\nimport devtools from \"./devtools/devtools\";\nimport { isInBrowser } from \"./utils/runtime-environment.js\";\n\nif (isInBrowser && window.__SINGLE_SPA_DEVTOOLS__) {\n window.__SINGLE_SPA_DEVTOOLS__.exposedMethods = devtools;\n}\n"],"names":["global","errorHandlers","handleAppError","err","app","newStatus","transformedErr","transformErr","length","forEach","handler","setTimeout","addErrorHandler","Error","formatErrorMessage","push","removeErrorHandler","removedSomething","filter","h","isHandler","code","msg","args","join","ogErr","appOrParcel","errPrefix","objectType","toName","status","result","message","console","warn","JSON","stringify","appOrParcelName","NOT_LOADED","LOADING_SOURCE_CODE","NOT_BOOTSTRAPPED","BOOTSTRAPPING","NOT_MOUNTED","MOUNTING","MOUNTED","UPDATING","UNMOUNTING","UNLOADING","LOAD_ERROR","SKIP_BECAUSE_BROKEN","isActive","shouldBeActive","activeWhen","window","location","name","isParcel","Boolean","unmountThisParcel","assign","i","arguments","key","find","arr","func","validLifecycleFn","fn","isArrayOfFns","Array","isArray","item","flattenFnArray","lifecycle","fns","Promise","resolve","type","props","reduce","resultPromise","index","then","thisPromise","smellsLikeAPromise","reject","promise","catch","toBootstrapPromise","hardFail","bootstrap","successfulBootstrap","reasonableTime","toUnmountPromise","unmountChildrenParcels","Object","keys","parcels","map","parcelId","all","unmountAppOrParcel","parcelError","parentError","beforeFirstMountFired","firstMountFired","toMountPromise","dispatchEvent","CustomEvent","setSkipBecauseBroken","toUpdatePromise","parcel","parcelCount","rootParcels","mountRootParcel","mountParcel","apply","config","customProps","owningAppOrParcel","domElement","id","passedConfigLoadingFunction","configLoadingFunction","parentName","mountPromise","value","resolveUnmount","rejectUnmount","externalRepresentation","loadPromise","prototype","hasOwnProperty","call","mount","unmount","update","timeouts","ensureValidAppTimeouts","promiseWithoutReturnValue","bootstrapPromise","unmountPromise","getStatus","getProps","bind","singleSpa","unmountSelf","defaultWarningMillis","globalTimeoutConfig","millis","dieOnTimeout","warningMillis","unload","setBootstrapMaxTime","time","setMountMaxTime","setUnmountMaxTime","setUnloadMaxTime","timeoutConfig","warningPeriod","finished","errored","val","maybeTimingOut","errMsg","shouldError","error","numWarnings","numMillis","toLoadPromise","appOpts","isUserErr","loadApp","loadErrorTime","validationErrMessage","validationErrCode","appOptsStr","devtools","overlays","Date","getTime","isInBrowser","capturedEventListeners","hashchange","popstate","routingEventsListeningTo","navigateToUrl","obj","url","href","currentTarget","preventDefault","current","parseUri","destination","indexOf","hash","host","pathname","search","history","pushState","callCapturedEventListeners","eventArguments","eventType","listener","e","urlRerouteOnly","setUrlRerouteOnly","urlReroute","reroute","patchedUpdateState","updateState","methodName","urlBefore","urlAfter","isStarted","createPopStateEvent","state","originalMethodName","evt","PopStateEvent","document","createEvent","initPopStateEvent","singleSpaTrigger","addEventListener","originalAddEventListener","originalRemoveEventListener","removeEventListener","eventName","listenerFn","replaceState","singleSpaNavigate","str","anchor","createElement","hasInitialized","ensureJQuerySupport","jQuery","$","jquery","originalJQueryOn","on","originalJQueryOff","off","eventString","captureRoutingEvents","originalJQueryFunction","nativeFunctionToCall","originalArgs","eventNames","split","replace","trim","appsToUnload","toUnloadPromise","unloadInfo","finishUnloadingApp","unloadPromise","errorUnloadingApp","addAppToUnload","promiseGetter","defineProperty","get","getAppUnloadInfo","appName","apps","getAppChanges","appsToUnmount","appsToLoad","appsToMount","currentTime","appShouldBeActive","getMountedApps","getAppNames","getRawAppData","getAppStatus","registerApplication","appNameOrConfig","appOrLoadApp","registration","sanitizeArguments","options","selectors","checkActivityFunctions","unregisterApplication","unloadApplication","appIndex","splice","opts","waitForUnmount","App","appUnloadInfo","immediatelyUnloadApp","validateRegisterWithArguments","validCustomProps","validateRegisterWithConfig","validKeys","invalidKeys","prop","concat","allowsStringAndFunction","every","usingObjectAPI","sanitizeLoadApp","sanitizeCustomProps","sanitizeActiveWhen","activeWhenArray","activeWhenOrPath","pathToActiveWhen","some","path","exactMatch","regex","toDynamicPathValidatorRegex","origin","protocol","route","test","lastIndex","inDynamic","regexStr","charIndex","char","startOfDynamic","endOfDynamic","appendToRegex","RegExp","anyCharMaybeTrailingSlashRegex","commonStringSubPath","escapeStrRegex","slice","suffix","charAt","appChangeUnderway","peopleWaitingOnAppChange","currentUrl","triggerAppChange","pendingPromises","appsThatChanged","navigationIsCanceled","oldUrl","newUrl","performAppChanges","loadApps","cancelNavigation","loadPromises","callAllEventListeners","getCustomEventDetail","finishUpAndReturn","unloadPromises","unmountUnloadPromises","allUnmountPromises","unmountAllPromise","loadThenMountPromises","tryToBootstrapAndMount","mountPromises","appToMount","returnValue","appChangeEventName","nextPendingPromises","pendingPromise","isBeforeChanges","extraProperties","newAppStatuses","appsByNewStatus","addApp","detail","totalAppChanges","originalEvent","statusArr","started","start","__SINGLE_SPA_DEVTOOLS__","exposedMethods"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACA,IAAI,iBAAiB,GAAGA,cAAM,CAAC,WAAW,CAAC;;EAE3C,SAAS,SAAS,IAAI;IACpB,IAAI;MACF,IAAI,CAAC,GAAG,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;MACjE,QAAQ,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;KACpD,CAAC,OAAO,CAAC,EAAE;KACX;IACD,OAAO,KAAK,CAAC;GACd;;;;;;;;;;EAUD,eAAc,GAAG,SAAS,EAAE,GAAG,iBAAiB;;;EAGhD,WAAW,KAAK,OAAO,QAAQ,IAAI,UAAU,KAAK,OAAO,QAAQ,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;IAClH,IAAI,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,MAAM,EAAE;MACV,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;KAC3E,MAAM;MACL,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;KAC/C;IACD,OAAO,CAAC,CAAC;GACV;;;EAGD,SAAS,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;IAClC,IAAI,CAAC,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;IACrC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;IACd,IAAI,MAAM,EAAE;MACV,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;MACpC,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;MAC1C,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;KAC1B,MAAM;MACL,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;MAClB,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;MACrB,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;KACnB;IACD,OAAO,CAAC,CAAC;;;EC5CX,IAAIC,aAAa,GAAG,EAApB;EAEO,SAASC,cAAT,CAAwBC,GAAxB,EAA6BC,GAA7B,EAAkCC,SAAlC,EAA6C;EAClD,MAAMC,cAAc,GAAGC,YAAY,CAACJ,GAAD,EAAMC,GAAN,EAAWC,SAAX,CAAnC;;EAEA,MAAIJ,aAAa,CAACO,MAAlB,EAA0B;EACxBP,IAAAA,aAAa,CAACQ,OAAd,CAAsB,UAACC,OAAD;EAAA,aAAaA,OAAO,CAACJ,cAAD,CAApB;EAAA,KAAtB;EACD,GAFD,MAEO;EACLK,IAAAA,UAAU,CAAC,YAAM;EACf,YAAML,cAAN;EACD,KAFS,CAAV;EAGD;EACF;EAEM,SAASM,eAAT,CAAyBF,OAAzB,EAAkC;EACvC,MAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;EACjC,UAAMG,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEL,+CAFK,CADT,CAAX;EAMD;;EAEDb,EAAAA,aAAa,CAACc,IAAd,CAAmBL,OAAnB;EACD;EAEM,SAASM,kBAAT,CAA4BN,OAA5B,EAAqC;EAC1C,MAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;EACjC,UAAMG,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEL,+CAFK,CADT,CAAX;EAMD;;EAED,MAAIG,gBAAgB,GAAG,KAAvB;EACAhB,EAAAA,aAAa,GAAGA,aAAa,CAACiB,MAAd,CAAqB,UAACC,CAAD,EAAO;EAC1C,QAAMC,SAAS,GAAGD,CAAC,KAAKT,OAAxB;EACAO,IAAAA,gBAAgB,GAAGA,gBAAgB,IAAIG,SAAvC;EACA,WAAO,CAACA,SAAR;EACD,GAJe,CAAhB;EAMA,SAAOH,gBAAP;EACD;EAEM,SAASH,kBAAT,CAA4BO,IAA5B,EAAkCC,GAAlC,EAAgD;EAAA,oCAANC,IAAM;EAANA,IAAAA,IAAM;EAAA;;EACrD,gDAAuCF,IAAvC,eACEC,GAAG,GAAGA,GAAG,GAAG,GAAT,GAAe,EADpB,uDAE6CD,IAF7C,SAGEE,IAAI,CAACf,MAAL,kBAAsBe,IAAI,CAACC,IAAL,CAAU,OAAV,CAAtB,IAA6C,EAH/C;EAKD;EAEM,SAASjB,YAAT,CAAsBkB,KAAtB,EAA6BC,WAA7B,EAA0CrB,SAA1C,EAAqD;EAC1D,MAAMsB,SAAS,aAAMC,UAAU,CAACF,WAAD,CAAhB,eAAkCG,MAAM,CACrDH,WADqD,CAAxC,8BAEMA,WAAW,CAACI,MAFlB,OAAf;EAIA,MAAIC,MAAJ;;EAEA,MAAIN,KAAK,YAAYZ,KAArB,EAA4B;EAC1B,QAAI;EACFY,MAAAA,KAAK,CAACO,OAAN,GAAgBL,SAAS,GAAGF,KAAK,CAACO,OAAlC;EACD,KAFD,CAEE,OAAO7B,GAAP,EAAY;EACZ;;;EAGD;;EACD4B,IAAAA,MAAM,GAAGN,KAAT;EACD,GATD,MASO;EACLQ,IAAAA,OAAO,CAACC,IAAR,CACEpB,kBAAkB,CAChB,EADgB,mBAGLY,WAAW,CAACI,MADvB,gBACmCD,MAAM,CACrCH,WADqC,CADzC,iHAFgB,EAMhBA,WAAW,CAACI,MANI,EAOhBD,MAAM,CAACH,WAAD,CAPU,CADpB;;EAWA,QAAI;EACFK,MAAAA,MAAM,GAAGlB,KAAK,CAACc,SAAS,GAAGQ,IAAI,CAACC,SAAL,CAAeX,KAAf,CAAb,CAAd;EACD,KAFD,CAEE,OAAOtB,GAAP,EAAY;EACZ;EACA4B,MAAAA,MAAM,GAAGN,KAAT;EACD;EACF;;EAEDM,EAAAA,MAAM,CAACM,eAAP,GAAyBR,MAAM,CAACH,WAAD,CAA/B,CApC0D;EAuC1D;;EACAA,EAAAA,WAAW,CAACI,MAAZ,GAAqBzB,SAArB;EAEA,SAAO0B,MAAP;EACD;;MCjGYO,UAAU,GAAG;MACbC,mBAAmB,GAAG;MACtBC,gBAAgB,GAAG;MACnBC,aAAa,GAAG;MAChBC,WAAW,GAAG;MACdC,QAAQ,GAAG;MACXC,OAAO,GAAG;MACVC,QAAQ,GAAG;MACXC,UAAU,GAAG;EACnB,IAAMC,SAAS,GAAG,WAAlB;MACMC,UAAU,GAAG;MACbC,mBAAmB,GAAG;EAE5B,SAASC,QAAT,CAAkB9C,GAAlB,EAAuB;EAC5B,SAAOA,GAAG,CAAC0B,MAAJ,KAAec,OAAtB;EACD;EAEM,SAASO,cAAT,CAAwB/C,GAAxB,EAA6B;EAClC,MAAI;EACF,WAAOA,GAAG,CAACgD,UAAJ,CAAeC,MAAM,CAACC,QAAtB,CAAP;EACD,GAFD,CAEE,OAAOnD,GAAP,EAAY;EACZD,IAAAA,cAAc,CAACC,GAAD,EAAMC,GAAN,EAAW6C,mBAAX,CAAd;EACA,WAAO,KAAP;EACD;EACF;EAEM,SAASpB,MAAT,CAAgBzB,GAAhB,EAAqB;EAC1B,SAAOA,GAAG,CAACmD,IAAX;EACD;EAEM,SAASC,QAAT,CAAkB9B,WAAlB,EAA+B;EACpC,SAAO+B,OAAO,CAAC/B,WAAW,CAACgC,iBAAb,CAAd;EACD;EAEM,SAAS9B,UAAT,CAAoBF,WAApB,EAAiC;EACtC,SAAO8B,QAAQ,CAAC9B,WAAD,CAAR,GAAwB,QAAxB,GAAmC,aAA1C;EACD;;ECvCD;EACA;EACO,SAASiC,MAAT,GAAkB;EACvB,OAAK,IAAIC,CAAC,GAAGC,SAAS,CAACrD,MAAV,GAAmB,CAAhC,EAAmCoD,CAAC,GAAG,CAAvC,EAA0CA,CAAC,EAA3C,EAA+C;EAC7C,SAAK,IAAIE,GAAT,IAAgBD,SAAS,CAACD,CAAD,CAAzB,EAA8B;EAC5B,UAAIE,GAAG,KAAK,WAAZ,EAAyB;EACvB;EACD;;EACDD,MAAAA,SAAS,CAACD,CAAC,GAAG,CAAL,CAAT,CAAiBE,GAAjB,IAAwBD,SAAS,CAACD,CAAD,CAAT,CAAaE,GAAb,CAAxB;EACD;EACF;;EAED,SAAOD,SAAS,CAAC,CAAD,CAAhB;EACD;;ECbD;;;EAIO,SAASE,IAAT,CAAcC,GAAd,EAAmBC,IAAnB,EAAyB;EAC9B,OAAK,IAAIL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGI,GAAG,CAACxD,MAAxB,EAAgCoD,CAAC,EAAjC,EAAqC;EACnC,QAAIK,IAAI,CAACD,GAAG,CAACJ,CAAD,CAAJ,CAAR,EAAkB;EAChB,aAAOI,GAAG,CAACJ,CAAD,CAAV;EACD;EACF;;EAED,SAAO,IAAP;EACD;;ECRM,SAASM,gBAAT,CAA0BC,EAA1B,EAA8B;EACnC,SAAOA,EAAE,KAAK,OAAOA,EAAP,KAAc,UAAd,IAA4BC,YAAY,CAACD,EAAD,CAA7C,CAAT;;EAEA,WAASC,YAAT,CAAsBJ,GAAtB,EAA2B;EACzB,WACEK,KAAK,CAACC,OAAN,CAAcN,GAAd,KAAsB,CAACD,IAAI,CAACC,GAAD,EAAM,UAACO,IAAD;EAAA,aAAU,OAAOA,IAAP,KAAgB,UAA1B;EAAA,KAAN,CAD7B;EAGD;EACF;EAEM,SAASC,cAAT,CAAwB9C,WAAxB,EAAqC+C,SAArC,EAAgD;EACrD,MAAIC,GAAG,GAAGhD,WAAW,CAAC+C,SAAD,CAAX,IAA0B,EAApC;EACAC,EAAAA,GAAG,GAAGL,KAAK,CAACC,OAAN,CAAcI,GAAd,IAAqBA,GAArB,GAA2B,CAACA,GAAD,CAAjC;;EACA,MAAIA,GAAG,CAAClE,MAAJ,KAAe,CAAnB,EAAsB;EACpBkE,IAAAA,GAAG,GAAG,CAAC;EAAA,aAAMC,OAAO,CAACC,OAAR,EAAN;EAAA,KAAD,CAAN;EACD;;EAED,MAAMC,IAAI,GAAGjD,UAAU,CAACF,WAAD,CAAvB;EACA,MAAM6B,IAAI,GAAG1B,MAAM,CAACH,WAAD,CAAnB;EAEA,SAAO,UAAUoD,KAAV,EAAiB;EACtB,WAAOJ,GAAG,CAACK,MAAJ,CAAW,UAACC,aAAD,EAAgBb,EAAhB,EAAoBc,KAApB,EAA8B;EAC9C,aAAOD,aAAa,CAACE,IAAd,CAAmB,YAAM;EAC9B,YAAMC,WAAW,GAAGhB,EAAE,CAACW,KAAD,CAAtB;EACA,eAAOM,kBAAkB,CAACD,WAAD,CAAlB,GACHA,WADG,GAEHR,OAAO,CAACU,MAAR,CACEvE,kBAAkB,CAChB,EADgB,oBAGJ+D,IADZ,cACoBtB,IADpB,sCACoDkB,SADpD,6BACgFQ,KADhF,8BAFgB,EAIhBJ,IAJgB,EAKhBtB,IALgB,EAMhBkB,SANgB,EAOhBQ,KAPgB,CADpB,CAFJ;EAaD,OAfM,CAAP;EAgBD,KAjBM,EAiBJN,OAAO,CAACC,OAAR,EAjBI,CAAP;EAkBD,GAnBD;EAoBD;EAEM,SAASQ,kBAAT,CAA4BE,OAA5B,EAAqC;EAC1C,SACEA,OAAO,IACP,OAAOA,OAAO,CAACJ,IAAf,KAAwB,UADxB,IAEA,OAAOI,OAAO,CAACC,KAAf,KAAyB,UAH3B;EAKD;;EC3CM,SAASC,kBAAT,CAA4B9D,WAA5B,EAAyC+D,QAAzC,EAAmD;EACxD,SAAOd,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,YAAM;EAClC,QAAIxD,WAAW,CAACI,MAAZ,KAAuBU,gBAA3B,EAA6C;EAC3C,aAAOd,WAAP;EACD;;EAEDA,IAAAA,WAAW,CAACI,MAAZ,GAAqBW,aAArB;;EAEA,QAAI,CAACf,WAAW,CAACgE,SAAjB,EAA4B;EAC1B;EACA,aAAOf,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuBS,mBAAvB,CAAP;EACD;;EAED,WAAOC,cAAc,CAAClE,WAAD,EAAc,WAAd,CAAd,CACJwD,IADI,CACCS,mBADD,EAEJJ,KAFI,CAEE,UAACpF,GAAD,EAAS;EACd,UAAIsF,QAAJ,EAAc;EACZ,cAAMlF,YAAY,CAACJ,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAlB;EACD,OAFD,MAEO;EACL/C,QAAAA,cAAc,CAACC,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAd;EACA,eAAOvB,WAAP;EACD;EACF,KATI,CAAP;EAUD,GAtBM,CAAP;;EAwBA,WAASiE,mBAAT,GAA+B;EAC7BjE,IAAAA,WAAW,CAACI,MAAZ,GAAqBY,WAArB;EACA,WAAOhB,WAAP;EACD;EACF;;EC7BM,SAASmE,gBAAT,CAA0BnE,WAA1B,EAAuC+D,QAAvC,EAAiD;EACtD,SAAOd,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,YAAM;EAClC,QAAIxD,WAAW,CAACI,MAAZ,KAAuBc,OAA3B,EAAoC;EAClC,aAAOlB,WAAP;EACD;;EACDA,IAAAA,WAAW,CAACI,MAAZ,GAAqBgB,UAArB;EAEA,QAAMgD,sBAAsB,GAAGC,MAAM,CAACC,IAAP,CAC7BtE,WAAW,CAACuE,OADiB,EAE7BC,GAF6B,CAEzB,UAACC,QAAD;EAAA,aAAczE,WAAW,CAACuE,OAAZ,CAAoBE,QAApB,EAA8BzC,iBAA9B,EAAd;EAAA,KAFyB,CAA/B;EAMA,WAAOiB,OAAO,CAACyB,GAAR,CAAYN,sBAAZ,EACJZ,IADI,CACCmB,kBADD,EACqB,UAACC,WAAD,EAAiB;EACzC;EACA,aAAOD,kBAAkB,GAAGnB,IAArB,CAA0B,YAAM;EACrC;EACA,YAAMqB,WAAW,GAAG1F,KAAK,CAACyF,WAAW,CAACtE,OAAb,CAAzB;;EACA,YAAIyD,QAAJ,EAAc;EACZ,gBAAMlF,YAAY,CAACgG,WAAD,EAAc7E,WAAd,EAA2BuB,mBAA3B,CAAlB;EACD,SAFD,MAEO;EACL/C,UAAAA,cAAc,CAACqG,WAAD,EAAc7E,WAAd,EAA2BuB,mBAA3B,CAAd;EACD;EACF,OARM,CAAP;EASD,KAZI,EAaJiC,IAbI,CAaC;EAAA,aAAMxD,WAAN;EAAA,KAbD,CAAP;;EAeA,aAAS2E,kBAAT,GAA8B;EAC5B;EACA,aAAOT,cAAc,CAAClE,WAAD,EAAc,SAAd,CAAd,CACJwD,IADI,CACC,YAAM;EACV;EACA,QAAkB;EAChBxD,UAAAA,WAAW,CAACI,MAAZ,GAAqBY,WAArB;EACD;EACF,OANI,EAOJ6C,KAPI,CAOE,UAACpF,GAAD,EAAS;EACd,YAAIsF,QAAJ,EAAc;EACZ,gBAAMlF,YAAY,CAACJ,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAlB;EACD,SAFD,MAEO;EACL/C,UAAAA,cAAc,CAACC,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAd;EACD;EACF,OAbI,CAAP;EAcD;EACF,GA5CM,CAAP;EA6CD;;EC7CD,IAAIuD,qBAAqB,GAAG,KAA5B;EACA,IAAIC,eAAe,GAAG,KAAtB;EAEO,SAASC,cAAT,CAAwBhF,WAAxB,EAAqC+D,QAArC,EAA+C;EACpD,SAAOd,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,YAAM;EAClC,QAAIxD,WAAW,CAACI,MAAZ,KAAuBY,WAA3B,EAAwC;EACtC,aAAOhB,WAAP;EACD;;EAED,QAAI,CAAC8E,qBAAL,EAA4B;EAC1BnD,MAAAA,MAAM,CAACsD,aAAP,CAAqB,IAAIC,WAAJ,CAAgB,+BAAhB,CAArB;EACAJ,MAAAA,qBAAqB,GAAG,IAAxB;EACD;;EAED,WAAOZ,cAAc,CAAClE,WAAD,EAAc,OAAd,CAAd,CACJwD,IADI,CACC,YAAM;EACVxD,MAAAA,WAAW,CAACI,MAAZ,GAAqBc,OAArB;;EAEA,UAAI,CAAC6D,eAAL,EAAsB;EACpBpD,QAAAA,MAAM,CAACsD,aAAP,CAAqB,IAAIC,WAAJ,CAAgB,wBAAhB,CAArB;EACAH,QAAAA,eAAe,GAAG,IAAlB;EACD;;EAED,aAAO/E,WAAP;EACD,KAVI,EAWJ6D,KAXI,CAWE,UAACpF,GAAD,EAAS;EACd;EACA;EACA;EACAuB,MAAAA,WAAW,CAACI,MAAZ,GAAqBc,OAArB;EACA,aAAOiD,gBAAgB,CAACnE,WAAD,EAAc,IAAd,CAAhB,CAAoCwD,IAApC,CACL2B,oBADK,EAELA,oBAFK,CAAP;;EAKA,eAASA,oBAAT,GAAgC;EAC9B,YAAI,CAACpB,QAAL,EAAe;EACbvF,UAAAA,cAAc,CAACC,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAd;EACA,iBAAOvB,WAAP;EACD,SAHD,MAGO;EACL,gBAAMnB,YAAY,CAACJ,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAlB;EACD;EACF;EACF,KA7BI,CAAP;EA8BD,GAxCM,CAAP;EAyCD;;EC3CM,SAAS6D,eAAT,CAAyBC,MAAzB,EAAiC;EACtC,SAAOpC,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,YAAM;EAClC,QAAI6B,MAAM,CAACjF,MAAP,KAAkBc,OAAtB,EAA+B;EAC7B,YAAM/B,KAAK,CACTC,kBAAkB,CAChB,EADgB,mCAGWe,MAAM,CAC7BkF,MAD6B,CADjC,gCAFgB,EAMhBlF,MAAM,CAACkF,MAAD,CANU,CADT,CAAX;EAUD;;EAEDA,IAAAA,MAAM,CAACjF,MAAP,GAAgBe,QAAhB;EAEA,WAAO+C,cAAc,CAACmB,MAAD,EAAS,QAAT,CAAd,CACJ7B,IADI,CACC,YAAM;EACV6B,MAAAA,MAAM,CAACjF,MAAP,GAAgBc,OAAhB;EACA,aAAOmE,MAAP;EACD,KAJI,EAKJxB,KALI,CAKE,UAACpF,GAAD,EAAS;EACd,YAAMI,YAAY,CAACJ,GAAD,EAAM4G,MAAN,EAAc9D,mBAAd,CAAlB;EACD,KAPI,CAAP;EAQD,GAxBM,CAAP;EAyBD;;ECnBD,IAAI+D,WAAW,GAAG,CAAlB;EACA,IAAMC,WAAW,GAAG;EAAEhB,EAAAA,OAAO,EAAE;EAAX,CAApB;;EAGO,SAASiB,eAAT,GAA2B;EAChC,SAAOC,WAAW,CAACC,KAAZ,CAAkBH,WAAlB,EAA+BpD,SAA/B,CAAP;EACD;EAEM,SAASsD,WAAT,CAAqBE,MAArB,EAA6BC,WAA7B,EAA0C;EAC/C,MAAMC,iBAAiB,GAAG,IAA1B,CAD+C;;EAI/C,MAAI,CAACF,MAAD,IAAY,QAAOA,MAAP,MAAkB,QAAlB,IAA8B,OAAOA,MAAP,KAAkB,UAAhE,EAA6E;EAC3E,UAAMxG,KAAK,CACTC,kBAAkB,CAChB,CADgB,GAGd,wEAHc,CADT,CAAX;EAOD;;EAED,MAAIuG,MAAM,CAAC9D,IAAP,IAAe,OAAO8D,MAAM,CAAC9D,IAAd,KAAuB,QAA1C,EAAoD;EAClD,UAAM1C,KAAK,CACTC,kBAAkB,CAChB,CADgB,0EAGiDuG,MAAM,CAAC9D,IADxE,EAFgB,UAIT8D,MAAM,CAAC9D,IAJE,EADT,CAAX;EAQD;;EAED,MAAI,QAAO+D,WAAP,MAAuB,QAA3B,EAAqC;EACnC,UAAMzG,KAAK,CACTC,kBAAkB,CAChB,CADgB,oBAGJyC,IADZ,iFACsF+D,WADtF,EAFgB,EAIhB/D,IAJgB,UAKT+D,WALS,EADT,CAAX;EASD;;EAED,MAAI,CAACA,WAAW,CAACE,UAAjB,EAA6B;EAC3B,UAAM3G,KAAK,CACTC,kBAAkB,CAChB,CADgB,oBAGJyC,IADZ,+DAFgB,EAIhBA,IAJgB,CADT,CAAX;EAQD;;EAED,MAAMkE,EAAE,GAAGT,WAAW,EAAtB;EAEA,MAAMU,2BAA2B,GAAG,OAAOL,MAAP,KAAkB,UAAtD;EACA,MAAMM,qBAAqB,GAAGD,2BAA2B,GACrDL,MADqD,GAErD;EAAA,WAAM1C,OAAO,CAACC,OAAR,CAAgByC,MAAhB,CAAN;EAAA,GAFJ,CAnD+C;;EAwD/C,MAAMN,MAAM,GAAG;EACbU,IAAAA,EAAE,EAAFA,EADa;EAEbxB,IAAAA,OAAO,EAAE,EAFI;EAGbnE,IAAAA,MAAM,EAAE4F,2BAA2B,GAC/BnF,mBAD+B,GAE/BC,gBALS;EAMb8E,IAAAA,WAAW,EAAXA,WANa;EAObM,IAAAA,UAAU,EAAE/F,MAAM,CAAC0F,iBAAD,CAPL;EAQb7D,IAAAA,iBARa,+BAQO;EAClB,aAAOmE,YAAY,CAChB3C,IADI,CACC,YAAM;EACV,YAAI6B,MAAM,CAACjF,MAAP,KAAkBc,OAAtB,EAA+B;EAC7B,gBAAM/B,KAAK,CACTC,kBAAkB,CAChB,CADgB,oCAGYyC,IAD5B,6BACmDwD,MAAM,CAACjF,MAD1D,YAFgB,EAIhByB,IAJgB,EAKhBwD,MAAM,CAACjF,MALS,CADT,CAAX;EASD;;EACD,eAAO+D,gBAAgB,CAACkB,MAAD,EAAS,IAAT,CAAvB;EACD,OAdI,EAeJ7B,IAfI,CAeC,UAAC4C,KAAD,EAAW;EACf,YAAIf,MAAM,CAACa,UAAX,EAAuB;EACrB,iBAAOL,iBAAiB,CAACtB,OAAlB,CAA0Bc,MAAM,CAACU,EAAjC,CAAP;EACD;;EAED,eAAOK,KAAP;EACD,OArBI,EAsBJ5C,IAtBI,CAsBC,UAAC4C,KAAD,EAAW;EACfC,QAAAA,cAAc,CAACD,KAAD,CAAd;EACA,eAAOA,KAAP;EACD,OAzBI,EA0BJvC,KA1BI,CA0BE,UAACpF,GAAD,EAAS;EACd4G,QAAAA,MAAM,CAACjF,MAAP,GAAgBmB,mBAAhB;EACA+E,QAAAA,aAAa,CAAC7H,GAAD,CAAb;EACA,cAAMA,GAAN;EACD,OA9BI,CAAP;EA+BD;EAxCY,GAAf,CAxD+C;;EAoG/C,MAAI8H,sBAAJ,CApG+C;;EAuG/CV,EAAAA,iBAAiB,CAACtB,OAAlB,CAA0BwB,EAA1B,IAAgCV,MAAhC;EAEA,MAAImB,WAAW,GAAGP,qBAAqB,EAAvC;;EAEA,MAAI,CAACO,WAAD,IAAgB,OAAOA,WAAW,CAAChD,IAAnB,KAA4B,UAAhD,EAA4D;EAC1D,UAAMrE,KAAK,CACTC,kBAAkB,CAChB,CADgB,mHAAA,CADT,CAAX;EAOD;;EAEDoH,EAAAA,WAAW,GAAGA,WAAW,CAAChD,IAAZ,CAAiB,UAACmC,MAAD,EAAY;EACzC,QAAI,CAACA,MAAL,EAAa;EACX,YAAMxG,KAAK,CACTC,kBAAkB,CAChB,CADgB,qHAAA,CADT,CAAX;EAOD;;EAED,QAAMyC,IAAI,GAAG8D,MAAM,CAAC9D,IAAP,qBAAyBkE,EAAzB,CAAb;;EAEA;EAEE1B,IAAAA,MAAM,CAACoC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqChB,MAArC,EAA6C,WAA7C,KACA,CAACnD,gBAAgB,CAACmD,MAAM,CAAC3B,SAAR,CAHnB,EAIE;EACA,YAAM7E,KAAK,CACTC,kBAAkB,CAChB,CADgB,oBAEKyC,IAArB,4CAFgB,EAGhBA,IAHgB,CADT,CAAX;EAOD;;EAED,QAAI,CAACW,gBAAgB,CAACmD,MAAM,CAACiB,KAAR,CAArB,EAAqC;EACnC,YAAMzH,KAAK,CACTC,kBAAkB,CAChB,EADgB,oBAEKyC,IAArB,sCAFgB,EAGhBA,IAHgB,CADT,CAAX;EAOD;;EAED,QAAI,CAACW,gBAAgB,CAACmD,MAAM,CAACkB,OAAR,CAArB,EAAuC;EACrC,YAAM1H,KAAK,CACTC,kBAAkB,CAChB,EADgB,oBAEKyC,IAArB,wCAFgB,EAGhBA,IAHgB,CADT,CAAX;EAOD;;EAED,QAAI8D,MAAM,CAACmB,MAAP,IAAiB,CAACtE,gBAAgB,CAACmD,MAAM,CAACmB,MAAR,CAAtC,EAAuD;EACrD,YAAM3H,KAAK,CACTC,kBAAkB,CAChB,EADgB,oBAEKyC,IAArB,yCAFgB,EAGhBA,IAHgB,CADT,CAAX;EAOD;;EAED,QAAMmC,SAAS,GAAGlB,cAAc,CAAC6C,MAAD,EAAS,WAAT,CAAhC;EACA,QAAMiB,KAAK,GAAG9D,cAAc,CAAC6C,MAAD,EAAS,OAAT,CAA5B;EACA,QAAMkB,OAAO,GAAG/D,cAAc,CAAC6C,MAAD,EAAS,SAAT,CAA9B;EAEAN,IAAAA,MAAM,CAACjF,MAAP,GAAgBU,gBAAhB;EACAuE,IAAAA,MAAM,CAACxD,IAAP,GAAcA,IAAd;EACAwD,IAAAA,MAAM,CAACrB,SAAP,GAAmBA,SAAnB;EACAqB,IAAAA,MAAM,CAACuB,KAAP,GAAeA,KAAf;EACAvB,IAAAA,MAAM,CAACwB,OAAP,GAAiBA,OAAjB;EACAxB,IAAAA,MAAM,CAAC0B,QAAP,GAAkBC,sBAAsB,CAACrB,MAAM,CAACoB,QAAR,CAAxC;;EAEA,QAAIpB,MAAM,CAACmB,MAAX,EAAmB;EACjBzB,MAAAA,MAAM,CAACyB,MAAP,GAAgBhE,cAAc,CAAC6C,MAAD,EAAS,QAAT,CAA9B;;EACAY,MAAAA,sBAAsB,CAACO,MAAvB,GAAgC,UAAUlB,WAAV,EAAuB;EACrDP,QAAAA,MAAM,CAACO,WAAP,GAAqBA,WAArB;EAEA,eAAOqB,yBAAyB,CAAC7B,eAAe,CAACC,MAAD,CAAhB,CAAhC;EACD,OAJD;EAKD;EACF,GA5Ea,CAAd,CArH+C;EAoM/C;;EACA,MAAM6B,gBAAgB,GAAGV,WAAW,CAAChD,IAAZ,CAAiB;EAAA,WACxCM,kBAAkB,CAACuB,MAAD,EAAS,IAAT,CADsB;EAAA,GAAjB,CAAzB;EAGA,MAAMc,YAAY,GAAGe,gBAAgB,CAAC1D,IAAjB,CAAsB;EAAA,WACzCwB,cAAc,CAACK,MAAD,EAAS,IAAT,CAD2B;EAAA,GAAtB,CAArB;EAIA,MAAIgB,cAAJ,EAAoBC,aAApB;EAEA,MAAMa,cAAc,GAAG,IAAIlE,OAAJ,CAAY,UAACC,OAAD,EAAUS,MAAV,EAAqB;EACtD0C,IAAAA,cAAc,GAAGnD,OAAjB;EACAoD,IAAAA,aAAa,GAAG3C,MAAhB;EACD,GAHsB,CAAvB;EAKA4C,EAAAA,sBAAsB,GAAG;EACvBK,IAAAA,KADuB,mBACf;EACN,aAAOK,yBAAyB,CAC9BhE,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,YAAM;EAC3B,YAAI6B,MAAM,CAACjF,MAAP,KAAkBY,WAAtB,EAAmC;EACjC,gBAAM7B,KAAK,CACTC,kBAAkB,CAChB,EADgB,kCAGUyC,IAD1B,6BACiDwD,MAAM,CAACjF,MADxD,YAFgB,EAIhByB,IAJgB,EAKhBwD,MAAM,CAACjF,MALS,CADT,CAAX;EASD,SAX0B;;;EAc3ByF,QAAAA,iBAAiB,CAACtB,OAAlB,CAA0BwB,EAA1B,IAAgCV,MAAhC;EAEA,eAAOL,cAAc,CAACK,MAAD,CAArB;EACD,OAjBD,CAD8B,CAAhC;EAoBD,KAtBsB;EAuBvBwB,IAAAA,OAvBuB,qBAuBb;EACR,aAAOI,yBAAyB,CAAC5B,MAAM,CAACrD,iBAAP,EAAD,CAAhC;EACD,KAzBsB;EA0BvBoF,IAAAA,SA1BuB,uBA0BX;EACV,aAAO/B,MAAM,CAACjF,MAAd;EACD,KA5BsB;EA6BvBoG,IAAAA,WAAW,EAAES,yBAAyB,CAACT,WAAD,CA7Bf;EA8BvBU,IAAAA,gBAAgB,EAAED,yBAAyB,CAACC,gBAAD,CA9BpB;EA+BvBf,IAAAA,YAAY,EAAEc,yBAAyB,CAACd,YAAD,CA/BhB;EAgCvBgB,IAAAA,cAAc,EAAEF,yBAAyB,CAACE,cAAD;EAhClB,GAAzB;EAmCA,SAAOZ,sBAAP;EACD;;EAED,SAASU,yBAAT,CAAmCrD,OAAnC,EAA4C;EAC1C,SAAOA,OAAO,CAACJ,IAAR,CAAa;EAAA,WAAM,IAAN;EAAA,GAAb,CAAP;EACD;;EChRM,SAAS6D,QAAT,CAAkBrH,WAAlB,EAA+B;EACpC,MAAM6B,IAAI,GAAG1B,MAAM,CAACH,WAAD,CAAnB;EACA,MAAI4F,WAAW,GACb,OAAO5F,WAAW,CAAC4F,WAAnB,KAAmC,UAAnC,GACI5F,WAAW,CAAC4F,WAAZ,CAAwB/D,IAAxB,EAA8BF,MAAM,CAACC,QAArC,CADJ,GAEI5B,WAAW,CAAC4F,WAHlB;;EAIA,MACE,QAAOA,WAAP,MAAuB,QAAvB,IACAA,WAAW,KAAK,IADhB,IAEAjD,KAAK,CAACC,OAAN,CAAcgD,WAAd,CAHF,EAIE;EACAA,IAAAA,WAAW,GAAG,EAAd;EACArF,IAAAA,OAAO,CAACC,IAAR,CACEpB,kBAAkB,CAChB,EADgB,yBAGCyC,IADjB,qEACgF+D,WADhF,CAFgB,CADpB,EAME/D,IANF,EAOE+D,WAPF;EASD;;EACD,MAAMvF,MAAM,GAAG4B,MAAM,CAAC,EAAD,EAAK2D,WAAL,EAAkB;EACrC/D,IAAAA,IAAI,EAAJA,IADqC;EAErC4D,IAAAA,WAAW,EAAEA,WAAW,CAAC6B,IAAZ,CAAiBtH,WAAjB,CAFwB;EAGrCuH,IAAAA,SAAS,EAATA;EAHqC,GAAlB,CAArB;;EAMA,MAAIzF,QAAQ,CAAC9B,WAAD,CAAZ,EAA2B;EACzBK,IAAAA,MAAM,CAACmH,WAAP,GAAqBxH,WAAW,CAACgC,iBAAjC;EACD;;EAED,SAAO3B,MAAP;EACD;;EClCD,IAAMoH,oBAAoB,GAAG,IAA7B;EAEA,IAAMC,mBAAmB,GAAG;EAC1B1D,EAAAA,SAAS,EAAE;EACT2D,IAAAA,MAAM,EAAE,IADC;EAETC,IAAAA,YAAY,EAAE,KAFL;EAGTC,IAAAA,aAAa,EAAEJ;EAHN,GADe;EAM1Bb,EAAAA,KAAK,EAAE;EACLe,IAAAA,MAAM,EAAE,IADH;EAELC,IAAAA,YAAY,EAAE,KAFT;EAGLC,IAAAA,aAAa,EAAEJ;EAHV,GANmB;EAW1BZ,EAAAA,OAAO,EAAE;EACPc,IAAAA,MAAM,EAAE,IADD;EAEPC,IAAAA,YAAY,EAAE,KAFP;EAGPC,IAAAA,aAAa,EAAEJ;EAHR,GAXiB;EAgB1BK,EAAAA,MAAM,EAAE;EACNH,IAAAA,MAAM,EAAE,IADF;EAENC,IAAAA,YAAY,EAAE,KAFR;EAGNC,IAAAA,aAAa,EAAEJ;EAHT,GAhBkB;EAqB1BX,EAAAA,MAAM,EAAE;EACNa,IAAAA,MAAM,EAAE,IADF;EAENC,IAAAA,YAAY,EAAE,KAFR;EAGNC,IAAAA,aAAa,EAAEJ;EAHT;EArBkB,CAA5B;EA4BO,SAASM,mBAAT,CAA6BC,IAA7B,EAAmCJ,YAAnC,EAAiDC,aAAjD,EAAgE;EACrE,MAAI,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,IAAI,CAAxC,EAA2C;EACzC,UAAM7I,KAAK,CACTC,kBAAkB,CAChB,EADgB,yEAAA,CADT,CAAX;EAOD;;EAEDsI,EAAAA,mBAAmB,CAAC1D,SAApB,GAAgC;EAC9B2D,IAAAA,MAAM,EAAEK,IADsB;EAE9BJ,IAAAA,YAAY,EAAZA,YAF8B;EAG9BC,IAAAA,aAAa,EAAEA,aAAa,IAAIJ;EAHF,GAAhC;EAKD;EAEM,SAASQ,eAAT,CAAyBD,IAAzB,EAA+BJ,YAA/B,EAA6CC,aAA7C,EAA4D;EACjE,MAAI,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,IAAI,CAAxC,EAA2C;EACzC,UAAM7I,KAAK,CACTC,kBAAkB,CAChB,EADgB,qEAAA,CADT,CAAX;EAOD;;EAEDsI,EAAAA,mBAAmB,CAACd,KAApB,GAA4B;EAC1Be,IAAAA,MAAM,EAAEK,IADkB;EAE1BJ,IAAAA,YAAY,EAAZA,YAF0B;EAG1BC,IAAAA,aAAa,EAAEA,aAAa,IAAIJ;EAHN,GAA5B;EAKD;EAEM,SAASS,iBAAT,CAA2BF,IAA3B,EAAiCJ,YAAjC,EAA+CC,aAA/C,EAA8D;EACnE,MAAI,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,IAAI,CAAxC,EAA2C;EACzC,UAAM7I,KAAK,CACTC,kBAAkB,CAChB,EADgB,uEAAA,CADT,CAAX;EAOD;;EAEDsI,EAAAA,mBAAmB,CAACb,OAApB,GAA8B;EAC5Bc,IAAAA,MAAM,EAAEK,IADoB;EAE5BJ,IAAAA,YAAY,EAAZA,YAF4B;EAG5BC,IAAAA,aAAa,EAAEA,aAAa,IAAIJ;EAHJ,GAA9B;EAKD;EAEM,SAASU,gBAAT,CAA0BH,IAA1B,EAAgCJ,YAAhC,EAA8CC,aAA9C,EAA6D;EAClE,MAAI,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,IAAI,CAAxC,EAA2C;EACzC,UAAM7I,KAAK,CACTC,kBAAkB,CAChB,EADgB,sEAAA,CADT,CAAX;EAOD;;EAEDsI,EAAAA,mBAAmB,CAACI,MAApB,GAA6B;EAC3BH,IAAAA,MAAM,EAAEK,IADmB;EAE3BJ,IAAAA,YAAY,EAAZA,YAF2B;EAG3BC,IAAAA,aAAa,EAAEA,aAAa,IAAIJ;EAHL,GAA7B;EAKD;EAEM,SAASvD,cAAT,CAAwBlE,WAAxB,EAAqC+C,SAArC,EAAgD;EACrD,MAAMqF,aAAa,GAAGpI,WAAW,CAAC+G,QAAZ,CAAqBhE,SAArB,CAAtB;EACA,MAAMsF,aAAa,GAAGD,aAAa,CAACP,aAApC;EACA,MAAM1E,IAAI,GAAGjD,UAAU,CAACF,WAAD,CAAvB;EAEA,SAAO,IAAIiD,OAAJ,CAAY,UAACC,OAAD,EAAUS,MAAV,EAAqB;EACtC,QAAI2E,QAAQ,GAAG,KAAf;EACA,QAAIC,OAAO,GAAG,KAAd;EAEAvI,IAAAA,WAAW,CAAC+C,SAAD,CAAX,CAAuBsE,QAAQ,CAACrH,WAAD,CAA/B,EACGwD,IADH,CACQ,UAACgF,GAAD,EAAS;EACbF,MAAAA,QAAQ,GAAG,IAAX;EACApF,MAAAA,OAAO,CAACsF,GAAD,CAAP;EACD,KAJH,EAKG3E,KALH,CAKS,UAAC2E,GAAD,EAAS;EACdF,MAAAA,QAAQ,GAAG,IAAX;EACA3E,MAAAA,MAAM,CAAC6E,GAAD,CAAN;EACD,KARH;EAUAvJ,IAAAA,UAAU,CAAC;EAAA,aAAMwJ,cAAc,CAAC,CAAD,CAApB;EAAA,KAAD,EAA0BJ,aAA1B,CAAV;EACApJ,IAAAA,UAAU,CAAC;EAAA,aAAMwJ,cAAc,CAAC,IAAD,CAApB;EAAA,KAAD,EAA6BL,aAAa,CAACT,MAA3C,CAAV;EAEA,QAAMe,MAAM,GAAGtJ,kBAAkB,CAC/B,EAD+B,gCAGP2D,SADxB,kBACyCI,IADzC,cACiDhD,MAAM,CACnDH,WADmD,CADvD,sDAG+CoI,aAAa,CAACT,MAH7D,SAF+B,EAM/B5E,SAN+B,EAO/BI,IAP+B,EAQ/BhD,MAAM,CAACH,WAAD,CARyB,EAS/BoI,aAAa,CAACT,MATiB,CAAjC;;EAYA,aAASc,cAAT,CAAwBE,WAAxB,EAAqC;EACnC,UAAI,CAACL,QAAL,EAAe;EACb,YAAIK,WAAW,KAAK,IAApB,EAA0B;EACxBJ,UAAAA,OAAO,GAAG,IAAV;;EACA,cAAIH,aAAa,CAACR,YAAlB,EAAgC;EAC9BjE,YAAAA,MAAM,CAACxE,KAAK,CAACuJ,MAAD,CAAN,CAAN;EACD,WAFD,MAEO;EACLnI,YAAAA,OAAO,CAACqI,KAAR,CAAcF,MAAd,EADK;EAGN;EACF,SARD,MAQO,IAAI,CAACH,OAAL,EAAc;EACnB,cAAMM,WAAW,GAAGF,WAApB;EACA,cAAMG,SAAS,GAAGD,WAAW,GAAGR,aAAhC;EACA9H,UAAAA,OAAO,CAACC,IAAR,CAAakI,MAAb;;EACA,cAAII,SAAS,GAAGT,aAAZ,GAA4BD,aAAa,CAACT,MAA9C,EAAsD;EACpD1I,YAAAA,UAAU,CAAC;EAAA,qBAAMwJ,cAAc,CAACI,WAAW,GAAG,CAAf,CAApB;EAAA,aAAD,EAAwCR,aAAxC,CAAV;EACD;EACF;EACF;EACF;EACF,GAjDM,CAAP;EAkDD;EAEM,SAASrB,sBAAT,CAAgCD,QAAhC,EAA0C;EAC/C,MAAM1G,MAAM,GAAG,EAAf;;EAEA,OAAK,IAAI+B,GAAT,IAAgBsF,mBAAhB,EAAqC;EACnCrH,IAAAA,MAAM,CAAC+B,GAAD,CAAN,GAAcH,MAAM,CAClB,EADkB,EAElByF,mBAAmB,CAACtF,GAAD,CAFD,EAGjB2E,QAAQ,IAAIA,QAAQ,CAAC3E,GAAD,CAArB,IAA+B,EAHb,CAApB;EAKD;;EAED,SAAO/B,MAAP;EACD;;EC1JM,SAAS0I,aAAT,CAAuBrK,GAAvB,EAA4B;EACjC,SAAOuE,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,YAAM;EAClC,QAAI9E,GAAG,CAAC8H,WAAR,EAAqB;EACnB,aAAO9H,GAAG,CAAC8H,WAAX;EACD;;EAED,QAAI9H,GAAG,CAAC0B,MAAJ,KAAeQ,UAAf,IAA6BlC,GAAG,CAAC0B,MAAJ,KAAekB,UAAhD,EAA4D;EAC1D,aAAO5C,GAAP;EACD;;EAEDA,IAAAA,GAAG,CAAC0B,MAAJ,GAAaS,mBAAb;EAEA,QAAImI,OAAJ,EAAaC,SAAb;EAEA,WAAQvK,GAAG,CAAC8H,WAAJ,GAAkBvD,OAAO,CAACC,OAAR,GACvBM,IADuB,CAClB,YAAM;EACV,UAAMgD,WAAW,GAAG9H,GAAG,CAACwK,OAAJ,CAAY7B,QAAQ,CAAC3I,GAAD,CAApB,CAApB;;EACA,UAAI,CAACgF,kBAAkB,CAAC8C,WAAD,CAAvB,EAAsC;EACpC;EACAyC,QAAAA,SAAS,GAAG,IAAZ;EACA,cAAM9J,KAAK,CACTC,kBAAkB,CAChB,EADgB,qHAG6Fe,MAAM,CAC/GzB,GAD+G,CADnH,0CAFgB,EAMhByB,MAAM,CAACzB,GAAD,CANU,CADT,CAAX;EAUD;;EACD,aAAO8H,WAAW,CAAChD,IAAZ,CAAiB,UAACgF,GAAD,EAAS;EAC/B9J,QAAAA,GAAG,CAACyK,aAAJ,GAAoB,IAApB;EAEAH,QAAAA,OAAO,GAAGR,GAAV;EAEA,YAAIY,oBAAJ,EAA0BC,iBAA1B;;EAEA,YAAI,QAAOL,OAAP,MAAmB,QAAvB,EAAiC;EAC/BK,UAAAA,iBAAiB,GAAG,EAApB;;EACA,UAAa;EACXD,YAAAA,oBAAoB,6BAApB;EACD;EACF;;EAED;EAEE/E,QAAAA,MAAM,CAACoC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCqC,OAArC,EAA8C,WAA9C,KACA,CAACxG,gBAAgB,CAACwG,OAAO,CAAChF,SAAT,CAHnB,EAIE;EACAqF,UAAAA,iBAAiB,GAAG,EAApB;;EACA,UAAa;EACXD,YAAAA,oBAAoB,qEAApB;EACD;EACF;;EAED,YAAI,CAAC5G,gBAAgB,CAACwG,OAAO,CAACpC,KAAT,CAArB,EAAsC;EACpCyC,UAAAA,iBAAiB,GAAG,EAApB;;EACA,UAAa;EACXD,YAAAA,oBAAoB,2DAApB;EACD;EACF;;EAED,YAAI,CAAC5G,gBAAgB,CAACwG,OAAO,CAACnC,OAAT,CAArB,EAAwC;EACtCwC,UAAAA,iBAAiB,GAAG,EAApB;;EACA,UAAa;EACXD,YAAAA,oBAAoB,6DAApB;EACD;EACF;;EAED,YAAMjG,IAAI,GAAGjD,UAAU,CAAC8I,OAAD,CAAvB;;EAEA,YAAIK,iBAAJ,EAAuB;EACrB,cAAIC,UAAJ;;EACA,cAAI;EACFA,YAAAA,UAAU,GAAG7I,IAAI,CAACC,SAAL,CAAesI,OAAf,CAAb;EACD,WAFD,CAEE,gBAAM;;EACRzI,UAAAA,OAAO,CAACqI,KAAR,CACExJ,kBAAkB,CAChBiK,iBADgB,iDAGyBlG,IADzC,eACkDhD,MAAM,CACpDzB,GADoD,CADxD,+FAFgB,EAMhByE,IANgB,EAOhBhD,MAAM,CAACzB,GAAD,CAPU,EAQhB4K,UARgB,CADpB,EAWEN,OAXF;EAaAxK,UAAAA,cAAc,CAAC4K,oBAAD,EAAuB1K,GAAvB,EAA4B6C,mBAA5B,CAAd;EACA,iBAAO7C,GAAP;EACD;;EAED,YAAIsK,OAAO,CAACO,QAAR,IAAoBP,OAAO,CAACO,QAAR,CAAiBC,QAAzC,EAAmD;EACjD9K,UAAAA,GAAG,CAAC6K,QAAJ,CAAaC,QAAb,GAAwBvH,MAAM,CAC5B,EAD4B,EAE5BvD,GAAG,CAAC6K,QAAJ,CAAaC,QAFe,EAG5BR,OAAO,CAACO,QAAR,CAAiBC,QAHW,CAA9B;EAKD;;EAED9K,QAAAA,GAAG,CAAC0B,MAAJ,GAAaU,gBAAb;EACApC,QAAAA,GAAG,CAACsF,SAAJ,GAAgBlB,cAAc,CAACkG,OAAD,EAAU,WAAV,CAA9B;EACAtK,QAAAA,GAAG,CAACkI,KAAJ,GAAY9D,cAAc,CAACkG,OAAD,EAAU,OAAV,CAA1B;EACAtK,QAAAA,GAAG,CAACmI,OAAJ,GAAc/D,cAAc,CAACkG,OAAD,EAAU,SAAV,CAA5B;EACAtK,QAAAA,GAAG,CAACoJ,MAAJ,GAAahF,cAAc,CAACkG,OAAD,EAAU,QAAV,CAA3B;EACAtK,QAAAA,GAAG,CAACqI,QAAJ,GAAeC,sBAAsB,CAACgC,OAAO,CAACjC,QAAT,CAArC;EAEA,eAAOrI,GAAG,CAAC8H,WAAX;EAEA,eAAO9H,GAAP;EACD,OAjFM,CAAP;EAkFD,KAnGuB,EAoGvBmF,KApGuB,CAoGjB,UAACpF,GAAD,EAAS;EACd,aAAOC,GAAG,CAAC8H,WAAX;EAEA,UAAI7H,SAAJ;;EACA,UAAIsK,SAAJ,EAAe;EACbtK,QAAAA,SAAS,GAAG4C,mBAAZ;EACD,OAFD,MAEO;EACL5C,QAAAA,SAAS,GAAG2C,UAAZ;EACA5C,QAAAA,GAAG,CAACyK,aAAJ,GAAoB,IAAIM,IAAJ,GAAWC,OAAX,EAApB;EACD;;EACDlL,MAAAA,cAAc,CAACC,GAAD,EAAMC,GAAN,EAAWC,SAAX,CAAd;EAEA,aAAOD,GAAP;EACD,KAjHuB,CAA1B;EAkHD,GA/HM,CAAP;EAgID;;ECvJM,IAAMiL,WAAW,GAAG,OAAOhI,MAAP,KAAkB,WAAtC;;ECMP;;;;;;EAKA,IAAMiI,sBAAsB,GAAG;EAC7BC,EAAAA,UAAU,EAAE,EADiB;EAE7BC,EAAAA,QAAQ,EAAE;EAFmB,CAA/B;EAKO,IAAMC,wBAAwB,GAAG,CAAC,YAAD,EAAe,UAAf,CAAjC;EAEA,SAASC,aAAT,CAAuBC,GAAvB,EAA4B;EACjC,MAAIC,GAAJ;;EACA,MAAI,OAAOD,GAAP,KAAe,QAAnB,EAA6B;EAC3BC,IAAAA,GAAG,GAAGD,GAAN;EACD,GAFD,MAEO,IAAI,QAAQ,KAAKE,IAAjB,EAAuB;EAC5BD,IAAAA,GAAG,GAAG,KAAKC,IAAX;EACD,GAFM,MAEA,IACLF,GAAG,IACHA,GAAG,CAACG,aADJ,IAEAH,GAAG,CAACG,aAAJ,CAAkBD,IAFlB,IAGAF,GAAG,CAACI,cAJC,EAKL;EACAH,IAAAA,GAAG,GAAGD,GAAG,CAACG,aAAJ,CAAkBD,IAAxB;EACAF,IAAAA,GAAG,CAACI,cAAJ;EACD,GARM,MAQA;EACL,UAAMlL,KAAK,CACTC,kBAAkB,CAChB,EADgB,gKAAA,CADT,CAAX;EAOD;;EAED,MAAMkL,OAAO,GAAGC,QAAQ,CAAC5I,MAAM,CAACC,QAAP,CAAgBuI,IAAjB,CAAxB;EACA,MAAMK,WAAW,GAAGD,QAAQ,CAACL,GAAD,CAA5B;;EAEA,MAAIA,GAAG,CAACO,OAAJ,CAAY,GAAZ,MAAqB,CAAzB,EAA4B;EAC1B9I,IAAAA,MAAM,CAACC,QAAP,CAAgB8I,IAAhB,GAAuBF,WAAW,CAACE,IAAnC;EACD,GAFD,MAEO,IAAIJ,OAAO,CAACK,IAAR,KAAiBH,WAAW,CAACG,IAA7B,IAAqCH,WAAW,CAACG,IAArD,EAA2D;EAChE,IAEO;EACLhJ,MAAAA,MAAM,CAACC,QAAP,CAAgBuI,IAAhB,GAAuBD,GAAvB;EACD;EACF,GANM,MAMA,IACLM,WAAW,CAACI,QAAZ,KAAyBN,OAAO,CAACM,QAAjC,IACAJ,WAAW,CAACK,MAAZ,KAAuBP,OAAO,CAACO,MAF1B,EAGL;EACAlJ,IAAAA,MAAM,CAACC,QAAP,CAAgB8I,IAAhB,GAAuBF,WAAW,CAACE,IAAnC;EACD,GALM,MAKA;EACL;EACA/I,IAAAA,MAAM,CAACmJ,OAAP,CAAeC,SAAf,CAAyB,IAAzB,EAA+B,IAA/B,EAAqCb,GAArC;EACD;EACF;EAEM,SAASc,0BAAT,CAAoCC,cAApC,EAAoD;EAAA;;EACzD,MAAIA,cAAJ,EAAoB;EAClB,QAAMC,SAAS,GAAGD,cAAc,CAAC,CAAD,CAAd,CAAkB9H,IAApC;;EACA,QAAI4G,wBAAwB,CAACU,OAAzB,CAAiCS,SAAjC,KAA+C,CAAnD,EAAsD;EACpDtB,MAAAA,sBAAsB,CAACsB,SAAD,CAAtB,CAAkCnM,OAAlC,CAA0C,UAACoM,QAAD,EAAc;EACtD,YAAI;EACF;EACA;EACAA,UAAAA,QAAQ,CAACzF,KAAT,CAAe,KAAf,EAAqBuF,cAArB;EACD,SAJD,CAIE,OAAOG,CAAP,EAAU;EACVnM,UAAAA,UAAU,CAAC,YAAM;EACf,kBAAMmM,CAAN;EACD,WAFS,CAAV;EAGD;EACF,OAVD;EAWD;EACF;EACF;EAED,IAAIC,cAAJ;EAEO,SAASC,iBAAT,CAA2B9C,GAA3B,EAAgC;EACrC6C,EAAAA,cAAc,GAAG7C,GAAjB;EACD;;EAED,SAAS+C,UAAT,GAAsB;EACpBC,EAAAA,OAAO,CAAC,EAAD,EAAKrJ,SAAL,CAAP;EACD;;EAED,SAASsJ,kBAAT,CAA4BC,WAA5B,EAAyCC,UAAzC,EAAqD;EACnD,SAAO,YAAY;EACjB,QAAMC,SAAS,GAAGjK,MAAM,CAACC,QAAP,CAAgBuI,IAAlC;EACA,QAAM9J,MAAM,GAAGqL,WAAW,CAAChG,KAAZ,CAAkB,IAAlB,EAAwBvD,SAAxB,CAAf;EACA,QAAM0J,QAAQ,GAAGlK,MAAM,CAACC,QAAP,CAAgBuI,IAAjC;;EAEA,QAAI,CAACkB,cAAD,IAAmBO,SAAS,KAAKC,QAArC,EAA+C;EAC7C,UAAIC,SAAS,EAAb,EAAiB;EACf;EACA;EACA;EACAnK,QAAAA,MAAM,CAACsD,aAAP,CACE8G,mBAAmB,CAACpK,MAAM,CAACmJ,OAAP,CAAekB,KAAhB,EAAuBL,UAAvB,CADrB;EAGD,OAPD,MAOO;EACL;EACA;EACA;EACAH,QAAAA,OAAO,CAAC,EAAD,CAAP;EACD;EACF;;EAED,WAAOnL,MAAP;EACD,GAtBD;EAuBD;;EAED,SAAS0L,mBAAT,CAA6BC,KAA7B,EAAoCC,kBAApC,EAAwD;EACtD;EACA;EACA;EACA;EACA,MAAIC,GAAJ;;EACA,MAAI;EACFA,IAAAA,GAAG,GAAG,IAAIC,aAAJ,CAAkB,UAAlB,EAA8B;EAAEH,MAAAA,KAAK,EAALA;EAAF,KAA9B,CAAN;EACD,GAFD,CAEE,OAAOvN,GAAP,EAAY;EACZ;EACA;EACAyN,IAAAA,GAAG,GAAGE,QAAQ,CAACC,WAAT,CAAqB,eAArB,CAAN;EACAH,IAAAA,GAAG,CAACI,iBAAJ,CAAsB,UAAtB,EAAkC,KAAlC,EAAyC,KAAzC,EAAgDN,KAAhD;EACD;;EACDE,EAAAA,GAAG,CAAC3E,SAAJ,GAAgB,IAAhB;EACA2E,EAAAA,GAAG,CAACK,gBAAJ,GAAuBN,kBAAvB;EACA,SAAOC,GAAP;EACD;;EAED,IAAIvC,WAAJ,EAAiB;EACf;EACAhI,EAAAA,MAAM,CAAC6K,gBAAP,CAAwB,YAAxB,EAAsCjB,UAAtC;EACA5J,EAAAA,MAAM,CAAC6K,gBAAP,CAAwB,UAAxB,EAAoCjB,UAApC,EAHe;;EAMf,MAAMkB,wBAAwB,GAAG9K,MAAM,CAAC6K,gBAAxC;EACA,MAAME,2BAA2B,GAAG/K,MAAM,CAACgL,mBAA3C;;EACAhL,EAAAA,MAAM,CAAC6K,gBAAP,GAA0B,UAAUI,SAAV,EAAqBnK,EAArB,EAAyB;EACjD,QAAI,OAAOA,EAAP,KAAc,UAAlB,EAA8B;EAC5B,UACEsH,wBAAwB,CAACU,OAAzB,CAAiCmC,SAAjC,KAA+C,CAA/C,IACA,CAACvK,IAAI,CAACuH,sBAAsB,CAACgD,SAAD,CAAvB,EAAoC,UAACzB,QAAD;EAAA,eAAcA,QAAQ,KAAK1I,EAA3B;EAAA,OAApC,CAFP,EAGE;EACAmH,QAAAA,sBAAsB,CAACgD,SAAD,CAAtB,CAAkCvN,IAAlC,CAAuCoD,EAAvC;EACA;EACD;EACF;;EAED,WAAOgK,wBAAwB,CAAC/G,KAAzB,CAA+B,IAA/B,EAAqCvD,SAArC,CAAP;EACD,GAZD;;EAcAR,EAAAA,MAAM,CAACgL,mBAAP,GAA6B,UAAUC,SAAV,EAAqBC,UAArB,EAAiC;EAC5D,QAAI,OAAOA,UAAP,KAAsB,UAA1B,EAAsC;EACpC,UAAI9C,wBAAwB,CAACU,OAAzB,CAAiCmC,SAAjC,KAA+C,CAAnD,EAAsD;EACpDhD,QAAAA,sBAAsB,CAACgD,SAAD,CAAtB,GAAoChD,sBAAsB,CACxDgD,SADwD,CAAtB,CAElCpN,MAFkC,CAE3B,UAACiD,EAAD;EAAA,iBAAQA,EAAE,KAAKoK,UAAf;EAAA,SAF2B,CAApC;EAGA;EACD;EACF;;EAED,WAAOH,2BAA2B,CAAChH,KAA5B,CAAkC,IAAlC,EAAwCvD,SAAxC,CAAP;EACD,GAXD;;EAaAR,EAAAA,MAAM,CAACmJ,OAAP,CAAeC,SAAf,GAA2BU,kBAAkB,CAC3C9J,MAAM,CAACmJ,OAAP,CAAeC,SAD4B,EAE3C,WAF2C,CAA7C;EAIApJ,EAAAA,MAAM,CAACmJ,OAAP,CAAegC,YAAf,GAA8BrB,kBAAkB,CAC9C9J,MAAM,CAACmJ,OAAP,CAAegC,YAD+B,EAE9C,cAF8C,CAAhD;;EAKA,MAAInL,MAAM,CAACoL,iBAAX,EAA8B;EAC5BxM,IAAAA,OAAO,CAACC,IAAR,CACEpB,kBAAkB,CAChB,EADgB,GAGd,uFAHc,CADpB;EAOD,GARD,MAQO;EACL;;;EAGAuC,IAAAA,MAAM,CAACoL,iBAAP,GAA2B/C,aAA3B;EACD;EACF;;EAED,SAASO,QAAT,CAAkByC,GAAlB,EAAuB;EACrB,MAAMC,MAAM,GAAGb,QAAQ,CAACc,aAAT,CAAuB,GAAvB,CAAf;EACAD,EAAAA,MAAM,CAAC9C,IAAP,GAAc6C,GAAd;EACA,SAAOC,MAAP;EACD;;ECxMD,IAAIE,cAAc,GAAG,KAArB;EAEO,SAASC,mBAAT,GAAqD;EAAA,MAAxBC,MAAwB,uEAAf1L,MAAM,CAAC0L,MAAQ;;EAC1D,MAAI,CAACA,MAAL,EAAa;EACX,QAAI1L,MAAM,CAAC2L,CAAP,IAAY3L,MAAM,CAAC2L,CAAP,CAAS7K,EAArB,IAA2Bd,MAAM,CAAC2L,CAAP,CAAS7K,EAAT,CAAY8K,MAA3C,EAAmD;EACjDF,MAAAA,MAAM,GAAG1L,MAAM,CAAC2L,CAAhB;EACD;EACF;;EAED,MAAID,MAAM,IAAI,CAACF,cAAf,EAA+B;EAC7B,QAAMK,gBAAgB,GAAGH,MAAM,CAAC5K,EAAP,CAAUgL,EAAnC;EACA,QAAMC,iBAAiB,GAAGL,MAAM,CAAC5K,EAAP,CAAUkL,GAApC;;EAEAN,IAAAA,MAAM,CAAC5K,EAAP,CAAUgL,EAAV,GAAe,UAAUG,WAAV,EAAuBnL,EAAvB,EAA2B;EACxC,aAAOoL,oBAAoB,CAAClH,IAArB,CACL,IADK,EAEL6G,gBAFK,EAGL7L,MAAM,CAAC6K,gBAHF,EAILoB,WAJK,EAKLnL,EALK,EAMLN,SANK,CAAP;EAQD,KATD;;EAWAkL,IAAAA,MAAM,CAAC5K,EAAP,CAAUkL,GAAV,GAAgB,UAAUC,WAAV,EAAuBnL,EAAvB,EAA2B;EACzC,aAAOoL,oBAAoB,CAAClH,IAArB,CACL,IADK,EAEL+G,iBAFK,EAGL/L,MAAM,CAACgL,mBAHF,EAILiB,WAJK,EAKLnL,EALK,EAMLN,SANK,CAAP;EAQD,KATD;;EAWAgL,IAAAA,cAAc,GAAG,IAAjB;EACD;EACF;;EAED,SAASU,oBAAT,CACEC,sBADF,EAEEC,oBAFF,EAGEH,WAHF,EAIEnL,EAJF,EAKEuL,YALF,EAME;EACA,MAAI,OAAOJ,WAAP,KAAuB,QAA3B,EAAqC;EACnC,WAAOE,sBAAsB,CAACpI,KAAvB,CAA6B,IAA7B,EAAmCsI,YAAnC,CAAP;EACD;;EAED,MAAMC,UAAU,GAAGL,WAAW,CAACM,KAAZ,CAAkB,KAAlB,CAAnB;EACAD,EAAAA,UAAU,CAAClP,OAAX,CAAmB,UAAC6N,SAAD,EAAe;EAChC,QAAI7C,wBAAwB,CAACU,OAAzB,CAAiCmC,SAAjC,KAA+C,CAAnD,EAAsD;EACpDmB,MAAAA,oBAAoB,CAACnB,SAAD,EAAYnK,EAAZ,CAApB;EACAmL,MAAAA,WAAW,GAAGA,WAAW,CAACO,OAAZ,CAAoBvB,SAApB,EAA+B,EAA/B,CAAd;EACD;EACF,GALD;;EAOA,MAAIgB,WAAW,CAACQ,IAAZ,OAAuB,EAA3B,EAA+B;EAC7B,WAAO,IAAP;EACD,GAFD,MAEO;EACL,WAAON,sBAAsB,CAACpI,KAAvB,CAA6B,IAA7B,EAAmCsI,YAAnC,CAAP;EACD;EACF;;ECtDD,IAAMK,YAAY,GAAG,EAArB;EAEO,SAASC,eAAT,CAAyB5P,GAAzB,EAA8B;EACnC,SAAOuE,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,YAAM;EAClC,QAAM+K,UAAU,GAAGF,YAAY,CAAClO,MAAM,CAACzB,GAAD,CAAP,CAA/B;;EAEA,QAAI,CAAC6P,UAAL,EAAiB;EACf;;EAEA,aAAO7P,GAAP;EACD;;EAED,QAAIA,GAAG,CAAC0B,MAAJ,KAAeQ,UAAnB,EAA+B;EAC7B;;;EAGA4N,MAAAA,kBAAkB,CAAC9P,GAAD,EAAM6P,UAAN,CAAlB;EACA,aAAO7P,GAAP;EACD;;EAED,QAAIA,GAAG,CAAC0B,MAAJ,KAAeiB,SAAnB,EAA8B;EAC5B;;;EAGA,aAAOkN,UAAU,CAAC3K,OAAX,CAAmBJ,IAAnB,CAAwB;EAAA,eAAM9E,GAAN;EAAA,OAAxB,CAAP;EACD;;EAED,QAAIA,GAAG,CAAC0B,MAAJ,KAAeY,WAAf,IAA8BtC,GAAG,CAAC0B,MAAJ,KAAekB,UAAjD,EAA6D;EAC3D;;EAEA,aAAO5C,GAAP;EACD;;EAED,QAAM+P,aAAa,GACjB/P,GAAG,CAAC0B,MAAJ,KAAekB,UAAf,GACI2B,OAAO,CAACC,OAAR,EADJ,GAEIgB,cAAc,CAACxF,GAAD,EAAM,QAAN,CAHpB;EAKAA,IAAAA,GAAG,CAAC0B,MAAJ,GAAaiB,SAAb;EAEA,WAAOoN,aAAa,CACjBjL,IADI,CACC,YAAM;EACVgL,MAAAA,kBAAkB,CAAC9P,GAAD,EAAM6P,UAAN,CAAlB;EACA,aAAO7P,GAAP;EACD,KAJI,EAKJmF,KALI,CAKE,UAACpF,GAAD,EAAS;EACdiQ,MAAAA,iBAAiB,CAAChQ,GAAD,EAAM6P,UAAN,EAAkB9P,GAAlB,CAAjB;EACA,aAAOC,GAAP;EACD,KARI,CAAP;EASD,GA9CM,CAAP;EA+CD;;EAED,SAAS8P,kBAAT,CAA4B9P,GAA5B,EAAiC6P,UAAjC,EAA6C;EAC3C,SAAOF,YAAY,CAAClO,MAAM,CAACzB,GAAD,CAAP,CAAnB,CAD2C;;EAI3C,SAAOA,GAAG,CAACsF,SAAX;EACA,SAAOtF,GAAG,CAACkI,KAAX;EACA,SAAOlI,GAAG,CAACmI,OAAX;EACA,SAAOnI,GAAG,CAACoJ,MAAX;EAEApJ,EAAAA,GAAG,CAAC0B,MAAJ,GAAaQ,UAAb;EAEA;;;;EAGA2N,EAAAA,UAAU,CAACrL,OAAX;EACD;;EAED,SAASwL,iBAAT,CAA2BhQ,GAA3B,EAAgC6P,UAAhC,EAA4C9P,GAA5C,EAAiD;EAC/C,SAAO4P,YAAY,CAAClO,MAAM,CAACzB,GAAD,CAAP,CAAnB,CAD+C;;EAI/C,SAAOA,GAAG,CAACsF,SAAX;EACA,SAAOtF,GAAG,CAACkI,KAAX;EACA,SAAOlI,GAAG,CAACmI,OAAX;EACA,SAAOnI,GAAG,CAACoJ,MAAX;EAEAtJ,EAAAA,cAAc,CAACC,GAAD,EAAMC,GAAN,EAAW6C,mBAAX,CAAd;EACAgN,EAAAA,UAAU,CAAC5K,MAAX,CAAkBlF,GAAlB;EACD;;EAEM,SAASkQ,cAAT,CAAwBjQ,GAAxB,EAA6BkQ,aAA7B,EAA4C1L,OAA5C,EAAqDS,MAArD,EAA6D;EAClE0K,EAAAA,YAAY,CAAClO,MAAM,CAACzB,GAAD,CAAP,CAAZ,GAA4B;EAAEA,IAAAA,GAAG,EAAHA,GAAF;EAAOwE,IAAAA,OAAO,EAAPA,OAAP;EAAgBS,IAAAA,MAAM,EAANA;EAAhB,GAA5B;EACAU,EAAAA,MAAM,CAACwK,cAAP,CAAsBR,YAAY,CAAClO,MAAM,CAACzB,GAAD,CAAP,CAAlC,EAAiD,SAAjD,EAA4D;EAC1DoQ,IAAAA,GAAG,EAAEF;EADqD,GAA5D;EAGD;EAEM,SAASG,gBAAT,CAA0BC,OAA1B,EAAmC;EACxC,SAAOX,YAAY,CAACW,OAAD,CAAnB;EACD;;EC7ED,IAAMC,IAAI,GAAG,EAAb;EAEO,SAASC,aAAT,GAAyB;EAC9B,MAAMb,YAAY,GAAG,EAArB;EAAA,MACEc,aAAa,GAAG,EADlB;EAAA,MAEEC,UAAU,GAAG,EAFf;EAAA,MAGEC,WAAW,GAAG,EAHhB,CAD8B;;EAO9B,MAAMC,WAAW,GAAG,IAAI7F,IAAJ,GAAWC,OAAX,EAApB;EAEAuF,EAAAA,IAAI,CAAClQ,OAAL,CAAa,UAACL,GAAD,EAAS;EACpB,QAAM6Q,iBAAiB,GACrB7Q,GAAG,CAAC0B,MAAJ,KAAemB,mBAAf,IAAsCE,cAAc,CAAC/C,GAAD,CADtD;;EAGA,YAAQA,GAAG,CAAC0B,MAAZ;EACE,WAAKkB,UAAL;EACE,YAAIiO,iBAAiB,IAAID,WAAW,GAAG5Q,GAAG,CAACyK,aAAlB,IAAmC,GAA5D,EAAiE;EAC/DiG,UAAAA,UAAU,CAAC/P,IAAX,CAAgBX,GAAhB;EACD;;EACD;;EACF,WAAKkC,UAAL;EACA,WAAKC,mBAAL;EACE,YAAI0O,iBAAJ,EAAuB;EACrBH,UAAAA,UAAU,CAAC/P,IAAX,CAAgBX,GAAhB;EACD;;EACD;;EACF,WAAKoC,gBAAL;EACA,WAAKE,WAAL;EACE,YAAI,CAACuO,iBAAD,IAAsBR,gBAAgB,CAAC5O,MAAM,CAACzB,GAAD,CAAP,CAA1C,EAAyD;EACvD2P,UAAAA,YAAY,CAAChP,IAAb,CAAkBX,GAAlB;EACD,SAFD,MAEO,IAAI6Q,iBAAJ,EAAuB;EAC5BF,UAAAA,WAAW,CAAChQ,IAAZ,CAAiBX,GAAjB;EACD;;EACD;;EACF,WAAKwC,OAAL;EACE,YAAI,CAACqO,iBAAL,EAAwB;EACtBJ,UAAAA,aAAa,CAAC9P,IAAd,CAAmBX,GAAnB;EACD;;EACD;EACF;EAzBF;EA2BD,GA/BD;EAiCA,SAAO;EAAE2P,IAAAA,YAAY,EAAZA,YAAF;EAAgBc,IAAAA,aAAa,EAAbA,aAAhB;EAA+BC,IAAAA,UAAU,EAAVA,UAA/B;EAA2CC,IAAAA,WAAW,EAAXA;EAA3C,GAAP;EACD;EAEM,SAASG,cAAT,GAA0B;EAC/B,SAAOP,IAAI,CAACzP,MAAL,CAAYgC,QAAZ,EAAsBgD,GAAtB,CAA0BrE,MAA1B,CAAP;EACD;EAEM,SAASsP,WAAT,GAAuB;EAC5B,SAAOR,IAAI,CAACzK,GAAL,CAASrE,MAAT,CAAP;EACD;;EAGM,SAASuP,aAAT,GAAyB;EAC9B,mBAAWT,IAAX;EACD;EAEM,SAASU,YAAT,CAAsBX,OAAtB,EAA+B;EACpC,MAAMtQ,GAAG,GAAG2D,IAAI,CAAC4M,IAAD,EAAO,UAACvQ,GAAD;EAAA,WAASyB,MAAM,CAACzB,GAAD,CAAN,KAAgBsQ,OAAzB;EAAA,GAAP,CAAhB;EACA,SAAOtQ,GAAG,GAAGA,GAAG,CAAC0B,MAAP,GAAgB,IAA1B;EACD;EAEM,SAASwP,mBAAT,CACLC,eADK,EAELC,YAFK,EAGLpO,UAHK,EAILkE,WAJK,EAKL;EACA,MAAMmK,YAAY,GAAGC,iBAAiB,CACpCH,eADoC,EAEpCC,YAFoC,EAGpCpO,UAHoC,EAIpCkE,WAJoC,CAAtC;EAOA,MAAI6J,WAAW,GAAGhF,OAAd,CAAsBsF,YAAY,CAAClO,IAAnC,MAA6C,CAAC,CAAlD,EACE,MAAM1C,KAAK,CACTC,kBAAkB,CAChB,EADgB,0DAGkC2Q,YAAY,CAAClO,IAD/D,CAFgB,EAIhBkO,YAAY,CAAClO,IAJG,CADT,CAAX;EASFoN,EAAAA,IAAI,CAAC5P,IAAL,CACE4C,MAAM,CACJ;EACEkH,IAAAA,aAAa,EAAE,IADjB;EAEE/I,IAAAA,MAAM,EAAEQ,UAFV;EAGE2D,IAAAA,OAAO,EAAE,EAHX;EAIEgF,IAAAA,QAAQ,EAAE;EACRC,MAAAA,QAAQ,EAAE;EACRyG,QAAAA,OAAO,EAAE,EADD;EAERC,QAAAA,SAAS,EAAE;EAFH;EADF;EAJZ,GADI,EAYJH,YAZI,CADR;;EAiBA,MAAIpG,WAAJ,EAAiB;EACfyD,IAAAA,mBAAmB;EACnB5B,IAAAA,OAAO;EACR;EACF;EAEM,SAAS2E,sBAAT,GAA4D;EAAA,MAA5BvO,QAA4B,uEAAjBD,MAAM,CAACC,QAAU;EACjE,SAAOqN,IAAI,CAACzP,MAAL,CAAY,UAACd,GAAD;EAAA,WAASA,GAAG,CAACgD,UAAJ,CAAeE,QAAf,CAAT;EAAA,GAAZ,EAA+C4C,GAA/C,CAAmDrE,MAAnD,CAAP;EACD;EAEM,SAASiQ,qBAAT,CAA+BpB,OAA/B,EAAwC;EAC7C,MAAIC,IAAI,CAACzP,MAAL,CAAY,UAACd,GAAD;EAAA,WAASyB,MAAM,CAACzB,GAAD,CAAN,KAAgBsQ,OAAzB;EAAA,GAAZ,EAA8ClQ,MAA9C,KAAyD,CAA7D,EAAgE;EAC9D,UAAMK,KAAK,CACTC,kBAAkB,CAChB,EADgB,4CAGoB4P,OADpC,sDAFgB,EAIhBA,OAJgB,CADT,CAAX;EAQD;;EAED,SAAOqB,iBAAiB,CAACrB,OAAD,CAAjB,CAA2BxL,IAA3B,CAAgC,YAAM;EAC3C,QAAM8M,QAAQ,GAAGrB,IAAI,CAACzK,GAAL,CAASrE,MAAT,EAAiBsK,OAAjB,CAAyBuE,OAAzB,CAAjB;EACAC,IAAAA,IAAI,CAACsB,MAAL,CAAYD,QAAZ,EAAsB,CAAtB;EACD,GAHM,CAAP;EAID;EAEM,SAASD,iBAAT,CAA2BrB,OAA3B,EAAsE;EAAA,MAAlCwB,IAAkC,uEAA3B;EAAEC,IAAAA,cAAc,EAAE;EAAlB,GAA2B;;EAC3E,MAAI,OAAOzB,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,UAAM7P,KAAK,CACTC,kBAAkB,CAChB,EADgB,kDAAA,CADT,CAAX;EAMD;;EACD,MAAMV,GAAG,GAAG2D,IAAI,CAAC4M,IAAD,EAAO,UAACyB,GAAD;EAAA,WAASvQ,MAAM,CAACuQ,GAAD,CAAN,KAAgB1B,OAAzB;EAAA,GAAP,CAAhB;;EACA,MAAI,CAACtQ,GAAL,EAAU;EACR,UAAMS,KAAK,CACTC,kBAAkB,CAChB,EADgB,2CAGmB4P,OADnC,sDAFgB,EAIhBA,OAJgB,CADT,CAAX;EAQD;;EAED,MAAM2B,aAAa,GAAG5B,gBAAgB,CAAC5O,MAAM,CAACzB,GAAD,CAAP,CAAtC;;EACA,MAAI8R,IAAI,IAAIA,IAAI,CAACC,cAAjB,EAAiC;EAC/B;EAEA,QAAIE,aAAJ,EAAmB;EACjB;EACA,aAAOA,aAAa,CAAC/M,OAArB;EACD,KAHD,MAGO;EACL;EACA,UAAMA,OAAO,GAAG,IAAIX,OAAJ,CAAY,UAACC,OAAD,EAAUS,MAAV,EAAqB;EAC/CgL,QAAAA,cAAc,CAACjQ,GAAD,EAAM;EAAA,iBAAMkF,OAAN;EAAA,SAAN,EAAqBV,OAArB,EAA8BS,MAA9B,CAAd;EACD,OAFe,CAAhB;EAGA,aAAOC,OAAP;EACD;EACF,GAbD,MAaO;EACL;;EAGA,QAAIN,aAAJ;;EAEA,QAAIqN,aAAJ,EAAmB;EACjB;EACArN,MAAAA,aAAa,GAAGqN,aAAa,CAAC/M,OAA9B;EACAgN,MAAAA,oBAAoB,CAAClS,GAAD,EAAMiS,aAAa,CAACzN,OAApB,EAA6ByN,aAAa,CAAChN,MAA3C,CAApB;EACD,KAJD,MAIO;EACL;EACAL,MAAAA,aAAa,GAAG,IAAIL,OAAJ,CAAY,UAACC,OAAD,EAAUS,MAAV,EAAqB;EAC/CgL,QAAAA,cAAc,CAACjQ,GAAD,EAAM;EAAA,iBAAM4E,aAAN;EAAA,SAAN,EAA2BJ,OAA3B,EAAoCS,MAApC,CAAd;EACAiN,QAAAA,oBAAoB,CAAClS,GAAD,EAAMwE,OAAN,EAAeS,MAAf,CAApB;EACD,OAHe,CAAhB;EAID;;EAED,WAAOL,aAAP;EACD;EACF;;EAED,SAASsN,oBAAT,CAA8BlS,GAA9B,EAAmCwE,OAAnC,EAA4CS,MAA5C,EAAoD;EAClDQ,EAAAA,gBAAgB,CAACzF,GAAD,CAAhB,CACG8E,IADH,CACQ8K,eADR,EAEG9K,IAFH,CAEQ,YAAM;EACVN,IAAAA,OAAO;EACPjE,IAAAA,UAAU,CAAC,YAAM;EACf;EACAuM,MAAAA,OAAO;EACR,KAHS,CAAV;EAID,GARH,EASG3H,KATH,CASSF,MATT;EAUD;;EAED,SAASkN,6BAAT,CACEhP,IADF,EAEEiO,YAFF,EAGEpO,UAHF,EAIEkE,WAJF,EAKE;EACA,MAAI,OAAO/D,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAAC/C,MAAL,KAAgB,CAAhD,EACE,MAAMK,KAAK,CACTC,kBAAkB,CAChB,EADgB,iFAAA,CADT,CAAX;EAQF,MAAI,CAAC0Q,YAAL,EACE,MAAM3Q,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,gGAHc,CADT,CAAX;EAQF,MAAI,OAAOsC,UAAP,KAAsB,UAA1B,EACE,MAAMvC,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,wEAHc,CADT,CAAX;EAQF,MAAI,CAAC0R,gBAAgB,CAAClL,WAAD,CAArB,EACE,MAAMzG,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,kEAHc,CADT,CAAX;EAOH;;EAEM,SAAS2R,0BAAT,CAAoCpL,MAApC,EAA4C;EACjD,MAAIhD,KAAK,CAACC,OAAN,CAAc+C,MAAd,KAAyBA,MAAM,KAAK,IAAxC,EACE,MAAMxG,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEL,iDAFK,CADT,CAAX;EAMF,MAAM4R,SAAS,GAAG,CAAC,MAAD,EAAS,KAAT,EAAgB,YAAhB,EAA8B,aAA9B,CAAlB;EACA,MAAMC,WAAW,GAAG5M,MAAM,CAACC,IAAP,CAAYqB,MAAZ,EAAoBtC,MAApB,CAClB,UAAC4N,WAAD,EAAcC,IAAd;EAAA,WACEF,SAAS,CAACvG,OAAV,CAAkByG,IAAlB,KAA2B,CAA3B,GAA+BD,WAA/B,GAA6CA,WAAW,CAACE,MAAZ,CAAmBD,IAAnB,CAD/C;EAAA,GADkB,EAGlB,EAHkB,CAApB;EAKA,MAAID,WAAW,CAACnS,MAAZ,KAAuB,CAA3B,EACE,MAAMK,KAAK,CACTC,kBAAkB,CAChB,EADgB,oDAG4B4R,SAAS,CAAClR,IAAV,CACxC,IADwC,CAD5C,6BAGsBmR,WAAW,CAACnR,IAAZ,CAAiB,IAAjB,CAHtB,MAFgB,EAMhBkR,SAAS,CAAClR,IAAV,CAAe,IAAf,CANgB,EAOhBmR,WAAW,CAACnR,IAAZ,CAAiB,IAAjB,CAPgB,CADT,CAAX;EAWF,MAAI,OAAO6F,MAAM,CAAC9D,IAAd,KAAuB,QAAvB,IAAmC8D,MAAM,CAAC9D,IAAP,CAAY/C,MAAZ,KAAuB,CAA9D,EACE,MAAMK,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,mEAHc,CADT,CAAX;EAOF,MAAI,QAAOuG,MAAM,CAACjH,GAAd,MAAsB,QAAtB,IAAkC,OAAOiH,MAAM,CAACjH,GAAd,KAAsB,UAA5D,EACE,MAAMS,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,oFAHc,CADT,CAAX;;EAOF,MAAMgS,uBAAuB,GAAG,SAA1BA,uBAA0B,CAAC1P,UAAD;EAAA,WAC9B,OAAOA,UAAP,KAAsB,QAAtB,IAAkC,OAAOA,UAAP,KAAsB,UAD1B;EAAA,GAAhC;;EAEA,MACE,CAAC0P,uBAAuB,CAACzL,MAAM,CAACjE,UAAR,CAAxB,IACA,EACEiB,KAAK,CAACC,OAAN,CAAc+C,MAAM,CAACjE,UAArB,KACAiE,MAAM,CAACjE,UAAP,CAAkB2P,KAAlB,CAAwBD,uBAAxB,CAFF,CAFF,EAOE,MAAMjS,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,+FAHc,CADT,CAAX;EAOF,MAAI,CAAC0R,gBAAgB,CAACnL,MAAM,CAACC,WAAR,CAArB,EACE,MAAMzG,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEL,mDAFK,CADT,CAAX;EAMH;;EAED,SAAS0R,gBAAT,CAA0BlL,WAA1B,EAAuC;EACrC,SACE,CAACA,WAAD,IACA,OAAOA,WAAP,KAAuB,UADvB,IAEC,QAAOA,WAAP,MAAuB,QAAvB,IACCA,WAAW,KAAK,IADjB,IAEC,CAACjD,KAAK,CAACC,OAAN,CAAcgD,WAAd,CALL;EAOD;;EAED,SAASoK,iBAAT,CACEH,eADF,EAEEC,YAFF,EAGEpO,UAHF,EAIEkE,WAJF,EAKE;EACA,MAAM0L,cAAc,GAAG,QAAOzB,eAAP,MAA2B,QAAlD;EAEA,MAAME,YAAY,GAAG;EACnBlO,IAAAA,IAAI,EAAE,IADa;EAEnBqH,IAAAA,OAAO,EAAE,IAFU;EAGnBxH,IAAAA,UAAU,EAAE,IAHO;EAInBkE,IAAAA,WAAW,EAAE;EAJM,GAArB;;EAOA,MAAI0L,cAAJ,EAAoB;EAClBP,IAAAA,0BAA0B,CAAClB,eAAD,CAA1B;EACAE,IAAAA,YAAY,CAAClO,IAAb,GAAoBgO,eAAe,CAAChO,IAApC;EACAkO,IAAAA,YAAY,CAAC7G,OAAb,GAAuB2G,eAAe,CAACnR,GAAvC;EACAqR,IAAAA,YAAY,CAACrO,UAAb,GAA0BmO,eAAe,CAACnO,UAA1C;EACAqO,IAAAA,YAAY,CAACnK,WAAb,GAA2BiK,eAAe,CAACjK,WAA3C;EACD,GAND,MAMO;EACLiL,IAAAA,6BAA6B,CAC3BhB,eAD2B,EAE3BC,YAF2B,EAG3BpO,UAH2B,EAI3BkE,WAJ2B,CAA7B;EAMAmK,IAAAA,YAAY,CAAClO,IAAb,GAAoBgO,eAApB;EACAE,IAAAA,YAAY,CAAC7G,OAAb,GAAuB4G,YAAvB;EACAC,IAAAA,YAAY,CAACrO,UAAb,GAA0BA,UAA1B;EACAqO,IAAAA,YAAY,CAACnK,WAAb,GAA2BA,WAA3B;EACD;;EAEDmK,EAAAA,YAAY,CAAC7G,OAAb,GAAuBqI,eAAe,CAACxB,YAAY,CAAC7G,OAAd,CAAtC;EACA6G,EAAAA,YAAY,CAACnK,WAAb,GAA2B4L,mBAAmB,CAACzB,YAAY,CAACnK,WAAd,CAA9C;EACAmK,EAAAA,YAAY,CAACrO,UAAb,GAA0B+P,kBAAkB,CAAC1B,YAAY,CAACrO,UAAd,CAA5C;EAEA,SAAOqO,YAAP;EACD;;EAED,SAASwB,eAAT,CAAyBrI,OAAzB,EAAkC;EAChC,MAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;EACjC,WAAO;EAAA,aAAMjG,OAAO,CAACC,OAAR,CAAgBgG,OAAhB,CAAN;EAAA,KAAP;EACD;;EAED,SAAOA,OAAP;EACD;;EAED,SAASsI,mBAAT,CAA6B5L,WAA7B,EAA0C;EACxC,SAAOA,WAAW,GAAGA,WAAH,GAAiB,EAAnC;EACD;;EAED,SAAS6L,kBAAT,CAA4B/P,UAA5B,EAAwC;EACtC,MAAIgQ,eAAe,GAAG/O,KAAK,CAACC,OAAN,CAAclB,UAAd,IAA4BA,UAA5B,GAAyC,CAACA,UAAD,CAA/D;EACAgQ,EAAAA,eAAe,GAAGA,eAAe,CAAClN,GAAhB,CAAoB,UAACmN,gBAAD;EAAA,WACpC,OAAOA,gBAAP,KAA4B,UAA5B,GACIA,gBADJ,GAEIC,gBAAgB,CAACD,gBAAD,CAHgB;EAAA,GAApB,CAAlB;EAMA,SAAO,UAAC/P,QAAD;EAAA,WACL8P,eAAe,CAACG,IAAhB,CAAqB,UAACnQ,UAAD;EAAA,aAAgBA,UAAU,CAACE,QAAD,CAA1B;EAAA,KAArB,CADK;EAAA,GAAP;EAED;;EAEM,SAASgQ,gBAAT,CAA0BE,IAA1B,EAAgCC,UAAhC,EAA4C;EACjD,MAAMC,KAAK,GAAGC,2BAA2B,CAACH,IAAD,EAAOC,UAAP,CAAzC;EAEA,SAAO,UAACnQ,QAAD,EAAc;EACnB;EACA,QAAIsQ,MAAM,GAAGtQ,QAAQ,CAACsQ,MAAtB;;EACA,QAAI,CAACA,MAAL,EAAa;EACXA,MAAAA,MAAM,aAAMtQ,QAAQ,CAACuQ,QAAf,eAA4BvQ,QAAQ,CAAC+I,IAArC,CAAN;EACD;;EACD,QAAMyH,KAAK,GAAGxQ,QAAQ,CAACuI,IAAT,CACXgE,OADW,CACH+D,MADG,EACK,EADL,EAEX/D,OAFW,CAEHvM,QAAQ,CAACiJ,MAFN,EAEc,EAFd,EAGXqD,KAHW,CAGL,GAHK,EAGA,CAHA,CAAd;EAIA,WAAO8D,KAAK,CAACK,IAAN,CAAWD,KAAX,CAAP;EACD,GAXD;EAYD;;EAED,SAASH,2BAAT,CAAqCH,IAArC,EAA2CC,UAA3C,EAAuD;EACrD,MAAIO,SAAS,GAAG,CAAhB;EAAA,MACEC,SAAS,GAAG,KADd;EAAA,MAEEC,QAAQ,GAAG,GAFb;;EAIA,MAAIV,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAhB,EAAqB;EACnBA,IAAAA,IAAI,GAAG,MAAMA,IAAb;EACD;;EAED,OAAK,IAAIW,SAAS,GAAG,CAArB,EAAwBA,SAAS,GAAGX,IAAI,CAAChT,MAAzC,EAAiD2T,SAAS,EAA1D,EAA8D;EAC5D,QAAMC,IAAI,GAAGZ,IAAI,CAACW,SAAD,CAAjB;EACA,QAAME,cAAc,GAAG,CAACJ,SAAD,IAAcG,IAAI,KAAK,GAA9C;EACA,QAAME,YAAY,GAAGL,SAAS,IAAIG,IAAI,KAAK,GAA3C;;EACA,QAAIC,cAAc,IAAIC,YAAtB,EAAoC;EAClCC,MAAAA,aAAa,CAACJ,SAAD,CAAb;EACD;EACF;;EAEDI,EAAAA,aAAa,CAACf,IAAI,CAAChT,MAAN,CAAb;EACA,SAAO,IAAIgU,MAAJ,CAAWN,QAAX,EAAqB,GAArB,CAAP;;EAEA,WAASK,aAAT,CAAuBtP,KAAvB,EAA8B;EAC5B,QAAMwP,8BAA8B,GAAG,SAAvC;EACA,QAAMC,mBAAmB,GAAGC,cAAc,CAACnB,IAAI,CAACoB,KAAL,CAAWZ,SAAX,EAAsB/O,KAAtB,CAAD,CAA1C;EAEAiP,IAAAA,QAAQ,IAAID,SAAS,GACjBQ,8BADiB,GAEjBC,mBAFJ;;EAIA,QAAIzP,KAAK,KAAKuO,IAAI,CAAChT,MAAnB,EAA2B;EACzB,UAAIyT,SAAJ,EAAe;EACb,YAAIR,UAAJ,EAAgB;EACd;EACA;EACAS,UAAAA,QAAQ,IAAI,GAAZ;EACD;EACF,OAND,MAMO;EACL;EACA;EACA,YAAMW,MAAM,GAAGpB,UAAU,GAAG,EAAH,GAAQ,IAAjC;EAEAS,QAAAA,QAAQ;EAENA,QAAAA,QAAQ,CAACY,MAAT,CAAgBZ,QAAQ,CAAC1T,MAAT,GAAkB,CAAlC,MAAyC,GAAzC,aACO0T,QADP,SACkBW,MADlB,mBAEOX,QAFP,eAEoBW,MAFpB,cAFF;EAKD;EACF;;EAEDZ,IAAAA,SAAS,GAAG,CAACA,SAAb;EACAD,IAAAA,SAAS,GAAG/O,KAAZ;EACD;;EAED,WAAS0P,cAAT,CAAwBjG,GAAxB,EAA6B;EAC3B;EACA,WAAOA,GAAG,CAACmB,OAAJ,CAAY,qBAAZ,EAAmC,MAAnC,CAAP;EACD;EACF;;EC5cD,IAAIkF,iBAAiB,GAAG,KAAxB;EAAA,IACEC,wBAAwB,GAAG,EAD7B;EAAA,IAEEC,UAAU,GAAG5J,WAAW,IAAIhI,MAAM,CAACC,QAAP,CAAgBuI,IAF9C;EAIO,SAASqJ,gBAAT,GAA4B;EACjC;EACA,SAAOhI,OAAO,EAAd;EACD;EAEM,SAASA,OAAT,GAAuD;EAAA,MAAtCiI,eAAsC,uEAApB,EAAoB;EAAA,MAAhBxI,cAAgB;;EAC5D,MAAIoI,iBAAJ,EAAuB;EACrB,WAAO,IAAIpQ,OAAJ,CAAY,UAACC,OAAD,EAAUS,MAAV,EAAqB;EACtC2P,MAAAA,wBAAwB,CAACjU,IAAzB,CAA8B;EAC5B6D,QAAAA,OAAO,EAAPA,OAD4B;EAE5BS,QAAAA,MAAM,EAANA,MAF4B;EAG5BsH,QAAAA,cAAc,EAAdA;EAH4B,OAA9B;EAKD,KANM,CAAP;EAOD;;EAT2D,uBAgBxDiE,aAAa,EAhB2C;EAAA,MAY1Db,YAZ0D,kBAY1DA,YAZ0D;EAAA,MAa1Dc,aAb0D,kBAa1DA,aAb0D;EAAA,MAc1DC,UAd0D,kBAc1DA,UAd0D;EAAA,MAe1DC,WAf0D,kBAe1DA,WAf0D;;EAiB5D,MAAIqE,eAAJ;EAAA,MACEC,oBAAoB,GAAG,KADzB;EAAA,MAEEC,MAAM,GAAGL,UAFX;EAAA,MAGEM,MAAM,GAAIN,UAAU,GAAG5R,MAAM,CAACC,QAAP,CAAgBuI,IAHzC;;EAKA,MAAI2B,SAAS,EAAb,EAAiB;EACfuH,IAAAA,iBAAiB,GAAG,IAApB;EACAK,IAAAA,eAAe,GAAGrF,YAAY,CAAC8C,MAAb,CAChB/B,UADgB,EAEhBD,aAFgB,EAGhBE,WAHgB,CAAlB;EAKA,WAAOyE,iBAAiB,EAAxB;EACD,GARD,MAQO;EACLJ,IAAAA,eAAe,GAAGtE,UAAlB;EACA,WAAO2E,QAAQ,EAAf;EACD;;EAED,WAASC,gBAAT,GAA4B;EAC1BL,IAAAA,oBAAoB,GAAG,IAAvB;EACD;;EAED,WAASI,QAAT,GAAoB;EAClB,WAAO9Q,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,YAAM;EAClC,UAAMyQ,YAAY,GAAG7E,UAAU,CAAC5K,GAAX,CAAeuE,aAAf,CAArB;EAEA,aACE9F,OAAO,CAACyB,GAAR,CAAYuP,YAAZ,EACGzQ,IADH,CACQ0Q,qBADR;EAAA,OAGG1Q,IAHH,CAGQ;EAAA,eAAM,EAAN;EAAA,OAHR,EAIGK,KAJH,CAIS,UAACpF,GAAD,EAAS;EACdyV,QAAAA,qBAAqB;EACrB,cAAMzV,GAAN;EACD,OAPH,CADF;EAUD,KAbM,CAAP;EAcD;;EAED,WAASqV,iBAAT,GAA6B;EAC3B,WAAO7Q,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,YAAM;EAClC;EACA7B,MAAAA,MAAM,CAACsD,aAAP,CACE,IAAIC,WAAJ,CACEwO,eAAe,CAAC5U,MAAhB,KAA2B,CAA3B,GACI,iCADJ,GAEI,8BAHN,EAIEqV,oBAAoB,CAAC,IAAD,CAJtB,CADF;EASAxS,MAAAA,MAAM,CAACsD,aAAP,CACE,IAAIC,WAAJ,CACE,iCADF,EAEEiP,oBAAoB,CAAC,IAAD,EAAO;EAAEH,QAAAA,gBAAgB,EAAhBA;EAAF,OAAP,CAFtB,CADF;;EAOA,UAAIL,oBAAJ,EAA0B;EACxBhS,QAAAA,MAAM,CAACsD,aAAP,CACE,IAAIC,WAAJ,CACE,uCADF,EAEEiP,oBAAoB,CAAC,IAAD,CAFtB,CADF;EAMAC,QAAAA,iBAAiB;EACjBpK,QAAAA,aAAa,CAAC4J,MAAD,CAAb;EACA;EACD;;EAED,UAAMS,cAAc,GAAGhG,YAAY,CAAC7J,GAAb,CAAiB8J,eAAjB,CAAvB;EAEA,UAAMgG,qBAAqB,GAAGnF,aAAa,CACxC3K,GAD2B,CACvBL,gBADuB,EAE3BK,GAF2B,CAEvB,UAAC2C,cAAD;EAAA,eAAoBA,cAAc,CAAC3D,IAAf,CAAoB8K,eAApB,CAApB;EAAA,OAFuB,CAA9B;EAIA,UAAMiG,kBAAkB,GAAGD,qBAAqB,CAACnD,MAAtB,CAA6BkD,cAA7B,CAA3B;EAEA,UAAMG,iBAAiB,GAAGvR,OAAO,CAACyB,GAAR,CAAY6P,kBAAZ,CAA1B;EAEAC,MAAAA,iBAAiB,CAAChR,IAAlB,CAAuB,YAAM;EAC3B7B,QAAAA,MAAM,CAACsD,aAAP,CACE,IAAIC,WAAJ,CACE,uCADF,EAEEiP,oBAAoB,CAAC,IAAD,CAFtB,CADF;EAMD,OAPD;EASA;;;;EAGA,UAAMM,qBAAqB,GAAGrF,UAAU,CAAC5K,GAAX,CAAe,UAAC9F,GAAD,EAAS;EACpD,eAAOqK,aAAa,CAACrK,GAAD,CAAb,CAAmB8E,IAAnB,CAAwB,UAAC9E,GAAD;EAAA,iBAC7BgW,sBAAsB,CAAChW,GAAD,EAAM8V,iBAAN,CADO;EAAA,SAAxB,CAAP;EAGD,OAJ6B,CAA9B;EAMA;;;;;EAIA,UAAMG,aAAa,GAAGtF,WAAW,CAC9B7P,MADmB,CACZ,UAACoV,UAAD;EAAA,eAAgBxF,UAAU,CAAC3E,OAAX,CAAmBmK,UAAnB,IAAiC,CAAjD;EAAA,OADY,EAEnBpQ,GAFmB,CAEf,UAACoQ,UAAD,EAAgB;EACnB,eAAOF,sBAAsB,CAACE,UAAD,EAAaJ,iBAAb,CAA7B;EACD,OAJmB,CAAtB;EAKA,aAAOA,iBAAiB,CACrB3Q,KADI,CACE,UAACpF,GAAD,EAAS;EACdyV,QAAAA,qBAAqB;EACrB,cAAMzV,GAAN;EACD,OAJI,EAKJ+E,IALI,CAKC,YAAM;EACV;;;;EAIA0Q,QAAAA,qBAAqB;EAErB,eAAOjR,OAAO,CAACyB,GAAR,CAAY+P,qBAAqB,CAACtD,MAAtB,CAA6BwD,aAA7B,CAAZ,EACJ9Q,KADI,CACE,UAACpF,GAAD,EAAS;EACdgV,UAAAA,eAAe,CAAC1U,OAAhB,CAAwB,UAAC6E,OAAD;EAAA,mBAAaA,OAAO,CAACD,MAAR,CAAelF,GAAf,CAAb;EAAA,WAAxB;EACA,gBAAMA,GAAN;EACD,SAJI,EAKJ+E,IALI,CAKC4Q,iBALD,CAAP;EAMD,OAlBI,CAAP;EAmBD,KAtFM,CAAP;EAuFD;;EAED,WAASA,iBAAT,GAA6B;EAC3B,QAAMS,WAAW,GAAGrF,cAAc,EAAlC;EACAiE,IAAAA,eAAe,CAAC1U,OAAhB,CAAwB,UAAC6E,OAAD;EAAA,aAAaA,OAAO,CAACV,OAAR,CAAgB2R,WAAhB,CAAb;EAAA,KAAxB;;EAEA,QAAI;EACF,UAAMC,kBAAkB,GACtBpB,eAAe,CAAC5U,MAAhB,KAA2B,CAA3B,GACI,0BADJ,GAEI,uBAHN;EAIA6C,MAAAA,MAAM,CAACsD,aAAP,CACE,IAAIC,WAAJ,CAAgB4P,kBAAhB,EAAoCX,oBAAoB,EAAxD,CADF;EAGAxS,MAAAA,MAAM,CAACsD,aAAP,CACE,IAAIC,WAAJ,CAAgB,0BAAhB,EAA4CiP,oBAAoB,EAAhE,CADF;EAGD,KAXD,CAWE,OAAO1V,GAAP,EAAY;EACZ;;;;EAIAQ,MAAAA,UAAU,CAAC,YAAM;EACf,cAAMR,GAAN;EACD,OAFS,CAAV;EAGD;EAED;;;;;;;EAKA4U,IAAAA,iBAAiB,GAAG,KAApB;;EAEA,QAAIC,wBAAwB,CAACxU,MAAzB,GAAkC,CAAtC,EAAyC;EACvC;;;EAGA,UAAMiW,mBAAmB,GAAGzB,wBAA5B;EACAA,MAAAA,wBAAwB,GAAG,EAA3B;EACA9H,MAAAA,OAAO,CAACuJ,mBAAD,CAAP;EACD;;EAED,WAAOF,WAAP;EACD;EAED;;;;;;;;EAMA,WAASX,qBAAT,GAAiC;EAC/BT,IAAAA,eAAe,CAAC1U,OAAhB,CAAwB,UAACiW,cAAD,EAAoB;EAC1ChK,MAAAA,0BAA0B,CAACgK,cAAc,CAAC/J,cAAhB,CAA1B;EACD,KAFD;EAIAD,IAAAA,0BAA0B,CAACC,cAAD,CAA1B;EACD;;EAED,WAASkJ,oBAAT,GAAwE;EAAA;;EAAA,QAA1Cc,eAA0C,uEAAxB,KAAwB;EAAA,QAAjBC,eAAiB;EACtE,QAAMC,cAAc,GAAG,EAAvB;EACA,QAAMC,eAAe,6DAElBlU,OAFkB,EAER,EAFQ,qCAIlBF,WAJkB,EAIJ,EAJI,qCAMlBJ,UANkB,EAML,EANK,qCAQlBW,mBARkB,EAQI,EARJ,oBAArB;;EAWA,QAAI0T,eAAJ,EAAqB;EACnB7F,MAAAA,UAAU,CAAC+B,MAAX,CAAkB9B,WAAlB,EAA+BtQ,OAA/B,CAAuC,UAACL,GAAD,EAAM6E,KAAN,EAAgB;EACrD8R,QAAAA,MAAM,CAAC3W,GAAD,EAAMwC,OAAN,CAAN;EACD,OAFD;EAGAmN,MAAAA,YAAY,CAACtP,OAAb,CAAqB,UAACL,GAAD,EAAS;EAC5B2W,QAAAA,MAAM,CAAC3W,GAAD,EAAMkC,UAAN,CAAN;EACD,OAFD;EAGAuO,MAAAA,aAAa,CAACpQ,OAAd,CAAsB,UAACL,GAAD,EAAS;EAC7B2W,QAAAA,MAAM,CAAC3W,GAAD,EAAMsC,WAAN,CAAN;EACD,OAFD;EAGD,KAVD,MAUO;EACL0S,MAAAA,eAAe,CAAC3U,OAAhB,CAAwB,UAACL,GAAD,EAAS;EAC/B2W,QAAAA,MAAM,CAAC3W,GAAD,CAAN;EACD,OAFD;EAGD;;EAED,QAAM2B,MAAM,GAAG;EACbiV,MAAAA,MAAM,EAAE;EACNH,QAAAA,cAAc,EAAdA,cADM;EAENC,QAAAA,eAAe,EAAfA,eAFM;EAGNG,QAAAA,eAAe,EAAE7B,eAAe,CAAC5U,MAH3B;EAIN0W,QAAAA,aAAa,EAAEvK,cAAF,aAAEA,cAAF,uBAAEA,cAAc,CAAG,CAAH,CAJvB;EAKN2I,QAAAA,MAAM,EAANA,MALM;EAMNC,QAAAA,MAAM,EAANA,MANM;EAONF,QAAAA,oBAAoB,EAApBA;EAPM;EADK,KAAf;;EAYA,QAAIuB,eAAJ,EAAqB;EACnBjT,MAAAA,MAAM,CAAC5B,MAAM,CAACiV,MAAR,EAAgBJ,eAAhB,CAAN;EACD;;EAED,WAAO7U,MAAP;;EAEA,aAASgV,MAAT,CAAgB3W,GAAhB,EAAqB0B,MAArB,EAA6B;EAC3B,UAAM4O,OAAO,GAAG7O,MAAM,CAACzB,GAAD,CAAtB;EACA0B,MAAAA,MAAM,GAAGA,MAAM,IAAIuP,YAAY,CAACX,OAAD,CAA/B;EACAmG,MAAAA,cAAc,CAACnG,OAAD,CAAd,GAA0B5O,MAA1B;EACA,UAAMqV,SAAS,GAAIL,eAAe,CAAChV,MAAD,CAAf,GACjBgV,eAAe,CAAChV,MAAD,CAAf,IAA2B,EAD7B;EAEAqV,MAAAA,SAAS,CAACpW,IAAV,CAAe2P,OAAf;EACD;EACF;EACF;EAED;;;;;;;;EAOA,SAAS0F,sBAAT,CAAgChW,GAAhC,EAAqC8V,iBAArC,EAAwD;EACtD,MAAI/S,cAAc,CAAC/C,GAAD,CAAlB,EAAyB;EACvB,WAAOoF,kBAAkB,CAACpF,GAAD,CAAlB,CAAwB8E,IAAxB,CAA6B,UAAC9E,GAAD;EAAA,aAClC8V,iBAAiB,CAAChR,IAAlB,CAAuB;EAAA,eACrB/B,cAAc,CAAC/C,GAAD,CAAd,GAAsBsG,cAAc,CAACtG,GAAD,CAApC,GAA4CA,GADvB;EAAA,OAAvB,CADkC;EAAA,KAA7B,CAAP;EAKD,GAND,MAMO;EACL,WAAO8V,iBAAiB,CAAChR,IAAlB,CAAuB;EAAA,aAAM9E,GAAN;EAAA,KAAvB,CAAP;EACD;EACF;;ECtTD,IAAIgX,OAAO,GAAG,KAAd;EAEO,SAASC,KAAT,CAAenF,IAAf,EAAqB;EAC1BkF,EAAAA,OAAO,GAAG,IAAV;;EACA,MAAIlF,IAAI,IAAIA,IAAI,CAACnF,cAAjB,EAAiC;EAC/BC,IAAAA,iBAAiB,CAACkF,IAAI,CAACnF,cAAN,CAAjB;EACD;;EACD,MAAI1B,WAAJ,EAAiB;EACf6B,IAAAA,OAAO;EACR;EACF;EAEM,SAASM,SAAT,GAAqB;EAC1B,SAAO4J,OAAP;EACD;;EAED,IAAI/L,WAAJ,EAAiB;EACf1K,EAAAA,UAAU,CAAC,YAAM;EACf,QAAI,CAACyW,OAAL,EAAc;EACZnV,MAAAA,OAAO,CAACC,IAAR,CACEpB,kBAAkB,CAChB,CADgB,2KAAA,CADpB;EAOD;EACF,GAVS,EAUP,IAVO,CAAV;EAWD;;AC3BD,iBAAe;EACbsQ,EAAAA,aAAa,EAAbA,aADa;EAEblE,EAAAA,OAAO,EAAPA,OAFa;EAGb5K,EAAAA,UAAU,EAAVA,UAHa;EAIbmI,EAAAA,aAAa,EAAbA,aAJa;EAKbjF,EAAAA,kBAAkB,EAAlBA,kBALa;EAMbsM,EAAAA,qBAAqB,EAArBA;EANa,CAAf;;ECqCA,IAAIzG,WAAW,IAAIhI,MAAM,CAACiU,uBAA1B,EAAmD;EACjDjU,EAAAA,MAAM,CAACiU,uBAAP,CAA+BC,cAA/B,GAAgDtM,QAAhD;EACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
\No newline at end of file