1 line
88 KiB
JSON
1 line
88 KiB
JSON
{"ast":null,"code":"import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\n\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\n\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\n\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\n\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\n\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\n\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\n\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };","map":{"version":3,"names":["_extends","resolvePathname","valueEqual","warning","invariant","addLeadingSlash","path","charAt","stripLeadingSlash","substr","hasBasename","prefix","toLowerCase","indexOf","length","stripBasename","stripTrailingSlash","slice","parsePath","pathname","search","hash","hashIndex","searchIndex","createPath","location","createLocation","state","key","currentLocation","undefined","decodeURI","e","URIError","locationsAreEqual","a","b","createTransitionManager","prompt","setPrompt","nextPrompt","process","env","NODE_ENV","confirmTransitionTo","action","getUserConfirmation","callback","result","listeners","appendListener","fn","isActive","listener","apply","arguments","push","filter","item","notifyListeners","_len","args","Array","_key","forEach","canUseDOM","window","document","createElement","getConfirmation","message","confirm","supportsHistory","ua","navigator","userAgent","history","supportsPopStateOnHashChange","supportsGoWithoutReloadUsingHash","isExtraneousPopstateEvent","event","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","props","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","Math","random","toString","transitionManager","setState","nextState","handlePopState","handlePop","handleHashChange","forceNextPop","ok","revertPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","initialLocation","createHref","href","pushState","prevIndex","nextKeys","replace","replaceState","n","goBack","goForward","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","url","getHashPath","substring","pushHashPath","replaceHashPath","createHashHistory","canGoWithoutReload","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","locationsAreEqual$$1","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","hashChanged","nextPaths","clamp","lowerBound","upperBound","min","max","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","index","map","entry","nextIndex","nextEntries","splice","canGo"],"sources":["/Users/paolasanchez/Desktop/Pry4/Katoikia/katoikia-app/web-ui/sakai-react/node_modules/history/esm/history.js"],"sourcesContent":["import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,oCAArB;AACA,OAAOC,eAAP,MAA4B,kBAA5B;AACA,OAAOC,UAAP,MAAuB,aAAvB;AACA,OAAOC,OAAP,MAAoB,cAApB;AACA,OAAOC,SAAP,MAAsB,gBAAtB;;AAEA,SAASC,eAAT,CAAyBC,IAAzB,EAA+B;EAC7B,OAAOA,IAAI,CAACC,MAAL,CAAY,CAAZ,MAAmB,GAAnB,GAAyBD,IAAzB,GAAgC,MAAMA,IAA7C;AACD;;AACD,SAASE,iBAAT,CAA2BF,IAA3B,EAAiC;EAC/B,OAAOA,IAAI,CAACC,MAAL,CAAY,CAAZ,MAAmB,GAAnB,GAAyBD,IAAI,CAACG,MAAL,CAAY,CAAZ,CAAzB,GAA0CH,IAAjD;AACD;;AACD,SAASI,WAAT,CAAqBJ,IAArB,EAA2BK,MAA3B,EAAmC;EACjC,OAAOL,IAAI,CAACM,WAAL,GAAmBC,OAAnB,CAA2BF,MAAM,CAACC,WAAP,EAA3B,MAAqD,CAArD,IAA0D,MAAMC,OAAN,CAAcP,IAAI,CAACC,MAAL,CAAYI,MAAM,CAACG,MAAnB,CAAd,MAA8C,CAAC,CAAhH;AACD;;AACD,SAASC,aAAT,CAAuBT,IAAvB,EAA6BK,MAA7B,EAAqC;EACnC,OAAOD,WAAW,CAACJ,IAAD,EAAOK,MAAP,CAAX,GAA4BL,IAAI,CAACG,MAAL,CAAYE,MAAM,CAACG,MAAnB,CAA5B,GAAyDR,IAAhE;AACD;;AACD,SAASU,kBAAT,CAA4BV,IAA5B,EAAkC;EAChC,OAAOA,IAAI,CAACC,MAAL,CAAYD,IAAI,CAACQ,MAAL,GAAc,CAA1B,MAAiC,GAAjC,GAAuCR,IAAI,CAACW,KAAL,CAAW,CAAX,EAAc,CAAC,CAAf,CAAvC,GAA2DX,IAAlE;AACD;;AACD,SAASY,SAAT,CAAmBZ,IAAnB,EAAyB;EACvB,IAAIa,QAAQ,GAAGb,IAAI,IAAI,GAAvB;EACA,IAAIc,MAAM,GAAG,EAAb;EACA,IAAIC,IAAI,GAAG,EAAX;EACA,IAAIC,SAAS,GAAGH,QAAQ,CAACN,OAAT,CAAiB,GAAjB,CAAhB;;EAEA,IAAIS,SAAS,KAAK,CAAC,CAAnB,EAAsB;IACpBD,IAAI,GAAGF,QAAQ,CAACV,MAAT,CAAgBa,SAAhB,CAAP;IACAH,QAAQ,GAAGA,QAAQ,CAACV,MAAT,CAAgB,CAAhB,EAAmBa,SAAnB,CAAX;EACD;;EAED,IAAIC,WAAW,GAAGJ,QAAQ,CAACN,OAAT,CAAiB,GAAjB,CAAlB;;EAEA,IAAIU,WAAW,KAAK,CAAC,CAArB,EAAwB;IACtBH,MAAM,GAAGD,QAAQ,CAACV,MAAT,CAAgBc,WAAhB,CAAT;IACAJ,QAAQ,GAAGA,QAAQ,CAACV,MAAT,CAAgB,CAAhB,EAAmBc,WAAnB,CAAX;EACD;;EAED,OAAO;IACLJ,QAAQ,EAAEA,QADL;IAELC,MAAM,EAAEA,MAAM,KAAK,GAAX,GAAiB,EAAjB,GAAsBA,MAFzB;IAGLC,IAAI,EAAEA,IAAI,KAAK,GAAT,GAAe,EAAf,GAAoBA;EAHrB,CAAP;AAKD;;AACD,SAASG,UAAT,CAAoBC,QAApB,EAA8B;EAC5B,IAAIN,QAAQ,GAAGM,QAAQ,CAACN,QAAxB;EAAA,IACIC,MAAM,GAAGK,QAAQ,CAACL,MADtB;EAAA,IAEIC,IAAI,GAAGI,QAAQ,CAACJ,IAFpB;EAGA,IAAIf,IAAI,GAAGa,QAAQ,IAAI,GAAvB;EACA,IAAIC,MAAM,IAAIA,MAAM,KAAK,GAAzB,EAA8Bd,IAAI,IAAIc,MAAM,CAACb,MAAP,CAAc,CAAd,MAAqB,GAArB,GAA2Ba,MAA3B,GAAoC,MAAMA,MAAlD;EAC9B,IAAIC,IAAI,IAAIA,IAAI,KAAK,GAArB,EAA0Bf,IAAI,IAAIe,IAAI,CAACd,MAAL,CAAY,CAAZ,MAAmB,GAAnB,GAAyBc,IAAzB,GAAgC,MAAMA,IAA9C;EAC1B,OAAOf,IAAP;AACD;;AAED,SAASoB,cAAT,CAAwBpB,IAAxB,EAA8BqB,KAA9B,EAAqCC,GAArC,EAA0CC,eAA1C,EAA2D;EACzD,IAAIJ,QAAJ;;EAEA,IAAI,OAAOnB,IAAP,KAAgB,QAApB,EAA8B;IAC5B;IACAmB,QAAQ,GAAGP,SAAS,CAACZ,IAAD,CAApB;IACAmB,QAAQ,CAACE,KAAT,GAAiBA,KAAjB;EACD,CAJD,MAIO;IACL;IACAF,QAAQ,GAAGzB,QAAQ,CAAC,EAAD,EAAKM,IAAL,CAAnB;IACA,IAAImB,QAAQ,CAACN,QAAT,KAAsBW,SAA1B,EAAqCL,QAAQ,CAACN,QAAT,GAAoB,EAApB;;IAErC,IAAIM,QAAQ,CAACL,MAAb,EAAqB;MACnB,IAAIK,QAAQ,CAACL,MAAT,CAAgBb,MAAhB,CAAuB,CAAvB,MAA8B,GAAlC,EAAuCkB,QAAQ,CAACL,MAAT,GAAkB,MAAMK,QAAQ,CAACL,MAAjC;IACxC,CAFD,MAEO;MACLK,QAAQ,CAACL,MAAT,GAAkB,EAAlB;IACD;;IAED,IAAIK,QAAQ,CAACJ,IAAb,EAAmB;MACjB,IAAII,QAAQ,CAACJ,IAAT,CAAcd,MAAd,CAAqB,CAArB,MAA4B,GAAhC,EAAqCkB,QAAQ,CAACJ,IAAT,GAAgB,MAAMI,QAAQ,CAACJ,IAA/B;IACtC,CAFD,MAEO;MACLI,QAAQ,CAACJ,IAAT,GAAgB,EAAhB;IACD;;IAED,IAAIM,KAAK,KAAKG,SAAV,IAAuBL,QAAQ,CAACE,KAAT,KAAmBG,SAA9C,EAAyDL,QAAQ,CAACE,KAAT,GAAiBA,KAAjB;EAC1D;;EAED,IAAI;IACFF,QAAQ,CAACN,QAAT,GAAoBY,SAAS,CAACN,QAAQ,CAACN,QAAV,CAA7B;EACD,CAFD,CAEE,OAAOa,CAAP,EAAU;IACV,IAAIA,CAAC,YAAYC,QAAjB,EAA2B;MACzB,MAAM,IAAIA,QAAJ,CAAa,eAAeR,QAAQ,CAACN,QAAxB,GAAmC,0BAAnC,GAAgE,uDAA7E,CAAN;IACD,CAFD,MAEO;MACL,MAAMa,CAAN;IACD;EACF;;EAED,IAAIJ,GAAJ,EAASH,QAAQ,CAACG,GAAT,GAAeA,GAAf;;EAET,IAAIC,eAAJ,EAAqB;IACnB;IACA,IAAI,CAACJ,QAAQ,CAACN,QAAd,EAAwB;MACtBM,QAAQ,CAACN,QAAT,GAAoBU,eAAe,CAACV,QAApC;IACD,CAFD,MAEO,IAAIM,QAAQ,CAACN,QAAT,CAAkBZ,MAAlB,CAAyB,CAAzB,MAAgC,GAApC,EAAyC;MAC9CkB,QAAQ,CAACN,QAAT,GAAoBlB,eAAe,CAACwB,QAAQ,CAACN,QAAV,EAAoBU,eAAe,CAACV,QAApC,CAAnC;IACD;EACF,CAPD,MAOO;IACL;IACA,IAAI,CAACM,QAAQ,CAACN,QAAd,EAAwB;MACtBM,QAAQ,CAACN,QAAT,GAAoB,GAApB;IACD;EACF;;EAED,OAAOM,QAAP;AACD;;AACD,SAASS,iBAAT,CAA2BC,CAA3B,EAA8BC,CAA9B,EAAiC;EAC/B,OAAOD,CAAC,CAAChB,QAAF,KAAeiB,CAAC,CAACjB,QAAjB,IAA6BgB,CAAC,CAACf,MAAF,KAAagB,CAAC,CAAChB,MAA5C,IAAsDe,CAAC,CAACd,IAAF,KAAWe,CAAC,CAACf,IAAnE,IAA2Ec,CAAC,CAACP,GAAF,KAAUQ,CAAC,CAACR,GAAvF,IAA8F1B,UAAU,CAACiC,CAAC,CAACR,KAAH,EAAUS,CAAC,CAACT,KAAZ,CAA/G;AACD;;AAED,SAASU,uBAAT,GAAmC;EACjC,IAAIC,MAAM,GAAG,IAAb;;EAEA,SAASC,SAAT,CAAmBC,UAAnB,EAA+B;IAC7BC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAACmC,MAAM,IAAI,IAAX,EAAiB,8CAAjB,CAA/C,GAAkH,KAAK,CAAvH;IACAA,MAAM,GAAGE,UAAT;IACA,OAAO,YAAY;MACjB,IAAIF,MAAM,KAAKE,UAAf,EAA2BF,MAAM,GAAG,IAAT;IAC5B,CAFD;EAGD;;EAED,SAASM,mBAAT,CAA6BnB,QAA7B,EAAuCoB,MAAvC,EAA+CC,mBAA/C,EAAoEC,QAApE,EAA8E;IAC5E;IACA;IACA;IACA,IAAIT,MAAM,IAAI,IAAd,EAAoB;MAClB,IAAIU,MAAM,GAAG,OAAOV,MAAP,KAAkB,UAAlB,GAA+BA,MAAM,CAACb,QAAD,EAAWoB,MAAX,CAArC,GAA0DP,MAAvE;;MAEA,IAAI,OAAOU,MAAP,KAAkB,QAAtB,EAAgC;QAC9B,IAAI,OAAOF,mBAAP,KAA+B,UAAnC,EAA+C;UAC7CA,mBAAmB,CAACE,MAAD,EAASD,QAAT,CAAnB;QACD,CAFD,MAEO;UACLN,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAAC,KAAD,EAAQ,iFAAR,CAA/C,GAA4I,KAAK,CAAjJ;UACA4C,QAAQ,CAAC,IAAD,CAAR;QACD;MACF,CAPD,MAOO;QACL;QACAA,QAAQ,CAACC,MAAM,KAAK,KAAZ,CAAR;MACD;IACF,CAdD,MAcO;MACLD,QAAQ,CAAC,IAAD,CAAR;IACD;EACF;;EAED,IAAIE,SAAS,GAAG,EAAhB;;EAEA,SAASC,cAAT,CAAwBC,EAAxB,EAA4B;IAC1B,IAAIC,QAAQ,GAAG,IAAf;;IAEA,SAASC,QAAT,GAAoB;MAClB,IAAID,QAAJ,EAAcD,EAAE,CAACG,KAAH,CAAS,KAAK,CAAd,EAAiBC,SAAjB;IACf;;IAEDN,SAAS,CAACO,IAAV,CAAeH,QAAf;IACA,OAAO,YAAY;MACjBD,QAAQ,GAAG,KAAX;MACAH,SAAS,GAAGA,SAAS,CAACQ,MAAV,CAAiB,UAAUC,IAAV,EAAgB;QAC3C,OAAOA,IAAI,KAAKL,QAAhB;MACD,CAFW,CAAZ;IAGD,CALD;EAMD;;EAED,SAASM,eAAT,GAA2B;IACzB,KAAK,IAAIC,IAAI,GAAGL,SAAS,CAACzC,MAArB,EAA6B+C,IAAI,GAAG,IAAIC,KAAJ,CAAUF,IAAV,CAApC,EAAqDG,IAAI,GAAG,CAAjE,EAAoEA,IAAI,GAAGH,IAA3E,EAAiFG,IAAI,EAArF,EAAyF;MACvFF,IAAI,CAACE,IAAD,CAAJ,GAAaR,SAAS,CAACQ,IAAD,CAAtB;IACD;;IAEDd,SAAS,CAACe,OAAV,CAAkB,UAAUX,QAAV,EAAoB;MACpC,OAAOA,QAAQ,CAACC,KAAT,CAAe,KAAK,CAApB,EAAuBO,IAAvB,CAAP;IACD,CAFD;EAGD;;EAED,OAAO;IACLtB,SAAS,EAAEA,SADN;IAELK,mBAAmB,EAAEA,mBAFhB;IAGLM,cAAc,EAAEA,cAHX;IAILS,eAAe,EAAEA;EAJZ,CAAP;AAMD;;AAED,IAAIM,SAAS,GAAG,CAAC,EAAE,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACC,QAAxC,IAAoDD,MAAM,CAACC,QAAP,CAAgBC,aAAtE,CAAjB;;AACA,SAASC,eAAT,CAAyBC,OAAzB,EAAkCvB,QAAlC,EAA4C;EAC1CA,QAAQ,CAACmB,MAAM,CAACK,OAAP,CAAeD,OAAf,CAAD,CAAR,CAD0C,CACP;AACpC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,SAASE,eAAT,GAA2B;EACzB,IAAIC,EAAE,GAAGP,MAAM,CAACQ,SAAP,CAAiBC,SAA1B;EACA,IAAI,CAACF,EAAE,CAAC5D,OAAH,CAAW,YAAX,MAA6B,CAAC,CAA9B,IAAmC4D,EAAE,CAAC5D,OAAH,CAAW,aAAX,MAA8B,CAAC,CAAnE,KAAyE4D,EAAE,CAAC5D,OAAH,CAAW,eAAX,MAAgC,CAAC,CAA1G,IAA+G4D,EAAE,CAAC5D,OAAH,CAAW,QAAX,MAAyB,CAAC,CAAzI,IAA8I4D,EAAE,CAAC5D,OAAH,CAAW,eAAX,MAAgC,CAAC,CAAnL,EAAsL,OAAO,KAAP;EACtL,OAAOqD,MAAM,CAACU,OAAP,IAAkB,eAAeV,MAAM,CAACU,OAA/C;AACD;AACD;AACA;AACA;AACA;;;AAEA,SAASC,4BAAT,GAAwC;EACtC,OAAOX,MAAM,CAACQ,SAAP,CAAiBC,SAAjB,CAA2B9D,OAA3B,CAAmC,SAAnC,MAAkD,CAAC,CAA1D;AACD;AACD;AACA;AACA;;;AAEA,SAASiE,gCAAT,GAA4C;EAC1C,OAAOZ,MAAM,CAACQ,SAAP,CAAiBC,SAAjB,CAA2B9D,OAA3B,CAAmC,SAAnC,MAAkD,CAAC,CAA1D;AACD;AACD;AACA;AACA;AACA;AACA;;;AAEA,SAASkE,yBAAT,CAAmCC,KAAnC,EAA0C;EACxC,OAAOA,KAAK,CAACrD,KAAN,KAAgBG,SAAhB,IAA6B4C,SAAS,CAACC,SAAV,CAAoB9D,OAApB,CAA4B,OAA5B,MAAyC,CAAC,CAA9E;AACD;;AAED,IAAIoE,aAAa,GAAG,UAApB;AACA,IAAIC,eAAe,GAAG,YAAtB;;AAEA,SAASC,eAAT,GAA2B;EACzB,IAAI;IACF,OAAOjB,MAAM,CAACU,OAAP,CAAejD,KAAf,IAAwB,EAA/B;EACD,CAFD,CAEE,OAAOK,CAAP,EAAU;IACV;IACA;IACA,OAAO,EAAP;EACD;AACF;AACD;AACA;AACA;AACA;;;AAGA,SAASoD,oBAAT,CAA8BC,KAA9B,EAAqC;EACnC,IAAIA,KAAK,KAAK,KAAK,CAAnB,EAAsB;IACpBA,KAAK,GAAG,EAAR;EACD;;EAED,CAACpB,SAAD,GAAaxB,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCvC,SAAS,CAAC,KAAD,EAAQ,6BAAR,CAAjD,GAA0FA,SAAS,CAAC,KAAD,CAAhH,GAA0H,KAAK,CAA/H;EACA,IAAIkF,aAAa,GAAGpB,MAAM,CAACU,OAA3B;EACA,IAAIW,aAAa,GAAGf,eAAe,EAAnC;EACA,IAAIgB,uBAAuB,GAAG,CAACX,4BAA4B,EAA3D;EACA,IAAIY,MAAM,GAAGJ,KAAb;EAAA,IACIK,mBAAmB,GAAGD,MAAM,CAACE,YADjC;EAAA,IAEIA,YAAY,GAAGD,mBAAmB,KAAK,KAAK,CAA7B,GAAiC,KAAjC,GAAyCA,mBAF5D;EAAA,IAGIE,qBAAqB,GAAGH,MAAM,CAAC3C,mBAHnC;EAAA,IAIIA,mBAAmB,GAAG8C,qBAAqB,KAAK,KAAK,CAA/B,GAAmCvB,eAAnC,GAAqDuB,qBAJ/E;EAAA,IAKIC,gBAAgB,GAAGJ,MAAM,CAACK,SAL9B;EAAA,IAMIA,SAAS,GAAGD,gBAAgB,KAAK,KAAK,CAA1B,GAA8B,CAA9B,GAAkCA,gBANlD;EAOA,IAAIE,QAAQ,GAAGV,KAAK,CAACU,QAAN,GAAiB/E,kBAAkB,CAACX,eAAe,CAACgF,KAAK,CAACU,QAAP,CAAhB,CAAnC,GAAuE,EAAtF;;EAEA,SAASC,cAAT,CAAwBC,YAAxB,EAAsC;IACpC,IAAIC,IAAI,GAAGD,YAAY,IAAI,EAA3B;IAAA,IACIrE,GAAG,GAAGsE,IAAI,CAACtE,GADf;IAAA,IAEID,KAAK,GAAGuE,IAAI,CAACvE,KAFjB;;IAIA,IAAIwE,gBAAgB,GAAGjC,MAAM,CAACzC,QAA9B;IAAA,IACIN,QAAQ,GAAGgF,gBAAgB,CAAChF,QADhC;IAAA,IAEIC,MAAM,GAAG+E,gBAAgB,CAAC/E,MAF9B;IAAA,IAGIC,IAAI,GAAG8E,gBAAgB,CAAC9E,IAH5B;IAIA,IAAIf,IAAI,GAAGa,QAAQ,GAAGC,MAAX,GAAoBC,IAA/B;IACAoB,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAAC,CAAC4F,QAAD,IAAarF,WAAW,CAACJ,IAAD,EAAOyF,QAAP,CAAzB,EAA2C,kFAAkF,oCAAlF,GAAyHzF,IAAzH,GAAgI,mBAAhI,GAAsJyF,QAAtJ,GAAiK,IAA5M,CAA/C,GAAmQ,KAAK,CAAxQ;IACA,IAAIA,QAAJ,EAAczF,IAAI,GAAGS,aAAa,CAACT,IAAD,EAAOyF,QAAP,CAApB;IACd,OAAOrE,cAAc,CAACpB,IAAD,EAAOqB,KAAP,EAAcC,GAAd,CAArB;EACD;;EAED,SAASwE,SAAT,GAAqB;IACnB,OAAOC,IAAI,CAACC,MAAL,GAAcC,QAAd,CAAuB,EAAvB,EAA2B9F,MAA3B,CAAkC,CAAlC,EAAqCqF,SAArC,CAAP;EACD;;EAED,IAAIU,iBAAiB,GAAGnE,uBAAuB,EAA/C;;EAEA,SAASoE,QAAT,CAAkBC,SAAlB,EAA6B;IAC3B1G,QAAQ,CAAC4E,OAAD,EAAU8B,SAAV,CAAR;;IAEA9B,OAAO,CAAC9D,MAAR,GAAiBwE,aAAa,CAACxE,MAA/B;IACA0F,iBAAiB,CAAC7C,eAAlB,CAAkCiB,OAAO,CAACnD,QAA1C,EAAoDmD,OAAO,CAAC/B,MAA5D;EACD;;EAED,SAAS8D,cAAT,CAAwB3B,KAAxB,EAA+B;IAC7B;IACA,IAAID,yBAAyB,CAACC,KAAD,CAA7B,EAAsC;IACtC4B,SAAS,CAACZ,cAAc,CAAChB,KAAK,CAACrD,KAAP,CAAf,CAAT;EACD;;EAED,SAASkF,gBAAT,GAA4B;IAC1BD,SAAS,CAACZ,cAAc,CAACb,eAAe,EAAhB,CAAf,CAAT;EACD;;EAED,IAAI2B,YAAY,GAAG,KAAnB;;EAEA,SAASF,SAAT,CAAmBnF,QAAnB,EAA6B;IAC3B,IAAIqF,YAAJ,EAAkB;MAChBA,YAAY,GAAG,KAAf;MACAL,QAAQ;IACT,CAHD,MAGO;MACL,IAAI5D,MAAM,GAAG,KAAb;MACA2D,iBAAiB,CAAC5D,mBAAlB,CAAsCnB,QAAtC,EAAgDoB,MAAhD,EAAwDC,mBAAxD,EAA6E,UAAUiE,EAAV,EAAc;QACzF,IAAIA,EAAJ,EAAQ;UACNN,QAAQ,CAAC;YACP5D,MAAM,EAAEA,MADD;YAEPpB,QAAQ,EAAEA;UAFH,CAAD,CAAR;QAID,CALD,MAKO;UACLuF,SAAS,CAACvF,QAAD,CAAT;QACD;MACF,CATD;IAUD;EACF;;EAED,SAASuF,SAAT,CAAmBC,YAAnB,EAAiC;IAC/B,IAAIC,UAAU,GAAGtC,OAAO,CAACnD,QAAzB,CAD+B,CACI;IACnC;IACA;;IAEA,IAAI0F,OAAO,GAAGC,OAAO,CAACvG,OAAR,CAAgBqG,UAAU,CAACtF,GAA3B,CAAd;IACA,IAAIuF,OAAO,KAAK,CAAC,CAAjB,EAAoBA,OAAO,GAAG,CAAV;IACpB,IAAIE,SAAS,GAAGD,OAAO,CAACvG,OAAR,CAAgBoG,YAAY,CAACrF,GAA7B,CAAhB;IACA,IAAIyF,SAAS,KAAK,CAAC,CAAnB,EAAsBA,SAAS,GAAG,CAAZ;IACtB,IAAIC,KAAK,GAAGH,OAAO,GAAGE,SAAtB;;IAEA,IAAIC,KAAJ,EAAW;MACTR,YAAY,GAAG,IAAf;MACAS,EAAE,CAACD,KAAD,CAAF;IACD;EACF;;EAED,IAAIE,eAAe,GAAGxB,cAAc,CAACb,eAAe,EAAhB,CAApC;EACA,IAAIiC,OAAO,GAAG,CAACI,eAAe,CAAC5F,GAAjB,CAAd,CA/FmC,CA+FE;;EAErC,SAAS6F,UAAT,CAAoBhG,QAApB,EAA8B;IAC5B,OAAOsE,QAAQ,GAAGvE,UAAU,CAACC,QAAD,CAA5B;EACD;;EAED,SAAS+B,IAAT,CAAclD,IAAd,EAAoBqB,KAApB,EAA2B;IACzBc,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAAC,EAAE,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAACqB,KAAL,KAAeG,SAA3C,IAAwDH,KAAK,KAAKG,SAApE,CAAD,EAAiF,0EAA0E,0EAA3J,CAA/C,GAAwR,KAAK,CAA7R;IACA,IAAIe,MAAM,GAAG,MAAb;IACA,IAAIpB,QAAQ,GAAGC,cAAc,CAACpB,IAAD,EAAOqB,KAAP,EAAcyE,SAAS,EAAvB,EAA2BxB,OAAO,CAACnD,QAAnC,CAA7B;IACA+E,iBAAiB,CAAC5D,mBAAlB,CAAsCnB,QAAtC,EAAgDoB,MAAhD,EAAwDC,mBAAxD,EAA6E,UAAUiE,EAAV,EAAc;MACzF,IAAI,CAACA,EAAL,EAAS;MACT,IAAIW,IAAI,GAAGD,UAAU,CAAChG,QAAD,CAArB;MACA,IAAIG,GAAG,GAAGH,QAAQ,CAACG,GAAnB;MAAA,IACID,KAAK,GAAGF,QAAQ,CAACE,KADrB;;MAGA,IAAI4D,aAAJ,EAAmB;QACjBD,aAAa,CAACqC,SAAd,CAAwB;UACtB/F,GAAG,EAAEA,GADiB;UAEtBD,KAAK,EAAEA;QAFe,CAAxB,EAGG,IAHH,EAGS+F,IAHT;;QAKA,IAAI/B,YAAJ,EAAkB;UAChBzB,MAAM,CAACzC,QAAP,CAAgBiG,IAAhB,GAAuBA,IAAvB;QACD,CAFD,MAEO;UACL,IAAIE,SAAS,GAAGR,OAAO,CAACvG,OAAR,CAAgB+D,OAAO,CAACnD,QAAR,CAAiBG,GAAjC,CAAhB;UACA,IAAIiG,QAAQ,GAAGT,OAAO,CAACnG,KAAR,CAAc,CAAd,EAAiB2G,SAAS,GAAG,CAA7B,CAAf;UACAC,QAAQ,CAACrE,IAAT,CAAc/B,QAAQ,CAACG,GAAvB;UACAwF,OAAO,GAAGS,QAAV;UACApB,QAAQ,CAAC;YACP5D,MAAM,EAAEA,MADD;YAEPpB,QAAQ,EAAEA;UAFH,CAAD,CAAR;QAID;MACF,CAlBD,MAkBO;QACLgB,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAACwB,KAAK,KAAKG,SAAX,EAAsB,iFAAtB,CAA/C,GAA0J,KAAK,CAA/J;QACAoC,MAAM,CAACzC,QAAP,CAAgBiG,IAAhB,GAAuBA,IAAvB;MACD;IACF,CA5BD;EA6BD;;EAED,SAASI,OAAT,CAAiBxH,IAAjB,EAAuBqB,KAAvB,EAA8B;IAC5Bc,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAAC,EAAE,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAACqB,KAAL,KAAeG,SAA3C,IAAwDH,KAAK,KAAKG,SAApE,CAAD,EAAiF,6EAA6E,0EAA9J,CAA/C,GAA2R,KAAK,CAAhS;IACA,IAAIe,MAAM,GAAG,SAAb;IACA,IAAIpB,QAAQ,GAAGC,cAAc,CAACpB,IAAD,EAAOqB,KAAP,EAAcyE,SAAS,EAAvB,EAA2BxB,OAAO,CAACnD,QAAnC,CAA7B;IACA+E,iBAAiB,CAAC5D,mBAAlB,CAAsCnB,QAAtC,EAAgDoB,MAAhD,EAAwDC,mBAAxD,EAA6E,UAAUiE,EAAV,EAAc;MACzF,IAAI,CAACA,EAAL,EAAS;MACT,IAAIW,IAAI,GAAGD,UAAU,CAAChG,QAAD,CAArB;MACA,IAAIG,GAAG,GAAGH,QAAQ,CAACG,GAAnB;MAAA,IACID,KAAK,GAAGF,QAAQ,CAACE,KADrB;;MAGA,IAAI4D,aAAJ,EAAmB;QACjBD,aAAa,CAACyC,YAAd,CAA2B;UACzBnG,GAAG,EAAEA,GADoB;UAEzBD,KAAK,EAAEA;QAFkB,CAA3B,EAGG,IAHH,EAGS+F,IAHT;;QAKA,IAAI/B,YAAJ,EAAkB;UAChBzB,MAAM,CAACzC,QAAP,CAAgBqG,OAAhB,CAAwBJ,IAAxB;QACD,CAFD,MAEO;UACL,IAAIE,SAAS,GAAGR,OAAO,CAACvG,OAAR,CAAgB+D,OAAO,CAACnD,QAAR,CAAiBG,GAAjC,CAAhB;UACA,IAAIgG,SAAS,KAAK,CAAC,CAAnB,EAAsBR,OAAO,CAACQ,SAAD,CAAP,GAAqBnG,QAAQ,CAACG,GAA9B;UACtB6E,QAAQ,CAAC;YACP5D,MAAM,EAAEA,MADD;YAEPpB,QAAQ,EAAEA;UAFH,CAAD,CAAR;QAID;MACF,CAhBD,MAgBO;QACLgB,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAACwB,KAAK,KAAKG,SAAX,EAAsB,oFAAtB,CAA/C,GAA6J,KAAK,CAAlK;QACAoC,MAAM,CAACzC,QAAP,CAAgBqG,OAAhB,CAAwBJ,IAAxB;MACD;IACF,CA1BD;EA2BD;;EAED,SAASH,EAAT,CAAYS,CAAZ,EAAe;IACb1C,aAAa,CAACiC,EAAd,CAAiBS,CAAjB;EACD;;EAED,SAASC,MAAT,GAAkB;IAChBV,EAAE,CAAC,CAAC,CAAF,CAAF;EACD;;EAED,SAASW,SAAT,GAAqB;IACnBX,EAAE,CAAC,CAAD,CAAF;EACD;;EAED,IAAIY,aAAa,GAAG,CAApB;;EAEA,SAASC,iBAAT,CAA2Bd,KAA3B,EAAkC;IAChCa,aAAa,IAAIb,KAAjB;;IAEA,IAAIa,aAAa,KAAK,CAAlB,IAAuBb,KAAK,KAAK,CAArC,EAAwC;MACtCpD,MAAM,CAACmE,gBAAP,CAAwBpD,aAAxB,EAAuC0B,cAAvC;MACA,IAAInB,uBAAJ,EAA6BtB,MAAM,CAACmE,gBAAP,CAAwBnD,eAAxB,EAAyC2B,gBAAzC;IAC9B,CAHD,MAGO,IAAIsB,aAAa,KAAK,CAAtB,EAAyB;MAC9BjE,MAAM,CAACoE,mBAAP,CAA2BrD,aAA3B,EAA0C0B,cAA1C;MACA,IAAInB,uBAAJ,EAA6BtB,MAAM,CAACoE,mBAAP,CAA2BpD,eAA3B,EAA4C2B,gBAA5C;IAC9B;EACF;;EAED,IAAI0B,SAAS,GAAG,KAAhB;;EAEA,SAASC,KAAT,CAAelG,MAAf,EAAuB;IACrB,IAAIA,MAAM,KAAK,KAAK,CAApB,EAAuB;MACrBA,MAAM,GAAG,KAAT;IACD;;IAED,IAAImG,OAAO,GAAGjC,iBAAiB,CAACjE,SAAlB,CAA4BD,MAA5B,CAAd;;IAEA,IAAI,CAACiG,SAAL,EAAgB;MACdH,iBAAiB,CAAC,CAAD,CAAjB;MACAG,SAAS,GAAG,IAAZ;IACD;;IAED,OAAO,YAAY;MACjB,IAAIA,SAAJ,EAAe;QACbA,SAAS,GAAG,KAAZ;QACAH,iBAAiB,CAAC,CAAC,CAAF,CAAjB;MACD;;MAED,OAAOK,OAAO,EAAd;IACD,CAPD;EAQD;;EAED,SAASC,MAAT,CAAgBrF,QAAhB,EAA0B;IACxB,IAAIsF,QAAQ,GAAGnC,iBAAiB,CAACtD,cAAlB,CAAiCG,QAAjC,CAAf;IACA+E,iBAAiB,CAAC,CAAD,CAAjB;IACA,OAAO,YAAY;MACjBA,iBAAiB,CAAC,CAAC,CAAF,CAAjB;MACAO,QAAQ;IACT,CAHD;EAID;;EAED,IAAI/D,OAAO,GAAG;IACZ9D,MAAM,EAAEwE,aAAa,CAACxE,MADV;IAEZ+B,MAAM,EAAE,KAFI;IAGZpB,QAAQ,EAAE+F,eAHE;IAIZC,UAAU,EAAEA,UAJA;IAKZjE,IAAI,EAAEA,IALM;IAMZsE,OAAO,EAAEA,OANG;IAOZP,EAAE,EAAEA,EAPQ;IAQZU,MAAM,EAAEA,MARI;IASZC,SAAS,EAAEA,SATC;IAUZM,KAAK,EAAEA,KAVK;IAWZE,MAAM,EAAEA;EAXI,CAAd;EAaA,OAAO9D,OAAP;AACD;;AAED,IAAIgE,iBAAiB,GAAG,YAAxB;AACA,IAAIC,cAAc,GAAG;EACnBC,QAAQ,EAAE;IACRC,UAAU,EAAE,SAASA,UAAT,CAAoBzI,IAApB,EAA0B;MACpC,OAAOA,IAAI,CAACC,MAAL,CAAY,CAAZ,MAAmB,GAAnB,GAAyBD,IAAzB,GAAgC,OAAOE,iBAAiB,CAACF,IAAD,CAA/D;IACD,CAHO;IAIR0I,UAAU,EAAE,SAASA,UAAT,CAAoB1I,IAApB,EAA0B;MACpC,OAAOA,IAAI,CAACC,MAAL,CAAY,CAAZ,MAAmB,GAAnB,GAAyBD,IAAI,CAACG,MAAL,CAAY,CAAZ,CAAzB,GAA0CH,IAAjD;IACD;EANO,CADS;EASnB2I,OAAO,EAAE;IACPF,UAAU,EAAEvI,iBADL;IAEPwI,UAAU,EAAE3I;EAFL,CATU;EAanB6I,KAAK,EAAE;IACLH,UAAU,EAAE1I,eADP;IAEL2I,UAAU,EAAE3I;EAFP;AAbY,CAArB;;AAmBA,SAAS8I,SAAT,CAAmBC,GAAnB,EAAwB;EACtB,IAAI9H,SAAS,GAAG8H,GAAG,CAACvI,OAAJ,CAAY,GAAZ,CAAhB;EACA,OAAOS,SAAS,KAAK,CAAC,CAAf,GAAmB8H,GAAnB,GAAyBA,GAAG,CAACnI,KAAJ,CAAU,CAAV,EAAaK,SAAb,CAAhC;AACD;;AAED,SAAS+H,WAAT,GAAuB;EACrB;EACA;EACA,IAAI3B,IAAI,GAAGxD,MAAM,CAACzC,QAAP,CAAgBiG,IAA3B;EACA,IAAIpG,SAAS,GAAGoG,IAAI,CAAC7G,OAAL,CAAa,GAAb,CAAhB;EACA,OAAOS,SAAS,KAAK,CAAC,CAAf,GAAmB,EAAnB,GAAwBoG,IAAI,CAAC4B,SAAL,CAAehI,SAAS,GAAG,CAA3B,CAA/B;AACD;;AAED,SAASiI,YAAT,CAAsBjJ,IAAtB,EAA4B;EAC1B4D,MAAM,CAACzC,QAAP,CAAgBJ,IAAhB,GAAuBf,IAAvB;AACD;;AAED,SAASkJ,eAAT,CAAyBlJ,IAAzB,EAA+B;EAC7B4D,MAAM,CAACzC,QAAP,CAAgBqG,OAAhB,CAAwBqB,SAAS,CAACjF,MAAM,CAACzC,QAAP,CAAgBiG,IAAjB,CAAT,GAAkC,GAAlC,GAAwCpH,IAAhE;AACD;;AAED,SAASmJ,iBAAT,CAA2BpE,KAA3B,EAAkC;EAChC,IAAIA,KAAK,KAAK,KAAK,CAAnB,EAAsB;IACpBA,KAAK,GAAG,EAAR;EACD;;EAED,CAACpB,SAAD,GAAaxB,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCvC,SAAS,CAAC,KAAD,EAAQ,0BAAR,CAAjD,GAAuFA,SAAS,CAAC,KAAD,CAA7G,GAAuH,KAAK,CAA5H;EACA,IAAIkF,aAAa,GAAGpB,MAAM,CAACU,OAA3B;EACA,IAAI8E,kBAAkB,GAAG5E,gCAAgC,EAAzD;EACA,IAAIW,MAAM,GAAGJ,KAAb;EAAA,IACIO,qBAAqB,GAAGH,MAAM,CAAC3C,mBADnC;EAAA,IAEIA,mBAAmB,GAAG8C,qBAAqB,KAAK,KAAK,CAA/B,GAAmCvB,eAAnC,GAAqDuB,qBAF/E;EAAA,IAGI+D,eAAe,GAAGlE,MAAM,CAACmE,QAH7B;EAAA,IAIIA,QAAQ,GAAGD,eAAe,KAAK,KAAK,CAAzB,GAA6B,OAA7B,GAAuCA,eAJtD;EAKA,IAAI5D,QAAQ,GAAGV,KAAK,CAACU,QAAN,GAAiB/E,kBAAkB,CAACX,eAAe,CAACgF,KAAK,CAACU,QAAP,CAAhB,CAAnC,GAAuE,EAAtF;EACA,IAAI8D,qBAAqB,GAAGhB,cAAc,CAACe,QAAD,CAA1C;EAAA,IACIb,UAAU,GAAGc,qBAAqB,CAACd,UADvC;EAAA,IAEIC,UAAU,GAAGa,qBAAqB,CAACb,UAFvC;;EAIA,SAAShD,cAAT,GAA0B;IACxB,IAAI1F,IAAI,GAAG0I,UAAU,CAACK,WAAW,EAAZ,CAArB;IACA5G,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAAC,CAAC4F,QAAD,IAAarF,WAAW,CAACJ,IAAD,EAAOyF,QAAP,CAAzB,EAA2C,kFAAkF,oCAAlF,GAAyHzF,IAAzH,GAAgI,mBAAhI,GAAsJyF,QAAtJ,GAAiK,IAA5M,CAA/C,GAAmQ,KAAK,CAAxQ;IACA,IAAIA,QAAJ,EAAczF,IAAI,GAAGS,aAAa,CAACT,IAAD,EAAOyF,QAAP,CAApB;IACd,OAAOrE,cAAc,CAACpB,IAAD,CAArB;EACD;;EAED,IAAIkG,iBAAiB,GAAGnE,uBAAuB,EAA/C;;EAEA,SAASoE,QAAT,CAAkBC,SAAlB,EAA6B;IAC3B1G,QAAQ,CAAC4E,OAAD,EAAU8B,SAAV,CAAR;;IAEA9B,OAAO,CAAC9D,MAAR,GAAiBwE,aAAa,CAACxE,MAA/B;IACA0F,iBAAiB,CAAC7C,eAAlB,CAAkCiB,OAAO,CAACnD,QAA1C,EAAoDmD,OAAO,CAAC/B,MAA5D;EACD;;EAED,IAAIiE,YAAY,GAAG,KAAnB;EACA,IAAIgD,UAAU,GAAG,IAAjB;;EAEA,SAASC,oBAAT,CAA8B5H,CAA9B,EAAiCC,CAAjC,EAAoC;IAClC,OAAOD,CAAC,CAAChB,QAAF,KAAeiB,CAAC,CAACjB,QAAjB,IAA6BgB,CAAC,CAACf,MAAF,KAAagB,CAAC,CAAChB,MAA5C,IAAsDe,CAAC,CAACd,IAAF,KAAWe,CAAC,CAACf,IAA1E;EACD;;EAED,SAASwF,gBAAT,GAA4B;IAC1B,IAAIvG,IAAI,GAAG+I,WAAW,EAAtB;IACA,IAAIW,WAAW,GAAGjB,UAAU,CAACzI,IAAD,CAA5B;;IAEA,IAAIA,IAAI,KAAK0J,WAAb,EAA0B;MACxB;MACAR,eAAe,CAACQ,WAAD,CAAf;IACD,CAHD,MAGO;MACL,IAAIvI,QAAQ,GAAGuE,cAAc,EAA7B;MACA,IAAIiE,YAAY,GAAGrF,OAAO,CAACnD,QAA3B;MACA,IAAI,CAACqF,YAAD,IAAiBiD,oBAAoB,CAACE,YAAD,EAAexI,QAAf,CAAzC,EAAmE,OAH9D,CAGsE;;MAE3E,IAAIqI,UAAU,KAAKtI,UAAU,CAACC,QAAD,CAA7B,EAAyC,OALpC,CAK4C;;MAEjDqI,UAAU,GAAG,IAAb;MACAlD,SAAS,CAACnF,QAAD,CAAT;IACD;EACF;;EAED,SAASmF,SAAT,CAAmBnF,QAAnB,EAA6B;IAC3B,IAAIqF,YAAJ,EAAkB;MAChBA,YAAY,GAAG,KAAf;MACAL,QAAQ;IACT,CAHD,MAGO;MACL,IAAI5D,MAAM,GAAG,KAAb;MACA2D,iBAAiB,CAAC5D,mBAAlB,CAAsCnB,QAAtC,EAAgDoB,MAAhD,EAAwDC,mBAAxD,EAA6E,UAAUiE,EAAV,EAAc;QACzF,IAAIA,EAAJ,EAAQ;UACNN,QAAQ,CAAC;YACP5D,MAAM,EAAEA,MADD;YAEPpB,QAAQ,EAAEA;UAFH,CAAD,CAAR;QAID,CALD,MAKO;UACLuF,SAAS,CAACvF,QAAD,CAAT;QACD;MACF,CATD;IAUD;EACF;;EAED,SAASuF,SAAT,CAAmBC,YAAnB,EAAiC;IAC/B,IAAIC,UAAU,GAAGtC,OAAO,CAACnD,QAAzB,CAD+B,CACI;IACnC;IACA;;IAEA,IAAI0F,OAAO,GAAG+C,QAAQ,CAACC,WAAT,CAAqB3I,UAAU,CAAC0F,UAAD,CAA/B,CAAd;IACA,IAAIC,OAAO,KAAK,CAAC,CAAjB,EAAoBA,OAAO,GAAG,CAAV;IACpB,IAAIE,SAAS,GAAG6C,QAAQ,CAACC,WAAT,CAAqB3I,UAAU,CAACyF,YAAD,CAA/B,CAAhB;IACA,IAAII,SAAS,KAAK,CAAC,CAAnB,EAAsBA,SAAS,GAAG,CAAZ;IACtB,IAAIC,KAAK,GAAGH,OAAO,GAAGE,SAAtB;;IAEA,IAAIC,KAAJ,EAAW;MACTR,YAAY,GAAG,IAAf;MACAS,EAAE,CAACD,KAAD,CAAF;IACD;EACF,CA9F+B,CA8F9B;;;EAGF,IAAIhH,IAAI,GAAG+I,WAAW,EAAtB;EACA,IAAIW,WAAW,GAAGjB,UAAU,CAACzI,IAAD,CAA5B;EACA,IAAIA,IAAI,KAAK0J,WAAb,EAA0BR,eAAe,CAACQ,WAAD,CAAf;EAC1B,IAAIxC,eAAe,GAAGxB,cAAc,EAApC;EACA,IAAIkE,QAAQ,GAAG,CAAC1I,UAAU,CAACgG,eAAD,CAAX,CAAf,CArGgC,CAqGc;;EAE9C,SAASC,UAAT,CAAoBhG,QAApB,EAA8B;IAC5B,IAAI2I,OAAO,GAAGjG,QAAQ,CAACkG,aAAT,CAAuB,MAAvB,CAAd;IACA,IAAI3C,IAAI,GAAG,EAAX;;IAEA,IAAI0C,OAAO,IAAIA,OAAO,CAACE,YAAR,CAAqB,MAArB,CAAf,EAA6C;MAC3C5C,IAAI,GAAGyB,SAAS,CAACjF,MAAM,CAACzC,QAAP,CAAgBiG,IAAjB,CAAhB;IACD;;IAED,OAAOA,IAAI,GAAG,GAAP,GAAaqB,UAAU,CAAChD,QAAQ,GAAGvE,UAAU,CAACC,QAAD,CAAtB,CAA9B;EACD;;EAED,SAAS+B,IAAT,CAAclD,IAAd,EAAoBqB,KAApB,EAA2B;IACzBc,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAACwB,KAAK,KAAKG,SAAX,EAAsB,+CAAtB,CAA/C,GAAwH,KAAK,CAA7H;IACA,IAAIe,MAAM,GAAG,MAAb;IACA,IAAIpB,QAAQ,GAAGC,cAAc,CAACpB,IAAD,EAAOwB,SAAP,EAAkBA,SAAlB,EAA6B8C,OAAO,CAACnD,QAArC,CAA7B;IACA+E,iBAAiB,CAAC5D,mBAAlB,CAAsCnB,QAAtC,EAAgDoB,MAAhD,EAAwDC,mBAAxD,EAA6E,UAAUiE,EAAV,EAAc;MACzF,IAAI,CAACA,EAAL,EAAS;MACT,IAAIzG,IAAI,GAAGkB,UAAU,CAACC,QAAD,CAArB;MACA,IAAIuI,WAAW,GAAGjB,UAAU,CAAChD,QAAQ,GAAGzF,IAAZ,CAA5B;MACA,IAAIiK,WAAW,GAAGlB,WAAW,OAAOW,WAApC;;MAEA,IAAIO,WAAJ,EAAiB;QACf;QACA;QACA;QACAT,UAAU,GAAGxJ,IAAb;QACAiJ,YAAY,CAACS,WAAD,CAAZ;QACA,IAAIpC,SAAS,GAAGsC,QAAQ,CAACC,WAAT,CAAqB3I,UAAU,CAACoD,OAAO,CAACnD,QAAT,CAA/B,CAAhB;QACA,IAAI+I,SAAS,GAAGN,QAAQ,CAACjJ,KAAT,CAAe,CAAf,EAAkB2G,SAAS,GAAG,CAA9B,CAAhB;QACA4C,SAAS,CAAChH,IAAV,CAAelD,IAAf;QACA4J,QAAQ,GAAGM,SAAX;QACA/D,QAAQ,CAAC;UACP5D,MAAM,EAAEA,MADD;UAEPpB,QAAQ,EAAEA;QAFH,CAAD,CAAR;MAID,CAdD,MAcO;QACLgB,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAAC,KAAD,EAAQ,4FAAR,CAA/C,GAAuJ,KAAK,CAA5J;QACAsG,QAAQ;MACT;IACF,CAxBD;EAyBD;;EAED,SAASqB,OAAT,CAAiBxH,IAAjB,EAAuBqB,KAAvB,EAA8B;IAC5Bc,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAACwB,KAAK,KAAKG,SAAX,EAAsB,kDAAtB,CAA/C,GAA2H,KAAK,CAAhI;IACA,IAAIe,MAAM,GAAG,SAAb;IACA,IAAIpB,QAAQ,GAAGC,cAAc,CAACpB,IAAD,EAAOwB,SAAP,EAAkBA,SAAlB,EAA6B8C,OAAO,CAACnD,QAArC,CAA7B;IACA+E,iBAAiB,CAAC5D,mBAAlB,CAAsCnB,QAAtC,EAAgDoB,MAAhD,EAAwDC,mBAAxD,EAA6E,UAAUiE,EAAV,EAAc;MACzF,IAAI,CAACA,EAAL,EAAS;MACT,IAAIzG,IAAI,GAAGkB,UAAU,CAACC,QAAD,CAArB;MACA,IAAIuI,WAAW,GAAGjB,UAAU,CAAChD,QAAQ,GAAGzF,IAAZ,CAA5B;MACA,IAAIiK,WAAW,GAAGlB,WAAW,OAAOW,WAApC;;MAEA,IAAIO,WAAJ,EAAiB;QACf;QACA;QACA;QACAT,UAAU,GAAGxJ,IAAb;QACAkJ,eAAe,CAACQ,WAAD,CAAf;MACD;;MAED,IAAIpC,SAAS,GAAGsC,QAAQ,CAACrJ,OAAT,CAAiBW,UAAU,CAACoD,OAAO,CAACnD,QAAT,CAA3B,CAAhB;MACA,IAAImG,SAAS,KAAK,CAAC,CAAnB,EAAsBsC,QAAQ,CAACtC,SAAD,CAAR,GAAsBtH,IAAtB;MACtBmG,QAAQ,CAAC;QACP5D,MAAM,EAAEA,MADD;QAEPpB,QAAQ,EAAEA;MAFH,CAAD,CAAR;IAID,CApBD;EAqBD;;EAED,SAAS8F,EAAT,CAAYS,CAAZ,EAAe;IACbvF,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAACuJ,kBAAD,EAAqB,8DAArB,CAA/C,GAAsI,KAAK,CAA3I;IACApE,aAAa,CAACiC,EAAd,CAAiBS,CAAjB;EACD;;EAED,SAASC,MAAT,GAAkB;IAChBV,EAAE,CAAC,CAAC,CAAF,CAAF;EACD;;EAED,SAASW,SAAT,GAAqB;IACnBX,EAAE,CAAC,CAAD,CAAF;EACD;;EAED,IAAIY,aAAa,GAAG,CAApB;;EAEA,SAASC,iBAAT,CAA2Bd,KAA3B,EAAkC;IAChCa,aAAa,IAAIb,KAAjB;;IAEA,IAAIa,aAAa,KAAK,CAAlB,IAAuBb,KAAK,KAAK,CAArC,EAAwC;MACtCpD,MAAM,CAACmE,gBAAP,CAAwBO,iBAAxB,EAA2C/B,gBAA3C;IACD,CAFD,MAEO,IAAIsB,aAAa,KAAK,CAAtB,EAAyB;MAC9BjE,MAAM,CAACoE,mBAAP,CAA2BM,iBAA3B,EAA8C/B,gBAA9C;IACD;EACF;;EAED,IAAI0B,SAAS,GAAG,KAAhB;;EAEA,SAASC,KAAT,CAAelG,MAAf,EAAuB;IACrB,IAAIA,MAAM,KAAK,KAAK,CAApB,EAAuB;MACrBA,MAAM,GAAG,KAAT;IACD;;IAED,IAAImG,OAAO,GAAGjC,iBAAiB,CAACjE,SAAlB,CAA4BD,MAA5B,CAAd;;IAEA,IAAI,CAACiG,SAAL,EAAgB;MACdH,iBAAiB,CAAC,CAAD,CAAjB;MACAG,SAAS,GAAG,IAAZ;IACD;;IAED,OAAO,YAAY;MACjB,IAAIA,SAAJ,EAAe;QACbA,SAAS,GAAG,KAAZ;QACAH,iBAAiB,CAAC,CAAC,CAAF,CAAjB;MACD;;MAED,OAAOK,OAAO,EAAd;IACD,CAPD;EAQD;;EAED,SAASC,MAAT,CAAgBrF,QAAhB,EAA0B;IACxB,IAAIsF,QAAQ,GAAGnC,iBAAiB,CAACtD,cAAlB,CAAiCG,QAAjC,CAAf;IACA+E,iBAAiB,CAAC,CAAD,CAAjB;IACA,OAAO,YAAY;MACjBA,iBAAiB,CAAC,CAAC,CAAF,CAAjB;MACAO,QAAQ;IACT,CAHD;EAID;;EAED,IAAI/D,OAAO,GAAG;IACZ9D,MAAM,EAAEwE,aAAa,CAACxE,MADV;IAEZ+B,MAAM,EAAE,KAFI;IAGZpB,QAAQ,EAAE+F,eAHE;IAIZC,UAAU,EAAEA,UAJA;IAKZjE,IAAI,EAAEA,IALM;IAMZsE,OAAO,EAAEA,OANG;IAOZP,EAAE,EAAEA,EAPQ;IAQZU,MAAM,EAAEA,MARI;IASZC,SAAS,EAAEA,SATC;IAUZM,KAAK,EAAEA,KAVK;IAWZE,MAAM,EAAEA;EAXI,CAAd;EAaA,OAAO9D,OAAP;AACD;;AAED,SAAS6F,KAAT,CAAezC,CAAf,EAAkB0C,UAAlB,EAA8BC,UAA9B,EAA0C;EACxC,OAAOtE,IAAI,CAACuE,GAAL,CAASvE,IAAI,CAACwE,GAAL,CAAS7C,CAAT,EAAY0C,UAAZ,CAAT,EAAkCC,UAAlC,CAAP;AACD;AACD;AACA;AACA;;;AAGA,SAASG,mBAAT,CAA6BzF,KAA7B,EAAoC;EAClC,IAAIA,KAAK,KAAK,KAAK,CAAnB,EAAsB;IACpBA,KAAK,GAAG,EAAR;EACD;;EAED,IAAII,MAAM,GAAGJ,KAAb;EAAA,IACIvC,mBAAmB,GAAG2C,MAAM,CAAC3C,mBADjC;EAAA,IAEIiI,qBAAqB,GAAGtF,MAAM,CAACuF,cAFnC;EAAA,IAGIA,cAAc,GAAGD,qBAAqB,KAAK,KAAK,CAA/B,GAAmC,CAAC,GAAD,CAAnC,GAA2CA,qBAHhE;EAAA,IAIIE,mBAAmB,GAAGxF,MAAM,CAACyF,YAJjC;EAAA,IAKIA,YAAY,GAAGD,mBAAmB,KAAK,KAAK,CAA7B,GAAiC,CAAjC,GAAqCA,mBALxD;EAAA,IAMIpF,gBAAgB,GAAGJ,MAAM,CAACK,SAN9B;EAAA,IAOIA,SAAS,GAAGD,gBAAgB,KAAK,KAAK,CAA1B,GAA8B,CAA9B,GAAkCA,gBAPlD;EAQA,IAAIW,iBAAiB,GAAGnE,uBAAuB,EAA/C;;EAEA,SAASoE,QAAT,CAAkBC,SAAlB,EAA6B;IAC3B1G,QAAQ,CAAC4E,OAAD,EAAU8B,SAAV,CAAR;;IAEA9B,OAAO,CAAC9D,MAAR,GAAiB8D,OAAO,CAACuG,OAAR,CAAgBrK,MAAjC;IACA0F,iBAAiB,CAAC7C,eAAlB,CAAkCiB,OAAO,CAACnD,QAA1C,EAAoDmD,OAAO,CAAC/B,MAA5D;EACD;;EAED,SAASuD,SAAT,GAAqB;IACnB,OAAOC,IAAI,CAACC,MAAL,GAAcC,QAAd,CAAuB,EAAvB,EAA2B9F,MAA3B,CAAkC,CAAlC,EAAqCqF,SAArC,CAAP;EACD;;EAED,IAAIsF,KAAK,GAAGX,KAAK,CAACS,YAAD,EAAe,CAAf,EAAkBF,cAAc,CAAClK,MAAf,GAAwB,CAA1C,CAAjB;EACA,IAAIqK,OAAO,GAAGH,cAAc,CAACK,GAAf,CAAmB,UAAUC,KAAV,EAAiB;IAChD,OAAO,OAAOA,KAAP,KAAiB,QAAjB,GAA4B5J,cAAc,CAAC4J,KAAD,EAAQxJ,SAAR,EAAmBsE,SAAS,EAA5B,CAA1C,GAA4E1E,cAAc,CAAC4J,KAAD,EAAQxJ,SAAR,EAAmBwJ,KAAK,CAAC1J,GAAN,IAAawE,SAAS,EAAzC,CAAjG;EACD,CAFa,CAAd,CA3BkC,CA6B9B;;EAEJ,IAAIqB,UAAU,GAAGjG,UAAjB;;EAEA,SAASgC,IAAT,CAAclD,IAAd,EAAoBqB,KAApB,EAA2B;IACzBc,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAAC,EAAE,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAACqB,KAAL,KAAeG,SAA3C,IAAwDH,KAAK,KAAKG,SAApE,CAAD,EAAiF,0EAA0E,0EAA3J,CAA/C,GAAwR,KAAK,CAA7R;IACA,IAAIe,MAAM,GAAG,MAAb;IACA,IAAIpB,QAAQ,GAAGC,cAAc,CAACpB,IAAD,EAAOqB,KAAP,EAAcyE,SAAS,EAAvB,EAA2BxB,OAAO,CAACnD,QAAnC,CAA7B;IACA+E,iBAAiB,CAAC5D,mBAAlB,CAAsCnB,QAAtC,EAAgDoB,MAAhD,EAAwDC,mBAAxD,EAA6E,UAAUiE,EAAV,EAAc;MACzF,IAAI,CAACA,EAAL,EAAS;MACT,IAAIa,SAAS,GAAGhD,OAAO,CAACwG,KAAxB;MACA,IAAIG,SAAS,GAAG3D,SAAS,GAAG,CAA5B;MACA,IAAI4D,WAAW,GAAG5G,OAAO,CAACuG,OAAR,CAAgBlK,KAAhB,CAAsB,CAAtB,CAAlB;;MAEA,IAAIuK,WAAW,CAAC1K,MAAZ,GAAqByK,SAAzB,EAAoC;QAClCC,WAAW,CAACC,MAAZ,CAAmBF,SAAnB,EAA8BC,WAAW,CAAC1K,MAAZ,GAAqByK,SAAnD,EAA8D9J,QAA9D;MACD,CAFD,MAEO;QACL+J,WAAW,CAAChI,IAAZ,CAAiB/B,QAAjB;MACD;;MAEDgF,QAAQ,CAAC;QACP5D,MAAM,EAAEA,MADD;QAEPpB,QAAQ,EAAEA,QAFH;QAGP2J,KAAK,EAAEG,SAHA;QAIPJ,OAAO,EAAEK;MAJF,CAAD,CAAR;IAMD,CAlBD;EAmBD;;EAED,SAAS1D,OAAT,CAAiBxH,IAAjB,EAAuBqB,KAAvB,EAA8B;IAC5Bc,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwCxC,OAAO,CAAC,EAAE,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAACqB,KAAL,KAAeG,SAA3C,IAAwDH,KAAK,KAAKG,SAApE,CAAD,EAAiF,6EAA6E,0EAA9J,CAA/C,GAA2R,KAAK,CAAhS;IACA,IAAIe,MAAM,GAAG,SAAb;IACA,IAAIpB,QAAQ,GAAGC,cAAc,CAACpB,IAAD,EAAOqB,KAAP,EAAcyE,SAAS,EAAvB,EAA2BxB,OAAO,CAACnD,QAAnC,CAA7B;IACA+E,iBAAiB,CAAC5D,mBAAlB,CAAsCnB,QAAtC,EAAgDoB,MAAhD,EAAwDC,mBAAxD,EAA6E,UAAUiE,EAAV,EAAc;MACzF,IAAI,CAACA,EAAL,EAAS;MACTnC,OAAO,CAACuG,OAAR,CAAgBvG,OAAO,CAACwG,KAAxB,IAAiC3J,QAAjC;MACAgF,QAAQ,CAAC;QACP5D,MAAM,EAAEA,MADD;QAEPpB,QAAQ,EAAEA;MAFH,CAAD,CAAR;IAID,CAPD;EAQD;;EAED,SAAS8F,EAAT,CAAYS,CAAZ,EAAe;IACb,IAAIuD,SAAS,GAAGd,KAAK,CAAC7F,OAAO,CAACwG,KAAR,GAAgBpD,CAAjB,EAAoB,CAApB,EAAuBpD,OAAO,CAACuG,OAAR,CAAgBrK,MAAhB,GAAyB,CAAhD,CAArB;IACA,IAAI+B,MAAM,GAAG,KAAb;IACA,IAAIpB,QAAQ,GAAGmD,OAAO,CAACuG,OAAR,CAAgBI,SAAhB,CAAf;IACA/E,iBAAiB,CAAC5D,mBAAlB,CAAsCnB,QAAtC,EAAgDoB,MAAhD,EAAwDC,mBAAxD,EAA6E,UAAUiE,EAAV,EAAc;MACzF,IAAIA,EAAJ,EAAQ;QACNN,QAAQ,CAAC;UACP5D,MAAM,EAAEA,MADD;UAEPpB,QAAQ,EAAEA,QAFH;UAGP2J,KAAK,EAAEG;QAHA,CAAD,CAAR;MAKD,CAND,MAMO;QACL;QACA;QACA9E,QAAQ;MACT;IACF,CAZD;EAaD;;EAED,SAASwB,MAAT,GAAkB;IAChBV,EAAE,CAAC,CAAC,CAAF,CAAF;EACD;;EAED,SAASW,SAAT,GAAqB;IACnBX,EAAE,CAAC,CAAD,CAAF;EACD;;EAED,SAASmE,KAAT,CAAe1D,CAAf,EAAkB;IAChB,IAAIuD,SAAS,GAAG3G,OAAO,CAACwG,KAAR,GAAgBpD,CAAhC;IACA,OAAOuD,SAAS,IAAI,CAAb,IAAkBA,SAAS,GAAG3G,OAAO,CAACuG,OAAR,CAAgBrK,MAArD;EACD;;EAED,SAAS0H,KAAT,CAAelG,MAAf,EAAuB;IACrB,IAAIA,MAAM,KAAK,KAAK,CAApB,EAAuB;MACrBA,MAAM,GAAG,KAAT;IACD;;IAED,OAAOkE,iBAAiB,CAACjE,SAAlB,CAA4BD,MAA5B,CAAP;EACD;;EAED,SAASoG,MAAT,CAAgBrF,QAAhB,EAA0B;IACxB,OAAOmD,iBAAiB,CAACtD,cAAlB,CAAiCG,QAAjC,CAAP;EACD;;EAED,IAAIuB,OAAO,GAAG;IACZ9D,MAAM,EAAEqK,OAAO,CAACrK,MADJ;IAEZ+B,MAAM,EAAE,KAFI;IAGZpB,QAAQ,EAAE0J,OAAO,CAACC,KAAD,CAHL;IAIZA,KAAK,EAAEA,KAJK;IAKZD,OAAO,EAAEA,OALG;IAMZ1D,UAAU,EAAEA,UANA;IAOZjE,IAAI,EAAEA,IAPM;IAQZsE,OAAO,EAAEA,OARG;IASZP,EAAE,EAAEA,EATQ;IAUZU,MAAM,EAAEA,MAVI;IAWZC,SAAS,EAAEA,SAXC;IAYZwD,KAAK,EAAEA,KAZK;IAaZlD,KAAK,EAAEA,KAbK;IAcZE,MAAM,EAAEA;EAdI,CAAd;EAgBA,OAAO9D,OAAP;AACD;;AAED,SAASQ,oBAAT,EAA+BqE,iBAA/B,EAAkDqB,mBAAlD,EAAuEpJ,cAAvE,EAAuFQ,iBAAvF,EAA0GhB,SAA1G,EAAqHM,UAArH"},"metadata":{},"sourceType":"module"} |