@vue/devtools 6.4.2 → 6.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/hook.js CHANGED
@@ -1 +1 @@
1
- (()=>{"use strict";var __webpack_modules__={6793:(__unused_webpack_module,exports,__webpack_require__)=>{eval("var __webpack_unused_export__;\n // this script is injected into every page.\n\n__webpack_unused_export__ = ({\n value: true\n});\nexports.U = void 0;\n/**\n * Install the hook on window, which is an event emitter.\n * Note because Chrome content scripts cannot directly modify the window object,\n * we are evaling this function by inserting a script tag. That's why we have\n * to inline the whole event emitter implementation here.\n *\n * @param {Window|global} target\n */\n\nfunction installHook(target, isIframe = false) {\n const devtoolsVersion = '6.0';\n let listeners = {};\n\n function injectIframeHook(iframe) {\n if (iframe.__vdevtools__injected) return;\n\n try {\n iframe.__vdevtools__injected = true;\n\n const inject = () => {\n try {\n iframe.contentWindow.__VUE_DEVTOOLS_IFRAME__ = iframe;\n const script = iframe.contentDocument.createElement('script');\n script.textContent = ';(' + installHook.toString() + ')(window, true)';\n iframe.contentDocument.documentElement.appendChild(script);\n script.parentNode.removeChild(script);\n } catch (e) {// Ignore\n }\n };\n\n inject();\n iframe.addEventListener('load', () => inject());\n } catch (e) {// Ignore\n }\n }\n\n let iframeChecks = 0;\n\n function injectToIframes() {\n if (typeof window === 'undefined') return;\n const iframes = document.querySelectorAll('iframe:not([data-vue-devtools-ignore])');\n\n for (const iframe of iframes) {\n injectIframeHook(iframe);\n }\n }\n\n injectToIframes();\n const iframeTimer = setInterval(() => {\n injectToIframes();\n iframeChecks++;\n\n if (iframeChecks >= 5) {\n clearInterval(iframeTimer);\n }\n }, 1000);\n\n if (Object.prototype.hasOwnProperty.call(target, '__VUE_DEVTOOLS_GLOBAL_HOOK__')) {\n if (target.__VUE_DEVTOOLS_GLOBAL_HOOK__.devtoolsVersion !== devtoolsVersion) {\n console.error(`Another version of Vue Devtools seems to be installed. Please enable only one version at a time.`);\n }\n\n return;\n }\n\n let hook;\n\n if (isIframe) {\n const sendToParent = cb => {\n try {\n const hook = window.parent.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n if (hook) {\n cb(hook);\n } else {\n console.warn('[Vue Devtools] No hook in parent window');\n }\n } catch (e) {\n console.warn('[Vue Devtools] Failed to send message to parent window', e);\n }\n };\n\n hook = {\n devtoolsVersion,\n\n // eslint-disable-next-line accessor-pairs\n set Vue(value) {\n sendToParent(hook => {\n hook.Vue = value;\n });\n },\n\n // eslint-disable-next-line accessor-pairs\n set enabled(value) {\n sendToParent(hook => {\n hook.enabled = value;\n });\n },\n\n on(event, fn) {\n sendToParent(hook => hook.on(event, fn));\n },\n\n once(event, fn) {\n sendToParent(hook => hook.once(event, fn));\n },\n\n off(event, fn) {\n sendToParent(hook => hook.off(event, fn));\n },\n\n emit(event, ...args) {\n sendToParent(hook => hook.emit(event, ...args));\n }\n\n };\n } else {\n hook = {\n devtoolsVersion,\n Vue: null,\n enabled: undefined,\n _buffer: [],\n store: null,\n initialState: null,\n storeModules: null,\n flushStoreModules: null,\n apps: [],\n\n _replayBuffer(event) {\n const buffer = this._buffer;\n this._buffer = [];\n\n for (let i = 0, l = buffer.length; i < l; i++) {\n const allArgs = buffer[i];\n allArgs[0] === event // eslint-disable-next-line prefer-spread\n ? this.emit.apply(this, allArgs) : this._buffer.push(allArgs);\n }\n },\n\n on(event, fn) {\n const $event = '$' + event;\n\n if (listeners[$event]) {\n listeners[$event].push(fn);\n } else {\n listeners[$event] = [fn];\n\n this._replayBuffer(event);\n }\n },\n\n once(event, fn) {\n const on = (...args) => {\n this.off(event, on);\n return fn.apply(this, args);\n };\n\n this.on(event, on);\n },\n\n off(event, fn) {\n event = '$' + event;\n\n if (!arguments.length) {\n listeners = {};\n } else {\n const cbs = listeners[event];\n\n if (cbs) {\n if (!fn) {\n listeners[event] = null;\n } else {\n for (let i = 0, l = cbs.length; i < l; i++) {\n const cb = cbs[i];\n\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break;\n }\n }\n }\n }\n }\n },\n\n emit(event, ...args) {\n const $event = '$' + event;\n let cbs = listeners[$event];\n\n if (cbs) {\n cbs = cbs.slice();\n\n for (let i = 0, l = cbs.length; i < l; i++) {\n try {\n const result = cbs[i].apply(this, args);\n\n if (typeof (result === null || result === void 0 ? void 0 : result.catch) === 'function') {\n result.catch(e => {\n console.error(`[Hook] Error in async event handler for ${event} with args:`, args);\n console.error(e);\n });\n }\n } catch (e) {\n console.error(`[Hook] Error in event handler for ${event} with args:`, args);\n console.error(e);\n }\n }\n } else {\n this._buffer.push([event, ...args]);\n }\n }\n\n };\n hook.once('init', Vue => {\n hook.Vue = Vue;\n\n if (Vue) {\n Vue.prototype.$inspect = function () {\n const fn = target.__VUE_DEVTOOLS_INSPECT__;\n fn && fn(this);\n };\n }\n });\n hook.on('app:init', (app, version, types) => {\n const appRecord = {\n app,\n version,\n types\n };\n hook.apps.push(appRecord);\n hook.emit('app:add', appRecord);\n });\n hook.once('vuex:init', store => {\n hook.store = store;\n hook.initialState = clone(store.state);\n const origReplaceState = store.replaceState.bind(store);\n\n store.replaceState = state => {\n hook.initialState = clone(state);\n origReplaceState(state);\n }; // Dynamic modules\n\n\n let origRegister, origUnregister;\n\n if (store.registerModule) {\n hook.storeModules = [];\n origRegister = store.registerModule.bind(store);\n\n store.registerModule = (path, module, options) => {\n if (typeof path === 'string') path = [path];\n hook.storeModules.push({\n path,\n module,\n options\n });\n origRegister(path, module, options);\n\n if (false) {}\n };\n\n origUnregister = store.unregisterModule.bind(store);\n\n store.unregisterModule = path => {\n if (typeof path === 'string') path = [path];\n const key = path.join('/');\n const index = hook.storeModules.findIndex(m => m.path.join('/') === key);\n if (index !== -1) hook.storeModules.splice(index, 1);\n origUnregister(path);\n\n if (false) {}\n };\n }\n\n hook.flushStoreModules = () => {\n store.replaceState = origReplaceState;\n\n if (store.registerModule) {\n store.registerModule = origRegister;\n store.unregisterModule = origUnregister;\n }\n\n return hook.storeModules || [];\n };\n });\n }\n\n Object.defineProperty(target, '__VUE_DEVTOOLS_GLOBAL_HOOK__', {\n get() {\n return hook;\n }\n\n }); // Handle apps initialized before hook injection\n\n if (target.__VUE_DEVTOOLS_HOOK_REPLAY__) {\n try {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__.forEach(cb => cb(hook));\n\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = [];\n } catch (e) {\n console.error('[vue-devtools] Error during hook replay', e);\n }\n } // Clone deep utility for cloning initial state of the store\n // Forked from https://github.com/planttheidea/fast-copy\n // Last update: 2019-10-30\n // ⚠️ Don't forget to update `./hook.js`\n // utils\n\n\n const {\n toString: toStringFunction\n } = Function.prototype;\n const {\n create,\n defineProperty,\n getOwnPropertyDescriptor,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n getPrototypeOf\n } = Object;\n const {\n hasOwnProperty,\n propertyIsEnumerable\n } = Object.prototype;\n /**\n * @enum\n *\n * @const {Object} SUPPORTS\n *\n * @property {boolean} SYMBOL_PROPERTIES are symbol properties supported\n * @property {boolean} WEAKSET is WeakSet supported\n */\n\n const SUPPORTS = {\n SYMBOL_PROPERTIES: typeof getOwnPropertySymbols === 'function',\n WEAKSET: typeof WeakSet === 'function'\n };\n /**\n * @function createCache\n *\n * @description\n * get a new cache object to prevent circular references\n *\n * @returns the new cache object\n */\n\n const createCache = () => {\n if (SUPPORTS.WEAKSET) {\n return new WeakSet();\n }\n\n const object = create({\n add: value => object._values.push(value),\n has: value => !!~object._values.indexOf(value)\n });\n object._values = [];\n return object;\n };\n /**\n * @function getCleanClone\n *\n * @description\n * get an empty version of the object with the same prototype it has\n *\n * @param object the object to build a clean clone from\n * @param realm the realm the object resides in\n * @returns the empty cloned object\n */\n\n\n const getCleanClone = (object, realm) => {\n if (!object.constructor) {\n return create(null);\n } // eslint-disable-next-line no-proto\n\n\n const prototype = object.__proto__ || getPrototypeOf(object);\n\n if (object.constructor === realm.Object) {\n return prototype === realm.Object.prototype ? {} : create(prototype);\n }\n\n if (~toStringFunction.call(object.constructor).indexOf('[native code]')) {\n try {\n return new object.constructor();\n } catch (e) {// Error\n }\n }\n\n return create(prototype);\n };\n /**\n * @function getObjectCloneLoose\n *\n * @description\n * get a copy of the object based on loose rules, meaning all enumerable keys\n * and symbols are copied, but property descriptors are not considered\n *\n * @param object the object to clone\n * @param realm the realm the object resides in\n * @param handleCopy the function that handles copying the object\n * @returns the copied object\n */\n\n\n const getObjectCloneLoose = (object, realm, handleCopy, cache) => {\n const clone = getCleanClone(object, realm);\n\n for (const key in object) {\n if (hasOwnProperty.call(object, key)) {\n clone[key] = handleCopy(object[key], cache);\n }\n }\n\n if (SUPPORTS.SYMBOL_PROPERTIES) {\n const symbols = getOwnPropertySymbols(object);\n\n if (symbols.length) {\n for (let index = 0, symbol; index < symbols.length; index++) {\n symbol = symbols[index];\n\n if (propertyIsEnumerable.call(object, symbol)) {\n clone[symbol] = handleCopy(object[symbol], cache);\n }\n }\n }\n }\n\n return clone;\n };\n /**\n * @function getObjectCloneStrict\n *\n * @description\n * get a copy of the object based on strict rules, meaning all keys and symbols\n * are copied based on the original property descriptors\n *\n * @param object the object to clone\n * @param realm the realm the object resides in\n * @param handleCopy the function that handles copying the object\n * @returns the copied object\n */\n\n\n const getObjectCloneStrict = (object, realm, handleCopy, cache) => {\n const clone = getCleanClone(object, realm);\n const properties = SUPPORTS.SYMBOL_PROPERTIES ? [].concat(getOwnPropertyNames(object), getOwnPropertySymbols(object)) : getOwnPropertyNames(object);\n\n if (properties.length) {\n for (let index = 0, property, descriptor; index < properties.length; index++) {\n property = properties[index];\n\n if (property !== 'callee' && property !== 'caller') {\n descriptor = getOwnPropertyDescriptor(object, property);\n descriptor.value = handleCopy(object[property], cache);\n defineProperty(clone, property, descriptor);\n }\n }\n }\n\n return clone;\n };\n /**\n * @function getRegExpFlags\n *\n * @description\n * get the flags to apply to the copied regexp\n *\n * @param regExp the regexp to get the flags of\n * @returns the flags for the regexp\n */\n\n\n const getRegExpFlags = regExp => {\n let flags = '';\n\n if (regExp.global) {\n flags += 'g';\n }\n\n if (regExp.ignoreCase) {\n flags += 'i';\n }\n\n if (regExp.multiline) {\n flags += 'm';\n }\n\n if (regExp.unicode) {\n flags += 'u';\n }\n\n if (regExp.sticky) {\n flags += 'y';\n }\n\n return flags;\n };\n\n const {\n isArray\n } = Array;\n\n const GLOBAL_THIS = (() => {\n if (typeof self !== 'undefined') {\n return self;\n }\n\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof __webpack_require__.g !== 'undefined') {\n return __webpack_require__.g;\n }\n\n if (console && console.error) {\n console.error('Unable to locate global object, returning \"this\".');\n }\n })();\n /**\n * @function clone\n *\n * @description\n * copy an object deeply as much as possible\n *\n * If `strict` is applied, then all properties (including non-enumerable ones)\n * are copied with their original property descriptors on both objects and arrays.\n *\n * The object is compared to the global constructors in the `realm` provided,\n * and the native constructor is always used to ensure that extensions of native\n * objects (allows in ES2015+) are maintained.\n *\n * @param object the object to copy\n * @param [options] the options for copying with\n * @param [options.isStrict] should the copy be strict\n * @param [options.realm] the realm (this) object the object is copied from\n * @returns the copied object\n */\n\n\n function clone(object, options = null) {\n // manually coalesced instead of default parameters for performance\n const isStrict = !!(options && options.isStrict);\n const realm = options && options.realm || GLOBAL_THIS;\n const getObjectClone = isStrict ? getObjectCloneStrict : getObjectCloneLoose;\n /**\n * @function handleCopy\n *\n * @description\n * copy the object recursively based on its type\n *\n * @param object the object to copy\n * @returns the copied object\n */\n\n const handleCopy = (object, cache) => {\n if (!object || typeof object !== 'object' || cache.has(object)) {\n return object;\n } // DOM objects\n\n\n if (typeof HTMLElement !== 'undefined' && object instanceof HTMLElement) {\n return object.cloneNode(false);\n }\n\n const Constructor = object.constructor; // plain objects\n\n if (Constructor === realm.Object) {\n cache.add(object);\n return getObjectClone(object, realm, handleCopy, cache);\n }\n\n let clone; // arrays\n\n if (isArray(object)) {\n cache.add(object); // if strict, include non-standard properties\n\n if (isStrict) {\n return getObjectCloneStrict(object, realm, handleCopy, cache);\n }\n\n clone = new Constructor();\n\n for (let index = 0; index < object.length; index++) {\n clone[index] = handleCopy(object[index], cache);\n }\n\n return clone;\n } // dates\n\n\n if (object instanceof realm.Date) {\n return new Constructor(object.getTime());\n } // regexps\n\n\n if (object instanceof realm.RegExp) {\n clone = new Constructor(object.source, object.flags || getRegExpFlags(object));\n clone.lastIndex = object.lastIndex;\n return clone;\n } // maps\n\n\n if (realm.Map && object instanceof realm.Map) {\n cache.add(object);\n clone = new Constructor();\n object.forEach((value, key) => {\n clone.set(key, handleCopy(value, cache));\n });\n return clone;\n } // sets\n\n\n if (realm.Set && object instanceof realm.Set) {\n cache.add(object);\n clone = new Constructor();\n object.forEach(value => {\n clone.add(handleCopy(value, cache));\n });\n return clone;\n } // buffers (node-only)\n\n\n if (realm.Buffer && realm.Buffer.isBuffer(object)) {\n clone = realm.Buffer.allocUnsafe ? realm.Buffer.allocUnsafe(object.length) : new Constructor(object.length);\n object.copy(clone);\n return clone;\n } // arraybuffers / dataviews\n\n\n if (realm.ArrayBuffer) {\n // dataviews\n if (realm.ArrayBuffer.isView(object)) {\n return new Constructor(object.buffer.slice(0));\n } // arraybuffers\n\n\n if (object instanceof realm.ArrayBuffer) {\n return object.slice(0);\n }\n } // if the object cannot / should not be cloned, don't\n\n\n if ( // promise-like\n hasOwnProperty.call(object, 'then') && typeof object.then === 'function' || // errors\n object instanceof Error || // weakmaps\n realm.WeakMap && object instanceof realm.WeakMap || // weaksets\n realm.WeakSet && object instanceof realm.WeakSet) {\n return object;\n }\n\n cache.add(object); // assume anything left is a custom constructor\n\n return getObjectClone(object, realm, handleCopy, cache);\n };\n\n return handleCopy(object, createCache());\n }\n}\n\nexports.U = installHook;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFhLENBQWIsQ0FBUDtRQUNEO01BQ0YsQ0F4R0MsQ0EwR0Y7OztNQUNBLEtBQ0U7TUFDQ3ZDLGNBQWMsQ0FBQ0MsSUFBZixDQUFvQnFGLE1BQXBCLEVBQTRCLE1BQTVCLEtBQXVDLE9BQU9BLE1BQU0sQ0FBQ2tELElBQWQsS0FBdUIsVUFBL0QsSUFDQTtNQUNBbEQsTUFBTSxZQUFZbUQsS0FGbEIsSUFHQTtNQUNDN0MsS0FBSyxDQUFDOEMsT0FBTixJQUFpQnBELE1BQU0sWUFBWU0sS0FBSyxDQUFDOEMsT0FKMUMsSUFLQTtNQUNDOUMsS0FBSyxDQUFDUixPQUFOLElBQWlCRSxNQUFNLFlBQVlNLEtBQUssQ0FBQ1IsT0FSNUMsRUFTRTtRQUNBLE9BQU9FLE1BQVA7TUFDRDs7TUFFRFcsS0FBSyxDQUFDVixHQUFOLENBQVVELE1BQVYsRUF4SEUsQ0EwSEY7O01BQ0EsT0FBT2dDLGNBQWMsQ0FBQ2hDLE1BQUQsRUFBU00sS0FBVCxFQUFnQkksVUFBaEIsRUFBNEJDLEtBQTVCLENBQXJCO0lBQ0QsQ0EvSEQ7O0lBaUlBLE9BQU9ELFVBQVUsQ0FBQ1YsTUFBRCxFQUFTRCxXQUFXLEVBQXBCLENBQWpCO0VBQ0Q7QUFDRjs7QUF6cEJEc0QsU0FBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy9ob29rLnRzPzJmOWEiXSwibmFtZXMiOlsiaW5zdGFsbEhvb2siLCJ0YXJnZXQiLCJpc0lmcmFtZSIsImRldnRvb2xzVmVyc2lvbiIsImxpc3RlbmVycyIsImluamVjdElmcmFtZUhvb2siLCJpZnJhbWUiLCJfX3ZkZXZ0b29sc19faW5qZWN0ZWQiLCJpbmplY3QiLCJjb250ZW50V2luZG93IiwiX19WVUVfREVWVE9PTFNfSUZSQU1FX18iLCJzY3JpcHQiLCJjb250ZW50RG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidGV4dENvbnRlbnQiLCJ0b1N0cmluZyIsImRvY3VtZW50RWxlbWVudCIsImFwcGVuZENoaWxkIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwiZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJpZnJhbWVDaGVja3MiLCJpbmplY3RUb0lmcmFtZXMiLCJ3aW5kb3ciLCJpZnJhbWVzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaWZyYW1lVGltZXIiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwiY29uc29sZSIsImVycm9yIiwiaG9vayIsInNlbmRUb1BhcmVudCIsImNiIiwicGFyZW50Iiwid2FybiIsIlZ1ZSIsInZhbHVlIiwiZW5hYmxlZCIsIm9uIiwiZXZlbnQiLCJmbiIsIm9uY2UiLCJvZmYiLCJlbWl0IiwiYXJncyIsInVuZGVmaW5lZCIsIl9idWZmZXIiLCJzdG9yZSIsImluaXRpYWxTdGF0ZSIsInN0b3JlTW9kdWxlcyIsImZsdXNoU3RvcmVNb2R1bGVzIiwiYXBwcyIsIl9yZXBsYXlCdWZmZXIiLCJidWZmZXIiLCJpIiwibCIsImxlbmd0aCIsImFsbEFyZ3MiLCJhcHBseSIsInB1c2giLCIkZXZlbnQiLCJhcmd1bWVudHMiLCJjYnMiLCJzcGxpY2UiLCJzbGljZSIsInJlc3VsdCIsImNhdGNoIiwiJGluc3BlY3QiLCJfX1ZVRV9ERVZUT09MU19JTlNQRUNUX18iLCJhcHAiLCJ2ZXJzaW9uIiwidHlwZXMiLCJhcHBSZWNvcmQiLCJjbG9uZSIsInN0YXRlIiwib3JpZ1JlcGxhY2VTdGF0ZSIsInJlcGxhY2VTdGF0ZSIsImJpbmQiLCJvcmlnUmVnaXN0ZXIiLCJvcmlnVW5yZWdpc3RlciIsInJlZ2lzdGVyTW9kdWxlIiwicGF0aCIsIm1vZHVsZSIsIm9wdGlvbnMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJsb2ciLCJ1bnJlZ2lzdGVyTW9kdWxlIiwia2V5Iiwiam9pbiIsImluZGV4IiwiZmluZEluZGV4IiwibSIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiX19WVUVfREVWVE9PTFNfSE9PS19SRVBMQVlfXyIsImZvckVhY2giLCJ0b1N0cmluZ0Z1bmN0aW9uIiwiRnVuY3Rpb24iLCJjcmVhdGUiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZ2V0UHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIlNVUFBPUlRTIiwiU1lNQk9MX1BST1BFUlRJRVMiLCJXRUFLU0VUIiwiV2Vha1NldCIsImNyZWF0ZUNhY2hlIiwib2JqZWN0IiwiYWRkIiwiX3ZhbHVlcyIsImhhcyIsImluZGV4T2YiLCJnZXRDbGVhbkNsb25lIiwicmVhbG0iLCJjb25zdHJ1Y3RvciIsIl9fcHJvdG9fXyIsImdldE9iamVjdENsb25lTG9vc2UiLCJoYW5kbGVDb3B5IiwiY2FjaGUiLCJzeW1ib2xzIiwic3ltYm9sIiwiZ2V0T2JqZWN0Q2xvbmVTdHJpY3QiLCJwcm9wZXJ0aWVzIiwiY29uY2F0IiwicHJvcGVydHkiLCJkZXNjcmlwdG9yIiwiZ2V0UmVnRXhwRmxhZ3MiLCJyZWdFeHAiLCJmbGFncyIsImdsb2JhbCIsImlnbm9yZUNhc2UiLCJtdWx0aWxpbmUiLCJ1bmljb2RlIiwic3RpY2t5IiwiaXNBcnJheSIsIkFycmF5IiwiR0xPQkFMX1RISVMiLCJzZWxmIiwiaXNTdHJpY3QiLCJnZXRPYmplY3RDbG9uZSIsIkhUTUxFbGVtZW50IiwiY2xvbmVOb2RlIiwiQ29uc3RydWN0b3IiLCJEYXRlIiwiZ2V0VGltZSIsIlJlZ0V4cCIsInNvdXJjZSIsImxhc3RJbmRleCIsIk1hcCIsInNldCIsIlNldCIsIkJ1ZmZlciIsImlzQnVmZmVyIiwiYWxsb2NVbnNhZmUiLCJjb3B5IiwiQXJyYXlCdWZmZXIiLCJpc1ZpZXciLCJ0aGVuIiwiRXJyb3IiLCJXZWFrTWFwIiwiZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///6793\n")},79310:(__unused_webpack_module,exports)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getCatchedGetters = exports.getCustomStoreDetails = exports.getCustomRouterDetails = exports.isVueInstance = exports.getCustomObjectDetails = exports.getCustomInstanceDetails = exports.getInstanceMap = exports.backendInjections = void 0;\nexports.backendInjections = {\n instanceMap: new Map(),\n isVueInstance: () => false,\n getCustomInstanceDetails: () => ({}),\n getCustomObjectDetails: () => undefined\n};\n\nfunction getInstanceMap() {\n return exports.backendInjections.instanceMap;\n}\n\nexports.getInstanceMap = getInstanceMap;\n\nfunction getCustomInstanceDetails(instance) {\n return exports.backendInjections.getCustomInstanceDetails(instance);\n}\n\nexports.getCustomInstanceDetails = getCustomInstanceDetails;\n\nfunction getCustomObjectDetails(value, proto) {\n return exports.backendInjections.getCustomObjectDetails(value, proto);\n}\n\nexports.getCustomObjectDetails = getCustomObjectDetails;\n\nfunction isVueInstance(value) {\n return exports.backendInjections.isVueInstance(value);\n}\n\nexports.isVueInstance = isVueInstance; // @TODO refactor\n\nfunction getCustomRouterDetails(router) {\n return {\n _custom: {\n type: 'router',\n display: 'VueRouter',\n value: {\n options: router.options,\n currentRoute: router.currentRoute\n },\n fields: {\n abstract: true\n }\n }\n };\n}\n\nexports.getCustomRouterDetails = getCustomRouterDetails; // @TODO refactor\n\nfunction getCustomStoreDetails(store) {\n return {\n _custom: {\n type: 'store',\n display: 'Store',\n value: {\n state: store.state,\n getters: getCatchedGetters(store)\n },\n fields: {\n abstract: true\n }\n }\n };\n}\n\nexports.getCustomStoreDetails = getCustomStoreDetails; // @TODO refactor\n\nfunction getCatchedGetters(store) {\n const getters = {};\n const origGetters = store.getters || {};\n const keys = Object.keys(origGetters);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n Object.defineProperty(getters, key, {\n enumerable: true,\n get: () => {\n try {\n return origGetters[key];\n } catch (e) {\n return e;\n }\n }\n });\n }\n\n return getters;\n}\n\nexports.getCatchedGetters = getCatchedGetters;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkzMTAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWFBLHlCQUFBQSxHQUFvQjtFQUMvQkMsV0FBVyxFQUFFLElBQUlDLEdBQUosRUFEa0I7RUFFL0JDLGFBQWEsRUFBRyxNQUFNLEtBRlM7RUFHL0JDLHdCQUF3QixFQUFHLE9BQU8sRUFBUCxDQUhJO0VBSS9CQyxzQkFBc0IsRUFBRyxNQUFNQztBQUpBLENBQXBCOztBQU9iLFNBQWdCQyxjQUFoQixHQUE4QjtFQUM1QixPQUFPUCwwQkFBa0JDLFdBQXpCO0FBQ0Q7O0FBRkRELHNCQUFBQTs7QUFJQSxTQUFnQkksd0JBQWhCLENBQTBDSSxRQUExQyxFQUFrRDtFQUNoRCxPQUFPUiwwQkFBa0JJLHdCQUFsQixDQUEyQ0ksUUFBM0MsQ0FBUDtBQUNEOztBQUZEUixnQ0FBQUE7O0FBSUEsU0FBZ0JLLHNCQUFoQixDQUF3Q0ksS0FBeEMsRUFBK0NDLEtBQS9DLEVBQTREO0VBQzFELE9BQU9WLDBCQUFrQkssc0JBQWxCLENBQXlDSSxLQUF6QyxFQUFnREMsS0FBaEQsQ0FBUDtBQUNEOztBQUZEViw4QkFBQUE7O0FBSUEsU0FBZ0JHLGFBQWhCLENBQStCTSxLQUEvQixFQUFvQztFQUNsQyxPQUFPVCwwQkFBa0JHLGFBQWxCLENBQWdDTSxLQUFoQyxDQUFQO0FBQ0Q7O0FBRkRULHFCQUFBQSxpQixDQUlBOztBQUNBLFNBQWdCVyxzQkFBaEIsQ0FBd0NDLE1BQXhDLEVBQThDO0VBQzVDLE9BQU87SUFDTEMsT0FBTyxFQUFFO01BQ1BDLElBQUksRUFBRSxRQURDO01BRVBDLE9BQU8sRUFBRSxXQUZGO01BR1BOLEtBQUssRUFBRTtRQUNMTyxPQUFPLEVBQUVKLE1BQU0sQ0FBQ0ksT0FEWDtRQUVMQyxZQUFZLEVBQUVMLE1BQU0sQ0FBQ0s7TUFGaEIsQ0FIQTtNQU9QQyxNQUFNLEVBQUU7UUFDTkMsUUFBUSxFQUFFO01BREo7SUFQRDtFQURKLENBQVA7QUFhRDs7QUFkRG5CLDhCQUFBQSwwQixDQWdCQTs7QUFDQSxTQUFnQm9CLHFCQUFoQixDQUF1Q0MsS0FBdkMsRUFBNEM7RUFDMUMsT0FBTztJQUNMUixPQUFPLEVBQUU7TUFDUEMsSUFBSSxFQUFFLE9BREM7TUFFUEMsT0FBTyxFQUFFLE9BRkY7TUFHUE4sS0FBSyxFQUFFO1FBQ0xhLEtBQUssRUFBRUQsS0FBSyxDQUFDQyxLQURSO1FBRUxDLE9BQU8sRUFBRUMsaUJBQWlCLENBQUNILEtBQUQ7TUFGckIsQ0FIQTtNQU9QSCxNQUFNLEVBQUU7UUFDTkMsUUFBUSxFQUFFO01BREo7SUFQRDtFQURKLENBQVA7QUFhRDs7QUFkRG5CLDZCQUFBQSx5QixDQWdCQTs7QUFDQSxTQUFnQndCLGlCQUFoQixDQUFtQ0gsS0FBbkMsRUFBd0M7RUFDdEMsTUFBTUUsT0FBTyxHQUFHLEVBQWhCO0VBRUEsTUFBTUUsV0FBVyxHQUFHSixLQUFLLENBQUNFLE9BQU4sSUFBaUIsRUFBckM7RUFDQSxNQUFNRyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0QsSUFBUCxDQUFZRCxXQUFaLENBQWI7O0VBQ0EsS0FBSyxJQUFJRyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixJQUFJLENBQUNHLE1BQXpCLEVBQWlDRCxDQUFDLEVBQWxDLEVBQXNDO0lBQ3BDLE1BQU1FLEdBQUcsR0FBR0osSUFBSSxDQUFDRSxDQUFELENBQWhCO0lBQ0FELE1BQU0sQ0FBQ0ksY0FBUCxDQUFzQlIsT0FBdEIsRUFBK0JPLEdBQS9CLEVBQW9DO01BQ2xDRSxVQUFVLEVBQUUsSUFEc0I7TUFFbENDLEdBQUcsRUFBRSxNQUFLO1FBQ1IsSUFBSTtVQUNGLE9BQU9SLFdBQVcsQ0FBQ0ssR0FBRCxDQUFsQjtRQUNELENBRkQsQ0FFRSxPQUFPSSxDQUFQLEVBQVU7VUFDVixPQUFPQSxDQUFQO1FBQ0Q7TUFDRjtJQVJpQyxDQUFwQztFQVVEOztFQUVELE9BQU9YLE9BQVA7QUFDRDs7QUFwQkR2Qix5QkFBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy9iYWNrZW5kLnRzP2M2NDYiXSwibmFtZXMiOlsiZXhwb3J0cyIsImluc3RhbmNlTWFwIiwiTWFwIiwiaXNWdWVJbnN0YW5jZSIsImdldEN1c3RvbUluc3RhbmNlRGV0YWlscyIsImdldEN1c3RvbU9iamVjdERldGFpbHMiLCJ1bmRlZmluZWQiLCJnZXRJbnN0YW5jZU1hcCIsImluc3RhbmNlIiwidmFsdWUiLCJwcm90byIsImdldEN1c3RvbVJvdXRlckRldGFpbHMiLCJyb3V0ZXIiLCJfY3VzdG9tIiwidHlwZSIsImRpc3BsYXkiLCJvcHRpb25zIiwiY3VycmVudFJvdXRlIiwiZmllbGRzIiwiYWJzdHJhY3QiLCJnZXRDdXN0b21TdG9yZURldGFpbHMiLCJzdG9yZSIsInN0YXRlIiwiZ2V0dGVycyIsImdldENhdGNoZWRHZXR0ZXJzIiwib3JpZ0dldHRlcnMiLCJrZXlzIiwiT2JqZWN0IiwiaSIsImxlbmd0aCIsImtleSIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsImUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///79310\n")},47294:(__unused_webpack_module,exports,__webpack_require__)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Bridge = void 0;\n\nconst events_1 = __webpack_require__(22699);\n\nconst raf_1 = __webpack_require__(86283);\n\nconst BATCH_DURATION = 100;\n\nclass Bridge extends events_1.EventEmitter {\n constructor(wall) {\n super();\n this.setMaxListeners(Infinity);\n this.wall = wall;\n wall.listen(messages => {\n if (Array.isArray(messages)) {\n messages.forEach(message => this._emit(message));\n } else {\n this._emit(messages);\n }\n });\n this._batchingQueue = [];\n this._sendingQueue = [];\n this._receivingQueue = [];\n this._sending = false;\n }\n\n on(event, listener) {\n const wrappedListener = async (...args) => {\n try {\n await listener(...args);\n } catch (e) {\n console.error(`[Bridge] Error in listener for event ${event.toString()} with args:`, args);\n console.error(e);\n }\n };\n\n return super.on(event, wrappedListener);\n }\n\n send(event, payload) {\n this._batchingQueue.push({\n event,\n payload\n });\n\n if (this._timer == null) {\n this._timer = setTimeout(() => this._flush(), BATCH_DURATION);\n }\n }\n /**\n * Log a message to the devtools background page.\n */\n\n\n log(message) {\n this.send('log', message);\n }\n\n _flush() {\n if (this._batchingQueue.length) this._send(this._batchingQueue);\n clearTimeout(this._timer);\n this._timer = null;\n this._batchingQueue = [];\n } // @TODO types\n\n\n _emit(message) {\n if (typeof message === 'string') {\n this.emit(message);\n } else if (message._chunk) {\n this._receivingQueue.push(message._chunk);\n\n if (message.last) {\n this.emit(message.event, this._receivingQueue);\n this._receivingQueue = [];\n }\n } else if (message.event) {\n this.emit(message.event, message.payload);\n }\n } // @TODO types\n\n\n _send(messages) {\n this._sendingQueue.push(messages);\n\n this._nextSend();\n }\n\n _nextSend() {\n if (!this._sendingQueue.length || this._sending) return;\n this._sending = true;\n\n const messages = this._sendingQueue.shift();\n\n try {\n this.wall.send(messages);\n } catch (err) {\n if (err.message === 'Message length exceeded maximum allowed length.') {\n this._sendingQueue.splice(0, 0, messages.map(message => [message]));\n }\n }\n\n this._sending = false;\n (0, raf_1.raf)(() => this._nextSend());\n }\n\n}\n\nexports.Bridge = Bridge;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEtBQWxCLEVBQXlCUCxPQUFPLENBQUNnQixPQUFqQztJQUNEO0VBQ0YsQ0E1RXFDLENBOEV0Qzs7O0VBQ0FPLEtBQUssQ0FBRTNCLFFBQUYsRUFBVTtJQUNiLEtBQUtPLGFBQUwsQ0FBbUJjLElBQW5CLENBQXdCckIsUUFBeEI7O0lBQ0EsS0FBS2dDLFNBQUw7RUFDRDs7RUFFREEsU0FBUztJQUNQLElBQUksQ0FBQyxLQUFLekIsYUFBTCxDQUFtQm1CLE1BQXBCLElBQThCLEtBQUtqQixRQUF2QyxFQUFpRDtJQUNqRCxLQUFLQSxRQUFMLEdBQWdCLElBQWhCOztJQUNBLE1BQU1ULFFBQVEsR0FBRyxLQUFLTyxhQUFMLENBQW1CMEIsS0FBbkIsRUFBakI7O0lBQ0EsSUFBSTtNQUNGLEtBQUtyQyxJQUFMLENBQVV1QixJQUFWLENBQWVuQixRQUFmO0lBQ0QsQ0FGRCxDQUVFLE9BQU9rQyxHQUFQLEVBQVk7TUFDWixJQUFJQSxHQUFHLENBQUM5QixPQUFKLEtBQWdCLGlEQUFwQixFQUF1RTtRQUNyRSxLQUFLRyxhQUFMLENBQW1CNEIsTUFBbkIsQ0FBMEIsQ0FBMUIsRUFBNkIsQ0FBN0IsRUFBZ0NuQyxRQUFRLENBQUNvQyxHQUFULENBQWFoQyxPQUFPLElBQUksQ0FBQ0EsT0FBRCxDQUF4QixDQUFoQztNQUNEO0lBQ0Y7O0lBQ0QsS0FBS0ssUUFBTCxHQUFnQixLQUFoQjtJQUNBLGVBQUksTUFBTSxLQUFLdUIsU0FBTCxFQUFWO0VBQ0Q7O0FBakdxQzs7QUFBeENLLGNBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvYnJpZGdlLnRzP2VkOWQiXSwibmFtZXMiOlsiQkFUQ0hfRFVSQVRJT04iLCJCcmlkZ2UiLCJldmVudHNfMSIsImNvbnN0cnVjdG9yIiwid2FsbCIsInNldE1heExpc3RlbmVycyIsIkluZmluaXR5IiwibGlzdGVuIiwibWVzc2FnZXMiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwibWVzc2FnZSIsIl9lbWl0IiwiX2JhdGNoaW5nUXVldWUiLCJfc2VuZGluZ1F1ZXVlIiwiX3JlY2VpdmluZ1F1ZXVlIiwiX3NlbmRpbmciLCJvbiIsImV2ZW50IiwibGlzdGVuZXIiLCJ3cmFwcGVkTGlzdGVuZXIiLCJhcmdzIiwiZSIsImNvbnNvbGUiLCJlcnJvciIsInRvU3RyaW5nIiwic2VuZCIsInBheWxvYWQiLCJwdXNoIiwiX3RpbWVyIiwic2V0VGltZW91dCIsIl9mbHVzaCIsImxvZyIsImxlbmd0aCIsIl9zZW5kIiwiY2xlYXJUaW1lb3V0IiwiZW1pdCIsIl9jaHVuayIsImxhc3QiLCJfbmV4dFNlbmQiLCJzaGlmdCIsImVyciIsInNwbGljZSIsIm1hcCIsImV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///47294\n")},79410:(__unused_webpack_module,exports)=>{eval('\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.HookEvents = exports.BridgeSubscriptions = exports.BridgeEvents = exports.BuiltinTabs = void 0;\nvar BuiltinTabs;\n\n(function (BuiltinTabs) {\n BuiltinTabs["COMPONENTS"] = "components";\n BuiltinTabs["TIMELINE"] = "timeline";\n BuiltinTabs["PLUGINS"] = "plugins";\n BuiltinTabs["SETTINGS"] = "settings";\n})(BuiltinTabs = exports.BuiltinTabs || (exports.BuiltinTabs = {}));\n\nvar BridgeEvents;\n\n(function (BridgeEvents) {\n // Misc\n BridgeEvents["TO_BACK_SUBSCRIBE"] = "b:subscribe";\n BridgeEvents["TO_BACK_UNSUBSCRIBE"] = "b:unsubscribe";\n /** Backend is ready */\n\n BridgeEvents["TO_FRONT_READY"] = "f:ready";\n /** Displays the "detected Vue" console log */\n\n BridgeEvents["TO_BACK_LOG_DETECTED_VUE"] = "b:log-detected-vue";\n /** Force refresh */\n\n BridgeEvents["TO_BACK_REFRESH"] = "b:refresh";\n /** Tab was switched */\n\n BridgeEvents["TO_BACK_TAB_SWITCH"] = "b:tab:switch";\n BridgeEvents["TO_BACK_LOG"] = "b:log";\n /** Reconnected after background script is terminated (idle) */\n\n BridgeEvents["TO_FRONT_RECONNECTED"] = "f:reconnected";\n /** Change app title (electron) */\n\n BridgeEvents["TO_FRONT_TITLE"] = "f:title"; // Apps\n\n /** App was registered */\n\n BridgeEvents["TO_FRONT_APP_ADD"] = "f:app:add";\n /** Get app list */\n\n BridgeEvents["TO_BACK_APP_LIST"] = "b:app:list";\n BridgeEvents["TO_FRONT_APP_LIST"] = "f:app:list";\n BridgeEvents["TO_FRONT_APP_REMOVE"] = "f:app:remove";\n BridgeEvents["TO_BACK_APP_SELECT"] = "b:app:select";\n BridgeEvents["TO_FRONT_APP_SELECTED"] = "f:app:selected";\n BridgeEvents["TO_BACK_SCAN_LEGACY_APPS"] = "b:app:scan-legacy"; // Components\n\n BridgeEvents["TO_BACK_COMPONENT_TREE"] = "b:component:tree";\n BridgeEvents["TO_FRONT_COMPONENT_TREE"] = "f:component:tree";\n BridgeEvents["TO_BACK_COMPONENT_SELECTED_DATA"] = "b:component:selected-data";\n BridgeEvents["TO_FRONT_COMPONENT_SELECTED_DATA"] = "f:component:selected-data";\n BridgeEvents["TO_BACK_COMPONENT_EXPAND"] = "b:component:expand";\n BridgeEvents["TO_FRONT_COMPONENT_EXPAND"] = "f:component:expand";\n BridgeEvents["TO_BACK_COMPONENT_SCROLL_TO"] = "b:component:scroll-to";\n BridgeEvents["TO_BACK_COMPONENT_FILTER"] = "b:component:filter";\n BridgeEvents["TO_BACK_COMPONENT_MOUSE_OVER"] = "b:component:mouse-over";\n BridgeEvents["TO_BACK_COMPONENT_MOUSE_OUT"] = "b:component:mouse-out";\n BridgeEvents["TO_BACK_COMPONENT_CONTEXT_MENU_TARGET"] = "b:component:context-menu-target";\n BridgeEvents["TO_BACK_COMPONENT_EDIT_STATE"] = "b:component:edit-state";\n BridgeEvents["TO_BACK_COMPONENT_PICK"] = "b:component:pick";\n BridgeEvents["TO_FRONT_COMPONENT_PICK"] = "f:component:pick";\n BridgeEvents["TO_BACK_COMPONENT_PICK_CANCELED"] = "b:component:pick-canceled";\n BridgeEvents["TO_FRONT_COMPONENT_PICK_CANCELED"] = "f:component:pick-canceled";\n BridgeEvents["TO_BACK_COMPONENT_INSPECT_DOM"] = "b:component:inspect-dom";\n BridgeEvents["TO_FRONT_COMPONENT_INSPECT_DOM"] = "f:component:inspect-dom";\n BridgeEvents["TO_BACK_COMPONENT_RENDER_CODE"] = "b:component:render-code";\n BridgeEvents["TO_FRONT_COMPONENT_RENDER_CODE"] = "f:component:render-code";\n BridgeEvents["TO_FRONT_COMPONENT_UPDATED"] = "f:component:updated"; // Timeline\n\n BridgeEvents["TO_FRONT_TIMELINE_EVENT"] = "f:timeline:event";\n BridgeEvents["TO_BACK_TIMELINE_LAYER_LIST"] = "b:timeline:layer-list";\n BridgeEvents["TO_FRONT_TIMELINE_LAYER_LIST"] = "f:timeline:layer-list";\n BridgeEvents["TO_FRONT_TIMELINE_LAYER_ADD"] = "f:timeline:layer-add";\n BridgeEvents["TO_BACK_TIMELINE_SHOW_SCREENSHOT"] = "b:timeline:show-screenshot";\n BridgeEvents["TO_BACK_TIMELINE_CLEAR"] = "b:timeline:clear";\n BridgeEvents["TO_BACK_TIMELINE_EVENT_DATA"] = "b:timeline:event-data";\n BridgeEvents["TO_FRONT_TIMELINE_EVENT_DATA"] = "f:timeline:event-data";\n BridgeEvents["TO_BACK_TIMELINE_LAYER_LOAD_EVENTS"] = "b:timeline:layer-load-events";\n BridgeEvents["TO_FRONT_TIMELINE_LAYER_LOAD_EVENTS"] = "f:timeline:layer-load-events";\n BridgeEvents["TO_BACK_TIMELINE_LOAD_MARKERS"] = "b:timeline:load-markers";\n BridgeEvents["TO_FRONT_TIMELINE_LOAD_MARKERS"] = "f:timeline:load-markers";\n BridgeEvents["TO_FRONT_TIMELINE_MARKER"] = "f:timeline:marker"; // Plugins\n\n BridgeEvents["TO_BACK_DEVTOOLS_PLUGIN_LIST"] = "b:devtools-plugin:list";\n BridgeEvents["TO_FRONT_DEVTOOLS_PLUGIN_LIST"] = "f:devtools-plugin:list";\n BridgeEvents["TO_FRONT_DEVTOOLS_PLUGIN_ADD"] = "f:devtools-plugin:add";\n BridgeEvents["TO_BACK_DEVTOOLS_PLUGIN_SETTING_UPDATED"] = "b:devtools-plugin:setting-updated"; // Custom inspectors\n\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_LIST"] = "b:custom-inspector:list";\n BridgeEvents["TO_FRONT_CUSTOM_INSPECTOR_LIST"] = "f:custom-inspector:list";\n BridgeEvents["TO_FRONT_CUSTOM_INSPECTOR_ADD"] = "f:custom-inspector:add";\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_TREE"] = "b:custom-inspector:tree";\n BridgeEvents["TO_FRONT_CUSTOM_INSPECTOR_TREE"] = "f:custom-inspector:tree";\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_STATE"] = "b:custom-inspector:state";\n BridgeEvents["TO_FRONT_CUSTOM_INSPECTOR_STATE"] = "f:custom-inspector:state";\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_EDIT_STATE"] = "b:custom-inspector:edit-state";\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_ACTION"] = "b:custom-inspector:action";\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_NODE_ACTION"] = "b:custom-inspector:node-action";\n BridgeEvents["TO_FRONT_CUSTOM_INSPECTOR_SELECT_NODE"] = "f:custom-inspector:select-node"; // Custom state\n\n BridgeEvents["TO_BACK_CUSTOM_STATE_ACTION"] = "b:custom-state:action";\n})(BridgeEvents = exports.BridgeEvents || (exports.BridgeEvents = {}));\n\nvar BridgeSubscriptions;\n\n(function (BridgeSubscriptions) {\n BridgeSubscriptions["SELECTED_COMPONENT_DATA"] = "component:selected-data";\n BridgeSubscriptions["COMPONENT_TREE"] = "component:tree";\n})(BridgeSubscriptions = exports.BridgeSubscriptions || (exports.BridgeSubscriptions = {}));\n\nvar HookEvents;\n\n(function (HookEvents) {\n HookEvents["INIT"] = "init";\n HookEvents["APP_INIT"] = "app:init";\n HookEvents["APP_ADD"] = "app:add";\n HookEvents["APP_UNMOUNT"] = "app:unmount";\n HookEvents["COMPONENT_UPDATED"] = "component:updated";\n HookEvents["COMPONENT_ADDED"] = "component:added";\n HookEvents["COMPONENT_REMOVED"] = "component:removed";\n HookEvents["COMPONENT_EMIT"] = "component:emit";\n HookEvents["COMPONENT_HIGHLIGHT"] = "component:highlight";\n HookEvents["COMPONENT_UNHIGHLIGHT"] = "component:unhighlight";\n HookEvents["SETUP_DEVTOOLS_PLUGIN"] = "devtools-plugin:setup";\n HookEvents["TIMELINE_LAYER_ADDED"] = "timeline:layer-added";\n HookEvents["TIMELINE_EVENT_ADDED"] = "timeline:event-added";\n HookEvents["CUSTOM_INSPECTOR_ADD"] = "custom-inspector:add";\n HookEvents["CUSTOM_INSPECTOR_SEND_TREE"] = "custom-inspector:send-tree";\n HookEvents["CUSTOM_INSPECTOR_SEND_STATE"] = "custom-inspector:send-state";\n HookEvents["CUSTOM_INSPECTOR_SELECT_NODE"] = "custom-inspector:select-node";\n HookEvents["PERFORMANCE_START"] = "perf:start";\n HookEvents["PERFORMANCE_END"] = "perf:end";\n HookEvents["PLUGIN_SETTINGS_SET"] = "plugin:settings:set";\n /**\n * @deprecated\n */\n\n HookEvents["FLUSH"] = "flush";\n /**\n * @deprecated\n */\n\n HookEvents["TRACK_UPDATE"] = "_track-update";\n /**\n * @deprecated\n */\n\n HookEvents["FLASH_UPDATE"] = "_flash-update";\n})(HookEvents = exports.HookEvents || (exports.HookEvents = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzk0MTAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBWUEsV0FBWjs7QUFBQSxXQUFZQSxXQUFaLEVBQXVCO0VBQ3JCQTtFQUNBQTtFQUNBQTtFQUNBQTtBQUNELENBTEQsRUFBWUEsV0FBVyxHQUFYQyx3QkFBQUEsbUJBQUFBLEdBQVcsRUFBWCxDQUFaOztBQU9BLElBQVlDLFlBQVo7O0FBQUEsV0FBWUEsWUFBWixFQUF3QjtFQUN0QjtFQUNBQTtFQUNBQTtFQUNBOztFQUNBQTtFQUNBOztFQUNBQTtFQUNBOztFQUNBQTtFQUNBOztFQUNBQTtFQUNBQTtFQUNBOztFQUNBQTtFQUNBOztFQUNBQSwyQ0FoQnNCLENBa0J0Qjs7RUFDQTs7RUFDQUE7RUFDQTs7RUFDQUE7RUFDQUE7RUFDQUE7RUFDQUE7RUFDQUE7RUFDQUEsK0RBM0JzQixDQTZCdEI7O0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBLG1FQWxEc0IsQ0FvRHRCOztFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQSwrREFqRXNCLENBbUV0Qjs7RUFDQUE7RUFDQUE7RUFDQUE7RUFDQUEsOEZBdkVzQixDQXlFdEI7O0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBLHlGQXBGc0IsQ0FzRnRCOztFQUNBQTtBQUNELENBeEZELEVBQVlBLFlBQVksR0FBWkQseUJBQUFBLG9CQUFBQSxHQUFZLEVBQVosQ0FBWjs7QUEwRkEsSUFBWUUsbUJBQVo7O0FBQUEsV0FBWUEsbUJBQVosRUFBK0I7RUFDN0JBO0VBQ0FBO0FBQ0QsQ0FIRCxFQUFZQSxtQkFBbUIsR0FBbkJGLGdDQUFBQSwyQkFBQUEsR0FBbUIsRUFBbkIsQ0FBWjs7QUFLQSxJQUFZRyxVQUFaOztBQUFBLFdBQVlBLFVBQVosRUFBc0I7RUFDcEJBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0E7Ozs7RUFHQUE7RUFDQTs7OztFQUdBQTtFQUNBOzs7O0VBR0FBO0FBQ0QsQ0FqQ0QsRUFBWUEsVUFBVSxHQUFWSCx1QkFBQUEsa0JBQUFBLEdBQVUsRUFBVixDQUFaIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvY29uc3RzLnRzP2Q5MTgiXSwibmFtZXMiOlsiQnVpbHRpblRhYnMiLCJleHBvcnRzIiwiQnJpZGdlRXZlbnRzIiwiQnJpZGdlU3Vic2NyaXB0aW9ucyIsIkhvb2tFdmVudHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///79410\n')},38158:(__unused_webpack_module,exports)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.StateEditor = void 0;\n\nclass StateEditor {\n set(object, path, value, cb = null) {\n const sections = Array.isArray(path) ? path : path.split('.');\n\n while (sections.length > 1) {\n object = object[sections.shift()];\n\n if (this.isRef(object)) {\n object = this.getRefValue(object);\n }\n }\n\n const field = sections[0];\n\n if (cb) {\n cb(object, field, value);\n } else if (this.isRef(object[field])) {\n this.setRefValue(object[field], value);\n } else {\n object[field] = value;\n }\n }\n\n get(object, path) {\n const sections = Array.isArray(path) ? path : path.split('.');\n\n for (let i = 0; i < sections.length; i++) {\n object = object[sections[i]];\n\n if (this.isRef(object)) {\n object = this.getRefValue(object);\n }\n\n if (!object) {\n return undefined;\n }\n }\n\n return object;\n }\n\n has(object, path, parent = false) {\n if (typeof object === 'undefined') {\n return false;\n }\n\n const sections = Array.isArray(path) ? path.slice() : path.split('.');\n const size = !parent ? 1 : 2;\n\n while (object && sections.length > size) {\n object = object[sections.shift()];\n\n if (this.isRef(object)) {\n object = this.getRefValue(object);\n }\n }\n\n return object != null && Object.prototype.hasOwnProperty.call(object, sections[0]);\n }\n\n createDefaultSetCallback(state) {\n return (obj, field, value) => {\n if (state.remove || state.newKey) {\n if (Array.isArray(obj)) {\n obj.splice(field, 1);\n } else {\n delete obj[field];\n }\n }\n\n if (!state.remove) {\n const target = obj[state.newKey || field];\n\n if (this.isRef(target)) {\n this.setRefValue(target, value);\n } else {\n obj[state.newKey || field] = value;\n }\n }\n };\n }\n\n isRef(ref) {\n // To implement in subclass\n return false;\n }\n\n setRefValue(ref, value) {// To implement in subclass\n }\n\n getRefValue(ref) {\n // To implement in subclass\n return ref;\n }\n\n}\n\nexports.StateEditor = StateEditor;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBZ0NDLElBQWhDLENBQXFDeEIsTUFBckMsRUFBNkNJLFFBQVEsQ0FBQyxDQUFELENBQXJELENBQXpCO0VBQ0Q7O0VBRURxQix3QkFBd0IsQ0FBRUMsS0FBRixFQUF5QjtJQUMvQyxPQUFPLENBQUNDLEdBQUQsRUFBTWYsS0FBTixFQUFhVixLQUFiLEtBQXNCO01BQzNCLElBQUl3QixLQUFLLENBQUNFLE1BQU4sSUFBZ0JGLEtBQUssQ0FBQ0csTUFBMUIsRUFBa0M7UUFDaEMsSUFBSXhCLEtBQUssQ0FBQ0MsT0FBTixDQUFjcUIsR0FBZCxDQUFKLEVBQXdCO1VBQ3RCQSxHQUFHLENBQUNHLE1BQUosQ0FBV2xCLEtBQVgsRUFBa0IsQ0FBbEI7UUFDRCxDQUZELE1BRU87VUFDTCxPQUFPZSxHQUFHLENBQUNmLEtBQUQsQ0FBVjtRQUNEO01BQ0Y7O01BQ0QsSUFBSSxDQUFDYyxLQUFLLENBQUNFLE1BQVgsRUFBbUI7UUFDakIsTUFBTUcsTUFBTSxHQUFHSixHQUFHLENBQUNELEtBQUssQ0FBQ0csTUFBTixJQUFnQmpCLEtBQWpCLENBQWxCOztRQUNBLElBQUksS0FBS0YsS0FBTCxDQUFXcUIsTUFBWCxDQUFKLEVBQXdCO1VBQ3RCLEtBQUtsQixXQUFMLENBQWlCa0IsTUFBakIsRUFBeUI3QixLQUF6QjtRQUNELENBRkQsTUFFTztVQUNMeUIsR0FBRyxDQUFDRCxLQUFLLENBQUNHLE1BQU4sSUFBZ0JqQixLQUFqQixDQUFILEdBQTZCVixLQUE3QjtRQUNEO01BQ0Y7SUFDRixDQWhCRDtFQWlCRDs7RUFFRFEsS0FBSyxDQUFFc0IsR0FBRixFQUFVO0lBQ2I7SUFDQSxPQUFPLEtBQVA7RUFDRDs7RUFFRG5CLFdBQVcsQ0FBRW1CLEdBQUYsRUFBVzlCLEtBQVgsRUFBcUIsQ0FDOUI7RUFDRDs7RUFFRFMsV0FBVyxDQUFFcUIsR0FBRixFQUFVO0lBQ25CO0lBQ0EsT0FBT0EsR0FBUDtFQUNEOztBQWpGcUI7O0FBQXhCQyxtQkFBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy9lZGl0LnRzP2ZlZTciXSwibmFtZXMiOlsiU3RhdGVFZGl0b3IiLCJzZXQiLCJvYmplY3QiLCJwYXRoIiwidmFsdWUiLCJjYiIsInNlY3Rpb25zIiwiQXJyYXkiLCJpc0FycmF5Iiwic3BsaXQiLCJsZW5ndGgiLCJzaGlmdCIsImlzUmVmIiwiZ2V0UmVmVmFsdWUiLCJmaWVsZCIsInNldFJlZlZhbHVlIiwiZ2V0IiwiaSIsInVuZGVmaW5lZCIsImhhcyIsInBhcmVudCIsInNsaWNlIiwic2l6ZSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImNyZWF0ZURlZmF1bHRTZXRDYWxsYmFjayIsInN0YXRlIiwib2JqIiwicmVtb3ZlIiwibmV3S2V5Iiwic3BsaWNlIiwidGFyZ2V0IiwicmVmIiwiZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///38158\n")},66210:(__unused_webpack_module,exports,__webpack_require__)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.initEnv = exports.keys = exports.isLinux = exports.isMac = exports.isWindows = exports.isFirefox = exports.isChrome = exports.target = exports.isBrowser = void 0;\nexports.isBrowser = typeof navigator !== 'undefined';\nexports.target = exports.isBrowser ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : {};\nexports.isChrome = typeof exports.target.chrome !== 'undefined' && !!exports.target.chrome.devtools;\nexports.isFirefox = exports.isBrowser && navigator.userAgent.indexOf('Firefox') > -1;\nexports.isWindows = exports.isBrowser && navigator.platform.indexOf('Win') === 0;\nexports.isMac = exports.isBrowser && navigator.platform === 'MacIntel';\nexports.isLinux = exports.isBrowser && navigator.platform.indexOf('Linux') === 0;\nexports.keys = {\n ctrl: exports.isMac ? '&#8984;' : 'Ctrl',\n shift: 'Shift',\n alt: exports.isMac ? '&#8997;' : 'Alt',\n del: 'Del',\n enter: 'Enter',\n esc: 'Esc'\n};\n\nfunction initEnv(Vue) {\n if (Vue.prototype.hasOwnProperty('$isChrome')) return;\n Object.defineProperties(Vue.prototype, {\n $isChrome: {\n get: () => exports.isChrome\n },\n $isFirefox: {\n get: () => exports.isFirefox\n },\n $isWindows: {\n get: () => exports.isWindows\n },\n $isMac: {\n get: () => exports.isMac\n },\n $isLinux: {\n get: () => exports.isLinux\n },\n $keys: {\n get: () => exports.keys\n }\n });\n if (exports.isWindows) document.body.classList.add('platform-windows');\n if (exports.isMac) document.body.classList.add('platform-mac');\n if (exports.isLinux) document.body.classList.add('platform-linux');\n}\n\nexports.initEnv = initEnv;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYyMTAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWFBLGlCQUFBQSxHQUFZLE9BQU9DLFNBQVAsS0FBcUIsV0FBakM7QUFDQUQsY0FBQUEsR0FBY0Esb0JBQ3ZCRSxNQUR1QixHQUV2QixPQUFPQyxxQkFBUCxLQUFrQixXQUFsQixHQUNFQSxxQkFERixHQUVFLEVBSk87QUFLQUgsZ0JBQUFBLEdBQVcsT0FBT0EsZUFBT0ksTUFBZCxLQUF5QixXQUF6QixJQUF3QyxDQUFDLENBQUNKLGVBQU9JLE1BQVAsQ0FBY0MsUUFBbkU7QUFDQUwsaUJBQUFBLEdBQVlBLHFCQUFhQyxTQUFTLENBQUNLLFNBQVYsQ0FBb0JDLE9BQXBCLENBQTRCLFNBQTVCLElBQXlDLENBQUMsQ0FBbkU7QUFDQVAsaUJBQUFBLEdBQVlBLHFCQUFhQyxTQUFTLENBQUNPLFFBQVYsQ0FBbUJELE9BQW5CLENBQTJCLEtBQTNCLE1BQXNDLENBQS9EO0FBQ0FQLGFBQUFBLEdBQVFBLHFCQUFhQyxTQUFTLENBQUNPLFFBQVYsS0FBdUIsVUFBNUM7QUFDQVIsZUFBQUEsR0FBVUEscUJBQWFDLFNBQVMsQ0FBQ08sUUFBVixDQUFtQkQsT0FBbkIsQ0FBMkIsT0FBM0IsTUFBd0MsQ0FBL0Q7QUFDQVAsWUFBQUEsR0FBTztFQUNsQlMsSUFBSSxFQUFFVCxnQkFBUSxTQUFSLEdBQW9CLE1BRFI7RUFFbEJVLEtBQUssRUFBRSxPQUZXO0VBR2xCQyxHQUFHLEVBQUVYLGdCQUFRLFNBQVIsR0FBb0IsS0FIUDtFQUlsQlksR0FBRyxFQUFFLEtBSmE7RUFLbEJDLEtBQUssRUFBRSxPQUxXO0VBTWxCQyxHQUFHLEVBQUU7QUFOYSxDQUFQOztBQVNiLFNBQWdCQyxPQUFoQixDQUF5QkMsR0FBekIsRUFBNEI7RUFDMUIsSUFBSUEsR0FBRyxDQUFDQyxTQUFKLENBQWNDLGNBQWQsQ0FBNkIsV0FBN0IsQ0FBSixFQUErQztFQUUvQ0MsTUFBTSxDQUFDQyxnQkFBUCxDQUF3QkosR0FBRyxDQUFDQyxTQUE1QixFQUF1QztJQUNyQ0ksU0FBUyxFQUFFO01BQUVDLEdBQUcsRUFBRSxNQUFNdEI7SUFBYixDQUQwQjtJQUVyQ3VCLFVBQVUsRUFBRTtNQUFFRCxHQUFHLEVBQUUsTUFBTXRCO0lBQWIsQ0FGeUI7SUFHckN3QixVQUFVLEVBQUU7TUFBRUYsR0FBRyxFQUFFLE1BQU10QjtJQUFiLENBSHlCO0lBSXJDeUIsTUFBTSxFQUFFO01BQUVILEdBQUcsRUFBRSxNQUFNdEI7SUFBYixDQUo2QjtJQUtyQzBCLFFBQVEsRUFBRTtNQUFFSixHQUFHLEVBQUUsTUFBTXRCO0lBQWIsQ0FMMkI7SUFNckMyQixLQUFLLEVBQUU7TUFBRUwsR0FBRyxFQUFFLE1BQU10QjtJQUFiO0VBTjhCLENBQXZDO0VBU0EsSUFBSUEsaUJBQUosRUFBZTRCLFFBQVEsQ0FBQ0MsSUFBVCxDQUFjQyxTQUFkLENBQXdCQyxHQUF4QixDQUE0QixrQkFBNUI7RUFDZixJQUFJL0IsYUFBSixFQUFXNEIsUUFBUSxDQUFDQyxJQUFULENBQWNDLFNBQWQsQ0FBd0JDLEdBQXhCLENBQTRCLGNBQTVCO0VBQ1gsSUFBSS9CLGVBQUosRUFBYTRCLFFBQVEsQ0FBQ0MsSUFBVCxDQUFjQyxTQUFkLENBQXdCQyxHQUF4QixDQUE0QixnQkFBNUI7QUFDZDs7QUFmRC9CLGVBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvZW52LnRzPzAxNDciXSwibmFtZXMiOlsiZXhwb3J0cyIsIm5hdmlnYXRvciIsIndpbmRvdyIsImdsb2JhbCIsImNocm9tZSIsImRldnRvb2xzIiwidXNlckFnZW50IiwiaW5kZXhPZiIsInBsYXRmb3JtIiwiY3RybCIsInNoaWZ0IiwiYWx0IiwiZGVsIiwiZW50ZXIiLCJlc2MiLCJpbml0RW52IiwiVnVlIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiJGlzQ2hyb21lIiwiZ2V0IiwiJGlzRmlyZWZveCIsIiRpc1dpbmRvd3MiLCIkaXNNYWMiLCIkaXNMaW51eCIsIiRrZXlzIiwiZG9jdW1lbnQiLCJib2R5IiwiY2xhc3NMaXN0IiwiYWRkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///66210\n")},27146:function(__unused_webpack_module,exports,__webpack_require__){eval('\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n\n if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\n }\n\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\n\n__exportStar(__webpack_require__(79310), exports);\n\n__exportStar(__webpack_require__(47294), exports);\n\n__exportStar(__webpack_require__(79410), exports);\n\n__exportStar(__webpack_require__(38158), exports);\n\n__exportStar(__webpack_require__(66210), exports);\n\n__exportStar(__webpack_require__(12074), exports);\n\n__exportStar(__webpack_require__(86798), exports);\n\n__exportStar(__webpack_require__(29556), exports);\n\n__exportStar(__webpack_require__(423), exports);\n\n__exportStar(__webpack_require__(58561), exports);\n\n__exportStar(__webpack_require__(34723), exports);\n\n__exportStar(__webpack_require__(76203), exports);\n\n__exportStar(__webpack_require__(86283), exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcxNDYuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQUEsYUFBQUEsbUJBQUFBLENBQUFBLEtBQUFBOztBQUNBQSxhQUFBQSxtQkFBQUEsQ0FBQUEsS0FBQUE7O0FBQ0FBLGFBQUFBLG1CQUFBQSxDQUFBQSxLQUFBQTs7QUFDQUEsYUFBQUEsbUJBQUFBLENBQUFBLEtBQUFBOztBQUNBQSxhQUFBQSxtQkFBQUEsQ0FBQUEsS0FBQUE7O0FBQ0FBLGFBQUFBLG1CQUFBQSxDQUFBQSxLQUFBQTs7QUFDQUEsYUFBQUEsbUJBQUFBLENBQUFBLEtBQUFBOztBQUNBQSxhQUFBQSxtQkFBQUEsQ0FBQUEsS0FBQUE7O0FBQ0FBLGFBQUFBLG1CQUFBQSxDQUFBQSxHQUFBQTs7QUFDQUEsYUFBQUEsbUJBQUFBLENBQUFBLEtBQUFBOztBQUNBQSxhQUFBQSxtQkFBQUEsQ0FBQUEsS0FBQUE7O0FBQ0FBLGFBQUFBLG1CQUFBQSxDQUFBQSxLQUFBQTs7QUFDQUEsYUFBQUEsbUJBQUFBLENBQUFBLEtBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvaW5kZXgudHM/NmYzNyJdLCJuYW1lcyI6WyJfX2V4cG9ydFN0YXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27146\n')},12074:(__unused_webpack_module,exports,__webpack_require__)=>{eval('\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.setPluginPermission = exports.hasPluginPermission = exports.PluginPermission = void 0;\n\nconst shared_data_1 = __webpack_require__(29556);\n\nvar PluginPermission;\n\n(function (PluginPermission) {\n PluginPermission["ENABLED"] = "enabled";\n PluginPermission["COMPONENTS"] = "components";\n PluginPermission["CUSTOM_INSPECTOR"] = "custom-inspector";\n PluginPermission["TIMELINE"] = "timeline";\n})(PluginPermission = exports.PluginPermission || (exports.PluginPermission = {}));\n\nfunction hasPluginPermission(pluginId, permission) {\n const result = shared_data_1.SharedData.pluginPermissions[`${pluginId}:${permission}`];\n if (result == null) return true;\n return !!result;\n}\n\nexports.hasPluginPermission = hasPluginPermission;\n\nfunction setPluginPermission(pluginId, permission, active) {\n shared_data_1.SharedData.pluginPermissions = { ...shared_data_1.SharedData.pluginPermissions,\n [`${pluginId}:${permission}`]: active\n };\n}\n\nexports.setPluginPermission = setPluginPermission;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIwNzQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBLElBQVlBLGdCQUFaOztBQUFBLFdBQVlBLGdCQUFaLEVBQTRCO0VBQzFCQTtFQUNBQTtFQUNBQTtFQUNBQTtBQUNELENBTEQsRUFBWUEsZ0JBQWdCLEdBQWhCQyw2QkFBQUEsd0JBQUFBLEdBQWdCLEVBQWhCLENBQVo7O0FBT0EsU0FBZ0JDLG1CQUFoQixDQUFxQ0MsUUFBckMsRUFBdURDLFVBQXZELEVBQW1GO0VBQ2pGLE1BQU1DLE1BQU0sR0FBR0MseUJBQVdDLGlCQUFYLENBQTZCLEdBQUdKLFFBQVEsSUFBSUMsVUFBVSxFQUF0RCxDQUFmO0VBQ0EsSUFBSUMsTUFBTSxJQUFJLElBQWQsRUFBb0IsT0FBTyxJQUFQO0VBQ3BCLE9BQU8sQ0FBQyxDQUFDQSxNQUFUO0FBQ0Q7O0FBSkRKLDJCQUFBQTs7QUFNQSxTQUFnQk8sbUJBQWhCLENBQXFDTCxRQUFyQyxFQUF1REMsVUFBdkQsRUFBcUZLLE1BQXJGLEVBQW9HO0VBQ2xHSCx5QkFBV0MsaUJBQVgsR0FBK0IsRUFDN0IsR0FBR0QseUJBQVdDLGlCQURlO0lBRTdCLENBQUMsR0FBR0osUUFBUSxJQUFJQyxVQUFVLEVBQTFCLEdBQStCSztFQUZGLENBQS9CO0FBSUQ7O0FBTERSLDJCQUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL3BsdWdpbi1wZXJtaXNzaW9ucy50cz9hMzNhIl0sIm5hbWVzIjpbIlBsdWdpblBlcm1pc3Npb24iLCJleHBvcnRzIiwiaGFzUGx1Z2luUGVybWlzc2lvbiIsInBsdWdpbklkIiwicGVybWlzc2lvbiIsInJlc3VsdCIsInNoYXJlZF9kYXRhXzEiLCJwbHVnaW5QZXJtaXNzaW9ucyIsInNldFBsdWdpblBlcm1pc3Npb24iLCJhY3RpdmUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///12074\n')},86798:(__unused_webpack_module,exports,__webpack_require__)=>{eval('\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.getPluginDefaultSettings = exports.setPluginSettings = exports.getPluginSettings = void 0;\n\nconst shared_data_1 = __webpack_require__(29556);\n\nfunction getPluginSettings(pluginId, defaultSettings) {\n var _a;\n\n return { ...(defaultSettings !== null && defaultSettings !== void 0 ? defaultSettings : {}),\n ...((_a = shared_data_1.SharedData.pluginSettings[pluginId]) !== null && _a !== void 0 ? _a : {})\n };\n}\n\nexports.getPluginSettings = getPluginSettings;\n\nfunction setPluginSettings(pluginId, settings) {\n shared_data_1.SharedData.pluginSettings = { ...shared_data_1.SharedData.pluginSettings,\n [pluginId]: settings\n };\n}\n\nexports.setPluginSettings = setPluginSettings;\n\nfunction getPluginDefaultSettings(schema) {\n const result = {};\n\n if (schema) {\n for (const id in schema) {\n const item = schema[id];\n result[id] = item.defaultValue;\n }\n }\n\n return result;\n}\n\nexports.getPluginDefaultSettings = getPluginDefaultSettings;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODY3OTguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUdBLFNBQWdCQSxpQkFBaEIsQ0FBZ0ZDLFFBQWhGLEVBQWtHQyxlQUFsRyxFQUE2SDs7O0VBQzNILE9BQU8sRUFDTCxJQUFHQSxlQUFlLFNBQWYsbUJBQWUsV0FBZixxQkFBbUIsRUFBdEIsQ0FESztJQUVMLElBQUcsK0JBQVdDLGNBQVgsQ0FBMEJGLFFBQTFCLE9BQW1DLElBQW5DLElBQW1DRyxhQUFuQyxHQUFtQ0EsRUFBbkMsR0FBdUMsRUFBMUM7RUFGSyxDQUFQO0FBSUQ7O0FBTERDLHlCQUFBQTs7QUFPQSxTQUFnQkMsaUJBQWhCLENBQWdGTCxRQUFoRixFQUFrR00sUUFBbEcsRUFBcUg7RUFDbkhDLHlCQUFXTCxjQUFYLEdBQTRCLEVBQzFCLEdBQUdLLHlCQUFXTCxjQURZO0lBRTFCLENBQUNGLFFBQUQsR0FBWU07RUFGYyxDQUE1QjtBQUlEOztBQUxERix5QkFBQUE7O0FBT0EsU0FBZ0JJLHdCQUFoQixDQUF1RkMsTUFBdkYsRUFBaUk7RUFDL0gsTUFBTUMsTUFBTSxHQUF3QixFQUFwQzs7RUFDQSxJQUFJRCxNQUFKLEVBQVk7SUFDVixLQUFLLE1BQU1FLEVBQVgsSUFBaUJGLE1BQWpCLEVBQXlCO01BQ3ZCLE1BQU1HLElBQUksR0FBR0gsTUFBTSxDQUFDRSxFQUFELENBQW5CO01BQ0FELE1BQU0sQ0FBQ0MsRUFBRCxDQUFOLEdBQWFDLElBQUksQ0FBQ0MsWUFBbEI7SUFDRDtFQUNGOztFQUNELE9BQU9ILE1BQVA7QUFDRDs7QUFURE4sZ0NBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvcGx1Z2luLXNldHRpbmdzLnRzPzk5NjEiXSwibmFtZXMiOlsiZ2V0UGx1Z2luU2V0dGluZ3MiLCJwbHVnaW5JZCIsImRlZmF1bHRTZXR0aW5ncyIsInBsdWdpblNldHRpbmdzIiwiX2EiLCJleHBvcnRzIiwic2V0UGx1Z2luU2V0dGluZ3MiLCJzZXR0aW5ncyIsInNoYXJlZF9kYXRhXzEiLCJnZXRQbHVnaW5EZWZhdWx0U2V0dGluZ3MiLCJzY2hlbWEiLCJyZXN1bHQiLCJpZCIsIml0ZW0iLCJkZWZhdWx0VmFsdWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///86798\n')},86283:(__unused_webpack_module,exports)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.raf = void 0;\nlet pendingCallbacks = [];\n/**\n * requestAnimationFrame that also works on non-browser environments like Node.\n */\n\nexports.raf = typeof requestAnimationFrame === 'function' ? requestAnimationFrame : fn => {\n if (!pendingCallbacks.length) {\n setImmediate(() => {\n const now = performance.now();\n const cbs = pendingCallbacks; // in case cbs add new callbacks\n\n pendingCallbacks = [];\n cbs.forEach(cb => cb(now));\n });\n }\n\n pendingCallbacks.push(fn);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYyODMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBSUEsZ0JBQWdCLEdBQWtDLEVBQXREO0FBRUE7Ozs7QUFHYUMsV0FBQUEsR0FBTSxPQUFPQyxxQkFBUCxLQUFpQyxVQUFqQyxHQUNmQSxxQkFEZSxHQUVkQyxFQUFELElBQStCO0VBQzdCLElBQUksQ0FBQ0gsZ0JBQWdCLENBQUNJLE1BQXRCLEVBQThCO0lBQzVCQyxZQUFZLENBQUMsTUFBSztNQUNoQixNQUFNQyxHQUFHLEdBQUdDLFdBQVcsQ0FBQ0QsR0FBWixFQUFaO01BQ0EsTUFBTUUsR0FBRyxHQUFHUixnQkFBWixDQUZnQixDQUdoQjs7TUFDQUEsZ0JBQWdCLEdBQUcsRUFBbkI7TUFDQVEsR0FBRyxDQUFDQyxPQUFKLENBQVlDLEVBQUUsSUFBSUEsRUFBRSxDQUFDSixHQUFELENBQXBCO0lBQ0QsQ0FOVyxDQUFaO0VBT0Q7O0VBRUROLGdCQUFnQixDQUFDVyxJQUFqQixDQUFzQlIsRUFBdEI7QUFDRCxDQWRRIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvcmFmLnRzP2E3NGYiXSwibmFtZXMiOlsicGVuZGluZ0NhbGxiYWNrcyIsImV4cG9ydHMiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJmbiIsImxlbmd0aCIsInNldEltbWVkaWF0ZSIsIm5vdyIsInBlcmZvcm1hbmNlIiwiY2JzIiwiZm9yRWFjaCIsImNiIiwicHVzaCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///86283\n")},29556:(__unused_webpack_module,exports,__webpack_require__)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SharedData = exports.watchSharedData = exports.destroySharedData = exports.onSharedDataInit = exports.initSharedData = void 0;\n\nconst storage_1 = __webpack_require__(58561);\n\nconst env_1 = __webpack_require__(66210); // Initial state\n\n\nconst internalSharedData = {\n openInEditorHost: '/',\n componentNameStyle: 'class',\n theme: 'auto',\n displayDensity: 'low',\n timeFormat: 'default',\n recordVuex: true,\n cacheVuexSnapshotsEvery: 50,\n cacheVuexSnapshotsLimit: 10,\n snapshotLoading: false,\n componentEventsEnabled: true,\n performanceMonitoringEnabled: true,\n editableProps: false,\n logDetected: true,\n vuexNewBackend: false,\n vuexAutoload: false,\n vuexGroupGettersByModule: true,\n showMenuScrollTip: true,\n timelineTimeGrid: true,\n timelineScreenshots: true,\n menuStepScrolling: env_1.isMac,\n pluginPermissions: {},\n pluginSettings: {},\n pageConfig: {},\n legacyApps: false,\n trackUpdates: true,\n flashUpdates: false,\n debugInfo: false,\n isBrowser: env_1.isBrowser\n};\nconst persisted = ['componentNameStyle', 'theme', 'displayDensity', 'recordVuex', 'editableProps', 'logDetected', 'vuexNewBackend', 'vuexAutoload', 'vuexGroupGettersByModule', 'timeFormat', 'showMenuScrollTip', 'timelineTimeGrid', 'timelineScreenshots', 'menuStepScrolling', 'pluginPermissions', 'pluginSettings', 'performanceMonitoringEnabled', 'componentEventsEnabled', 'trackUpdates', 'flashUpdates', 'debugInfo'];\nconst storageVersion = '6.0.0-alpha.1'; // ---- INTERNALS ---- //\n\nlet bridge; // List of fields to persist to storage (disabled if 'false')\n// This should be unique to each shared data client to prevent conflicts\n\nlet persist = false;\nlet data;\nlet initRetryInterval;\nlet initRetryCount = 0;\nconst initCbs = [];\n\nfunction initSharedData(params) {\n return new Promise(resolve => {\n // Mandatory params\n bridge = params.bridge;\n persist = !!params.persist;\n\n if (persist) {\n if (false) {} // Load persisted fields\n\n\n persisted.forEach(key => {\n const value = (0, storage_1.getStorage)(`vue-devtools-${storageVersion}:shared-data:${key}`);\n\n if (value !== null) {\n internalSharedData[key] = value;\n }\n });\n bridge.on('shared-data:load', () => {\n // Send all fields\n Object.keys(internalSharedData).forEach(key => {\n sendValue(key, internalSharedData[key]);\n });\n bridge.send('shared-data:load-complete');\n });\n bridge.on('shared-data:init-complete', () => {\n if (false) {}\n\n clearInterval(initRetryInterval);\n resolve();\n });\n bridge.send('shared-data:master-init-waiting'); // In case backend init is executed after frontend\n\n bridge.on('shared-data:minion-init-waiting', () => {\n bridge.send('shared-data:master-init-waiting');\n });\n initRetryCount = 0;\n clearInterval(initRetryInterval);\n initRetryInterval = setInterval(() => {\n if (false) {}\n\n bridge.send('shared-data:master-init-waiting');\n initRetryCount++;\n\n if (initRetryCount > 30) {\n clearInterval(initRetryInterval);\n console.error('[shared data] Master init failed');\n }\n }, 2000);\n } else {\n if (false) {}\n\n bridge.on('shared-data:master-init-waiting', () => {\n if (false) {} // Load all persisted shared data\n\n\n bridge.send('shared-data:load');\n bridge.once('shared-data:load-complete', () => {\n if (false) {}\n\n bridge.send('shared-data:init-complete');\n resolve();\n });\n });\n bridge.send('shared-data:minion-init-waiting');\n }\n\n data = { ...internalSharedData\n };\n\n if (params.Vue) {\n data = params.Vue.observable(data);\n } // Update value from other shared data clients\n\n\n bridge.on('shared-data:set', ({\n key,\n value\n }) => {\n setValue(key, value);\n });\n initCbs.forEach(cb => cb());\n });\n}\n\nexports.initSharedData = initSharedData;\n\nfunction onSharedDataInit(cb) {\n initCbs.push(cb);\n return () => {\n const index = initCbs.indexOf(cb);\n if (index !== -1) initCbs.splice(index, 1);\n };\n}\n\nexports.onSharedDataInit = onSharedDataInit;\n\nfunction destroySharedData() {\n bridge.removeAllListeners('shared-data:set');\n watchers = {};\n}\n\nexports.destroySharedData = destroySharedData;\nlet watchers = {};\n\nfunction setValue(key, value) {\n // Storage\n if (persist && persisted.includes(key)) {\n (0, storage_1.setStorage)(`vue-devtools-${storageVersion}:shared-data:${key}`, value);\n }\n\n const oldValue = data[key];\n data[key] = value;\n const handlers = watchers[key];\n\n if (handlers) {\n handlers.forEach(h => h(value, oldValue));\n } // Validate Proxy set trap\n\n\n return true;\n}\n\nfunction sendValue(key, value) {\n bridge && bridge.send('shared-data:set', {\n key,\n value\n });\n}\n\nfunction watchSharedData(prop, handler) {\n const list = watchers[prop] || (watchers[prop] = []);\n list.push(handler);\n return () => {\n const index = list.indexOf(handler);\n if (index !== -1) list.splice(index, 1);\n };\n}\n\nexports.watchSharedData = watchSharedData;\nconst proxy = {};\nObject.keys(internalSharedData).forEach(key => {\n Object.defineProperty(proxy, key, {\n configurable: false,\n get: () => data[key],\n set: value => {\n sendValue(key, value);\n setValue(key, value);\n }\n });\n});\nexports.SharedData = proxy;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBSUQ7O0FBVERILHVCQUFBQTtBQVdBLE1BQU1pQixLQUFLLEdBQXVDLEVBQWxEO0FBQ0E3QixNQUFNLENBQUNDLElBQVAsQ0FBWXBELGtCQUFaLEVBQWdDK0MsT0FBaEMsQ0FBd0NDLEdBQUcsSUFBRztFQUM1Q0csTUFBTSxDQUFDOEIsY0FBUCxDQUFzQkQsS0FBdEIsRUFBNkJoQyxHQUE3QixFQUFrQztJQUNoQ2tDLFlBQVksRUFBRSxLQURrQjtJQUVoQ0MsR0FBRyxFQUFFLE1BQU1qRCxJQUFJLENBQUNjLEdBQUQsQ0FGaUI7SUFHaENvQyxHQUFHLEVBQUduQyxLQUFELElBQVU7TUFDYkksU0FBUyxDQUFDTCxHQUFELEVBQU1DLEtBQU4sQ0FBVDtNQUNBWSxRQUFRLENBQUNiLEdBQUQsRUFBTUMsS0FBTixDQUFSO0lBQ0Q7RUFOK0IsQ0FBbEM7QUFRRCxDQVREO0FBV2FjLGtCQUFBQSxHQUFhaUIsS0FBYiIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL3NoYXJlZC1kYXRhLnRzP2QwYmIiXSwibmFtZXMiOlsiaW50ZXJuYWxTaGFyZWREYXRhIiwib3BlbkluRWRpdG9ySG9zdCIsImNvbXBvbmVudE5hbWVTdHlsZSIsInRoZW1lIiwiZGlzcGxheURlbnNpdHkiLCJ0aW1lRm9ybWF0IiwicmVjb3JkVnVleCIsImNhY2hlVnVleFNuYXBzaG90c0V2ZXJ5IiwiY2FjaGVWdWV4U25hcHNob3RzTGltaXQiLCJzbmFwc2hvdExvYWRpbmciLCJjb21wb25lbnRFdmVudHNFbmFibGVkIiwicGVyZm9ybWFuY2VNb25pdG9yaW5nRW5hYmxlZCIsImVkaXRhYmxlUHJvcHMiLCJsb2dEZXRlY3RlZCIsInZ1ZXhOZXdCYWNrZW5kIiwidnVleEF1dG9sb2FkIiwidnVleEdyb3VwR2V0dGVyc0J5TW9kdWxlIiwic2hvd01lbnVTY3JvbGxUaXAiLCJ0aW1lbGluZVRpbWVHcmlkIiwidGltZWxpbmVTY3JlZW5zaG90cyIsIm1lbnVTdGVwU2Nyb2xsaW5nIiwiZW52XzEiLCJwbHVnaW5QZXJtaXNzaW9ucyIsInBsdWdpblNldHRpbmdzIiwicGFnZUNvbmZpZyIsImxlZ2FjeUFwcHMiLCJ0cmFja1VwZGF0ZXMiLCJmbGFzaFVwZGF0ZXMiLCJkZWJ1Z0luZm8iLCJpc0Jyb3dzZXIiLCJwZXJzaXN0ZWQiLCJzdG9yYWdlVmVyc2lvbiIsImJyaWRnZSIsInBlcnNpc3QiLCJkYXRhIiwiaW5pdFJldHJ5SW50ZXJ2YWwiLCJpbml0UmV0cnlDb3VudCIsImluaXRDYnMiLCJpbml0U2hhcmVkRGF0YSIsInBhcmFtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSIsImxvZyIsImZvckVhY2giLCJrZXkiLCJ2YWx1ZSIsIm9uIiwiT2JqZWN0Iiwia2V5cyIsInNlbmRWYWx1ZSIsInNlbmQiLCJjbGVhckludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJlcnJvciIsIm9uY2UiLCJWdWUiLCJvYnNlcnZhYmxlIiwic2V0VmFsdWUiLCJjYiIsImV4cG9ydHMiLCJvblNoYXJlZERhdGFJbml0IiwicHVzaCIsImluZGV4IiwiaW5kZXhPZiIsInNwbGljZSIsImRlc3Ryb3lTaGFyZWREYXRhIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwid2F0Y2hlcnMiLCJpbmNsdWRlcyIsIm9sZFZhbHVlIiwiaGFuZGxlcnMiLCJoIiwid2F0Y2hTaGFyZWREYXRhIiwicHJvcCIsImhhbmRsZXIiLCJsaXN0IiwicHJveHkiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImdldCIsInNldCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///29556\n")},423:(Q,B)=>{Object.defineProperty(B,"__esModule",{value:!0})},58561:(__unused_webpack_module,exports,__webpack_require__)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.clearStorage = exports.removeStorage = exports.setStorage = exports.getStorage = exports.initStorage = void 0;\n\nconst env_1 = __webpack_require__(66210); // If we can, we use the browser extension API to store data\n// it's async though, so we synchronize changes from an intermediate\n// storageData object\n\n\nconst useStorage = typeof env_1.target.chrome !== 'undefined' && typeof env_1.target.chrome.storage !== 'undefined';\nlet storageData = null;\n\nfunction initStorage() {\n return new Promise(resolve => {\n if (useStorage) {\n env_1.target.chrome.storage.local.get(null, result => {\n storageData = result;\n resolve();\n });\n } else {\n storageData = {};\n resolve();\n }\n });\n}\n\nexports.initStorage = initStorage;\n\nfunction getStorage(key, defaultValue = null) {\n checkStorage();\n\n if (useStorage) {\n return getDefaultValue(storageData[key], defaultValue);\n } else {\n try {\n return getDefaultValue(JSON.parse(localStorage.getItem(key)), defaultValue);\n } catch (e) {}\n }\n}\n\nexports.getStorage = getStorage;\n\nfunction setStorage(key, val) {\n checkStorage();\n\n if (useStorage) {\n storageData[key] = val;\n env_1.target.chrome.storage.local.set({\n [key]: val\n });\n } else {\n try {\n localStorage.setItem(key, JSON.stringify(val));\n } catch (e) {}\n }\n}\n\nexports.setStorage = setStorage;\n\nfunction removeStorage(key) {\n checkStorage();\n\n if (useStorage) {\n delete storageData[key];\n env_1.target.chrome.storage.local.remove([key]);\n } else {\n try {\n localStorage.removeItem(key);\n } catch (e) {}\n }\n}\n\nexports.removeStorage = removeStorage;\n\nfunction clearStorage() {\n checkStorage();\n\n if (useStorage) {\n storageData = {};\n env_1.target.chrome.storage.local.clear();\n } else {\n try {\n localStorage.clear();\n } catch (e) {}\n }\n}\n\nexports.clearStorage = clearStorage;\n\nfunction checkStorage() {\n if (!storageData) {\n throw new Error('Storage wasn\\'t initialized with \\'init()\\'');\n }\n}\n\nfunction getDefaultValue(value, defaultValue) {\n if (value == null) {\n return defaultValue;\n }\n\n return value;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFBSSxDQUFDWCxXQUFMLEVBQWtCO0lBQ2hCLE1BQU0sSUFBSTRCLEtBQUosQ0FBVSw2Q0FBVixDQUFOO0VBQ0Q7QUFDRjs7QUFFRCxTQUFTaEIsZUFBVCxDQUEwQmlCLEtBQTFCLEVBQWlDbkIsWUFBakMsRUFBNkM7RUFDM0MsSUFBSW1CLEtBQUssSUFBSSxJQUFiLEVBQW1CO0lBQ2pCLE9BQU9uQixZQUFQO0VBQ0Q7O0VBQ0QsT0FBT21CLEtBQVA7QUFDRCIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL3N0b3JhZ2UudHM/NTMyZiJdLCJuYW1lcyI6WyJ1c2VTdG9yYWdlIiwiZW52XzEiLCJjaHJvbWUiLCJzdG9yYWdlIiwic3RvcmFnZURhdGEiLCJpbml0U3RvcmFnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwibG9jYWwiLCJnZXQiLCJyZXN1bHQiLCJleHBvcnRzIiwiZ2V0U3RvcmFnZSIsImtleSIsImRlZmF1bHRWYWx1ZSIsImNoZWNrU3RvcmFnZSIsImdldERlZmF1bHRWYWx1ZSIsIkpTT04iLCJwYXJzZSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJlIiwic2V0U3RvcmFnZSIsInZhbCIsInNldCIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJyZW1vdmVTdG9yYWdlIiwicmVtb3ZlIiwicmVtb3ZlSXRlbSIsImNsZWFyU3RvcmFnZSIsImNsZWFyIiwiRXJyb3IiLCJ2YWx1ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58561\n")},34723:(__unused_webpack_module,exports)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.stringifyStrictCircularAutoChunks = exports.parseCircularAutoChunks = exports.stringifyCircularAutoChunks = void 0;\nconst MAX_SERIALIZED_SIZE = 512 * 1024; // 1MB\n\nfunction encode(data, replacer, list, seen) {\n let stored, key, value, i, l;\n const seenIndex = seen.get(data);\n\n if (seenIndex != null) {\n return seenIndex;\n }\n\n const index = list.length;\n const proto = Object.prototype.toString.call(data);\n\n if (proto === '[object Object]') {\n stored = {};\n seen.set(data, index);\n list.push(stored);\n const keys = Object.keys(data);\n\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n value = data[key];\n if (replacer) value = replacer.call(data, key, value);\n stored[key] = encode(value, replacer, list, seen);\n }\n } else if (proto === '[object Array]') {\n stored = [];\n seen.set(data, index);\n list.push(stored);\n\n for (i = 0, l = data.length; i < l; i++) {\n value = data[i];\n if (replacer) value = replacer.call(data, i, value);\n stored[i] = encode(value, replacer, list, seen);\n }\n } else {\n list.push(data);\n }\n\n return index;\n}\n\nfunction decode(list, reviver) {\n let i = list.length;\n let j, k, data, key, value, proto;\n\n while (i--) {\n data = list[i];\n proto = Object.prototype.toString.call(data);\n\n if (proto === '[object Object]') {\n const keys = Object.keys(data);\n\n for (j = 0, k = keys.length; j < k; j++) {\n key = keys[j];\n value = list[data[key]];\n if (reviver) value = reviver.call(data, key, value);\n data[key] = value;\n }\n } else if (proto === '[object Array]') {\n for (j = 0, k = data.length; j < k; j++) {\n value = list[data[j]];\n if (reviver) value = reviver.call(data, j, value);\n data[j] = value;\n }\n }\n }\n}\n\nfunction stringifyCircularAutoChunks(data, replacer = null, space = null) {\n let result;\n\n try {\n result = arguments.length === 1 ? JSON.stringify(data) // @ts-ignore\n : JSON.stringify(data, replacer, space);\n } catch (e) {\n result = stringifyStrictCircularAutoChunks(data, replacer, space);\n }\n\n if (result.length > MAX_SERIALIZED_SIZE) {\n const chunkCount = Math.ceil(result.length / MAX_SERIALIZED_SIZE);\n const chunks = [];\n\n for (let i = 0; i < chunkCount; i++) {\n chunks.push(result.slice(i * MAX_SERIALIZED_SIZE, (i + 1) * MAX_SERIALIZED_SIZE));\n }\n\n return chunks;\n }\n\n return result;\n}\n\nexports.stringifyCircularAutoChunks = stringifyCircularAutoChunks;\n\nfunction parseCircularAutoChunks(data, reviver = null) {\n if (Array.isArray(data)) {\n data = data.join('');\n }\n\n const hasCircular = /^\\s/.test(data);\n\n if (!hasCircular) {\n return arguments.length === 1 ? JSON.parse(data) // @ts-ignore\n : JSON.parse(data, reviver);\n } else {\n const list = JSON.parse(data);\n decode(list, reviver);\n return list[0];\n }\n}\n\nexports.parseCircularAutoChunks = parseCircularAutoChunks;\n\nfunction stringifyStrictCircularAutoChunks(data, replacer = null, space = null) {\n const list = [];\n encode(data, replacer, list, new Map());\n return space ? ' ' + JSON.stringify(list, null, space) : ' ' + JSON.stringify(list);\n}\n\nexports.stringifyStrictCircularAutoChunks = stringifyStrictCircularAutoChunks;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQ3MjMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsTUFBTUEsbUJBQW1CLEdBQUcsTUFBTSxJQUFsQyxDLENBQXVDOztBQUV2QyxTQUFTQyxNQUFULENBQWlCQyxJQUFqQixFQUF1QkMsUUFBdkIsRUFBaUNDLElBQWpDLEVBQXVDQyxJQUF2QyxFQUEyQztFQUN6QyxJQUFJQyxNQUFKLEVBQVlDLEdBQVosRUFBaUJDLEtBQWpCLEVBQXdCQyxDQUF4QixFQUEyQkMsQ0FBM0I7RUFDQSxNQUFNQyxTQUFTLEdBQUdOLElBQUksQ0FBQ08sR0FBTCxDQUFTVixJQUFULENBQWxCOztFQUNBLElBQUlTLFNBQVMsSUFBSSxJQUFqQixFQUF1QjtJQUNyQixPQUFPQSxTQUFQO0VBQ0Q7O0VBQ0QsTUFBTUUsS0FBSyxHQUFHVCxJQUFJLENBQUNVLE1BQW5CO0VBQ0EsTUFBTUMsS0FBSyxHQUFHQyxNQUFNLENBQUNDLFNBQVAsQ0FBaUJDLFFBQWpCLENBQTBCQyxJQUExQixDQUErQmpCLElBQS9CLENBQWQ7O0VBQ0EsSUFBSWEsS0FBSyxLQUFLLGlCQUFkLEVBQWlDO0lBQy9CVCxNQUFNLEdBQUcsRUFBVDtJQUNBRCxJQUFJLENBQUNlLEdBQUwsQ0FBU2xCLElBQVQsRUFBZVcsS0FBZjtJQUNBVCxJQUFJLENBQUNpQixJQUFMLENBQVVmLE1BQVY7SUFDQSxNQUFNZ0IsSUFBSSxHQUFHTixNQUFNLENBQUNNLElBQVAsQ0FBWXBCLElBQVosQ0FBYjs7SUFDQSxLQUFLTyxDQUFDLEdBQUcsQ0FBSixFQUFPQyxDQUFDLEdBQUdZLElBQUksQ0FBQ1IsTUFBckIsRUFBNkJMLENBQUMsR0FBR0MsQ0FBakMsRUFBb0NELENBQUMsRUFBckMsRUFBeUM7TUFDdkNGLEdBQUcsR0FBR2UsSUFBSSxDQUFDYixDQUFELENBQVY7TUFDQUQsS0FBSyxHQUFHTixJQUFJLENBQUNLLEdBQUQsQ0FBWjtNQUNBLElBQUlKLFFBQUosRUFBY0ssS0FBSyxHQUFHTCxRQUFRLENBQUNnQixJQUFULENBQWNqQixJQUFkLEVBQW9CSyxHQUFwQixFQUF5QkMsS0FBekIsQ0FBUjtNQUNkRixNQUFNLENBQUNDLEdBQUQsQ0FBTixHQUFjTixNQUFNLENBQUNPLEtBQUQsRUFBUUwsUUFBUixFQUFrQkMsSUFBbEIsRUFBd0JDLElBQXhCLENBQXBCO0lBQ0Q7RUFDRixDQVhELE1BV08sSUFBSVUsS0FBSyxLQUFLLGdCQUFkLEVBQWdDO0lBQ3JDVCxNQUFNLEdBQUcsRUFBVDtJQUNBRCxJQUFJLENBQUNlLEdBQUwsQ0FBU2xCLElBQVQsRUFBZVcsS0FBZjtJQUNBVCxJQUFJLENBQUNpQixJQUFMLENBQVVmLE1BQVY7O0lBQ0EsS0FBS0csQ0FBQyxHQUFHLENBQUosRUFBT0MsQ0FBQyxHQUFHUixJQUFJLENBQUNZLE1BQXJCLEVBQTZCTCxDQUFDLEdBQUdDLENBQWpDLEVBQW9DRCxDQUFDLEVBQXJDLEVBQXlDO01BQ3ZDRCxLQUFLLEdBQUdOLElBQUksQ0FBQ08sQ0FBRCxDQUFaO01BQ0EsSUFBSU4sUUFBSixFQUFjSyxLQUFLLEdBQUdMLFFBQVEsQ0FBQ2dCLElBQVQsQ0FBY2pCLElBQWQsRUFBb0JPLENBQXBCLEVBQXVCRCxLQUF2QixDQUFSO01BQ2RGLE1BQU0sQ0FBQ0csQ0FBRCxDQUFOLEdBQVlSLE1BQU0sQ0FBQ08sS0FBRCxFQUFRTCxRQUFSLEVBQWtCQyxJQUFsQixFQUF3QkMsSUFBeEIsQ0FBbEI7SUFDRDtFQUNGLENBVE0sTUFTQTtJQUNMRCxJQUFJLENBQUNpQixJQUFMLENBQVVuQixJQUFWO0VBQ0Q7O0VBQ0QsT0FBT1csS0FBUDtBQUNEOztBQUVELFNBQVNVLE1BQVQsQ0FBaUJuQixJQUFqQixFQUF1Qm9CLE9BQXZCLEVBQThCO0VBQzVCLElBQUlmLENBQUMsR0FBR0wsSUFBSSxDQUFDVSxNQUFiO0VBQ0EsSUFBSVcsQ0FBSixFQUFPQyxDQUFQLEVBQVV4QixJQUFWLEVBQWdCSyxHQUFoQixFQUFxQkMsS0FBckIsRUFBNEJPLEtBQTVCOztFQUNBLE9BQU9OLENBQUMsRUFBUixFQUFZO0lBQ1ZQLElBQUksR0FBR0UsSUFBSSxDQUFDSyxDQUFELENBQVg7SUFDQU0sS0FBSyxHQUFHQyxNQUFNLENBQUNDLFNBQVAsQ0FBaUJDLFFBQWpCLENBQTBCQyxJQUExQixDQUErQmpCLElBQS9CLENBQVI7O0lBQ0EsSUFBSWEsS0FBSyxLQUFLLGlCQUFkLEVBQWlDO01BQy9CLE1BQU1PLElBQUksR0FBR04sTUFBTSxDQUFDTSxJQUFQLENBQVlwQixJQUFaLENBQWI7O01BQ0EsS0FBS3VCLENBQUMsR0FBRyxDQUFKLEVBQU9DLENBQUMsR0FBR0osSUFBSSxDQUFDUixNQUFyQixFQUE2QlcsQ0FBQyxHQUFHQyxDQUFqQyxFQUFvQ0QsQ0FBQyxFQUFyQyxFQUF5QztRQUN2Q2xCLEdBQUcsR0FBR2UsSUFBSSxDQUFDRyxDQUFELENBQVY7UUFDQWpCLEtBQUssR0FBR0osSUFBSSxDQUFDRixJQUFJLENBQUNLLEdBQUQsQ0FBTCxDQUFaO1FBQ0EsSUFBSWlCLE9BQUosRUFBYWhCLEtBQUssR0FBR2dCLE9BQU8sQ0FBQ0wsSUFBUixDQUFhakIsSUFBYixFQUFtQkssR0FBbkIsRUFBd0JDLEtBQXhCLENBQVI7UUFDYk4sSUFBSSxDQUFDSyxHQUFELENBQUosR0FBWUMsS0FBWjtNQUNEO0lBQ0YsQ0FSRCxNQVFPLElBQUlPLEtBQUssS0FBSyxnQkFBZCxFQUFnQztNQUNyQyxLQUFLVSxDQUFDLEdBQUcsQ0FBSixFQUFPQyxDQUFDLEdBQUd4QixJQUFJLENBQUNZLE1BQXJCLEVBQTZCVyxDQUFDLEdBQUdDLENBQWpDLEVBQW9DRCxDQUFDLEVBQXJDLEVBQXlDO1FBQ3ZDakIsS0FBSyxHQUFHSixJQUFJLENBQUNGLElBQUksQ0FBQ3VCLENBQUQsQ0FBTCxDQUFaO1FBQ0EsSUFBSUQsT0FBSixFQUFhaEIsS0FBSyxHQUFHZ0IsT0FBTyxDQUFDTCxJQUFSLENBQWFqQixJQUFiLEVBQW1CdUIsQ0FBbkIsRUFBc0JqQixLQUF0QixDQUFSO1FBQ2JOLElBQUksQ0FBQ3VCLENBQUQsQ0FBSixHQUFVakIsS0FBVjtNQUNEO0lBQ0Y7RUFDRjtBQUNGOztBQUVELFNBQWdCbUIsMkJBQWhCLENBQTZDekIsSUFBN0MsRUFBd0RDLFdBQXdELElBQWhILEVBQXNIeUIsUUFBZ0IsSUFBdEksRUFBMEk7RUFDeEksSUFBSUMsTUFBSjs7RUFDQSxJQUFJO0lBQ0ZBLE1BQU0sR0FBR0MsU0FBUyxDQUFDaEIsTUFBVixLQUFxQixDQUFyQixHQUNMaUIsSUFBSSxDQUFDQyxTQUFMLENBQWU5QixJQUFmLENBREssQ0FFUDtJQUZPLEVBR0w2QixJQUFJLENBQUNDLFNBQUwsQ0FBZTlCLElBQWYsRUFBcUJDLFFBQXJCLEVBQStCeUIsS0FBL0IsQ0FISjtFQUlELENBTEQsQ0FLRSxPQUFPSyxDQUFQLEVBQVU7SUFDVkosTUFBTSxHQUFHSyxpQ0FBaUMsQ0FBQ2hDLElBQUQsRUFBT0MsUUFBUCxFQUFpQnlCLEtBQWpCLENBQTFDO0VBQ0Q7O0VBQ0QsSUFBSUMsTUFBTSxDQUFDZixNQUFQLEdBQWdCZCxtQkFBcEIsRUFBeUM7SUFDdkMsTUFBTW1DLFVBQVUsR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVSLE1BQU0sQ0FBQ2YsTUFBUCxHQUFnQmQsbUJBQTFCLENBQW5CO0lBQ0EsTUFBTXNDLE1BQU0sR0FBRyxFQUFmOztJQUNBLEtBQUssSUFBSTdCLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcwQixVQUFwQixFQUFnQzFCLENBQUMsRUFBakMsRUFBcUM7TUFDbkM2QixNQUFNLENBQUNqQixJQUFQLENBQVlRLE1BQU0sQ0FBQ1UsS0FBUCxDQUFhOUIsQ0FBQyxHQUFHVCxtQkFBakIsRUFBc0MsQ0FBQ1MsQ0FBQyxHQUFHLENBQUwsSUFBVVQsbUJBQWhELENBQVo7SUFDRDs7SUFDRCxPQUFPc0MsTUFBUDtFQUNEOztFQUNELE9BQU9ULE1BQVA7QUFDRDs7QUFuQkRXLG1DQUFBQTs7QUFxQkEsU0FBZ0JDLHVCQUFoQixDQUF5Q3ZDLElBQXpDLEVBQW9Ec0IsVUFBdUQsSUFBM0csRUFBK0c7RUFDN0csSUFBSWtCLEtBQUssQ0FBQ0MsT0FBTixDQUFjekMsSUFBZCxDQUFKLEVBQXlCO0lBQ3ZCQSxJQUFJLEdBQUdBLElBQUksQ0FBQzBDLElBQUwsQ0FBVSxFQUFWLENBQVA7RUFDRDs7RUFDRCxNQUFNQyxXQUFXLEdBQUcsTUFBTUMsSUFBTixDQUFXNUMsSUFBWCxDQUFwQjs7RUFDQSxJQUFJLENBQUMyQyxXQUFMLEVBQWtCO0lBQ2hCLE9BQU9mLFNBQVMsQ0FBQ2hCLE1BQVYsS0FBcUIsQ0FBckIsR0FDSGlCLElBQUksQ0FBQ2dCLEtBQUwsQ0FBVzdDLElBQVgsQ0FERyxDQUVMO0lBRkssRUFHSDZCLElBQUksQ0FBQ2dCLEtBQUwsQ0FBVzdDLElBQVgsRUFBaUJzQixPQUFqQixDQUhKO0VBSUQsQ0FMRCxNQUtPO0lBQ0wsTUFBTXBCLElBQUksR0FBRzJCLElBQUksQ0FBQ2dCLEtBQUwsQ0FBVzdDLElBQVgsQ0FBYjtJQUNBcUIsTUFBTSxDQUFDbkIsSUFBRCxFQUFPb0IsT0FBUCxDQUFOO0lBQ0EsT0FBT3BCLElBQUksQ0FBQyxDQUFELENBQVg7RUFDRDtBQUNGOztBQWZEb0MsK0JBQUFBOztBQWlCQSxTQUFnQk4saUNBQWhCLENBQW1EaEMsSUFBbkQsRUFBOERDLFdBQXdELElBQXRILEVBQTRIeUIsUUFBZ0IsSUFBNUksRUFBZ0o7RUFDOUksTUFBTXhCLElBQUksR0FBRyxFQUFiO0VBQ0FILE1BQU0sQ0FBQ0MsSUFBRCxFQUFPQyxRQUFQLEVBQWlCQyxJQUFqQixFQUF1QixJQUFJNEMsR0FBSixFQUF2QixDQUFOO0VBQ0EsT0FBT3BCLEtBQUssR0FDUixNQUFNRyxJQUFJLENBQUNDLFNBQUwsQ0FBZTVCLElBQWYsRUFBcUIsSUFBckIsRUFBMkJ3QixLQUEzQixDQURFLEdBRVIsTUFBTUcsSUFBSSxDQUFDQyxTQUFMLENBQWU1QixJQUFmLENBRlY7QUFHRDs7QUFORG9DLHlDQUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL3RyYW5zZmVyLnRzPzg3ZGQiXSwibmFtZXMiOlsiTUFYX1NFUklBTElaRURfU0laRSIsImVuY29kZSIsImRhdGEiLCJyZXBsYWNlciIsImxpc3QiLCJzZWVuIiwic3RvcmVkIiwia2V5IiwidmFsdWUiLCJpIiwibCIsInNlZW5JbmRleCIsImdldCIsImluZGV4IiwibGVuZ3RoIiwicHJvdG8iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJzZXQiLCJwdXNoIiwia2V5cyIsImRlY29kZSIsInJldml2ZXIiLCJqIiwiayIsInN0cmluZ2lmeUNpcmN1bGFyQXV0b0NodW5rcyIsInNwYWNlIiwicmVzdWx0IiwiYXJndW1lbnRzIiwiSlNPTiIsInN0cmluZ2lmeSIsImUiLCJzdHJpbmdpZnlTdHJpY3RDaXJjdWxhckF1dG9DaHVua3MiLCJjaHVua0NvdW50IiwiTWF0aCIsImNlaWwiLCJjaHVua3MiLCJzbGljZSIsImV4cG9ydHMiLCJwYXJzZUNpcmN1bGFyQXV0b0NodW5rcyIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJoYXNDaXJjdWxhciIsInRlc3QiLCJwYXJzZSIsIk1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///34723\n")},76203:function(__unused_webpack_module,exports,__webpack_require__){eval("\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.isEmptyObject = exports.copyToClipboard = exports.escape = exports.openInEditor = exports.focusInput = exports.simpleGet = exports.sortByKey = exports.searchDeepInObject = exports.isPlainObject = exports.revive = exports.parse = exports.getCustomRefDetails = exports.getCustomHTMLElementDetails = exports.getCustomFunctionDetails = exports.getCustomComponentDefinitionDetails = exports.getComponentName = exports.reviveSet = exports.getCustomSetDetails = exports.reviveMap = exports.getCustomMapDetails = exports.stringify = exports.specialTokenToString = exports.MAX_ARRAY_SIZE = exports.MAX_STRING_SIZE = exports.SPECIAL_TOKENS = exports.NAN = exports.NEGATIVE_INFINITY = exports.INFINITY = exports.UNDEFINED = exports.inDoc = exports.getComponentDisplayName = exports.kebabize = exports.camelize = exports.classify = void 0;\n\nconst path_1 = __importDefault(__webpack_require__(21023));\n\nconst transfer_1 = __webpack_require__(34723);\n\nconst backend_1 = __webpack_require__(79310);\n\nconst shared_data_1 = __webpack_require__(29556);\n\nconst env_1 = __webpack_require__(66210);\n\nfunction cached(fn) {\n const cache = Object.create(null);\n return function cachedFn(str) {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n\nconst classifyRE = /(?:^|[-_/])(\\w)/g;\nexports.classify = cached(str => {\n // fix: str.replace may causes '\"replace\" is not a function' exception.\n // This bug may causes the UI 'Component Filter' to not work properly\n // e.g. The type of 'str' is Number.\n // So need cover 'str' to String.\n return str && ('' + str).replace(classifyRE, toUpper);\n});\nconst camelizeRE = /-(\\w)/g;\nexports.camelize = cached(str => {\n return str && str.replace(camelizeRE, toUpper);\n});\nconst kebabizeRE = /([a-z0-9])([A-Z])/g;\nexports.kebabize = cached(str => {\n return str && str.replace(kebabizeRE, (_, lowerCaseCharacter, upperCaseLetter) => {\n return `${lowerCaseCharacter}-${upperCaseLetter}`;\n }).toLowerCase();\n});\n\nfunction toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n}\n\nfunction getComponentDisplayName(originalName, style = 'class') {\n switch (style) {\n case 'class':\n return (0, exports.classify)(originalName);\n\n case 'kebab':\n return (0, exports.kebabize)(originalName);\n\n case 'original':\n default:\n return originalName;\n }\n}\n\nexports.getComponentDisplayName = getComponentDisplayName;\n\nfunction inDoc(node) {\n if (!node) return false;\n const doc = node.ownerDocument.documentElement;\n const parent = node.parentNode;\n return doc === node || doc === parent || !!(parent && parent.nodeType === 1 && doc.contains(parent));\n}\n\nexports.inDoc = inDoc;\n/**\n * Stringify/parse data using CircularJSON.\n */\n\nexports.UNDEFINED = '__vue_devtool_undefined__';\nexports.INFINITY = '__vue_devtool_infinity__';\nexports.NEGATIVE_INFINITY = '__vue_devtool_negative_infinity__';\nexports.NAN = '__vue_devtool_nan__';\nexports.SPECIAL_TOKENS = {\n true: true,\n false: false,\n undefined: exports.UNDEFINED,\n null: null,\n '-Infinity': exports.NEGATIVE_INFINITY,\n Infinity: exports.INFINITY,\n NaN: exports.NAN\n};\nexports.MAX_STRING_SIZE = 10000;\nexports.MAX_ARRAY_SIZE = 5000;\n\nfunction specialTokenToString(value) {\n if (value === null) {\n return 'null';\n } else if (value === exports.UNDEFINED) {\n return 'undefined';\n } else if (value === exports.NAN) {\n return 'NaN';\n } else if (value === exports.INFINITY) {\n return 'Infinity';\n } else if (value === exports.NEGATIVE_INFINITY) {\n return '-Infinity';\n }\n\n return false;\n}\n\nexports.specialTokenToString = specialTokenToString;\n/**\n * Needed to prevent stack overflow\n * while replacing complex objects\n * like components because we create\n * new objects with the CustomValue API\n * (.i.e `{ _custom: { ... } }`)\n */\n\nclass EncodeCache {\n constructor() {\n this.map = new Map();\n }\n /**\n * Returns a result unique to each input data\n * @param {*} data Input data\n * @param {*} factory Function used to create the unique result\n */\n\n\n cache(data, factory) {\n const cached = this.map.get(data);\n\n if (cached) {\n return cached;\n } else {\n const result = factory(data);\n this.map.set(data, result);\n return result;\n }\n }\n\n clear() {\n this.map.clear();\n }\n\n}\n\nconst encodeCache = new EncodeCache();\n\nclass ReviveCache {\n constructor(maxSize) {\n this.maxSize = maxSize;\n this.map = new Map();\n this.index = 0;\n this.size = 0;\n }\n\n cache(value) {\n const currentIndex = this.index;\n this.map.set(currentIndex, value);\n this.size++;\n\n if (this.size > this.maxSize) {\n this.map.delete(currentIndex - this.size);\n this.size--;\n }\n\n this.index++;\n return currentIndex;\n }\n\n read(id) {\n return this.map.get(id);\n }\n\n}\n\nconst reviveCache = new ReviveCache(1000);\nconst replacers = {\n internal: replacerForInternal,\n user: replaceForUser\n};\n\nfunction stringify(data, target = 'internal') {\n // Create a fresh cache for each serialization\n encodeCache.clear();\n return (0, transfer_1.stringifyCircularAutoChunks)(data, replacers[target]);\n}\n\nexports.stringify = stringify;\n\nfunction replacerForInternal(key) {\n var _a; // @ts-ignore\n\n\n const val = this[key];\n const type = typeof val;\n\n if (Array.isArray(val)) {\n const l = val.length;\n\n if (l > exports.MAX_ARRAY_SIZE) {\n return {\n _isArray: true,\n length: l,\n items: val.slice(0, exports.MAX_ARRAY_SIZE)\n };\n }\n\n return val;\n } else if (typeof val === 'string') {\n if (val.length > exports.MAX_STRING_SIZE) {\n return val.substring(0, exports.MAX_STRING_SIZE) + `... (${val.length} total length)`;\n } else {\n return val;\n }\n } else if (type === 'undefined') {\n return exports.UNDEFINED;\n } else if (val === Infinity) {\n return exports.INFINITY;\n } else if (val === -Infinity) {\n return exports.NEGATIVE_INFINITY;\n } else if (type === 'function') {\n return getCustomFunctionDetails(val);\n } else if (type === 'symbol') {\n return `[native Symbol ${Symbol.prototype.toString.call(val)}]`;\n } else if (val !== null && type === 'object') {\n const proto = Object.prototype.toString.call(val);\n\n if (proto === '[object Map]') {\n return encodeCache.cache(val, () => getCustomMapDetails(val));\n } else if (proto === '[object Set]') {\n return encodeCache.cache(val, () => getCustomSetDetails(val));\n } else if (proto === '[object RegExp]') {\n // special handling of native type\n return `[native RegExp ${RegExp.prototype.toString.call(val)}]`;\n } else if (proto === '[object Date]') {\n return `[native Date ${Date.prototype.toString.call(val)}]`;\n } else if (proto === '[object Error]') {\n return `[native Error ${val.message}<>${val.stack}]`;\n } else if (val.state && val._vm) {\n return encodeCache.cache(val, () => (0, backend_1.getCustomStoreDetails)(val));\n } else if (val.constructor && val.constructor.name === 'VueRouter') {\n return encodeCache.cache(val, () => (0, backend_1.getCustomRouterDetails)(val));\n } else if ((0, backend_1.isVueInstance)(val)) {\n return encodeCache.cache(val, () => (0, backend_1.getCustomInstanceDetails)(val));\n } else if (typeof val.render === 'function') {\n return encodeCache.cache(val, () => getCustomComponentDefinitionDetails(val));\n } else if (val.constructor && val.constructor.name === 'VNode') {\n return `[native VNode <${val.tag}>]`;\n } else if (typeof HTMLElement !== 'undefined' && val instanceof HTMLElement) {\n return encodeCache.cache(val, () => getCustomHTMLElementDetails(val));\n } else if (((_a = val.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'Store' && val._wrappedGetters) {\n return `[object Store]`;\n } else if (val.currentRoute) {\n return `[object Router]`;\n }\n\n const customDetails = (0, backend_1.getCustomObjectDetails)(val, proto);\n if (customDetails != null) return customDetails;\n } else if (Number.isNaN(val)) {\n return exports.NAN;\n }\n\n return sanitize(val);\n} // @TODO revive from backend to have more data to the clipboard\n\n\nfunction replaceForUser(key) {\n // @ts-ignore\n let val = this[key];\n const type = typeof val;\n\n if ((val === null || val === void 0 ? void 0 : val._custom) && 'value' in val._custom) {\n val = val._custom.value;\n }\n\n if (type !== 'object') {\n if (val === exports.UNDEFINED) {\n return undefined;\n } else if (val === exports.INFINITY) {\n return Infinity;\n } else if (val === exports.NEGATIVE_INFINITY) {\n return -Infinity;\n } else if (val === exports.NAN) {\n return NaN;\n }\n\n return val;\n }\n\n return sanitize(val);\n}\n\nfunction getCustomMapDetails(val) {\n const list = [];\n val.forEach((value, key) => list.push({\n key,\n value\n }));\n return {\n _custom: {\n type: 'map',\n display: 'Map',\n value: list,\n readOnly: true,\n fields: {\n abstract: true\n }\n }\n };\n}\n\nexports.getCustomMapDetails = getCustomMapDetails;\n\nfunction reviveMap(val) {\n const result = new Map();\n const list = val._custom.value;\n\n for (let i = 0; i < list.length; i++) {\n const {\n key,\n value\n } = list[i];\n result.set(key, revive(value));\n }\n\n return result;\n}\n\nexports.reviveMap = reviveMap;\n\nfunction getCustomSetDetails(val) {\n const list = Array.from(val);\n return {\n _custom: {\n type: 'set',\n display: `Set[${list.length}]`,\n value: list,\n readOnly: true\n }\n };\n}\n\nexports.getCustomSetDetails = getCustomSetDetails;\n\nfunction reviveSet(val) {\n const result = new Set();\n const list = val._custom.value;\n\n for (let i = 0; i < list.length; i++) {\n const value = list[i];\n result.add(revive(value));\n }\n\n return result;\n}\n\nexports.reviveSet = reviveSet; // Use a custom basename functions instead of the shimed version\n// because it doesn't work on Windows\n\nfunction basename(filename, ext) {\n return path_1.default.basename(filename.replace(/^[a-zA-Z]:/, '').replace(/\\\\/g, '/'), ext);\n}\n\nfunction getComponentName(options) {\n const name = options.displayName || options.name || options._componentTag;\n\n if (name) {\n return name;\n }\n\n const file = options.__file; // injected by vue-loader\n\n if (file) {\n return (0, exports.classify)(basename(file, '.vue'));\n }\n}\n\nexports.getComponentName = getComponentName;\n\nfunction getCustomComponentDefinitionDetails(def) {\n let display = getComponentName(def);\n\n if (display) {\n if (def.name && def.__file) {\n display += ` <span>(${def.__file})</span>`;\n }\n } else {\n display = '<i>Unknown Component</i>';\n }\n\n return {\n _custom: {\n type: 'component-definition',\n display,\n tooltip: 'Component definition',\n ...(def.__file ? {\n file: def.__file\n } : {})\n }\n };\n}\n\nexports.getCustomComponentDefinitionDetails = getCustomComponentDefinitionDetails; // eslint-disable-next-line @typescript-eslint/ban-types\n\nfunction getCustomFunctionDetails(func) {\n let string = '';\n let matches = null;\n\n try {\n string = Function.prototype.toString.call(func);\n matches = String.prototype.match.call(string, /\\([\\s\\S]*?\\)/);\n } catch (e) {// Func is probably a Proxy, which can break Function.prototype.toString()\n } // Trim any excess whitespace from the argument string\n\n\n const match = matches && matches[0];\n const args = typeof match === 'string' ? match : '(?)';\n const name = typeof func.name === 'string' ? func.name : '';\n return {\n _custom: {\n type: 'function',\n display: `<span style=\"opacity:.5;\">function</span> ${escape(name)}${args}`,\n tooltip: string.trim() ? `<pre>${string}</pre>` : null,\n _reviveId: reviveCache.cache(func)\n }\n };\n}\n\nexports.getCustomFunctionDetails = getCustomFunctionDetails;\n\nfunction getCustomHTMLElementDetails(value) {\n try {\n return {\n _custom: {\n type: 'HTMLElement',\n display: `<span class=\"opacity-30\">&lt;</span><span class=\"text-blue-500\">${value.tagName.toLowerCase()}</span><span class=\"opacity-30\">&gt;</span>`,\n value: namedNodeMapToObject(value.attributes),\n actions: [{\n icon: 'input',\n tooltip: 'Log element to console',\n action: () => {\n // eslint-disable-next-line no-console\n console.log(value);\n }\n }]\n }\n };\n } catch (e) {\n return {\n _custom: {\n type: 'HTMLElement',\n display: `<span class=\"text-blue-500\">${String(value)}</span>`\n }\n };\n }\n}\n\nexports.getCustomHTMLElementDetails = getCustomHTMLElementDetails;\n\nfunction namedNodeMapToObject(map) {\n const result = {};\n const l = map.length;\n\n for (let i = 0; i < l; i++) {\n const node = map.item(i);\n result[node.name] = node.value;\n }\n\n return result;\n}\n\nfunction getCustomRefDetails(instance, key, ref) {\n let value;\n\n if (Array.isArray(ref)) {\n value = ref.map(r => getCustomRefDetails(instance, key, r)).map(data => data.value);\n } else {\n let name;\n\n if (ref._isVue) {\n name = getComponentName(ref.$options);\n } else {\n name = ref.tagName.toLowerCase();\n }\n\n value = {\n _custom: {\n display: `&lt;${name}` + (ref.id ? ` <span class=\"attr-title\">id</span>=\"${ref.id}\"` : '') + (ref.className ? ` <span class=\"attr-title\">class</span>=\"${ref.className}\"` : '') + '&gt;',\n uid: instance.__VUE_DEVTOOLS_UID__,\n type: 'reference'\n }\n };\n }\n\n return {\n type: '$refs',\n key: key,\n value,\n editable: false\n };\n}\n\nexports.getCustomRefDetails = getCustomRefDetails;\n\nfunction parse(data, revive = false) {\n return revive ? (0, transfer_1.parseCircularAutoChunks)(data, reviver) : (0, transfer_1.parseCircularAutoChunks)(data);\n}\n\nexports.parse = parse;\nconst specialTypeRE = /^\\[native (\\w+) (.*?)(<>((.|\\s)*))?\\]$/;\nconst symbolRE = /^\\[native Symbol Symbol\\((.*)\\)\\]$/;\n\nfunction reviver(key, val) {\n return revive(val);\n}\n\nfunction revive(val) {\n if (val === exports.UNDEFINED) {\n return undefined;\n } else if (val === exports.INFINITY) {\n return Infinity;\n } else if (val === exports.NEGATIVE_INFINITY) {\n return -Infinity;\n } else if (val === exports.NAN) {\n return NaN;\n } else if (val && val._custom) {\n const {\n _custom: custom\n } = val;\n\n if (custom.type === 'component') {\n return (0, backend_1.getInstanceMap)().get(custom.id);\n } else if (custom.type === 'map') {\n return reviveMap(val);\n } else if (custom.type === 'set') {\n return reviveSet(val);\n } else if (custom._reviveId) {\n return reviveCache.read(custom._reviveId);\n } else {\n return revive(custom.value);\n }\n } else if (symbolRE.test(val)) {\n const [, string] = symbolRE.exec(val);\n return Symbol.for(string);\n } else if (specialTypeRE.test(val)) {\n const [, type, string,, details] = specialTypeRE.exec(val);\n const result = new env_1.target[type](string);\n\n if (type === 'Error' && details) {\n result.stack = details;\n }\n\n return result;\n } else {\n return val;\n }\n}\n\nexports.revive = revive;\n/**\n * Sanitize data to be posted to the other side.\n * Since the message posted is sent with structured clone,\n * we need to filter out any types that might cause an error.\n *\n * @param {*} data\n * @return {*}\n */\n\nfunction sanitize(data) {\n if (!isPrimitive(data) && !Array.isArray(data) && !isPlainObject(data)) {\n // handle types that will probably cause issues in\n // the structured clone\n return Object.prototype.toString.call(data);\n } else {\n return data;\n }\n}\n\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexports.isPlainObject = isPlainObject;\n\nfunction isPrimitive(data) {\n if (data == null) {\n return true;\n }\n\n const type = typeof data;\n return type === 'string' || type === 'number' || type === 'boolean';\n}\n/**\n * Searches a key or value in the object, with a maximum deepness\n * @param {*} obj Search target\n * @param {string} searchTerm Search string\n * @returns {boolean} Search match\n */\n\n\nfunction searchDeepInObject(obj, searchTerm) {\n const seen = new Map();\n const result = internalSearchObject(obj, searchTerm.toLowerCase(), seen, 0);\n seen.clear();\n return result;\n}\n\nexports.searchDeepInObject = searchDeepInObject;\nconst SEARCH_MAX_DEPTH = 10;\n/**\n * Executes a search on each field of the provided object\n * @param {*} obj Search target\n * @param {string} searchTerm Search string\n * @param {Map<any,boolean>} seen Map containing the search result to prevent stack overflow by walking on the same object multiple times\n * @param {number} depth Deep search depth level, which is capped to prevent performance issues\n * @returns {boolean} Search match\n */\n\nfunction internalSearchObject(obj, searchTerm, seen, depth) {\n if (depth > SEARCH_MAX_DEPTH) {\n return false;\n }\n\n let match = false;\n const keys = Object.keys(obj);\n let key, value;\n\n for (let i = 0; i < keys.length; i++) {\n key = keys[i];\n value = obj[key];\n match = internalSearchCheck(searchTerm, key, value, seen, depth + 1);\n\n if (match) {\n break;\n }\n }\n\n return match;\n}\n/**\n * Executes a search on each value of the provided array\n * @param {*} array Search target\n * @param {string} searchTerm Search string\n * @param {Map<any,boolean>} seen Map containing the search result to prevent stack overflow by walking on the same object multiple times\n * @param {number} depth Deep search depth level, which is capped to prevent performance issues\n * @returns {boolean} Search match\n */\n\n\nfunction internalSearchArray(array, searchTerm, seen, depth) {\n if (depth > SEARCH_MAX_DEPTH) {\n return false;\n }\n\n let match = false;\n let value;\n\n for (let i = 0; i < array.length; i++) {\n value = array[i];\n match = internalSearchCheck(searchTerm, null, value, seen, depth + 1);\n\n if (match) {\n break;\n }\n }\n\n return match;\n}\n/**\n * Checks if the provided field matches the search terms\n * @param {string} searchTerm Search string\n * @param {string} key Field key (null if from array)\n * @param {*} value Field value\n * @param {Map<any,boolean>} seen Map containing the search result to prevent stack overflow by walking on the same object multiple times\n * @param {number} depth Deep search depth level, which is capped to prevent performance issues\n * @returns {boolean} Search match\n */\n\n\nfunction internalSearchCheck(searchTerm, key, value, seen, depth) {\n let match = false;\n let result;\n\n if (key === '_custom') {\n key = value.display;\n value = value.value;\n }\n\n (result = specialTokenToString(value)) && (value = result);\n\n if (key && compare(key, searchTerm)) {\n match = true;\n seen.set(value, true);\n } else if (seen.has(value)) {\n match = seen.get(value);\n } else if (Array.isArray(value)) {\n seen.set(value, null);\n match = internalSearchArray(value, searchTerm, seen, depth);\n seen.set(value, match);\n } else if (isPlainObject(value)) {\n seen.set(value, null);\n match = internalSearchObject(value, searchTerm, seen, depth);\n seen.set(value, match);\n } else if (compare(value, searchTerm)) {\n match = true;\n seen.set(value, true);\n }\n\n return match;\n}\n/**\n * Compares two values\n * @param {*} value Mixed type value that will be cast to string\n * @param {string} searchTerm Search string\n * @returns {boolean} Search match\n */\n\n\nfunction compare(value, searchTerm) {\n return ('' + value).toLowerCase().indexOf(searchTerm) !== -1;\n}\n\nfunction sortByKey(state) {\n return state && state.slice().sort((a, b) => {\n if (a.key < b.key) return -1;\n if (a.key > b.key) return 1;\n return 0;\n });\n}\n\nexports.sortByKey = sortByKey;\n\nfunction simpleGet(object, path) {\n const sections = Array.isArray(path) ? path : path.split('.');\n\n for (let i = 0; i < sections.length; i++) {\n object = object[sections[i]];\n\n if (!object) {\n return undefined;\n }\n }\n\n return object;\n}\n\nexports.simpleGet = simpleGet;\n\nfunction focusInput(el) {\n el.focus();\n el.setSelectionRange(0, el.value.length);\n}\n\nexports.focusInput = focusInput;\n\nfunction openInEditor(file) {\n // Console display\n const fileName = file.replace(/\\\\/g, '\\\\\\\\');\n const src = `fetch('${shared_data_1.SharedData.openInEditorHost}__open-in-editor?file=${encodeURI(file)}').then(response => {\n if (response.ok) {\n console.log('File ${fileName} opened in editor')\n } else {\n const msg = 'Opening component ${fileName} failed'\n const target = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {}\n if (target.__VUE_DEVTOOLS_TOAST__) {\n target.__VUE_DEVTOOLS_TOAST__(msg, 'error')\n } else {\n console.log('%c' + msg, 'color:red')\n }\n console.log('Check the setup of your project, see https://devtools.vuejs.org/guide/open-in-editor.html')\n }\n })`;\n\n if (env_1.isChrome) {\n env_1.target.chrome.devtools.inspectedWindow.eval(src);\n } else {\n // eslint-disable-next-line no-eval\n eval(src);\n }\n}\n\nexports.openInEditor = openInEditor;\nconst ESC = {\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n '&': '&amp;'\n};\n\nfunction escape(s) {\n return s.replace(/[<>\"&]/g, escapeChar);\n}\n\nexports.escape = escape;\n\nfunction escapeChar(a) {\n return ESC[a] || a;\n}\n\nfunction copyToClipboard(state) {\n let text;\n\n if (typeof state !== 'object') {\n text = String(state);\n } else {\n text = stringify(state, 'user');\n } // @TODO navigator.clipboard is buggy in extensions\n\n\n if (typeof document === 'undefined') return;\n const dummyTextArea = document.createElement('textarea');\n dummyTextArea.textContent = text;\n document.body.appendChild(dummyTextArea);\n dummyTextArea.select();\n document.execCommand('copy');\n document.body.removeChild(dummyTextArea);\n}\n\nexports.copyToClipboard = copyToClipboard;\n\nfunction isEmptyObject(obj) {\n return obj === exports.UNDEFINED || !obj || Object.keys(obj).length === 0;\n}\n\nexports.isEmptyObject = isEmptyObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvdXRpbC50cz9hNjQzIl0sIm5hbWVzIjpbImNhY2hlZCIsImZuIiwiY2FjaGUiLCJPYmplY3QiLCJjcmVhdGUiLCJjYWNoZWRGbiIsInN0ciIsImhpdCIsImNsYXNzaWZ5UkUiLCJleHBvcnRzIiwicmVwbGFjZSIsInRvVXBwZXIiLCJjYW1lbGl6ZVJFIiwia2ViYWJpemVSRSIsIl8iLCJsb3dlckNhc2VDaGFyYWN0ZXIiLCJ1cHBlckNhc2VMZXR0ZXIiLCJ0b0xvd2VyQ2FzZSIsImMiLCJ0b1VwcGVyQ2FzZSIsImdldENvbXBvbmVudERpc3BsYXlOYW1lIiwib3JpZ2luYWxOYW1lIiwic3R5bGUiLCJpbkRvYyIsIm5vZGUiLCJkb2MiLCJvd25lckRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwicGFyZW50IiwicGFyZW50Tm9kZSIsIm5vZGVUeXBlIiwiY29udGFpbnMiLCJ0cnVlIiwiZmFsc2UiLCJ1bmRlZmluZWQiLCJudWxsIiwiSW5maW5pdHkiLCJOYU4iLCJzcGVjaWFsVG9rZW5Ub1N0cmluZyIsInZhbHVlIiwiRW5jb2RlQ2FjaGUiLCJjb25zdHJ1Y3RvciIsIm1hcCIsIk1hcCIsImRhdGEiLCJmYWN0b3J5IiwiZ2V0IiwicmVzdWx0Iiwic2V0IiwiY2xlYXIiLCJlbmNvZGVDYWNoZSIsIlJldml2ZUNhY2hlIiwibWF4U2l6ZSIsImluZGV4Iiwic2l6ZSIsImN1cnJlbnRJbmRleCIsImRlbGV0ZSIsInJlYWQiLCJpZCIsInJldml2ZUNhY2hlIiwicmVwbGFjZXJzIiwiaW50ZXJuYWwiLCJyZXBsYWNlckZvckludGVybmFsIiwidXNlciIsInJlcGxhY2VGb3JVc2VyIiwic3RyaW5naWZ5IiwidGFyZ2V0Iiwia2V5IiwidmFsIiwidHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImwiLCJsZW5ndGgiLCJfaXNBcnJheSIsIml0ZW1zIiwic2xpY2UiLCJzdWJzdHJpbmciLCJnZXRDdXN0b21GdW5jdGlvbkRldGFpbHMiLCJTeW1ib2wiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJwcm90byIsImdldEN1c3RvbU1hcERldGFpbHMiLCJnZXRDdXN0b21TZXREZXRhaWxzIiwiUmVnRXhwIiwiRGF0ZSIsIm1lc3NhZ2UiLCJzdGFjayIsInN0YXRlIiwiX3ZtIiwibmFtZSIsInJlbmRlciIsImdldEN1c3RvbUNvbXBvbmVudERlZmluaXRpb25EZXRhaWxzIiwidGFnIiwiSFRNTEVsZW1lbnQiLCJnZXRDdXN0b21IVE1MRWxlbWVudERldGFpbHMiLCJfYSIsIl93cmFwcGVkR2V0dGVycyIsImN1cnJlbnRSb3V0ZSIsImN1c3RvbURldGFpbHMiLCJOdW1iZXIiLCJpc05hTiIsInNhbml0aXplIiwiX2N1c3RvbSIsImxpc3QiLCJmb3JFYWNoIiwicHVzaCIsImRpc3BsYXkiLCJyZWFkT25seSIsImZpZWxkcyIsImFic3RyYWN0IiwicmV2aXZlTWFwIiwiaSIsInJldml2ZSIsImZyb20iLCJyZXZpdmVTZXQiLCJTZXQiLCJhZGQiLCJiYXNlbmFtZSIsImZpbGVuYW1lIiwiZXh0IiwicGF0aF8xIiwiZ2V0Q29tcG9uZW50TmFtZSIsIm9wdGlvbnMiLCJkaXNwbGF5TmFtZSIsIl9jb21wb25lbnRUYWciLCJmaWxlIiwiX19maWxlIiwiZGVmIiwidG9vbHRpcCIsImZ1bmMiLCJzdHJpbmciLCJtYXRjaGVzIiwiRnVuY3Rpb24iLCJTdHJpbmciLCJtYXRjaCIsImUiLCJhcmdzIiwiZXNjYXBlIiwidHJpbSIsIl9yZXZpdmVJZCIsInRhZ05hbWUiLCJuYW1lZE5vZGVNYXBUb09iamVjdCIsImF0dHJpYnV0ZXMiLCJhY3Rpb25zIiwiaWNvbiIsImFjdGlvbiIsImNvbnNvbGUiLCJsb2ciLCJpdGVtIiwiZ2V0Q3VzdG9tUmVmRGV0YWlscyIsImluc3RhbmNlIiwicmVmIiwiciIsIl9pc1Z1ZSIsIiRvcHRpb25zIiwiY2xhc3NOYW1lIiwidWlkIiwiX19WVUVfREVWVE9PTFNfVUlEX18iLCJlZGl0YWJsZSIsInBhcnNlIiwicmV2aXZlciIsInNwZWNpYWxUeXBlUkUiLCJzeW1ib2xSRSIsImN1c3RvbSIsInRlc3QiLCJleGVjIiwiZm9yIiwiZGV0YWlscyIsImVudl8xIiwiaXNQcmltaXRpdmUiLCJpc1BsYWluT2JqZWN0Iiwib2JqIiwic2VhcmNoRGVlcEluT2JqZWN0Iiwic2VhcmNoVGVybSIsInNlZW4iLCJpbnRlcm5hbFNlYXJjaE9iamVjdCIsIlNFQVJDSF9NQVhfREVQVEgiLCJkZXB0aCIsImtleXMiLCJpbnRlcm5hbFNlYXJjaENoZWNrIiwiaW50ZXJuYWxTZWFyY2hBcnJheSIsImFycmF5IiwiY29tcGFyZSIsImhhcyIsImluZGV4T2YiLCJzb3J0QnlLZXkiLCJzb3J0IiwiYSIsImIiLCJzaW1wbGVHZXQiLCJvYmplY3QiLCJwYXRoIiwic2VjdGlvbnMiLCJzcGxpdCIsImZvY3VzSW5wdXQiLCJlbCIsImZvY3VzIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJvcGVuSW5FZGl0b3IiLCJmaWxlTmFtZSIsInNyYyIsInNoYXJlZF9kYXRhXzEiLCJvcGVuSW5FZGl0b3JIb3N0IiwiZW5jb2RlVVJJIiwiY2hyb21lIiwiZGV2dG9vbHMiLCJpbnNwZWN0ZWRXaW5kb3ciLCJldmFsIiwiRVNDIiwicyIsImVzY2FwZUNoYXIiLCJjb3B5VG9DbGlwYm9hcmQiLCJ0ZXh0IiwiZG9jdW1lbnQiLCJkdW1teVRleHRBcmVhIiwiY3JlYXRlRWxlbWVudCIsInRleHRDb250ZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwic2VsZWN0IiwiZXhlY0NvbW1hbmQiLCJyZW1vdmVDaGlsZCIsImlzRW1wdHlPYmplY3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///76203\n")},85628:(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{eval("/* harmony import */ var _back_hook__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6793);\n/* harmony import */ var _vue_devtools_shared_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27146);\n/* harmony import */ var _vue_devtools_shared_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_vue_devtools_shared_utils__WEBPACK_IMPORTED_MODULE_1__);\n\n\n(0,_back_hook__WEBPACK_IMPORTED_MODULE_0__/* .installHook */ .U)(_vue_devtools_shared_utils__WEBPACK_IMPORTED_MODULE_1__.target);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODU2MjguanMiLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQTtBQUVBQSxnRUFBVyxDQUFDQyw4REFBRCxDQUFYIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uL3NyYy9ob29rLmpzPzg3Y2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zdGFsbEhvb2sgfSBmcm9tICdAYmFjay9ob29rJ1xuaW1wb3J0IHsgdGFyZ2V0IH0gZnJvbSAnQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHMnXG5cbmluc3RhbGxIb29rKHRhcmdldClcbiJdLCJuYW1lcyI6WyJpbnN0YWxsSG9vayIsInRhcmdldCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///85628\n")},22699:module=>{eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFFBQVE7QUFDL0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQixPQUFPO0FBQ3pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMseUJBQXlCO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLGdCQUFnQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhEQUE4RCxZQUFZO0FBQzFFO0FBQ0EsOERBQThELFlBQVk7QUFDMUU7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxZQUFZO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vLi4vbm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanM/YWY2YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUiA9IHR5cGVvZiBSZWZsZWN0ID09PSAnb2JqZWN0JyA/IFJlZmxlY3QgOiBudWxsXG52YXIgUmVmbGVjdEFwcGx5ID0gUiAmJiB0eXBlb2YgUi5hcHBseSA9PT0gJ2Z1bmN0aW9uJ1xuICA/IFIuYXBwbHlcbiAgOiBmdW5jdGlvbiBSZWZsZWN0QXBwbHkodGFyZ2V0LCByZWNlaXZlciwgYXJncykge1xuICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbCh0YXJnZXQsIHJlY2VpdmVyLCBhcmdzKTtcbiAgfVxuXG52YXIgUmVmbGVjdE93bktleXNcbmlmIChSICYmIHR5cGVvZiBSLm93bktleXMgPT09ICdmdW5jdGlvbicpIHtcbiAgUmVmbGVjdE93bktleXMgPSBSLm93bktleXNcbn0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICBSZWZsZWN0T3duS2V5cyA9IGZ1bmN0aW9uIFJlZmxlY3RPd25LZXlzKHRhcmdldCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQpXG4gICAgICAuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KSk7XG4gIH07XG59IGVsc2Uge1xuICBSZWZsZWN0T3duS2V5cyA9IGZ1bmN0aW9uIFJlZmxlY3RPd25LZXlzKHRhcmdldCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBQcm9jZXNzRW1pdFdhcm5pbmcod2FybmluZykge1xuICBpZiAoY29uc29sZSAmJiBjb25zb2xlLndhcm4pIGNvbnNvbGUud2Fybih3YXJuaW5nKTtcbn1cblxudmFyIE51bWJlcklzTmFOID0gTnVtYmVyLmlzTmFOIHx8IGZ1bmN0aW9uIE51bWJlcklzTmFOKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgRXZlbnRFbWl0dGVyLmluaXQuY2FsbCh0aGlzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyO1xubW9kdWxlLmV4cG9ydHMub25jZSA9IG9uY2U7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuMTAueFxuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzID0gdW5kZWZpbmVkO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzQ291bnQgPSAwO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuXG4vLyBCeSBkZWZhdWx0IEV2ZW50RW1pdHRlcnMgd2lsbCBwcmludCBhIHdhcm5pbmcgaWYgbW9yZSB0aGFuIDEwIGxpc3RlbmVycyBhcmVcbi8vIGFkZGVkIHRvIGl0LiBUaGlzIGlzIGEgdXNlZnVsIGRlZmF1bHQgd2hpY2ggaGVscHMgZmluZGluZyBtZW1vcnkgbGVha3MuXG52YXIgZGVmYXVsdE1heExpc3RlbmVycyA9IDEwO1xuXG5mdW5jdGlvbiBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKSB7XG4gIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGxpc3RlbmVyKTtcbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnRFbWl0dGVyLCAnZGVmYXVsdE1heExpc3RlbmVycycsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZGVmYXVsdE1heExpc3RlbmVycztcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbihhcmcpIHtcbiAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCB8fCBOdW1iZXJJc05hTihhcmcpKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiZGVmYXVsdE1heExpc3RlbmVyc1wiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcgKyBhcmcgKyAnLicpO1xuICAgIH1cbiAgICBkZWZhdWx0TWF4TGlzdGVuZXJzID0gYXJnO1xuICB9XG59KTtcblxuRXZlbnRFbWl0dGVyLmluaXQgPSBmdW5jdGlvbigpIHtcblxuICBpZiAodGhpcy5fZXZlbnRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHRoaXMuX2V2ZW50cyA9PT0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHMpIHtcbiAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgfVxuXG4gIHRoaXMuX21heExpc3RlbmVycyA9IHRoaXMuX21heExpc3RlbmVycyB8fCB1bmRlZmluZWQ7XG59O1xuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBzZXRNYXhMaXN0ZW5lcnMobikge1xuICBpZiAodHlwZW9mIG4gIT09ICdudW1iZXInIHx8IG4gPCAwIHx8IE51bWJlcklzTmFOKG4pKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcIm5cIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnICsgbiArICcuJyk7XG4gIH1cbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBfZ2V0TWF4TGlzdGVuZXJzKHRoYXQpIHtcbiAgaWYgKHRoYXQuX21heExpc3RlbmVycyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgcmV0dXJuIHRoYXQuX21heExpc3RlbmVycztcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBnZXRNYXhMaXN0ZW5lcnMoKSB7XG4gIHJldHVybiBfZ2V0TWF4TGlzdGVuZXJzKHRoaXMpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gZW1pdCh0eXBlKSB7XG4gIHZhciBhcmdzID0gW107XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgdmFyIGRvRXJyb3IgPSAodHlwZSA9PT0gJ2Vycm9yJyk7XG5cbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgaWYgKGV2ZW50cyAhPT0gdW5kZWZpbmVkKVxuICAgIGRvRXJyb3IgPSAoZG9FcnJvciAmJiBldmVudHMuZXJyb3IgPT09IHVuZGVmaW5lZCk7XG4gIGVsc2UgaWYgKCFkb0Vycm9yKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyBJZiB0aGVyZSBpcyBubyAnZXJyb3InIGV2ZW50IGxpc3RlbmVyIHRoZW4gdGhyb3cuXG4gIGlmIChkb0Vycm9yKSB7XG4gICAgdmFyIGVyO1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDApXG4gICAgICBlciA9IGFyZ3NbMF07XG4gICAgaWYgKGVyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIC8vIE5vdGU6IFRoZSBjb21tZW50cyBvbiB0aGUgYHRocm93YCBsaW5lcyBhcmUgaW50ZW50aW9uYWwsIHRoZXkgc2hvd1xuICAgICAgLy8gdXAgaW4gTm9kZSdzIG91dHB1dCBpZiB0aGlzIHJlc3VsdHMgaW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbi5cbiAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICAgIH1cbiAgICAvLyBBdCBsZWFzdCBnaXZlIHNvbWUga2luZCBvZiBjb250ZXh0IHRvIHRoZSB1c2VyXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcignVW5oYW5kbGVkIGVycm9yLicgKyAoZXIgPyAnICgnICsgZXIubWVzc2FnZSArICcpJyA6ICcnKSk7XG4gICAgZXJyLmNvbnRleHQgPSBlcjtcbiAgICB0aHJvdyBlcnI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gIH1cblxuICB2YXIgaGFuZGxlciA9IGV2ZW50c1t0eXBlXTtcblxuICBpZiAoaGFuZGxlciA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICBSZWZsZWN0QXBwbHkoaGFuZGxlciwgdGhpcywgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGxlbiA9IGhhbmRsZXIubGVuZ3RoO1xuICAgIHZhciBsaXN0ZW5lcnMgPSBhcnJheUNsb25lKGhhbmRsZXIsIGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgIFJlZmxlY3RBcHBseShsaXN0ZW5lcnNbaV0sIHRoaXMsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5mdW5jdGlvbiBfYWRkTGlzdGVuZXIodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgcHJlcGVuZCkge1xuICB2YXIgbTtcbiAgdmFyIGV2ZW50cztcbiAgdmFyIGV4aXN0aW5nO1xuXG4gIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuXG4gIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGFyZ2V0Ll9ldmVudHNDb3VudCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgICAvLyBhZGRpbmcgaXQgdG8gdGhlIGxpc3RlbmVycywgZmlyc3QgZW1pdCBcIm5ld0xpc3RlbmVyXCIuXG4gICAgaWYgKGV2ZW50cy5uZXdMaXN0ZW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0YXJnZXQuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICAgICAgbGlzdGVuZXIubGlzdGVuZXIgPyBsaXN0ZW5lci5saXN0ZW5lciA6IGxpc3RlbmVyKTtcblxuICAgICAgLy8gUmUtYXNzaWduIGBldmVudHNgIGJlY2F1c2UgYSBuZXdMaXN0ZW5lciBoYW5kbGVyIGNvdWxkIGhhdmUgY2F1c2VkIHRoZVxuICAgICAgLy8gdGhpcy5fZXZlbnRzIHRvIGJlIGFzc2lnbmVkIHRvIGEgbmV3IG9iamVjdFxuICAgICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG4gICAgfVxuICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdO1xuICB9XG5cbiAgaWYgKGV4aXN0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICAgICsrdGFyZ2V0Ll9ldmVudHNDb3VudDtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID1cbiAgICAgICAgcHJlcGVuZCA/IFtsaXN0ZW5lciwgZXhpc3RpbmddIDogW2V4aXN0aW5nLCBsaXN0ZW5lcl07XG4gICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBhbiBhcnJheSwganVzdCBhcHBlbmQuXG4gICAgfSBlbHNlIGlmIChwcmVwZW5kKSB7XG4gICAgICBleGlzdGluZy51bnNoaWZ0KGxpc3RlbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhpc3RpbmcucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgICBtID0gX2dldE1heExpc3RlbmVycyh0YXJnZXQpO1xuICAgIGlmIChtID4gMCAmJiBleGlzdGluZy5sZW5ndGggPiBtICYmICFleGlzdGluZy53YXJuZWQpIHtcbiAgICAgIGV4aXN0aW5nLndhcm5lZCA9IHRydWU7XG4gICAgICAvLyBObyBlcnJvciBjb2RlIGZvciB0aGlzIHNpbmNlIGl0IGlzIGEgV2FybmluZ1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICB2YXIgdyA9IG5ldyBFcnJvcignUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcubGVuZ3RoICsgJyAnICsgU3RyaW5nKHR5cGUpICsgJyBsaXN0ZW5lcnMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNyZWFzZSBsaW1pdCcpO1xuICAgICAgdy5uYW1lID0gJ01heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZyc7XG4gICAgICB3LmVtaXR0ZXIgPSB0YXJnZXQ7XG4gICAgICB3LnR5cGUgPSB0eXBlO1xuICAgICAgdy5jb3VudCA9IGV4aXN0aW5nLmxlbmd0aDtcbiAgICAgIFByb2Nlc3NFbWl0V2FybmluZyh3KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gYWRkTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIHRydWUpO1xuICAgIH07XG5cbmZ1bmN0aW9uIG9uY2VXcmFwcGVyKCkge1xuICBpZiAoIXRoaXMuZmlyZWQpIHtcbiAgICB0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsIHRoaXMud3JhcEZuKTtcbiAgICB0aGlzLmZpcmVkID0gdHJ1ZTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpO1xuICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LCBhcmd1bWVudHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9vbmNlV3JhcCh0YXJnZXQsIHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBzdGF0ZSA9IHsgZmlyZWQ6IGZhbHNlLCB3cmFwRm46IHVuZGVmaW5lZCwgdGFyZ2V0OiB0YXJnZXQsIHR5cGU6IHR5cGUsIGxpc3RlbmVyOiBsaXN0ZW5lciB9O1xuICB2YXIgd3JhcHBlZCA9IG9uY2VXcmFwcGVyLmJpbmQoc3RhdGUpO1xuICB3cmFwcGVkLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHN0YXRlLndyYXBGbiA9IHdyYXBwZWQ7XG4gIHJldHVybiB3cmFwcGVkO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbiBvbmNlKHR5cGUsIGxpc3RlbmVyKSB7XG4gIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuICB0aGlzLm9uKHR5cGUsIF9vbmNlV3JhcCh0aGlzLCB0eXBlLCBsaXN0ZW5lcikpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcHJlcGVuZE9uY2VMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG4gICAgICB0aGlzLnByZXBlbmRMaXN0ZW5lcih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbi8vIEVtaXRzIGEgJ3JlbW92ZUxpc3RlbmVyJyBldmVudCBpZiBhbmQgb25seSBpZiB0aGUgbGlzdGVuZXIgd2FzIHJlbW92ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgdmFyIGxpc3QsIGV2ZW50cywgcG9zaXRpb24sIGksIG9yaWdpbmFsTGlzdGVuZXI7XG5cbiAgICAgIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBsaXN0ID0gZXZlbnRzW3R5cGVdO1xuICAgICAgaWYgKGxpc3QgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fCBsaXN0Lmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMClcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdC5saXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGxpc3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcG9zaXRpb24gPSAtMTtcblxuICAgICAgICBmb3IgKGkgPSBsaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8IGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBvcmlnaW5hbExpc3RlbmVyID0gbGlzdFtpXS5saXN0ZW5lcjtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSAwKVxuICAgICAgICAgIGxpc3Quc2hpZnQoKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgc3BsaWNlT25lKGxpc3QsIHBvc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICBldmVudHNbdHlwZV0gPSBsaXN0WzBdO1xuXG4gICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgb3JpZ2luYWxMaXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub2ZmID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPVxuICAgIGZ1bmN0aW9uIHJlbW92ZUFsbExpc3RlbmVycyh0eXBlKSB7XG4gICAgICB2YXIgbGlzdGVuZXJzLCBldmVudHMsIGk7XG5cbiAgICAgIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgICAgIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIC8vIG5vdCBsaXN0ZW5pbmcgZm9yIHJlbW92ZUxpc3RlbmVyLCBubyBuZWVkIHRvIGVtaXRcbiAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50c1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhldmVudHMpO1xuICAgICAgICB2YXIga2V5O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgbGlzdGVuZXJzID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVycyk7XG4gICAgICB9IGVsc2UgaWYgKGxpc3RlbmVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIExJRk8gb3JkZXJcbiAgICAgICAgZm9yIChpID0gbGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbmZ1bmN0aW9uIF9saXN0ZW5lcnModGFyZ2V0LCB0eXBlLCB1bndyYXApIHtcbiAgdmFyIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gW107XG5cbiAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG4gIGlmIChldmxpc3RlbmVyID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIFtdO1xuXG4gIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJylcbiAgICByZXR1cm4gdW53cmFwID8gW2V2bGlzdGVuZXIubGlzdGVuZXIgfHwgZXZsaXN0ZW5lcl0gOiBbZXZsaXN0ZW5lcl07XG5cbiAgcmV0dXJuIHVud3JhcCA/XG4gICAgdW53cmFwTGlzdGVuZXJzKGV2bGlzdGVuZXIpIDogYXJyYXlDbG9uZShldmxpc3RlbmVyLCBldmxpc3RlbmVyLmxlbmd0aCk7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24gbGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgdHJ1ZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJhd0xpc3RlbmVycyA9IGZ1bmN0aW9uIHJhd0xpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIubGlzdGVuZXJDb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLmxpc3RlbmVyQ291bnQodHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyQ291bnQuY2FsbChlbWl0dGVyLCB0eXBlKTtcbiAgfVxufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lckNvdW50ID0gbGlzdGVuZXJDb3VudDtcbmZ1bmN0aW9uIGxpc3RlbmVyQ291bnQodHlwZSkge1xuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKGV2bGlzdGVuZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGV2bGlzdGVuZXIubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmV2ZW50TmFtZXMgPSBmdW5jdGlvbiBldmVudE5hbWVzKCkge1xuICByZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQgPiAwID8gUmVmbGVjdE93bktleXModGhpcy5fZXZlbnRzKSA6IFtdO1xufTtcblxuZnVuY3Rpb24gYXJyYXlDbG9uZShhcnIsIG4pIHtcbiAgdmFyIGNvcHkgPSBuZXcgQXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKVxuICAgIGNvcHlbaV0gPSBhcnJbaV07XG4gIHJldHVybiBjb3B5O1xufVxuXG5mdW5jdGlvbiBzcGxpY2VPbmUobGlzdCwgaW5kZXgpIHtcbiAgZm9yICg7IGluZGV4ICsgMSA8IGxpc3QubGVuZ3RoOyBpbmRleCsrKVxuICAgIGxpc3RbaW5kZXhdID0gbGlzdFtpbmRleCArIDFdO1xuICBsaXN0LnBvcCgpO1xufVxuXG5mdW5jdGlvbiB1bndyYXBMaXN0ZW5lcnMoYXJyKSB7XG4gIHZhciByZXQgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmV0Lmxlbmd0aDsgKytpKSB7XG4gICAgcmV0W2ldID0gYXJyW2ldLmxpc3RlbmVyIHx8IGFycltpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBvbmNlKGVtaXR0ZXIsIG5hbWUpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmdW5jdGlvbiBlcnJvckxpc3RlbmVyKGVycikge1xuICAgICAgZW1pdHRlci5yZW1vdmVMaXN0ZW5lcihuYW1lLCByZXNvbHZlcik7XG4gICAgICByZWplY3QoZXJyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXNvbHZlcigpIHtcbiAgICAgIGlmICh0eXBlb2YgZW1pdHRlci5yZW1vdmVMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIGVycm9yTGlzdGVuZXIpO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO1xuICAgIH07XG5cbiAgICBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZW1pdHRlciwgbmFtZSwgcmVzb2x2ZXIsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICBpZiAobmFtZSAhPT0gJ2Vycm9yJykge1xuICAgICAgYWRkRXJyb3JIYW5kbGVySWZFdmVudEVtaXR0ZXIoZW1pdHRlciwgZXJyb3JMaXN0ZW5lciwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyKGVtaXR0ZXIsIGhhbmRsZXIsIGZsYWdzKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5vbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlbWl0dGVyLCAnZXJyb3InLCBoYW5kbGVyLCBmbGFncyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyKGVtaXR0ZXIsIG5hbWUsIGxpc3RlbmVyLCBmbGFncykge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIub24gPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoZmxhZ3Mub25jZSkge1xuICAgICAgZW1pdHRlci5vbmNlKG5hbWUsIGxpc3RlbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW1pdHRlci5vbihuYW1lLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBlbWl0dGVyLmFkZEV2ZW50TGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBFdmVudFRhcmdldCBkb2VzIG5vdCBoYXZlIGBlcnJvcmAgZXZlbnQgc2VtYW50aWNzIGxpa2UgTm9kZVxuICAgIC8vIEV2ZW50RW1pdHRlcnMsIHdlIGRvIG5vdCBsaXN0ZW4gZm9yIGBlcnJvcmAgZXZlbnRzIGhlcmUuXG4gICAgZW1pdHRlci5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGZ1bmN0aW9uIHdyYXBMaXN0ZW5lcihhcmcpIHtcbiAgICAgIC8vIElFIGRvZXMgbm90IGhhdmUgYnVpbHRpbiBgeyBvbmNlOiB0cnVlIH1gIHN1cHBvcnQgc28gd2VcbiAgICAgIC8vIGhhdmUgdG8gZG8gaXQgbWFudWFsbHkuXG4gICAgICBpZiAoZmxhZ3Mub25jZSkge1xuICAgICAgICBlbWl0dGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgd3JhcExpc3RlbmVyKTtcbiAgICAgIH1cbiAgICAgIGxpc3RlbmVyKGFyZyk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiZW1pdHRlclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBFdmVudEVtaXR0ZXIuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBlbWl0dGVyKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///22699\n")},21023:module=>{eval("// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0ZBQW9GO0FBQ3BGO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhEQUE4RDs7QUFFOUQ7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uLy4uL25vZGVfbW9kdWxlcy9wYXRoLWJyb3dzZXJpZnkvaW5kZXguanM/YTBkNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAncGF0aCcgbW9kdWxlIGV4dHJhY3RlZCBmcm9tIE5vZGUuanMgdjguMTEuMSAob25seSB0aGUgcG9zaXggcGFydClcbi8vIHRyYW5zcGxpdGVkIHdpdGggQmFiZWxcblxuLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gYXNzZXJ0UGF0aChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICcgKyBKU09OLnN0cmluZ2lmeShwYXRoKSk7XG4gIH1cbn1cblxuLy8gUmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIHdpdGggZGlyZWN0b3J5IG5hbWVzXG5mdW5jdGlvbiBub3JtYWxpemVTdHJpbmdQb3NpeChwYXRoLCBhbGxvd0Fib3ZlUm9vdCkge1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBsYXN0U2VnbWVudExlbmd0aCA9IDA7XG4gIHZhciBsYXN0U2xhc2ggPSAtMTtcbiAgdmFyIGRvdHMgPSAwO1xuICB2YXIgY29kZTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gcGF0aC5sZW5ndGg7ICsraSkge1xuICAgIGlmIChpIDwgcGF0aC5sZW5ndGgpXG4gICAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGVsc2UgaWYgKGNvZGUgPT09IDQ3IC8qLyovKVxuICAgICAgYnJlYWs7XG4gICAgZWxzZVxuICAgICAgY29kZSA9IDQ3IC8qLyovO1xuICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gaSAtIDEgfHwgZG90cyA9PT0gMSkge1xuICAgICAgICAvLyBOT09QXG4gICAgICB9IGVsc2UgaWYgKGxhc3RTbGFzaCAhPT0gaSAtIDEgJiYgZG90cyA9PT0gMikge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA8IDIgfHwgbGFzdFNlZ21lbnRMZW5ndGggIT09IDIgfHwgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDEpICE9PSA0NiAvKi4qLyB8fCByZXMuY2hhckNvZGVBdChyZXMubGVuZ3RoIC0gMikgIT09IDQ2IC8qLiovKSB7XG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICB2YXIgbGFzdFNsYXNoSW5kZXggPSByZXMubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgIGlmIChsYXN0U2xhc2hJbmRleCAhPT0gcmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHJlcyA9ICcnO1xuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMgPSByZXMuc2xpY2UoMCwgbGFzdFNsYXNoSW5kZXgpO1xuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMubGVuZ3RoID09PSAyIHx8IHJlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJlcyA9ICcnO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJlcyArPSAnLy4uJztcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXMgPSAnLi4nO1xuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKVxuICAgICAgICAgIHJlcyArPSAnLycgKyBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmVzID0gcGF0aC5zbGljZShsYXN0U2xhc2ggKyAxLCBpKTtcbiAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSBpIC0gbGFzdFNsYXNoIC0gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICBkb3RzID0gMDtcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDQ2IC8qLiovICYmIGRvdHMgIT09IC0xKSB7XG4gICAgICArK2RvdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvdHMgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gX2Zvcm1hdChzZXAsIHBhdGhPYmplY3QpIHtcbiAgdmFyIGRpciA9IHBhdGhPYmplY3QuZGlyIHx8IHBhdGhPYmplY3Qucm9vdDtcbiAgdmFyIGJhc2UgPSBwYXRoT2JqZWN0LmJhc2UgfHwgKHBhdGhPYmplY3QubmFtZSB8fCAnJykgKyAocGF0aE9iamVjdC5leHQgfHwgJycpO1xuICBpZiAoIWRpcikge1xuICAgIHJldHVybiBiYXNlO1xuICB9XG4gIGlmIChkaXIgPT09IHBhdGhPYmplY3Qucm9vdCkge1xuICAgIHJldHVybiBkaXIgKyBiYXNlO1xuICB9XG4gIHJldHVybiBkaXIgKyBzZXAgKyBiYXNlO1xufVxuXG52YXIgcG9zaXggPSB7XG4gIC8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSgpIHtcbiAgICB2YXIgcmVzb2x2ZWRQYXRoID0gJyc7XG4gICAgdmFyIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcbiAgICB2YXIgY3dkO1xuXG4gICAgZm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICAgIHZhciBwYXRoO1xuICAgICAgaWYgKGkgPj0gMClcbiAgICAgICAgcGF0aCA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoY3dkID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgcGF0aCA9IGN3ZDtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgICAgLy8gU2tpcCBlbXB0eSBlbnRyaWVzXG4gICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgICByZXNvbHZlZEFic29sdXRlID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKi8qLztcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gICAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVTdHJpbmdQb3NpeChyZXNvbHZlZFBhdGgsICFyZXNvbHZlZEFic29sdXRlKTtcblxuICAgIGlmIChyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgICBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApXG4gICAgICAgIHJldHVybiAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiAnLyc7XG4gICAgfSBlbHNlIGlmIChyZXNvbHZlZFBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVkUGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcuJztcbiAgICB9XG4gIH0sXG5cbiAgbm9ybWFsaXplOiBmdW5jdGlvbiBub3JtYWxpemUocGF0aCkge1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiAnLic7XG5cbiAgICB2YXIgaXNBYnNvbHV0ZSA9IHBhdGguY2hhckNvZGVBdCgwKSA9PT0gNDcgLyovKi87XG4gICAgdmFyIHRyYWlsaW5nU2VwYXJhdG9yID0gcGF0aC5jaGFyQ29kZUF0KHBhdGgubGVuZ3RoIC0gMSkgPT09IDQ3IC8qLyovO1xuXG4gICAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gICAgcGF0aCA9IG5vcm1hbGl6ZVN0cmluZ1Bvc2l4KHBhdGgsICFpc0Fic29sdXRlKTtcblxuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgcGF0aCA9ICcuJztcbiAgICBpZiAocGF0aC5sZW5ndGggPiAwICYmIHRyYWlsaW5nU2VwYXJhdG9yKSBwYXRoICs9ICcvJztcblxuICAgIGlmIChpc0Fic29sdXRlKSByZXR1cm4gJy8nICsgcGF0aDtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBpc0Fic29sdXRlOiBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIHJldHVybiBwYXRoLmxlbmd0aCA+IDAgJiYgcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKi8qLztcbiAgfSxcblxuICBqb2luOiBmdW5jdGlvbiBqb2luKCkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuICcuJztcbiAgICB2YXIgam9pbmVkO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuICAgICAgYXNzZXJ0UGF0aChhcmcpO1xuICAgICAgaWYgKGFyZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChqb2luZWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICBqb2luZWQgPSBhcmc7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBqb2luZWQgKz0gJy8nICsgYXJnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoam9pbmVkID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gJy4nO1xuICAgIHJldHVybiBwb3NpeC5ub3JtYWxpemUoam9pbmVkKTtcbiAgfSxcblxuICByZWxhdGl2ZTogZnVuY3Rpb24gcmVsYXRpdmUoZnJvbSwgdG8pIHtcbiAgICBhc3NlcnRQYXRoKGZyb20pO1xuICAgIGFzc2VydFBhdGgodG8pO1xuXG4gICAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJyc7XG5cbiAgICBmcm9tID0gcG9zaXgucmVzb2x2ZShmcm9tKTtcbiAgICB0byA9IHBvc2l4LnJlc29sdmUodG8pO1xuXG4gICAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJyc7XG5cbiAgICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gICAgdmFyIGZyb21TdGFydCA9IDE7XG4gICAgZm9yICg7IGZyb21TdGFydCA8IGZyb20ubGVuZ3RoOyArK2Zyb21TdGFydCkge1xuICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSA0NyAvKi8qLylcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmcm9tRW5kID0gZnJvbS5sZW5ndGg7XG4gICAgdmFyIGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gICAgLy8gVHJpbSBhbnkgbGVhZGluZyBiYWNrc2xhc2hlc1xuICAgIHZhciB0b1N0YXJ0ID0gMTtcbiAgICBmb3IgKDsgdG9TdGFydCA8IHRvLmxlbmd0aDsgKyt0b1N0YXJ0KSB7XG4gICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSAhPT0gNDcgLyovKi8pXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgdG9FbmQgPSB0by5sZW5ndGg7XG4gICAgdmFyIHRvTGVuID0gdG9FbmQgLSB0b1N0YXJ0O1xuXG4gICAgLy8gQ29tcGFyZSBwYXRocyB0byBmaW5kIHRoZSBsb25nZXN0IGNvbW1vbiBwYXRoIGZyb20gcm9vdFxuICAgIHZhciBsZW5ndGggPSBmcm9tTGVuIDwgdG9MZW4gPyBmcm9tTGVuIDogdG9MZW47XG4gICAgdmFyIGxhc3RDb21tb25TZXAgPSAtMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yICg7IGkgPD0gbGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChpID09PSBsZW5ndGgpIHtcbiAgICAgICAgaWYgKHRvTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYGZyb21gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGB0b2AuXG4gICAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXInOyB0bz0nL2Zvby9iYXIvYmF6J1xuICAgICAgICAgICAgcmV0dXJuIHRvLnNsaWNlKHRvU3RhcnQgKyBpICsgMSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIHJvb3RcbiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvJzsgdG89Jy9mb28nXG4gICAgICAgICAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCArIGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmcm9tTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYGZyb21gLlxuICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209Jy9mb28vYmFyL2Jheic7IHRvPScvZm9vL2JhcidcbiAgICAgICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYHRvYCBpcyB0aGUgcm9vdC5cbiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vJzsgdG89Jy8nXG4gICAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB2YXIgZnJvbUNvZGUgPSBmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSk7XG4gICAgICB2YXIgdG9Db2RlID0gdG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSk7XG4gICAgICBpZiAoZnJvbUNvZGUgIT09IHRvQ29kZSlcbiAgICAgICAgYnJlYWs7XG4gICAgICBlbHNlIGlmIChmcm9tQ29kZSA9PT0gNDcgLyovKi8pXG4gICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgIH1cblxuICAgIHZhciBvdXQgPSAnJztcbiAgICAvLyBHZW5lcmF0ZSB0aGUgcmVsYXRpdmUgcGF0aCBiYXNlZCBvbiB0aGUgcGF0aCBkaWZmZXJlbmNlIGJldHdlZW4gYHRvYFxuICAgIC8vIGFuZCBgZnJvbWBcbiAgICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICAgIGlmIChpID09PSBmcm9tRW5kIHx8IGZyb20uY2hhckNvZGVBdChpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgaWYgKG91dC5sZW5ndGggPT09IDApXG4gICAgICAgICAgb3V0ICs9ICcuLic7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBvdXQgKz0gJy8uLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGFzdGx5LCBhcHBlbmQgdGhlIHJlc3Qgb2YgdGhlIGRlc3RpbmF0aW9uIChgdG9gKSBwYXRoIHRoYXQgY29tZXMgYWZ0ZXJcbiAgICAvLyB0aGUgY29tbW9uIHBhdGggcGFydHNcbiAgICBpZiAob3V0Lmxlbmd0aCA+IDApXG4gICAgICByZXR1cm4gb3V0ICsgdG8uc2xpY2UodG9TdGFydCArIGxhc3RDb21tb25TZXApO1xuICAgIGVsc2Uge1xuICAgICAgdG9TdGFydCArPSBsYXN0Q29tbW9uU2VwO1xuICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCkgPT09IDQ3IC8qLyovKVxuICAgICAgICArK3RvU3RhcnQ7XG4gICAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCk7XG4gICAgfVxuICB9LFxuXG4gIF9tYWtlTG9uZzogZnVuY3Rpb24gX21ha2VMb25nKHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBkaXJuYW1lOiBmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcuJztcbiAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgaGFzUm9vdCA9IGNvZGUgPT09IDQ3IC8qLyovO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICBmb3IgKHZhciBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDE7IC0taSkge1xuICAgICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvclxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5kID09PSAtMSkgcmV0dXJuIGhhc1Jvb3QgPyAnLycgOiAnLic7XG4gICAgaWYgKGhhc1Jvb3QgJiYgZW5kID09PSAxKSByZXR1cm4gJy8vJztcbiAgICByZXR1cm4gcGF0aC5zbGljZSgwLCBlbmQpO1xuICB9LFxuXG4gIGJhc2VuYW1lOiBmdW5jdGlvbiBiYXNlbmFtZShwYXRoLCBleHQpIHtcbiAgICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGV4dCAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZXh0XCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiBleHQubGVuZ3RoID4gMCAmJiBleHQubGVuZ3RoIDw9IHBhdGgubGVuZ3RoKSB7XG4gICAgICBpZiAoZXh0Lmxlbmd0aCA9PT0gcGF0aC5sZW5ndGggJiYgZXh0ID09PSBwYXRoKSByZXR1cm4gJyc7XG4gICAgICB2YXIgZXh0SWR4ID0gZXh0Lmxlbmd0aCAtIDE7XG4gICAgICB2YXIgZmlyc3ROb25TbGFzaEVuZCA9IC0xO1xuICAgICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChmaXJzdE5vblNsYXNoRW5kID09PSAtMSkge1xuICAgICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIHJlbWVtYmVyIHRoaXMgaW5kZXggaW4gY2FzZVxuICAgICAgICAgICAgLy8gd2UgbmVlZCBpdCBpZiB0aGUgZXh0ZW5zaW9uIGVuZHMgdXAgbm90IG1hdGNoaW5nXG4gICAgICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGZpcnN0Tm9uU2xhc2hFbmQgPSBpICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV4dElkeCA+PSAwKSB7XG4gICAgICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggdGhlIGV4cGxpY2l0IGV4dGVuc2lvblxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IGV4dC5jaGFyQ29kZUF0KGV4dElkeCkpIHtcbiAgICAgICAgICAgICAgaWYgKC0tZXh0SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgdGhlIGV4dGVuc2lvbiwgc28gbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyIHBhdGhcbiAgICAgICAgICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBFeHRlbnNpb24gZG9lcyBub3QgbWF0Y2gsIHNvIG91ciByZXN1bHQgaXMgdGhlIGVudGlyZSBwYXRoXG4gICAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgICBleHRJZHggPSAtMTtcbiAgICAgICAgICAgICAgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXJ0ID09PSBlbmQpIGVuZCA9IGZpcnN0Tm9uU2xhc2hFbmQ7ZWxzZSBpZiAoZW5kID09PSAtMSkgZW5kID0gcGF0aC5sZW5ndGg7XG4gICAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgICAgIC8vIHBhdGggY29tcG9uZW50XG4gICAgICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiAnJztcbiAgICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgfSxcblxuICBleHRuYW1lOiBmdW5jdGlvbiBleHRuYW1lKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIHZhciBzdGFydERvdCA9IC0xO1xuICAgIHZhciBzdGFydFBhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gICAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgICB2YXIgcHJlRG90U3RhdGUgPSAwO1xuICAgIGZvciAodmFyIGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKVxuICAgICAgICAgICAgc3RhcnREb3QgPSBpO1xuICAgICAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKVxuICAgICAgICAgICAgcHJlRG90U3RhdGUgPSAxO1xuICAgICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICAgICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAgICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgICAgICBwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbiAgfSxcblxuICBmb3JtYXQ6IGZ1bmN0aW9uIGZvcm1hdChwYXRoT2JqZWN0KSB7XG4gICAgaWYgKHBhdGhPYmplY3QgPT09IG51bGwgfHwgdHlwZW9mIHBhdGhPYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJwYXRoT2JqZWN0XCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHBhdGhPYmplY3QpO1xuICAgIH1cbiAgICByZXR1cm4gX2Zvcm1hdCgnLycsIHBhdGhPYmplY3QpO1xuICB9LFxuXG4gIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShwYXRoKSB7XG4gICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgIHZhciByZXQgPSB7IHJvb3Q6ICcnLCBkaXI6ICcnLCBiYXNlOiAnJywgZXh0OiAnJywgbmFtZTogJycgfTtcbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiByZXQ7XG4gICAgdmFyIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIGlzQWJzb2x1dGUgPSBjb2RlID09PSA0NyAvKi8qLztcbiAgICB2YXIgc3RhcnQ7XG4gICAgaWYgKGlzQWJzb2x1dGUpIHtcbiAgICAgIHJldC5yb290ID0gJy8nO1xuICAgICAgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfVxuICAgIHZhciBzdGFydERvdCA9IC0xO1xuICAgIHZhciBzdGFydFBhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICB2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTtcblxuICAgIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICAgIHZhciBwcmVEb3RTdGF0ZSA9IDA7XG5cbiAgICAvLyBHZXQgbm9uLWRpciBpbmZvXG4gICAgZm9yICg7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7ZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKSB7XG4gICAgICBpZiAoZW5kICE9PSAtMSkge1xuICAgICAgICBpZiAoc3RhcnRQYXJ0ID09PSAwICYmIGlzQWJzb2x1dGUpIHJldC5iYXNlID0gcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKDEsIGVuZCk7ZWxzZSByZXQuYmFzZSA9IHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGFydFBhcnQgPT09IDAgJiYgaXNBYnNvbHV0ZSkge1xuICAgICAgICByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgc3RhcnREb3QpO1xuICAgICAgICByZXQuYmFzZSA9IHBhdGguc2xpY2UoMSwgZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIHN0YXJ0RG90KTtcbiAgICAgICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAgIHJldC5leHQgPSBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICAgIH1cblxuICAgIGlmIChzdGFydFBhcnQgPiAwKSByZXQuZGlyID0gcGF0aC5zbGljZSgwLCBzdGFydFBhcnQgLSAxKTtlbHNlIGlmIChpc0Fic29sdXRlKSByZXQuZGlyID0gJy8nO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBzZXA6ICcvJyxcbiAgZGVsaW1pdGVyOiAnOicsXG4gIHdpbjMyOiBudWxsLFxuICBwb3NpeDogbnVsbFxufTtcblxucG9zaXgucG9zaXggPSBwb3NpeDtcblxubW9kdWxlLmV4cG9ydHMgPSBwb3NpeDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///21023\n")}},__webpack_module_cache__={};function __webpack_require__(Q){var B=__webpack_module_cache__[Q];if(void 0!==B)return B.exports;var U=__webpack_module_cache__[Q]={exports:{}};return __webpack_modules__[Q].call(U.exports,U,U.exports,__webpack_require__),U.exports}(()=>{__webpack_require__.n=Q=>{var B=Q&&Q.__esModule?()=>Q["default"]:()=>Q;return __webpack_require__.d(B,{a:B}),B}})(),(()=>{__webpack_require__.d=(Q,B)=>{for(var U in B)__webpack_require__.o(B,U)&&!__webpack_require__.o(Q,U)&&Object.defineProperty(Q,U,{enumerable:!0,get:B[U]})}})(),(()=>{__webpack_require__.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(Q){if("object"===typeof window)return window}}()})(),(()=>{__webpack_require__.o=(Q,B)=>Object.prototype.hasOwnProperty.call(Q,B)})();var __webpack_exports__=__webpack_require__(85628)})();
1
+ (()=>{"use strict";var __webpack_modules__={6793:(__unused_webpack_module,exports,__webpack_require__)=>{eval("var __webpack_unused_export__;\n // this script is injected into every page.\n\n__webpack_unused_export__ = ({\n value: true\n});\nexports.U = void 0;\n/**\n * Install the hook on window, which is an event emitter.\n * Note because Chrome content scripts cannot directly modify the window object,\n * we are evaling this function by inserting a script tag. That's why we have\n * to inline the whole event emitter implementation here.\n *\n * @param {Window|global} target\n */\n\nfunction installHook(target, isIframe = false) {\n const devtoolsVersion = '6.0';\n let listeners = {};\n\n function injectIframeHook(iframe) {\n if (iframe.__vdevtools__injected) return;\n\n try {\n iframe.__vdevtools__injected = true;\n\n const inject = () => {\n try {\n iframe.contentWindow.__VUE_DEVTOOLS_IFRAME__ = iframe;\n const script = iframe.contentDocument.createElement('script');\n script.textContent = ';(' + installHook.toString() + ')(window, true)';\n iframe.contentDocument.documentElement.appendChild(script);\n script.parentNode.removeChild(script);\n } catch (e) {// Ignore\n }\n };\n\n inject();\n iframe.addEventListener('load', () => inject());\n } catch (e) {// Ignore\n }\n }\n\n let iframeChecks = 0;\n\n function injectToIframes() {\n if (typeof window === 'undefined') return;\n const iframes = document.querySelectorAll('iframe:not([data-vue-devtools-ignore])');\n\n for (const iframe of iframes) {\n injectIframeHook(iframe);\n }\n }\n\n injectToIframes();\n const iframeTimer = setInterval(() => {\n injectToIframes();\n iframeChecks++;\n\n if (iframeChecks >= 5) {\n clearInterval(iframeTimer);\n }\n }, 1000);\n\n if (Object.prototype.hasOwnProperty.call(target, '__VUE_DEVTOOLS_GLOBAL_HOOK__')) {\n if (target.__VUE_DEVTOOLS_GLOBAL_HOOK__.devtoolsVersion !== devtoolsVersion) {\n console.error(`Another version of Vue Devtools seems to be installed. Please enable only one version at a time.`);\n }\n\n return;\n }\n\n let hook;\n\n if (isIframe) {\n const sendToParent = cb => {\n try {\n const hook = window.parent.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n if (hook) {\n return cb(hook);\n } else {\n console.warn('[Vue Devtools] No hook in parent window');\n }\n } catch (e) {\n console.warn('[Vue Devtools] Failed to send message to parent window', e);\n }\n };\n\n hook = {\n devtoolsVersion,\n\n // eslint-disable-next-line accessor-pairs\n set Vue(value) {\n sendToParent(hook => {\n hook.Vue = value;\n });\n },\n\n // eslint-disable-next-line accessor-pairs\n set enabled(value) {\n sendToParent(hook => {\n hook.enabled = value;\n });\n },\n\n on(event, fn) {\n sendToParent(hook => hook.on(event, fn));\n },\n\n once(event, fn) {\n sendToParent(hook => hook.once(event, fn));\n },\n\n off(event, fn) {\n sendToParent(hook => hook.off(event, fn));\n },\n\n emit(event, ...args) {\n sendToParent(hook => hook.emit(event, ...args));\n },\n\n cleanupBuffer(matchArg) {\n var _a;\n\n return (_a = sendToParent(hook => hook.cleanupBuffer(matchArg))) !== null && _a !== void 0 ? _a : false;\n }\n\n };\n } else {\n hook = {\n devtoolsVersion,\n Vue: null,\n enabled: undefined,\n _buffer: [],\n store: null,\n initialState: null,\n storeModules: null,\n flushStoreModules: null,\n apps: [],\n\n _replayBuffer(event) {\n const buffer = this._buffer;\n this._buffer = [];\n\n for (let i = 0, l = buffer.length; i < l; i++) {\n const allArgs = buffer[i];\n allArgs[0] === event // eslint-disable-next-line prefer-spread\n ? this.emit.apply(this, allArgs) : this._buffer.push(allArgs);\n }\n },\n\n on(event, fn) {\n const $event = '$' + event;\n\n if (listeners[$event]) {\n listeners[$event].push(fn);\n } else {\n listeners[$event] = [fn];\n\n this._replayBuffer(event);\n }\n },\n\n once(event, fn) {\n const on = (...args) => {\n this.off(event, on);\n return fn.apply(this, args);\n };\n\n this.on(event, on);\n },\n\n off(event, fn) {\n event = '$' + event;\n\n if (!arguments.length) {\n listeners = {};\n } else {\n const cbs = listeners[event];\n\n if (cbs) {\n if (!fn) {\n listeners[event] = null;\n } else {\n for (let i = 0, l = cbs.length; i < l; i++) {\n const cb = cbs[i];\n\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break;\n }\n }\n }\n }\n }\n },\n\n emit(event, ...args) {\n const $event = '$' + event;\n let cbs = listeners[$event];\n\n if (cbs) {\n cbs = cbs.slice();\n\n for (let i = 0, l = cbs.length; i < l; i++) {\n try {\n const result = cbs[i].apply(this, args);\n\n if (typeof (result === null || result === void 0 ? void 0 : result.catch) === 'function') {\n result.catch(e => {\n console.error(`[Hook] Error in async event handler for ${event} with args:`, args);\n console.error(e);\n });\n }\n } catch (e) {\n console.error(`[Hook] Error in event handler for ${event} with args:`, args);\n console.error(e);\n }\n }\n } else {\n this._buffer.push([event, ...args]);\n }\n },\n\n /**\n * Remove buffered events with any argument that is equal to the given value.\n * @param matchArg Given value to match.\n */\n cleanupBuffer(matchArg) {\n let wasBuffered = false;\n this._buffer = this._buffer.filter(item => {\n if (item.some(arg => arg === matchArg)) {\n wasBuffered = true;\n return false;\n }\n\n return true;\n });\n return wasBuffered;\n }\n\n };\n hook.once('init', Vue => {\n hook.Vue = Vue;\n\n if (Vue) {\n Vue.prototype.$inspect = function () {\n const fn = target.__VUE_DEVTOOLS_INSPECT__;\n fn && fn(this);\n };\n }\n });\n hook.on('app:init', (app, version, types) => {\n const appRecord = {\n app,\n version,\n types\n };\n hook.apps.push(appRecord);\n hook.emit('app:add', appRecord);\n });\n hook.once('vuex:init', store => {\n hook.store = store;\n hook.initialState = clone(store.state);\n const origReplaceState = store.replaceState.bind(store);\n\n store.replaceState = state => {\n hook.initialState = clone(state);\n origReplaceState(state);\n }; // Dynamic modules\n\n\n let origRegister, origUnregister;\n\n if (store.registerModule) {\n hook.storeModules = [];\n origRegister = store.registerModule.bind(store);\n\n store.registerModule = (path, module, options) => {\n if (typeof path === 'string') path = [path];\n hook.storeModules.push({\n path,\n module,\n options\n });\n origRegister(path, module, options);\n\n if (false) {}\n };\n\n origUnregister = store.unregisterModule.bind(store);\n\n store.unregisterModule = path => {\n if (typeof path === 'string') path = [path];\n const key = path.join('/');\n const index = hook.storeModules.findIndex(m => m.path.join('/') === key);\n if (index !== -1) hook.storeModules.splice(index, 1);\n origUnregister(path);\n\n if (false) {}\n };\n }\n\n hook.flushStoreModules = () => {\n store.replaceState = origReplaceState;\n\n if (store.registerModule) {\n store.registerModule = origRegister;\n store.unregisterModule = origUnregister;\n }\n\n return hook.storeModules || [];\n };\n });\n }\n\n Object.defineProperty(target, '__VUE_DEVTOOLS_GLOBAL_HOOK__', {\n get() {\n return hook;\n }\n\n }); // Handle apps initialized before hook injection\n\n if (target.__VUE_DEVTOOLS_HOOK_REPLAY__) {\n try {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__.forEach(cb => cb(hook));\n\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = [];\n } catch (e) {\n console.error('[vue-devtools] Error during hook replay', e);\n }\n } // Clone deep utility for cloning initial state of the store\n // Forked from https://github.com/planttheidea/fast-copy\n // Last update: 2019-10-30\n // ⚠️ Don't forget to update `./hook.js`\n // utils\n\n\n const {\n toString: toStringFunction\n } = Function.prototype;\n const {\n create,\n defineProperty,\n getOwnPropertyDescriptor,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n getPrototypeOf\n } = Object;\n const {\n hasOwnProperty,\n propertyIsEnumerable\n } = Object.prototype;\n /**\n * @enum\n *\n * @const {Object} SUPPORTS\n *\n * @property {boolean} SYMBOL_PROPERTIES are symbol properties supported\n * @property {boolean} WEAKSET is WeakSet supported\n */\n\n const SUPPORTS = {\n SYMBOL_PROPERTIES: typeof getOwnPropertySymbols === 'function',\n WEAKSET: typeof WeakSet === 'function'\n };\n /**\n * @function createCache\n *\n * @description\n * get a new cache object to prevent circular references\n *\n * @returns the new cache object\n */\n\n const createCache = () => {\n if (SUPPORTS.WEAKSET) {\n return new WeakSet();\n }\n\n const object = create({\n add: value => object._values.push(value),\n has: value => !!~object._values.indexOf(value)\n });\n object._values = [];\n return object;\n };\n /**\n * @function getCleanClone\n *\n * @description\n * get an empty version of the object with the same prototype it has\n *\n * @param object the object to build a clean clone from\n * @param realm the realm the object resides in\n * @returns the empty cloned object\n */\n\n\n const getCleanClone = (object, realm) => {\n if (!object.constructor) {\n return create(null);\n } // eslint-disable-next-line no-proto\n\n\n const prototype = object.__proto__ || getPrototypeOf(object);\n\n if (object.constructor === realm.Object) {\n return prototype === realm.Object.prototype ? {} : create(prototype);\n }\n\n if (~toStringFunction.call(object.constructor).indexOf('[native code]')) {\n try {\n return new object.constructor();\n } catch (e) {// Error\n }\n }\n\n return create(prototype);\n };\n /**\n * @function getObjectCloneLoose\n *\n * @description\n * get a copy of the object based on loose rules, meaning all enumerable keys\n * and symbols are copied, but property descriptors are not considered\n *\n * @param object the object to clone\n * @param realm the realm the object resides in\n * @param handleCopy the function that handles copying the object\n * @returns the copied object\n */\n\n\n const getObjectCloneLoose = (object, realm, handleCopy, cache) => {\n const clone = getCleanClone(object, realm);\n\n for (const key in object) {\n if (hasOwnProperty.call(object, key)) {\n clone[key] = handleCopy(object[key], cache);\n }\n }\n\n if (SUPPORTS.SYMBOL_PROPERTIES) {\n const symbols = getOwnPropertySymbols(object);\n\n if (symbols.length) {\n for (let index = 0, symbol; index < symbols.length; index++) {\n symbol = symbols[index];\n\n if (propertyIsEnumerable.call(object, symbol)) {\n clone[symbol] = handleCopy(object[symbol], cache);\n }\n }\n }\n }\n\n return clone;\n };\n /**\n * @function getObjectCloneStrict\n *\n * @description\n * get a copy of the object based on strict rules, meaning all keys and symbols\n * are copied based on the original property descriptors\n *\n * @param object the object to clone\n * @param realm the realm the object resides in\n * @param handleCopy the function that handles copying the object\n * @returns the copied object\n */\n\n\n const getObjectCloneStrict = (object, realm, handleCopy, cache) => {\n const clone = getCleanClone(object, realm);\n const properties = SUPPORTS.SYMBOL_PROPERTIES ? [].concat(getOwnPropertyNames(object), getOwnPropertySymbols(object)) : getOwnPropertyNames(object);\n\n if (properties.length) {\n for (let index = 0, property, descriptor; index < properties.length; index++) {\n property = properties[index];\n\n if (property !== 'callee' && property !== 'caller') {\n descriptor = getOwnPropertyDescriptor(object, property);\n descriptor.value = handleCopy(object[property], cache);\n defineProperty(clone, property, descriptor);\n }\n }\n }\n\n return clone;\n };\n /**\n * @function getRegExpFlags\n *\n * @description\n * get the flags to apply to the copied regexp\n *\n * @param regExp the regexp to get the flags of\n * @returns the flags for the regexp\n */\n\n\n const getRegExpFlags = regExp => {\n let flags = '';\n\n if (regExp.global) {\n flags += 'g';\n }\n\n if (regExp.ignoreCase) {\n flags += 'i';\n }\n\n if (regExp.multiline) {\n flags += 'm';\n }\n\n if (regExp.unicode) {\n flags += 'u';\n }\n\n if (regExp.sticky) {\n flags += 'y';\n }\n\n return flags;\n };\n\n const {\n isArray\n } = Array;\n\n const GLOBAL_THIS = (() => {\n if (typeof self !== 'undefined') {\n return self;\n }\n\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof __webpack_require__.g !== 'undefined') {\n return __webpack_require__.g;\n }\n\n if (console && console.error) {\n console.error('Unable to locate global object, returning \"this\".');\n }\n })();\n /**\n * @function clone\n *\n * @description\n * copy an object deeply as much as possible\n *\n * If `strict` is applied, then all properties (including non-enumerable ones)\n * are copied with their original property descriptors on both objects and arrays.\n *\n * The object is compared to the global constructors in the `realm` provided,\n * and the native constructor is always used to ensure that extensions of native\n * objects (allows in ES2015+) are maintained.\n *\n * @param object the object to copy\n * @param [options] the options for copying with\n * @param [options.isStrict] should the copy be strict\n * @param [options.realm] the realm (this) object the object is copied from\n * @returns the copied object\n */\n\n\n function clone(object, options = null) {\n // manually coalesced instead of default parameters for performance\n const isStrict = !!(options && options.isStrict);\n const realm = options && options.realm || GLOBAL_THIS;\n const getObjectClone = isStrict ? getObjectCloneStrict : getObjectCloneLoose;\n /**\n * @function handleCopy\n *\n * @description\n * copy the object recursively based on its type\n *\n * @param object the object to copy\n * @returns the copied object\n */\n\n const handleCopy = (object, cache) => {\n if (!object || typeof object !== 'object' || cache.has(object)) {\n return object;\n } // DOM objects\n\n\n if (typeof HTMLElement !== 'undefined' && object instanceof HTMLElement) {\n return object.cloneNode(false);\n }\n\n const Constructor = object.constructor; // plain objects\n\n if (Constructor === realm.Object) {\n cache.add(object);\n return getObjectClone(object, realm, handleCopy, cache);\n }\n\n let clone; // arrays\n\n if (isArray(object)) {\n cache.add(object); // if strict, include non-standard properties\n\n if (isStrict) {\n return getObjectCloneStrict(object, realm, handleCopy, cache);\n }\n\n clone = new Constructor();\n\n for (let index = 0; index < object.length; index++) {\n clone[index] = handleCopy(object[index], cache);\n }\n\n return clone;\n } // dates\n\n\n if (object instanceof realm.Date) {\n return new Constructor(object.getTime());\n } // regexps\n\n\n if (object instanceof realm.RegExp) {\n clone = new Constructor(object.source, object.flags || getRegExpFlags(object));\n clone.lastIndex = object.lastIndex;\n return clone;\n } // maps\n\n\n if (realm.Map && object instanceof realm.Map) {\n cache.add(object);\n clone = new Constructor();\n object.forEach((value, key) => {\n clone.set(key, handleCopy(value, cache));\n });\n return clone;\n } // sets\n\n\n if (realm.Set && object instanceof realm.Set) {\n cache.add(object);\n clone = new Constructor();\n object.forEach(value => {\n clone.add(handleCopy(value, cache));\n });\n return clone;\n } // buffers (node-only)\n\n\n if (realm.Buffer && realm.Buffer.isBuffer(object)) {\n clone = realm.Buffer.allocUnsafe ? realm.Buffer.allocUnsafe(object.length) : new Constructor(object.length);\n object.copy(clone);\n return clone;\n } // arraybuffers / dataviews\n\n\n if (realm.ArrayBuffer) {\n // dataviews\n if (realm.ArrayBuffer.isView(object)) {\n return new Constructor(object.buffer.slice(0));\n } // arraybuffers\n\n\n if (object instanceof realm.ArrayBuffer) {\n return object.slice(0);\n }\n } // if the object cannot / should not be cloned, don't\n\n\n if ( // promise-like\n hasOwnProperty.call(object, 'then') && typeof object.then === 'function' || // errors\n object instanceof Error || // weakmaps\n realm.WeakMap && object instanceof realm.WeakMap || // weaksets\n realm.WeakSet && object instanceof realm.WeakSet) {\n return object;\n }\n\n cache.add(object); // assume anything left is a custom constructor\n\n return getObjectClone(object, realm, handleCopy, cache);\n };\n\n return handleCopy(object, createCache());\n }\n}\n\nexports.U = installHook;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjc5My5qcyIsIm1hcHBpbmdzIjoiO0NBQUE7Ozs7OztBQUVBOzs7Ozs7Ozs7QUFRQSxTQUFnQkEsV0FBaEIsQ0FBNkJDLE1BQTdCLEVBQXFDQyxRQUFRLEdBQUcsS0FBaEQsRUFBcUQ7RUFDbkQsTUFBTUMsZUFBZSxHQUFHLEtBQXhCO0VBQ0EsSUFBSUMsU0FBUyxHQUFHLEVBQWhCOztFQUVBLFNBQVNDLGdCQUFULENBQTJCQyxNQUEzQixFQUFpQztJQUMvQixJQUFLQSxNQUFjLENBQUNDLHFCQUFwQixFQUEyQzs7SUFDM0MsSUFBSTtNQUNERCxNQUFjLENBQUNDLHFCQUFmLEdBQXVDLElBQXZDOztNQUNELE1BQU1DLE1BQU0sR0FBRyxNQUFLO1FBQ2xCLElBQUk7VUFDREYsTUFBTSxDQUFDRyxhQUFQLENBQTZCQyx1QkFBN0IsR0FBdURKLE1BQXZEO1VBQ0QsTUFBTUssTUFBTSxHQUFHTCxNQUFNLENBQUNNLGVBQVAsQ0FBdUJDLGFBQXZCLENBQXFDLFFBQXJDLENBQWY7VUFDQUYsTUFBTSxDQUFDRyxXQUFQLEdBQXFCLE9BQU9kLFdBQVcsQ0FBQ2UsUUFBWixFQUFQLEdBQWdDLGlCQUFyRDtVQUNBVCxNQUFNLENBQUNNLGVBQVAsQ0FBdUJJLGVBQXZCLENBQXVDQyxXQUF2QyxDQUFtRE4sTUFBbkQ7VUFDQUEsTUFBTSxDQUFDTyxVQUFQLENBQWtCQyxXQUFsQixDQUE4QlIsTUFBOUI7UUFDRCxDQU5ELENBTUUsT0FBT1MsQ0FBUCxFQUFVLENBQ1Y7UUFDRDtNQUNGLENBVkQ7O01BV0FaLE1BQU07TUFDTkYsTUFBTSxDQUFDZSxnQkFBUCxDQUF3QixNQUF4QixFQUFnQyxNQUFNYixNQUFNLEVBQTVDO0lBQ0QsQ0FmRCxDQWVFLE9BQU9ZLENBQVAsRUFBVSxDQUNWO0lBQ0Q7RUFDRjs7RUFFRCxJQUFJRSxZQUFZLEdBQUcsQ0FBbkI7O0VBQ0EsU0FBU0MsZUFBVCxHQUF3QjtJQUN0QixJQUFJLE9BQU9DLE1BQVAsS0FBa0IsV0FBdEIsRUFBbUM7SUFFbkMsTUFBTUMsT0FBTyxHQUFHQyxRQUFRLENBQUNDLGdCQUFULENBQTZDLHdDQUE3QyxDQUFoQjs7SUFDQSxLQUFLLE1BQU1yQixNQUFYLElBQXFCbUIsT0FBckIsRUFBOEI7TUFDNUJwQixnQkFBZ0IsQ0FBQ0MsTUFBRCxDQUFoQjtJQUNEO0VBQ0Y7O0VBQ0RpQixlQUFlO0VBQ2YsTUFBTUssV0FBVyxHQUFHQyxXQUFXLENBQUMsTUFBSztJQUNuQ04sZUFBZTtJQUNmRCxZQUFZOztJQUNaLElBQUlBLFlBQVksSUFBSSxDQUFwQixFQUF1QjtNQUNyQlEsYUFBYSxDQUFDRixXQUFELENBQWI7SUFDRDtFQUNGLENBTjhCLEVBTTVCLElBTjRCLENBQS9COztFQVFBLElBQUlHLE1BQU0sQ0FBQ0MsU0FBUCxDQUFpQkMsY0FBakIsQ0FBZ0NDLElBQWhDLENBQXFDakMsTUFBckMsRUFBNkMsOEJBQTdDLENBQUosRUFBa0Y7SUFDaEYsSUFBSUEsTUFBTSxDQUFDa0MsNEJBQVAsQ0FBb0NoQyxlQUFwQyxLQUF3REEsZUFBNUQsRUFBNkU7TUFDM0VpQyxPQUFPLENBQUNDLEtBQVIsQ0FBYyxrR0FBZDtJQUNEOztJQUNEO0VBQ0Q7O0VBRUQsSUFBSUMsSUFBSjs7RUFFQSxJQUFJcEMsUUFBSixFQUFjO0lBQ1osTUFBTXFDLFlBQVksR0FBR0MsRUFBRSxJQUFHO01BQ3hCLElBQUk7UUFDRixNQUFNRixJQUFJLEdBQUlkLE1BQU0sQ0FBQ2lCLE1BQVAsQ0FBc0JOLDRCQUFwQzs7UUFDQSxJQUFJRyxJQUFKLEVBQVU7VUFDUixPQUFPRSxFQUFFLENBQUNGLElBQUQsQ0FBVDtRQUNELENBRkQsTUFFTztVQUNMRixPQUFPLENBQUNNLElBQVIsQ0FBYSx5Q0FBYjtRQUNEO01BQ0YsQ0FQRCxDQU9FLE9BQU90QixDQUFQLEVBQVU7UUFDVmdCLE9BQU8sQ0FBQ00sSUFBUixDQUFhLHdEQUFiLEVBQXVFdEIsQ0FBdkU7TUFDRDtJQUNGLENBWEQ7O0lBYUFrQixJQUFJLEdBQUc7TUFDTG5DLGVBREs7O01BRUw7TUFDQSxJQUFJd0MsR0FBSixDQUFTQyxLQUFULEVBQWM7UUFDWkwsWUFBWSxDQUFDRCxJQUFJLElBQUc7VUFBR0EsSUFBSSxDQUFDSyxHQUFMLEdBQVdDLEtBQVg7UUFBa0IsQ0FBN0IsQ0FBWjtNQUNELENBTEk7O01BT0w7TUFDQSxJQUFJQyxPQUFKLENBQWFELEtBQWIsRUFBa0I7UUFDaEJMLFlBQVksQ0FBQ0QsSUFBSSxJQUFHO1VBQUdBLElBQUksQ0FBQ08sT0FBTCxHQUFlRCxLQUFmO1FBQXNCLENBQWpDLENBQVo7TUFDRCxDQVZJOztNQVlMRSxFQUFFLENBQUVDLEtBQUYsRUFBU0MsRUFBVCxFQUFXO1FBQ1hULFlBQVksQ0FBQ0QsSUFBSSxJQUFJQSxJQUFJLENBQUNRLEVBQUwsQ0FBUUMsS0FBUixFQUFlQyxFQUFmLENBQVQsQ0FBWjtNQUNELENBZEk7O01BZ0JMQyxJQUFJLENBQUVGLEtBQUYsRUFBU0MsRUFBVCxFQUFXO1FBQ2JULFlBQVksQ0FBQ0QsSUFBSSxJQUFJQSxJQUFJLENBQUNXLElBQUwsQ0FBVUYsS0FBVixFQUFpQkMsRUFBakIsQ0FBVCxDQUFaO01BQ0QsQ0FsQkk7O01Bb0JMRSxHQUFHLENBQUVILEtBQUYsRUFBU0MsRUFBVCxFQUFXO1FBQ1pULFlBQVksQ0FBQ0QsSUFBSSxJQUFJQSxJQUFJLENBQUNZLEdBQUwsQ0FBU0gsS0FBVCxFQUFnQkMsRUFBaEIsQ0FBVCxDQUFaO01BQ0QsQ0F0Qkk7O01Bd0JMRyxJQUFJLENBQUVKLEtBQUYsRUFBUyxHQUFHSyxJQUFaLEVBQWdCO1FBQ2xCYixZQUFZLENBQUNELElBQUksSUFBSUEsSUFBSSxDQUFDYSxJQUFMLENBQVVKLEtBQVYsRUFBaUIsR0FBR0ssSUFBcEIsQ0FBVCxDQUFaO01BQ0QsQ0ExQkk7O01BNEJMQyxhQUFhLENBQUVDLFFBQUYsRUFBVTs7O1FBQ3JCLE9BQU8sa0JBQVksQ0FBQ2hCLElBQUksSUFBSUEsSUFBSSxDQUFDZSxhQUFMLENBQW1CQyxRQUFuQixDQUFULENBQVosTUFBa0QsSUFBbEQsSUFBa0RDLGFBQWxELEdBQWtEQSxFQUFsRCxHQUFzRCxLQUE3RDtNQUNEOztJQTlCSSxDQUFQO0VBZ0NELENBOUNELE1BOENPO0lBQ0xqQixJQUFJLEdBQUc7TUFDTG5DLGVBREs7TUFFTHdDLEdBQUcsRUFBRSxJQUZBO01BR0xFLE9BQU8sRUFBRVcsU0FISjtNQUlMQyxPQUFPLEVBQUUsRUFKSjtNQUtMQyxLQUFLLEVBQUUsSUFMRjtNQU1MQyxZQUFZLEVBQUUsSUFOVDtNQU9MQyxZQUFZLEVBQUUsSUFQVDtNQVFMQyxpQkFBaUIsRUFBRSxJQVJkO01BU0xDLElBQUksRUFBRSxFQVREOztNQVdMQyxhQUFhLENBQUVoQixLQUFGLEVBQU87UUFDbEIsTUFBTWlCLE1BQU0sR0FBRyxLQUFLUCxPQUFwQjtRQUNBLEtBQUtBLE9BQUwsR0FBZSxFQUFmOztRQUVBLEtBQUssSUFBSVEsQ0FBQyxHQUFHLENBQVIsRUFBV0MsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQTNCLEVBQW1DRixDQUFDLEdBQUdDLENBQXZDLEVBQTBDRCxDQUFDLEVBQTNDLEVBQStDO1VBQzdDLE1BQU1HLE9BQU8sR0FBR0osTUFBTSxDQUFDQyxDQUFELENBQXRCO1VBQ0FHLE9BQU8sQ0FBQyxDQUFELENBQVAsS0FBZXJCLEtBQWYsQ0FDRTtVQURGLEVBRUksS0FBS0ksSUFBTCxDQUFVa0IsS0FBVixDQUFnQixJQUFoQixFQUFzQkQsT0FBdEIsQ0FGSixHQUdJLEtBQUtYLE9BQUwsQ0FBYWEsSUFBYixDQUFrQkYsT0FBbEIsQ0FISjtRQUlEO01BQ0YsQ0F0Qkk7O01Bd0JMdEIsRUFBRSxDQUFFQyxLQUFGLEVBQVNDLEVBQVQsRUFBVztRQUNYLE1BQU11QixNQUFNLEdBQUcsTUFBTXhCLEtBQXJCOztRQUNBLElBQUkzQyxTQUFTLENBQUNtRSxNQUFELENBQWIsRUFBdUI7VUFDckJuRSxTQUFTLENBQUNtRSxNQUFELENBQVQsQ0FBa0JELElBQWxCLENBQXVCdEIsRUFBdkI7UUFDRCxDQUZELE1BRU87VUFDTDVDLFNBQVMsQ0FBQ21FLE1BQUQsQ0FBVCxHQUFvQixDQUFDdkIsRUFBRCxDQUFwQjs7VUFDQSxLQUFLZSxhQUFMLENBQW1CaEIsS0FBbkI7UUFDRDtNQUNGLENBaENJOztNQWtDTEUsSUFBSSxDQUFFRixLQUFGLEVBQVNDLEVBQVQsRUFBVztRQUNiLE1BQU1GLEVBQUUsR0FBRyxDQUFDLEdBQUdNLElBQUosS0FBWTtVQUNyQixLQUFLRixHQUFMLENBQVNILEtBQVQsRUFBZ0JELEVBQWhCO1VBQ0EsT0FBT0UsRUFBRSxDQUFDcUIsS0FBSCxDQUFTLElBQVQsRUFBZWpCLElBQWYsQ0FBUDtRQUNELENBSEQ7O1FBSUEsS0FBS04sRUFBTCxDQUFRQyxLQUFSLEVBQWVELEVBQWY7TUFDRCxDQXhDSTs7TUEwQ0xJLEdBQUcsQ0FBRUgsS0FBRixFQUFTQyxFQUFULEVBQVc7UUFDWkQsS0FBSyxHQUFHLE1BQU1BLEtBQWQ7O1FBQ0EsSUFBSSxDQUFDeUIsU0FBUyxDQUFDTCxNQUFmLEVBQXVCO1VBQ3JCL0QsU0FBUyxHQUFHLEVBQVo7UUFDRCxDQUZELE1BRU87VUFDTCxNQUFNcUUsR0FBRyxHQUFHckUsU0FBUyxDQUFDMkMsS0FBRCxDQUFyQjs7VUFDQSxJQUFJMEIsR0FBSixFQUFTO1lBQ1AsSUFBSSxDQUFDekIsRUFBTCxFQUFTO2NBQ1A1QyxTQUFTLENBQUMyQyxLQUFELENBQVQsR0FBbUIsSUFBbkI7WUFDRCxDQUZELE1BRU87Y0FDTCxLQUFLLElBQUlrQixDQUFDLEdBQUcsQ0FBUixFQUFXQyxDQUFDLEdBQUdPLEdBQUcsQ0FBQ04sTUFBeEIsRUFBZ0NGLENBQUMsR0FBR0MsQ0FBcEMsRUFBdUNELENBQUMsRUFBeEMsRUFBNEM7Z0JBQzFDLE1BQU16QixFQUFFLEdBQUdpQyxHQUFHLENBQUNSLENBQUQsQ0FBZDs7Z0JBQ0EsSUFBSXpCLEVBQUUsS0FBS1EsRUFBUCxJQUFhUixFQUFFLENBQUNRLEVBQUgsS0FBVUEsRUFBM0IsRUFBK0I7a0JBQzdCeUIsR0FBRyxDQUFDQyxNQUFKLENBQVdULENBQVgsRUFBYyxDQUFkO2tCQUNBO2dCQUNEO2NBQ0Y7WUFDRjtVQUNGO1FBQ0Y7TUFDRixDQTlESTs7TUFnRUxkLElBQUksQ0FBRUosS0FBRixFQUFTLEdBQUdLLElBQVosRUFBZ0I7UUFDbEIsTUFBTW1CLE1BQU0sR0FBRyxNQUFNeEIsS0FBckI7UUFDQSxJQUFJMEIsR0FBRyxHQUFHckUsU0FBUyxDQUFDbUUsTUFBRCxDQUFuQjs7UUFDQSxJQUFJRSxHQUFKLEVBQVM7VUFDUEEsR0FBRyxHQUFHQSxHQUFHLENBQUNFLEtBQUosRUFBTjs7VUFDQSxLQUFLLElBQUlWLENBQUMsR0FBRyxDQUFSLEVBQVdDLENBQUMsR0FBR08sR0FBRyxDQUFDTixNQUF4QixFQUFnQ0YsQ0FBQyxHQUFHQyxDQUFwQyxFQUF1Q0QsQ0FBQyxFQUF4QyxFQUE0QztZQUMxQyxJQUFJO2NBQ0YsTUFBTVcsTUFBTSxHQUFHSCxHQUFHLENBQUNSLENBQUQsQ0FBSCxDQUFPSSxLQUFQLENBQWEsSUFBYixFQUFtQmpCLElBQW5CLENBQWY7O2NBQ0EsSUFBSSxRQUFPd0IsTUFBTSxTQUFOLFVBQU0sV0FBTixHQUFNLE1BQU4sU0FBTSxDQUFFQyxLQUFmLE1BQXlCLFVBQTdCLEVBQXlDO2dCQUN2Q0QsTUFBTSxDQUFDQyxLQUFQLENBQWF6RCxDQUFDLElBQUc7a0JBQ2ZnQixPQUFPLENBQUNDLEtBQVIsQ0FBYywyQ0FBMkNVLEtBQUssYUFBOUQsRUFBNkVLLElBQTdFO2tCQUNBaEIsT0FBTyxDQUFDQyxLQUFSLENBQWNqQixDQUFkO2dCQUNELENBSEQ7Y0FJRDtZQUNGLENBUkQsQ0FRRSxPQUFPQSxDQUFQLEVBQVU7Y0FDVmdCLE9BQU8sQ0FBQ0MsS0FBUixDQUFjLHFDQUFxQ1UsS0FBSyxhQUF4RCxFQUF1RUssSUFBdkU7Y0FDQWhCLE9BQU8sQ0FBQ0MsS0FBUixDQUFjakIsQ0FBZDtZQUNEO1VBQ0Y7UUFDRixDQWhCRCxNQWdCTztVQUNMLEtBQUtxQyxPQUFMLENBQWFhLElBQWIsQ0FBa0IsQ0FBQ3ZCLEtBQUQsRUFBUSxHQUFHSyxJQUFYLENBQWxCO1FBQ0Q7TUFDRixDQXRGSTs7TUF3Rkw7Ozs7TUFJQUMsYUFBYSxDQUFFQyxRQUFGLEVBQVU7UUFDckIsSUFBSXdCLFdBQVcsR0FBRyxLQUFsQjtRQUNBLEtBQUtyQixPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhc0IsTUFBYixDQUFvQkMsSUFBSSxJQUFHO1VBQ3hDLElBQUlBLElBQUksQ0FBQ0MsSUFBTCxDQUFVQyxHQUFHLElBQUlBLEdBQUcsS0FBSzVCLFFBQXpCLENBQUosRUFBd0M7WUFDdEN3QixXQUFXLEdBQUcsSUFBZDtZQUNBLE9BQU8sS0FBUDtVQUNEOztVQUNELE9BQU8sSUFBUDtRQUNELENBTmMsQ0FBZjtRQU9BLE9BQU9BLFdBQVA7TUFDRDs7SUF0R0ksQ0FBUDtJQXlHQXhDLElBQUksQ0FBQ1csSUFBTCxDQUFVLE1BQVYsRUFBa0JOLEdBQUcsSUFBRztNQUN0QkwsSUFBSSxDQUFDSyxHQUFMLEdBQVdBLEdBQVg7O01BRUEsSUFBSUEsR0FBSixFQUFTO1FBQ1BBLEdBQUcsQ0FBQ1gsU0FBSixDQUFjbUQsUUFBZCxHQUF5QjtVQUN2QixNQUFNbkMsRUFBRSxHQUFHL0MsTUFBTSxDQUFDbUYsd0JBQWxCO1VBQ0FwQyxFQUFFLElBQUlBLEVBQUUsQ0FBQyxJQUFELENBQVI7UUFDRCxDQUhEO01BSUQ7SUFDRixDQVREO0lBV0FWLElBQUksQ0FBQ1EsRUFBTCxDQUFRLFVBQVIsRUFBb0IsQ0FBQ3VDLEdBQUQsRUFBTUMsT0FBTixFQUFlQyxLQUFmLEtBQXdCO01BQzFDLE1BQU1DLFNBQVMsR0FBRztRQUNoQkgsR0FEZ0I7UUFFaEJDLE9BRmdCO1FBR2hCQztNQUhnQixDQUFsQjtNQUtBakQsSUFBSSxDQUFDd0IsSUFBTCxDQUFVUSxJQUFWLENBQWVrQixTQUFmO01BQ0FsRCxJQUFJLENBQUNhLElBQUwsQ0FBVSxTQUFWLEVBQXFCcUMsU0FBckI7SUFDRCxDQVJEO0lBVUFsRCxJQUFJLENBQUNXLElBQUwsQ0FBVSxXQUFWLEVBQXVCUyxLQUFLLElBQUc7TUFDN0JwQixJQUFJLENBQUNvQixLQUFMLEdBQWFBLEtBQWI7TUFDQXBCLElBQUksQ0FBQ3FCLFlBQUwsR0FBb0I4QixLQUFLLENBQUMvQixLQUFLLENBQUNnQyxLQUFQLENBQXpCO01BQ0EsTUFBTUMsZ0JBQWdCLEdBQUdqQyxLQUFLLENBQUNrQyxZQUFOLENBQW1CQyxJQUFuQixDQUF3Qm5DLEtBQXhCLENBQXpCOztNQUNBQSxLQUFLLENBQUNrQyxZQUFOLEdBQXFCRixLQUFLLElBQUc7UUFDM0JwRCxJQUFJLENBQUNxQixZQUFMLEdBQW9COEIsS0FBSyxDQUFDQyxLQUFELENBQXpCO1FBQ0FDLGdCQUFnQixDQUFDRCxLQUFELENBQWhCO01BQ0QsQ0FIRCxDQUo2QixDQVE3Qjs7O01BQ0EsSUFBSUksWUFBSixFQUFrQkMsY0FBbEI7O01BQ0EsSUFBSXJDLEtBQUssQ0FBQ3NDLGNBQVYsRUFBMEI7UUFDeEIxRCxJQUFJLENBQUNzQixZQUFMLEdBQW9CLEVBQXBCO1FBQ0FrQyxZQUFZLEdBQUdwQyxLQUFLLENBQUNzQyxjQUFOLENBQXFCSCxJQUFyQixDQUEwQm5DLEtBQTFCLENBQWY7O1FBQ0FBLEtBQUssQ0FBQ3NDLGNBQU4sR0FBdUIsQ0FBQ0MsSUFBRCxFQUFPQyxNQUFQLEVBQWVDLE9BQWYsS0FBMEI7VUFDL0MsSUFBSSxPQUFPRixJQUFQLEtBQWdCLFFBQXBCLEVBQThCQSxJQUFJLEdBQUcsQ0FBQ0EsSUFBRCxDQUFQO1VBQzlCM0QsSUFBSSxDQUFDc0IsWUFBTCxDQUFrQlUsSUFBbEIsQ0FBdUI7WUFBRTJCLElBQUY7WUFBUUMsTUFBUjtZQUFnQkM7VUFBaEIsQ0FBdkI7VUFDQUwsWUFBWSxDQUFDRyxJQUFELEVBQU9DLE1BQVAsRUFBZUMsT0FBZixDQUFaOztVQUNBLElBQUlDLEtBQUosRUFBMkMsRUFHMUM7UUFDRixDQVJEOztRQVNBTCxjQUFjLEdBQUdyQyxLQUFLLENBQUM4QyxnQkFBTixDQUF1QlgsSUFBdkIsQ0FBNEJuQyxLQUE1QixDQUFqQjs7UUFDQUEsS0FBSyxDQUFDOEMsZ0JBQU4sR0FBMEJQLElBQUQsSUFBUztVQUNoQyxJQUFJLE9BQU9BLElBQVAsS0FBZ0IsUUFBcEIsRUFBOEJBLElBQUksR0FBRyxDQUFDQSxJQUFELENBQVA7VUFDOUIsTUFBTVEsR0FBRyxHQUFHUixJQUFJLENBQUNTLElBQUwsQ0FBVSxHQUFWLENBQVo7VUFDQSxNQUFNQyxLQUFLLEdBQUdyRSxJQUFJLENBQUNzQixZQUFMLENBQWtCZ0QsU0FBbEIsQ0FBNEJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDWixJQUFGLENBQU9TLElBQVAsQ0FBWSxHQUFaLE1BQXFCRCxHQUF0RCxDQUFkO1VBQ0EsSUFBSUUsS0FBSyxLQUFLLENBQUMsQ0FBZixFQUFrQnJFLElBQUksQ0FBQ3NCLFlBQUwsQ0FBa0JjLE1BQWxCLENBQXlCaUMsS0FBekIsRUFBZ0MsQ0FBaEM7VUFDbEJaLGNBQWMsQ0FBQ0UsSUFBRCxDQUFkOztVQUNBLElBQUlHLEtBQUosRUFBMkMsRUFHMUM7UUFDRixDQVZEO01BV0Q7O01BQ0Q5RCxJQUFJLENBQUN1QixpQkFBTCxHQUF5QixNQUFLO1FBQzVCSCxLQUFLLENBQUNrQyxZQUFOLEdBQXFCRCxnQkFBckI7O1FBQ0EsSUFBSWpDLEtBQUssQ0FBQ3NDLGNBQVYsRUFBMEI7VUFDeEJ0QyxLQUFLLENBQUNzQyxjQUFOLEdBQXVCRixZQUF2QjtVQUNBcEMsS0FBSyxDQUFDOEMsZ0JBQU4sR0FBeUJULGNBQXpCO1FBQ0Q7O1FBQ0QsT0FBT3pELElBQUksQ0FBQ3NCLFlBQUwsSUFBcUIsRUFBNUI7TUFDRCxDQVBEO0lBUUQsQ0EzQ0Q7RUE0Q0Q7O0VBRUQ3QixNQUFNLENBQUMrRSxjQUFQLENBQXNCN0csTUFBdEIsRUFBOEIsOEJBQTlCLEVBQThEO0lBQzVEOEcsR0FBRztNQUNELE9BQU96RSxJQUFQO0lBQ0Q7O0VBSDJELENBQTlELEVBaFJtRCxDQXNSbkQ7O0VBQ0EsSUFBSXJDLE1BQU0sQ0FBQytHLDRCQUFYLEVBQXlDO0lBQ3ZDLElBQUk7TUFDRi9HLE1BQU0sQ0FBQytHLDRCQUFQLENBQW9DQyxPQUFwQyxDQUE0Q3pFLEVBQUUsSUFBSUEsRUFBRSxDQUFDRixJQUFELENBQXBEOztNQUNBckMsTUFBTSxDQUFDK0csNEJBQVAsR0FBc0MsRUFBdEM7SUFDRCxDQUhELENBR0UsT0FBTzVGLENBQVAsRUFBVTtNQUNWZ0IsT0FBTyxDQUFDQyxLQUFSLENBQWMseUNBQWQsRUFBeURqQixDQUF6RDtJQUNEO0VBQ0YsQ0E5UmtELENBZ1NuRDtFQUNBO0VBQ0E7RUFDQTtFQUVBOzs7RUFDQSxNQUFNO0lBQUVMLFFBQVEsRUFBRW1HO0VBQVosSUFBaUNDLFFBQVEsQ0FBQ25GLFNBQWhEO0VBQ0EsTUFBTTtJQUNKb0YsTUFESTtJQUVKTixjQUZJO0lBR0pPLHdCQUhJO0lBSUpDLG1CQUpJO0lBS0pDLHFCQUxJO0lBTUpDO0VBTkksSUFPRnpGLE1BUEo7RUFRQSxNQUFNO0lBQUVFLGNBQUY7SUFBa0J3RjtFQUFsQixJQUEyQzFGLE1BQU0sQ0FBQ0MsU0FBeEQ7RUFFQTs7Ozs7Ozs7O0VBUUEsTUFBTTBGLFFBQVEsR0FBRztJQUNmQyxpQkFBaUIsRUFBRSxPQUFPSixxQkFBUCxLQUFpQyxVQURyQztJQUVmSyxPQUFPLEVBQUUsT0FBT0MsT0FBUCxLQUFtQjtFQUZiLENBQWpCO0VBS0E7Ozs7Ozs7OztFQVFBLE1BQU1DLFdBQVcsR0FBRyxNQUFLO0lBQ3ZCLElBQUlKLFFBQVEsQ0FBQ0UsT0FBYixFQUFzQjtNQUNwQixPQUFPLElBQUlDLE9BQUosRUFBUDtJQUNEOztJQUVELE1BQU1FLE1BQU0sR0FBR1gsTUFBTSxDQUFDO01BQ3BCWSxHQUFHLEVBQUdwRixLQUFELElBQVdtRixNQUFNLENBQUNFLE9BQVAsQ0FBZTNELElBQWYsQ0FBb0IxQixLQUFwQixDQURJO01BRXBCc0YsR0FBRyxFQUFHdEYsS0FBRCxJQUFXLENBQUMsQ0FBQyxDQUFDbUYsTUFBTSxDQUFDRSxPQUFQLENBQWVFLE9BQWYsQ0FBdUJ2RixLQUF2QjtJQUZDLENBQUQsQ0FBckI7SUFLQW1GLE1BQU0sQ0FBQ0UsT0FBUCxHQUFpQixFQUFqQjtJQUVBLE9BQU9GLE1BQVA7RUFDRCxDQWJEO0VBZUE7Ozs7Ozs7Ozs7OztFQVVBLE1BQU1LLGFBQWEsR0FBRyxDQUFDTCxNQUFELEVBQVNNLEtBQVQsS0FBa0I7SUFDdEMsSUFBSSxDQUFDTixNQUFNLENBQUNPLFdBQVosRUFBeUI7TUFDdkIsT0FBT2xCLE1BQU0sQ0FBQyxJQUFELENBQWI7SUFDRCxDQUhxQyxDQUt0Qzs7O0lBQ0EsTUFBTXBGLFNBQVMsR0FBRytGLE1BQU0sQ0FBQ1EsU0FBUCxJQUFvQmYsY0FBYyxDQUFDTyxNQUFELENBQXBEOztJQUVBLElBQUlBLE1BQU0sQ0FBQ08sV0FBUCxLQUF1QkQsS0FBSyxDQUFDdEcsTUFBakMsRUFBeUM7TUFDdkMsT0FBT0MsU0FBUyxLQUFLcUcsS0FBSyxDQUFDdEcsTUFBTixDQUFhQyxTQUEzQixHQUF1QyxFQUF2QyxHQUE0Q29GLE1BQU0sQ0FBQ3BGLFNBQUQsQ0FBekQ7SUFDRDs7SUFFRCxJQUFJLENBQUNrRixnQkFBZ0IsQ0FBQ2hGLElBQWpCLENBQXNCNkYsTUFBTSxDQUFDTyxXQUE3QixFQUEwQ0gsT0FBMUMsQ0FBa0QsZUFBbEQsQ0FBTCxFQUF5RTtNQUN2RSxJQUFJO1FBQ0YsT0FBTyxJQUFJSixNQUFNLENBQUNPLFdBQVgsRUFBUDtNQUNELENBRkQsQ0FFRSxPQUFPbEgsQ0FBUCxFQUFVLENBQ1Y7TUFDRDtJQUNGOztJQUVELE9BQU9nRyxNQUFNLENBQUNwRixTQUFELENBQWI7RUFDRCxDQXJCRDtFQXVCQTs7Ozs7Ozs7Ozs7Ozs7RUFZQSxNQUFNd0csbUJBQW1CLEdBQUcsQ0FDMUJULE1BRDBCLEVBRTFCTSxLQUYwQixFQUcxQkksVUFIMEIsRUFJMUJDLEtBSjBCLEtBS3hCO0lBQ0YsTUFBTWpELEtBQUssR0FBRzJDLGFBQWEsQ0FBQ0wsTUFBRCxFQUFTTSxLQUFULENBQTNCOztJQUVBLEtBQUssTUFBTTVCLEdBQVgsSUFBa0JzQixNQUFsQixFQUEwQjtNQUN4QixJQUFJOUYsY0FBYyxDQUFDQyxJQUFmLENBQW9CNkYsTUFBcEIsRUFBNEJ0QixHQUE1QixDQUFKLEVBQXNDO1FBQ3BDaEIsS0FBSyxDQUFDZ0IsR0FBRCxDQUFMLEdBQWFnQyxVQUFVLENBQUNWLE1BQU0sQ0FBQ3RCLEdBQUQsQ0FBUCxFQUFjaUMsS0FBZCxDQUF2QjtNQUNEO0lBQ0Y7O0lBRUQsSUFBSWhCLFFBQVEsQ0FBQ0MsaUJBQWIsRUFBZ0M7TUFDOUIsTUFBTWdCLE9BQU8sR0FBR3BCLHFCQUFxQixDQUFDUSxNQUFELENBQXJDOztNQUVBLElBQUlZLE9BQU8sQ0FBQ3hFLE1BQVosRUFBb0I7UUFDbEIsS0FBSyxJQUFJd0MsS0FBSyxHQUFHLENBQVosRUFBZWlDLE1BQXBCLEVBQTRCakMsS0FBSyxHQUFHZ0MsT0FBTyxDQUFDeEUsTUFBNUMsRUFBb0R3QyxLQUFLLEVBQXpELEVBQTZEO1VBQzNEaUMsTUFBTSxHQUFHRCxPQUFPLENBQUNoQyxLQUFELENBQWhCOztVQUVBLElBQUljLG9CQUFvQixDQUFDdkYsSUFBckIsQ0FBMEI2RixNQUExQixFQUFrQ2EsTUFBbEMsQ0FBSixFQUErQztZQUM3Q25ELEtBQUssQ0FBQ21ELE1BQUQsQ0FBTCxHQUFnQkgsVUFBVSxDQUFDVixNQUFNLENBQUNhLE1BQUQsQ0FBUCxFQUFpQkYsS0FBakIsQ0FBMUI7VUFDRDtRQUNGO01BQ0Y7SUFDRjs7SUFFRCxPQUFPakQsS0FBUDtFQUNELENBN0JEO0VBK0JBOzs7Ozs7Ozs7Ozs7OztFQVlBLE1BQU1vRCxvQkFBb0IsR0FBRyxDQUMzQmQsTUFEMkIsRUFFM0JNLEtBRjJCLEVBRzNCSSxVQUgyQixFQUkzQkMsS0FKMkIsS0FLekI7SUFDRixNQUFNakQsS0FBSyxHQUFHMkMsYUFBYSxDQUFDTCxNQUFELEVBQVNNLEtBQVQsQ0FBM0I7SUFFQSxNQUFNUyxVQUFVLEdBQUdwQixRQUFRLENBQUNDLGlCQUFULEdBQ2YsR0FBR29CLE1BQUgsQ0FBVXpCLG1CQUFtQixDQUFDUyxNQUFELENBQTdCLEVBQXVDUixxQkFBcUIsQ0FBQ1EsTUFBRCxDQUE1RCxDQURlLEdBRWZULG1CQUFtQixDQUFDUyxNQUFELENBRnZCOztJQUlBLElBQUllLFVBQVUsQ0FBQzNFLE1BQWYsRUFBdUI7TUFDckIsS0FDRSxJQUFJd0MsS0FBSyxHQUFHLENBQVosRUFBZXFDLFFBQWYsRUFBeUJDLFVBRDNCLEVBRUV0QyxLQUFLLEdBQUdtQyxVQUFVLENBQUMzRSxNQUZyQixFQUdFd0MsS0FBSyxFQUhQLEVBSUU7UUFDQXFDLFFBQVEsR0FBR0YsVUFBVSxDQUFDbkMsS0FBRCxDQUFyQjs7UUFFQSxJQUFJcUMsUUFBUSxLQUFLLFFBQWIsSUFBeUJBLFFBQVEsS0FBSyxRQUExQyxFQUFvRDtVQUNsREMsVUFBVSxHQUFHNUIsd0JBQXdCLENBQUNVLE1BQUQsRUFBU2lCLFFBQVQsQ0FBckM7VUFFQUMsVUFBVSxDQUFDckcsS0FBWCxHQUFtQjZGLFVBQVUsQ0FBQ1YsTUFBTSxDQUFDaUIsUUFBRCxDQUFQLEVBQW1CTixLQUFuQixDQUE3QjtVQUVBNUIsY0FBYyxDQUFDckIsS0FBRCxFQUFRdUQsUUFBUixFQUFrQkMsVUFBbEIsQ0FBZDtRQUNEO01BQ0Y7SUFDRjs7SUFFRCxPQUFPeEQsS0FBUDtFQUNELENBL0JEO0VBaUNBOzs7Ozs7Ozs7OztFQVNBLE1BQU15RCxjQUFjLEdBQUlDLE1BQUQsSUFBVztJQUNoQyxJQUFJQyxLQUFLLEdBQUcsRUFBWjs7SUFFQSxJQUFJRCxNQUFNLENBQUNFLE1BQVgsRUFBbUI7TUFDakJELEtBQUssSUFBSSxHQUFUO0lBQ0Q7O0lBRUQsSUFBSUQsTUFBTSxDQUFDRyxVQUFYLEVBQXVCO01BQ3JCRixLQUFLLElBQUksR0FBVDtJQUNEOztJQUVELElBQUlELE1BQU0sQ0FBQ0ksU0FBWCxFQUFzQjtNQUNwQkgsS0FBSyxJQUFJLEdBQVQ7SUFDRDs7SUFFRCxJQUFJRCxNQUFNLENBQUNLLE9BQVgsRUFBb0I7TUFDbEJKLEtBQUssSUFBSSxHQUFUO0lBQ0Q7O0lBRUQsSUFBSUQsTUFBTSxDQUFDTSxNQUFYLEVBQW1CO01BQ2pCTCxLQUFLLElBQUksR0FBVDtJQUNEOztJQUVELE9BQU9BLEtBQVA7RUFDRCxDQXhCRDs7RUEwQkEsTUFBTTtJQUFFTTtFQUFGLElBQWNDLEtBQXBCOztFQUVBLE1BQU1DLFdBQVcsR0FBRyxDQUFDLE1BQUs7SUFDeEIsSUFBSSxPQUFPQyxJQUFQLEtBQWdCLFdBQXBCLEVBQWlDO01BQy9CLE9BQU9BLElBQVA7SUFDRDs7SUFFRCxJQUFJLE9BQU9ySSxNQUFQLEtBQWtCLFdBQXRCLEVBQW1DO01BQ2pDLE9BQU9BLE1BQVA7SUFDRDs7SUFFRCxJQUFJLE9BQU82SCxxQkFBUCxLQUFrQixXQUF0QixFQUFtQztNQUNqQyxPQUFPQSxxQkFBUDtJQUNEOztJQUVELElBQUlqSCxPQUFPLElBQUlBLE9BQU8sQ0FBQ0MsS0FBdkIsRUFBOEI7TUFDNUJELE9BQU8sQ0FBQ0MsS0FBUixDQUFjLG1EQUFkO0lBQ0Q7RUFDRixDQWhCbUIsR0FBcEI7RUFrQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CQSxTQUFTb0QsS0FBVCxDQUFnQnNDLE1BQWhCLEVBQXdCNUIsT0FBTyxHQUFHLElBQWxDLEVBQXNDO0lBQ3BDO0lBQ0EsTUFBTTJELFFBQVEsR0FBRyxDQUFDLEVBQUUzRCxPQUFPLElBQUlBLE9BQU8sQ0FBQzJELFFBQXJCLENBQWxCO0lBQ0EsTUFBTXpCLEtBQUssR0FBSWxDLE9BQU8sSUFBSUEsT0FBTyxDQUFDa0MsS0FBcEIsSUFBOEJ1QixXQUE1QztJQUVBLE1BQU1HLGNBQWMsR0FBR0QsUUFBUSxHQUMzQmpCLG9CQUQyQixHQUUzQkwsbUJBRko7SUFJQTs7Ozs7Ozs7OztJQVNBLE1BQU1DLFVBQVUsR0FBRyxDQUNqQlYsTUFEaUIsRUFFakJXLEtBRmlCLEtBR2Y7TUFDRixJQUFJLENBQUNYLE1BQUQsSUFBVyxPQUFPQSxNQUFQLEtBQWtCLFFBQTdCLElBQXlDVyxLQUFLLENBQUNSLEdBQU4sQ0FBVUgsTUFBVixDQUE3QyxFQUFnRTtRQUM5RCxPQUFPQSxNQUFQO01BQ0QsQ0FIQyxDQUtGOzs7TUFDQSxJQUFJLE9BQU9pQyxXQUFQLEtBQXVCLFdBQXZCLElBQXNDakMsTUFBTSxZQUFZaUMsV0FBNUQsRUFBeUU7UUFDdkUsT0FBT2pDLE1BQU0sQ0FBQ2tDLFNBQVAsQ0FBaUIsS0FBakIsQ0FBUDtNQUNEOztNQUVELE1BQU1DLFdBQVcsR0FBR25DLE1BQU0sQ0FBQ08sV0FBM0IsQ0FWRSxDQVlGOztNQUNBLElBQUk0QixXQUFXLEtBQUs3QixLQUFLLENBQUN0RyxNQUExQixFQUFrQztRQUNoQzJHLEtBQUssQ0FBQ1YsR0FBTixDQUFVRCxNQUFWO1FBRUEsT0FBT2dDLGNBQWMsQ0FBQ2hDLE1BQUQsRUFBU00sS0FBVCxFQUFnQkksVUFBaEIsRUFBNEJDLEtBQTVCLENBQXJCO01BQ0Q7O01BRUQsSUFBSWpELEtBQUosQ0FuQkUsQ0FxQkY7O01BQ0EsSUFBSWlFLE9BQU8sQ0FBQzNCLE1BQUQsQ0FBWCxFQUFxQjtRQUNuQlcsS0FBSyxDQUFDVixHQUFOLENBQVVELE1BQVYsRUFEbUIsQ0FHbkI7O1FBQ0EsSUFBSStCLFFBQUosRUFBYztVQUNaLE9BQU9qQixvQkFBb0IsQ0FBQ2QsTUFBRCxFQUFTTSxLQUFULEVBQWdCSSxVQUFoQixFQUE0QkMsS0FBNUIsQ0FBM0I7UUFDRDs7UUFFRGpELEtBQUssR0FBRyxJQUFJeUUsV0FBSixFQUFSOztRQUVBLEtBQUssSUFBSXZELEtBQUssR0FBRyxDQUFqQixFQUFvQkEsS0FBSyxHQUFHb0IsTUFBTSxDQUFDNUQsTUFBbkMsRUFBMkN3QyxLQUFLLEVBQWhELEVBQW9EO1VBQ2xEbEIsS0FBSyxDQUFDa0IsS0FBRCxDQUFMLEdBQWU4QixVQUFVLENBQUNWLE1BQU0sQ0FBQ3BCLEtBQUQsQ0FBUCxFQUFnQitCLEtBQWhCLENBQXpCO1FBQ0Q7O1FBRUQsT0FBT2pELEtBQVA7TUFDRCxDQXJDQyxDQXVDRjs7O01BQ0EsSUFBSXNDLE1BQU0sWUFBWU0sS0FBSyxDQUFDOEIsSUFBNUIsRUFBa0M7UUFDaEMsT0FBTyxJQUFJRCxXQUFKLENBQWdCbkMsTUFBTSxDQUFDcUMsT0FBUCxFQUFoQixDQUFQO01BQ0QsQ0ExQ0MsQ0E0Q0Y7OztNQUNBLElBQUlyQyxNQUFNLFlBQVlNLEtBQUssQ0FBQ2dDLE1BQTVCLEVBQW9DO1FBQ2xDNUUsS0FBSyxHQUFHLElBQUl5RSxXQUFKLENBQ05uQyxNQUFNLENBQUN1QyxNQURELEVBRU52QyxNQUFNLENBQUNxQixLQUFQLElBQWdCRixjQUFjLENBQUNuQixNQUFELENBRnhCLENBQVI7UUFLQXRDLEtBQUssQ0FBQzhFLFNBQU4sR0FBa0J4QyxNQUFNLENBQUN3QyxTQUF6QjtRQUVBLE9BQU85RSxLQUFQO01BQ0QsQ0F0REMsQ0F3REY7OztNQUNBLElBQUk0QyxLQUFLLENBQUNtQyxHQUFOLElBQWF6QyxNQUFNLFlBQVlNLEtBQUssQ0FBQ21DLEdBQXpDLEVBQThDO1FBQzVDOUIsS0FBSyxDQUFDVixHQUFOLENBQVVELE1BQVY7UUFFQXRDLEtBQUssR0FBRyxJQUFJeUUsV0FBSixFQUFSO1FBRUFuQyxNQUFNLENBQUNkLE9BQVAsQ0FBZSxDQUFDckUsS0FBRCxFQUFRNkQsR0FBUixLQUFlO1VBQzVCaEIsS0FBSyxDQUFDZ0YsR0FBTixDQUFVaEUsR0FBVixFQUFlZ0MsVUFBVSxDQUFDN0YsS0FBRCxFQUFROEYsS0FBUixDQUF6QjtRQUNELENBRkQ7UUFJQSxPQUFPakQsS0FBUDtNQUNELENBbkVDLENBcUVGOzs7TUFDQSxJQUFJNEMsS0FBSyxDQUFDcUMsR0FBTixJQUFhM0MsTUFBTSxZQUFZTSxLQUFLLENBQUNxQyxHQUF6QyxFQUE4QztRQUM1Q2hDLEtBQUssQ0FBQ1YsR0FBTixDQUFVRCxNQUFWO1FBRUF0QyxLQUFLLEdBQUcsSUFBSXlFLFdBQUosRUFBUjtRQUVBbkMsTUFBTSxDQUFDZCxPQUFQLENBQWdCckUsS0FBRCxJQUFVO1VBQ3ZCNkMsS0FBSyxDQUFDdUMsR0FBTixDQUFVUyxVQUFVLENBQUM3RixLQUFELEVBQVE4RixLQUFSLENBQXBCO1FBQ0QsQ0FGRDtRQUlBLE9BQU9qRCxLQUFQO01BQ0QsQ0FoRkMsQ0FrRkY7OztNQUNBLElBQUk0QyxLQUFLLENBQUNzQyxNQUFOLElBQWdCdEMsS0FBSyxDQUFDc0MsTUFBTixDQUFhQyxRQUFiLENBQXNCN0MsTUFBdEIsQ0FBcEIsRUFBbUQ7UUFDakR0QyxLQUFLLEdBQUc0QyxLQUFLLENBQUNzQyxNQUFOLENBQWFFLFdBQWIsR0FDSnhDLEtBQUssQ0FBQ3NDLE1BQU4sQ0FBYUUsV0FBYixDQUF5QjlDLE1BQU0sQ0FBQzVELE1BQWhDLENBREksR0FFSixJQUFJK0YsV0FBSixDQUFnQm5DLE1BQU0sQ0FBQzVELE1BQXZCLENBRko7UUFJQTRELE1BQU0sQ0FBQytDLElBQVAsQ0FBWXJGLEtBQVo7UUFFQSxPQUFPQSxLQUFQO01BQ0QsQ0EzRkMsQ0E2RkY7OztNQUNBLElBQUk0QyxLQUFLLENBQUMwQyxXQUFWLEVBQXVCO1FBQ3JCO1FBQ0EsSUFBSTFDLEtBQUssQ0FBQzBDLFdBQU4sQ0FBa0JDLE1BQWxCLENBQXlCakQsTUFBekIsQ0FBSixFQUFzQztVQUNwQyxPQUFPLElBQUltQyxXQUFKLENBQWdCbkMsTUFBTSxDQUFDL0QsTUFBUCxDQUFjVyxLQUFkLENBQW9CLENBQXBCLENBQWhCLENBQVA7UUFDRCxDQUpvQixDQU1yQjs7O1FBQ0EsSUFBSW9ELE1BQU0sWUFBWU0sS0FBSyxDQUFDMEMsV0FBNUIsRUFBeUM7VUFDdkMsT0FBT2hELE1BQU0sQ0FBQ3BELEtBQVAsQ0FBYSxDQUFiLENBQVA7UUFDRDtNQUNGLENBeEdDLENBMEdGOzs7TUFDQSxLQUNFO01BQ0MxQyxjQUFjLENBQUNDLElBQWYsQ0FBb0I2RixNQUFwQixFQUE0QixNQUE1QixLQUF1QyxPQUFPQSxNQUFNLENBQUNrRCxJQUFkLEtBQXVCLFVBQS9ELElBQ0E7TUFDQWxELE1BQU0sWUFBWW1ELEtBRmxCLElBR0E7TUFDQzdDLEtBQUssQ0FBQzhDLE9BQU4sSUFBaUJwRCxNQUFNLFlBQVlNLEtBQUssQ0FBQzhDLE9BSjFDLElBS0E7TUFDQzlDLEtBQUssQ0FBQ1IsT0FBTixJQUFpQkUsTUFBTSxZQUFZTSxLQUFLLENBQUNSLE9BUjVDLEVBU0U7UUFDQSxPQUFPRSxNQUFQO01BQ0Q7O01BRURXLEtBQUssQ0FBQ1YsR0FBTixDQUFVRCxNQUFWLEVBeEhFLENBMEhGOztNQUNBLE9BQU9nQyxjQUFjLENBQUNoQyxNQUFELEVBQVNNLEtBQVQsRUFBZ0JJLFVBQWhCLEVBQTRCQyxLQUE1QixDQUFyQjtJQUNELENBL0hEOztJQWlJQSxPQUFPRCxVQUFVLENBQUNWLE1BQUQsRUFBU0QsV0FBVyxFQUFwQixDQUFqQjtFQUNEO0FBQ0Y7O0FBN3FCRHNELFNBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvaG9vay50cz8yZjlhIl0sIm5hbWVzIjpbImluc3RhbGxIb29rIiwidGFyZ2V0IiwiaXNJZnJhbWUiLCJkZXZ0b29sc1ZlcnNpb24iLCJsaXN0ZW5lcnMiLCJpbmplY3RJZnJhbWVIb29rIiwiaWZyYW1lIiwiX192ZGV2dG9vbHNfX2luamVjdGVkIiwiaW5qZWN0IiwiY29udGVudFdpbmRvdyIsIl9fVlVFX0RFVlRPT0xTX0lGUkFNRV9fIiwic2NyaXB0IiwiY29udGVudERvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInRleHRDb250ZW50IiwidG9TdHJpbmciLCJkb2N1bWVudEVsZW1lbnQiLCJhcHBlbmRDaGlsZCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsImUiLCJhZGRFdmVudExpc3RlbmVyIiwiaWZyYW1lQ2hlY2tzIiwiaW5qZWN0VG9JZnJhbWVzIiwid2luZG93IiwiaWZyYW1lcyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImlmcmFtZVRpbWVyIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyIsImNvbnNvbGUiLCJlcnJvciIsImhvb2siLCJzZW5kVG9QYXJlbnQiLCJjYiIsInBhcmVudCIsIndhcm4iLCJWdWUiLCJ2YWx1ZSIsImVuYWJsZWQiLCJvbiIsImV2ZW50IiwiZm4iLCJvbmNlIiwib2ZmIiwiZW1pdCIsImFyZ3MiLCJjbGVhbnVwQnVmZmVyIiwibWF0Y2hBcmciLCJfYSIsInVuZGVmaW5lZCIsIl9idWZmZXIiLCJzdG9yZSIsImluaXRpYWxTdGF0ZSIsInN0b3JlTW9kdWxlcyIsImZsdXNoU3RvcmVNb2R1bGVzIiwiYXBwcyIsIl9yZXBsYXlCdWZmZXIiLCJidWZmZXIiLCJpIiwibCIsImxlbmd0aCIsImFsbEFyZ3MiLCJhcHBseSIsInB1c2giLCIkZXZlbnQiLCJhcmd1bWVudHMiLCJjYnMiLCJzcGxpY2UiLCJzbGljZSIsInJlc3VsdCIsImNhdGNoIiwid2FzQnVmZmVyZWQiLCJmaWx0ZXIiLCJpdGVtIiwic29tZSIsImFyZyIsIiRpbnNwZWN0IiwiX19WVUVfREVWVE9PTFNfSU5TUEVDVF9fIiwiYXBwIiwidmVyc2lvbiIsInR5cGVzIiwiYXBwUmVjb3JkIiwiY2xvbmUiLCJzdGF0ZSIsIm9yaWdSZXBsYWNlU3RhdGUiLCJyZXBsYWNlU3RhdGUiLCJiaW5kIiwib3JpZ1JlZ2lzdGVyIiwib3JpZ1VucmVnaXN0ZXIiLCJyZWdpc3Rlck1vZHVsZSIsInBhdGgiLCJtb2R1bGUiLCJvcHRpb25zIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwibG9nIiwidW5yZWdpc3Rlck1vZHVsZSIsImtleSIsImpvaW4iLCJpbmRleCIsImZpbmRJbmRleCIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsIl9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX18iLCJmb3JFYWNoIiwidG9TdHJpbmdGdW5jdGlvbiIsIkZ1bmN0aW9uIiwiY3JlYXRlIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImdldFByb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJTVVBQT1JUUyIsIlNZTUJPTF9QUk9QRVJUSUVTIiwiV0VBS1NFVCIsIldlYWtTZXQiLCJjcmVhdGVDYWNoZSIsIm9iamVjdCIsImFkZCIsIl92YWx1ZXMiLCJoYXMiLCJpbmRleE9mIiwiZ2V0Q2xlYW5DbG9uZSIsInJlYWxtIiwiY29uc3RydWN0b3IiLCJfX3Byb3RvX18iLCJnZXRPYmplY3RDbG9uZUxvb3NlIiwiaGFuZGxlQ29weSIsImNhY2hlIiwic3ltYm9scyIsInN5bWJvbCIsImdldE9iamVjdENsb25lU3RyaWN0IiwicHJvcGVydGllcyIsImNvbmNhdCIsInByb3BlcnR5IiwiZGVzY3JpcHRvciIsImdldFJlZ0V4cEZsYWdzIiwicmVnRXhwIiwiZmxhZ3MiLCJnbG9iYWwiLCJpZ25vcmVDYXNlIiwibXVsdGlsaW5lIiwidW5pY29kZSIsInN0aWNreSIsImlzQXJyYXkiLCJBcnJheSIsIkdMT0JBTF9USElTIiwic2VsZiIsImlzU3RyaWN0IiwiZ2V0T2JqZWN0Q2xvbmUiLCJIVE1MRWxlbWVudCIsImNsb25lTm9kZSIsIkNvbnN0cnVjdG9yIiwiRGF0ZSIsImdldFRpbWUiLCJSZWdFeHAiLCJzb3VyY2UiLCJsYXN0SW5kZXgiLCJNYXAiLCJzZXQiLCJTZXQiLCJCdWZmZXIiLCJpc0J1ZmZlciIsImFsbG9jVW5zYWZlIiwiY29weSIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGhlbiIsIkVycm9yIiwiV2Vha01hcCIsImV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///6793\n")},79310:(__unused_webpack_module,exports)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getCatchedGetters = exports.getCustomStoreDetails = exports.getCustomRouterDetails = exports.isVueInstance = exports.getCustomObjectDetails = exports.getCustomInstanceDetails = exports.getInstanceMap = exports.backendInjections = void 0;\nexports.backendInjections = {\n instanceMap: new Map(),\n isVueInstance: () => false,\n getCustomInstanceDetails: () => ({}),\n getCustomObjectDetails: () => undefined\n};\n\nfunction getInstanceMap() {\n return exports.backendInjections.instanceMap;\n}\n\nexports.getInstanceMap = getInstanceMap;\n\nfunction getCustomInstanceDetails(instance) {\n return exports.backendInjections.getCustomInstanceDetails(instance);\n}\n\nexports.getCustomInstanceDetails = getCustomInstanceDetails;\n\nfunction getCustomObjectDetails(value, proto) {\n return exports.backendInjections.getCustomObjectDetails(value, proto);\n}\n\nexports.getCustomObjectDetails = getCustomObjectDetails;\n\nfunction isVueInstance(value) {\n return exports.backendInjections.isVueInstance(value);\n}\n\nexports.isVueInstance = isVueInstance; // @TODO refactor\n\nfunction getCustomRouterDetails(router) {\n return {\n _custom: {\n type: 'router',\n display: 'VueRouter',\n value: {\n options: router.options,\n currentRoute: router.currentRoute\n },\n fields: {\n abstract: true\n }\n }\n };\n}\n\nexports.getCustomRouterDetails = getCustomRouterDetails; // @TODO refactor\n\nfunction getCustomStoreDetails(store) {\n return {\n _custom: {\n type: 'store',\n display: 'Store',\n value: {\n state: store.state,\n getters: getCatchedGetters(store)\n },\n fields: {\n abstract: true\n }\n }\n };\n}\n\nexports.getCustomStoreDetails = getCustomStoreDetails; // @TODO refactor\n\nfunction getCatchedGetters(store) {\n const getters = {};\n const origGetters = store.getters || {};\n const keys = Object.keys(origGetters);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n Object.defineProperty(getters, key, {\n enumerable: true,\n get: () => {\n try {\n return origGetters[key];\n } catch (e) {\n return e;\n }\n }\n });\n }\n\n return getters;\n}\n\nexports.getCatchedGetters = getCatchedGetters;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkzMTAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWFBLHlCQUFBQSxHQUFvQjtFQUMvQkMsV0FBVyxFQUFFLElBQUlDLEdBQUosRUFEa0I7RUFFL0JDLGFBQWEsRUFBRyxNQUFNLEtBRlM7RUFHL0JDLHdCQUF3QixFQUFHLE9BQU8sRUFBUCxDQUhJO0VBSS9CQyxzQkFBc0IsRUFBRyxNQUFNQztBQUpBLENBQXBCOztBQU9iLFNBQWdCQyxjQUFoQixHQUE4QjtFQUM1QixPQUFPUCwwQkFBa0JDLFdBQXpCO0FBQ0Q7O0FBRkRELHNCQUFBQTs7QUFJQSxTQUFnQkksd0JBQWhCLENBQTBDSSxRQUExQyxFQUFrRDtFQUNoRCxPQUFPUiwwQkFBa0JJLHdCQUFsQixDQUEyQ0ksUUFBM0MsQ0FBUDtBQUNEOztBQUZEUixnQ0FBQUE7O0FBSUEsU0FBZ0JLLHNCQUFoQixDQUF3Q0ksS0FBeEMsRUFBK0NDLEtBQS9DLEVBQTREO0VBQzFELE9BQU9WLDBCQUFrQkssc0JBQWxCLENBQXlDSSxLQUF6QyxFQUFnREMsS0FBaEQsQ0FBUDtBQUNEOztBQUZEViw4QkFBQUE7O0FBSUEsU0FBZ0JHLGFBQWhCLENBQStCTSxLQUEvQixFQUFvQztFQUNsQyxPQUFPVCwwQkFBa0JHLGFBQWxCLENBQWdDTSxLQUFoQyxDQUFQO0FBQ0Q7O0FBRkRULHFCQUFBQSxpQixDQUlBOztBQUNBLFNBQWdCVyxzQkFBaEIsQ0FBd0NDLE1BQXhDLEVBQThDO0VBQzVDLE9BQU87SUFDTEMsT0FBTyxFQUFFO01BQ1BDLElBQUksRUFBRSxRQURDO01BRVBDLE9BQU8sRUFBRSxXQUZGO01BR1BOLEtBQUssRUFBRTtRQUNMTyxPQUFPLEVBQUVKLE1BQU0sQ0FBQ0ksT0FEWDtRQUVMQyxZQUFZLEVBQUVMLE1BQU0sQ0FBQ0s7TUFGaEIsQ0FIQTtNQU9QQyxNQUFNLEVBQUU7UUFDTkMsUUFBUSxFQUFFO01BREo7SUFQRDtFQURKLENBQVA7QUFhRDs7QUFkRG5CLDhCQUFBQSwwQixDQWdCQTs7QUFDQSxTQUFnQm9CLHFCQUFoQixDQUF1Q0MsS0FBdkMsRUFBNEM7RUFDMUMsT0FBTztJQUNMUixPQUFPLEVBQUU7TUFDUEMsSUFBSSxFQUFFLE9BREM7TUFFUEMsT0FBTyxFQUFFLE9BRkY7TUFHUE4sS0FBSyxFQUFFO1FBQ0xhLEtBQUssRUFBRUQsS0FBSyxDQUFDQyxLQURSO1FBRUxDLE9BQU8sRUFBRUMsaUJBQWlCLENBQUNILEtBQUQ7TUFGckIsQ0FIQTtNQU9QSCxNQUFNLEVBQUU7UUFDTkMsUUFBUSxFQUFFO01BREo7SUFQRDtFQURKLENBQVA7QUFhRDs7QUFkRG5CLDZCQUFBQSx5QixDQWdCQTs7QUFDQSxTQUFnQndCLGlCQUFoQixDQUFtQ0gsS0FBbkMsRUFBd0M7RUFDdEMsTUFBTUUsT0FBTyxHQUFHLEVBQWhCO0VBRUEsTUFBTUUsV0FBVyxHQUFHSixLQUFLLENBQUNFLE9BQU4sSUFBaUIsRUFBckM7RUFDQSxNQUFNRyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0QsSUFBUCxDQUFZRCxXQUFaLENBQWI7O0VBQ0EsS0FBSyxJQUFJRyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixJQUFJLENBQUNHLE1BQXpCLEVBQWlDRCxDQUFDLEVBQWxDLEVBQXNDO0lBQ3BDLE1BQU1FLEdBQUcsR0FBR0osSUFBSSxDQUFDRSxDQUFELENBQWhCO0lBQ0FELE1BQU0sQ0FBQ0ksY0FBUCxDQUFzQlIsT0FBdEIsRUFBK0JPLEdBQS9CLEVBQW9DO01BQ2xDRSxVQUFVLEVBQUUsSUFEc0I7TUFFbENDLEdBQUcsRUFBRSxNQUFLO1FBQ1IsSUFBSTtVQUNGLE9BQU9SLFdBQVcsQ0FBQ0ssR0FBRCxDQUFsQjtRQUNELENBRkQsQ0FFRSxPQUFPSSxDQUFQLEVBQVU7VUFDVixPQUFPQSxDQUFQO1FBQ0Q7TUFDRjtJQVJpQyxDQUFwQztFQVVEOztFQUVELE9BQU9YLE9BQVA7QUFDRDs7QUFwQkR2Qix5QkFBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy9iYWNrZW5kLnRzP2M2NDYiXSwibmFtZXMiOlsiZXhwb3J0cyIsImluc3RhbmNlTWFwIiwiTWFwIiwiaXNWdWVJbnN0YW5jZSIsImdldEN1c3RvbUluc3RhbmNlRGV0YWlscyIsImdldEN1c3RvbU9iamVjdERldGFpbHMiLCJ1bmRlZmluZWQiLCJnZXRJbnN0YW5jZU1hcCIsImluc3RhbmNlIiwidmFsdWUiLCJwcm90byIsImdldEN1c3RvbVJvdXRlckRldGFpbHMiLCJyb3V0ZXIiLCJfY3VzdG9tIiwidHlwZSIsImRpc3BsYXkiLCJvcHRpb25zIiwiY3VycmVudFJvdXRlIiwiZmllbGRzIiwiYWJzdHJhY3QiLCJnZXRDdXN0b21TdG9yZURldGFpbHMiLCJzdG9yZSIsInN0YXRlIiwiZ2V0dGVycyIsImdldENhdGNoZWRHZXR0ZXJzIiwib3JpZ0dldHRlcnMiLCJrZXlzIiwiT2JqZWN0IiwiaSIsImxlbmd0aCIsImtleSIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsImUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///79310\n")},47294:(__unused_webpack_module,exports,__webpack_require__)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Bridge = void 0;\n\nconst events_1 = __webpack_require__(22699);\n\nconst raf_1 = __webpack_require__(86283);\n\nconst BATCH_DURATION = 100;\n\nclass Bridge extends events_1.EventEmitter {\n constructor(wall) {\n super();\n this.setMaxListeners(Infinity);\n this.wall = wall;\n wall.listen(messages => {\n if (Array.isArray(messages)) {\n messages.forEach(message => this._emit(message));\n } else {\n this._emit(messages);\n }\n });\n this._batchingQueue = [];\n this._sendingQueue = [];\n this._receivingQueue = [];\n this._sending = false;\n }\n\n on(event, listener) {\n const wrappedListener = async (...args) => {\n try {\n await listener(...args);\n } catch (e) {\n console.error(`[Bridge] Error in listener for event ${event.toString()} with args:`, args);\n console.error(e);\n }\n };\n\n return super.on(event, wrappedListener);\n }\n\n send(event, payload) {\n this._batchingQueue.push({\n event,\n payload\n });\n\n if (this._timer == null) {\n this._timer = setTimeout(() => this._flush(), BATCH_DURATION);\n }\n }\n /**\n * Log a message to the devtools background page.\n */\n\n\n log(message) {\n this.send('log', message);\n }\n\n _flush() {\n if (this._batchingQueue.length) this._send(this._batchingQueue);\n clearTimeout(this._timer);\n this._timer = null;\n this._batchingQueue = [];\n } // @TODO types\n\n\n _emit(message) {\n if (typeof message === 'string') {\n this.emit(message);\n } else if (message._chunk) {\n this._receivingQueue.push(message._chunk);\n\n if (message.last) {\n this.emit(message.event, this._receivingQueue);\n this._receivingQueue = [];\n }\n } else if (message.event) {\n this.emit(message.event, message.payload);\n }\n } // @TODO types\n\n\n _send(messages) {\n this._sendingQueue.push(messages);\n\n this._nextSend();\n }\n\n _nextSend() {\n if (!this._sendingQueue.length || this._sending) return;\n this._sending = true;\n\n const messages = this._sendingQueue.shift();\n\n try {\n this.wall.send(messages);\n } catch (err) {\n if (err.message === 'Message length exceeded maximum allowed length.') {\n this._sendingQueue.splice(0, 0, messages.map(message => [message]));\n }\n }\n\n this._sending = false;\n (0, raf_1.raf)(() => this._nextSend());\n }\n\n}\n\nexports.Bridge = Bridge;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDcyOTQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLGNBQWMsR0FBRyxHQUF2Qjs7QUFFQSxNQUFhQyxNQUFiLFNBQTRCQyxxQkFBNUIsQ0FBd0M7RUFRdENDLFlBQWFDLElBQWIsRUFBaUI7SUFDZjtJQUNBLEtBQUtDLGVBQUwsQ0FBcUJDLFFBQXJCO0lBQ0EsS0FBS0YsSUFBTCxHQUFZQSxJQUFaO0lBQ0FBLElBQUksQ0FBQ0csTUFBTCxDQUFZQyxRQUFRLElBQUc7TUFDckIsSUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLFFBQWQsQ0FBSixFQUE2QjtRQUMzQkEsUUFBUSxDQUFDRyxPQUFULENBQWlCQyxPQUFPLElBQUksS0FBS0MsS0FBTCxDQUFXRCxPQUFYLENBQTVCO01BQ0QsQ0FGRCxNQUVPO1FBQ0wsS0FBS0MsS0FBTCxDQUFXTCxRQUFYO01BQ0Q7SUFDRixDQU5EO0lBT0EsS0FBS00sY0FBTCxHQUFzQixFQUF0QjtJQUNBLEtBQUtDLGFBQUwsR0FBcUIsRUFBckI7SUFDQSxLQUFLQyxlQUFMLEdBQXVCLEVBQXZCO0lBQ0EsS0FBS0MsUUFBTCxHQUFnQixLQUFoQjtFQUNEOztFQUVEQyxFQUFFLENBQUVDLEtBQUYsRUFBMEJDLFFBQTFCLEVBQTREO0lBQzVELE1BQU1DLGVBQWUsR0FBRyxPQUFPLEdBQUdDLElBQVYsS0FBa0I7TUFDeEMsSUFBSTtRQUNGLE1BQU1GLFFBQVEsQ0FBQyxHQUFHRSxJQUFKLENBQWQ7TUFDRCxDQUZELENBRUUsT0FBT0MsQ0FBUCxFQUFVO1FBQ1ZDLE9BQU8sQ0FBQ0MsS0FBUixDQUFjLHdDQUF3Q04sS0FBSyxDQUFDTyxRQUFOLEVBQWdCLGFBQXRFLEVBQXFGSixJQUFyRjtRQUNBRSxPQUFPLENBQUNDLEtBQVIsQ0FBY0YsQ0FBZDtNQUNEO0lBQ0YsQ0FQRDs7SUFRQSxPQUFPLE1BQU1MLEVBQU4sQ0FBU0MsS0FBVCxFQUFnQkUsZUFBaEIsQ0FBUDtFQUNEOztFQUVETSxJQUFJLENBQUVSLEtBQUYsRUFBaUJTLE9BQWpCLEVBQThCO0lBQ2hDLEtBQUtkLGNBQUwsQ0FBb0JlLElBQXBCLENBQXlCO01BQ3ZCVixLQUR1QjtNQUV2QlM7SUFGdUIsQ0FBekI7O0lBS0EsSUFBSSxLQUFLRSxNQUFMLElBQWUsSUFBbkIsRUFBeUI7TUFDdkIsS0FBS0EsTUFBTCxHQUFjQyxVQUFVLENBQUMsTUFBTSxLQUFLQyxNQUFMLEVBQVAsRUFBc0JoQyxjQUF0QixDQUF4QjtJQUNEO0VBQ0Y7RUFFRDs7Ozs7RUFJQWlDLEdBQUcsQ0FBRXJCLE9BQUYsRUFBaUI7SUFDbEIsS0FBS2UsSUFBTCxDQUFVLEtBQVYsRUFBaUJmLE9BQWpCO0VBQ0Q7O0VBRURvQixNQUFNO0lBQ0osSUFBSSxLQUFLbEIsY0FBTCxDQUFvQm9CLE1BQXhCLEVBQWdDLEtBQUtDLEtBQUwsQ0FBVyxLQUFLckIsY0FBaEI7SUFDaENzQixZQUFZLENBQUMsS0FBS04sTUFBTixDQUFaO0lBQ0EsS0FBS0EsTUFBTCxHQUFjLElBQWQ7SUFDQSxLQUFLaEIsY0FBTCxHQUFzQixFQUF0QjtFQUNELENBN0RxQyxDQStEdEM7OztFQUNBRCxLQUFLLENBQUVELE9BQUYsRUFBUztJQUNaLElBQUksT0FBT0EsT0FBUCxLQUFtQixRQUF2QixFQUFpQztNQUMvQixLQUFLeUIsSUFBTCxDQUFVekIsT0FBVjtJQUNELENBRkQsTUFFTyxJQUFJQSxPQUFPLENBQUMwQixNQUFaLEVBQW9CO01BQ3pCLEtBQUt0QixlQUFMLENBQXFCYSxJQUFyQixDQUEwQmpCLE9BQU8sQ0FBQzBCLE1BQWxDOztNQUNBLElBQUkxQixPQUFPLENBQUMyQixJQUFaLEVBQWtCO1FBQ2hCLEtBQUtGLElBQUwsQ0FBVXpCLE9BQU8sQ0FBQ08sS0FBbEIsRUFBeUIsS0FBS0gsZUFBOUI7UUFDQSxLQUFLQSxlQUFMLEdBQXVCLEVBQXZCO01BQ0Q7SUFDRixDQU5NLE1BTUEsSUFBSUosT0FBTyxDQUFDTyxLQUFaLEVBQW1CO01BQ3hCLEtBQUtrQixJQUFMLENBQVV6QixPQUFPLENBQUNPLEtBQWxCLEVBQXlCUCxPQUFPLENBQUNnQixPQUFqQztJQUNEO0VBQ0YsQ0E1RXFDLENBOEV0Qzs7O0VBQ0FPLEtBQUssQ0FBRTNCLFFBQUYsRUFBVTtJQUNiLEtBQUtPLGFBQUwsQ0FBbUJjLElBQW5CLENBQXdCckIsUUFBeEI7O0lBQ0EsS0FBS2dDLFNBQUw7RUFDRDs7RUFFREEsU0FBUztJQUNQLElBQUksQ0FBQyxLQUFLekIsYUFBTCxDQUFtQm1CLE1BQXBCLElBQThCLEtBQUtqQixRQUF2QyxFQUFpRDtJQUNqRCxLQUFLQSxRQUFMLEdBQWdCLElBQWhCOztJQUNBLE1BQU1ULFFBQVEsR0FBRyxLQUFLTyxhQUFMLENBQW1CMEIsS0FBbkIsRUFBakI7O0lBQ0EsSUFBSTtNQUNGLEtBQUtyQyxJQUFMLENBQVV1QixJQUFWLENBQWVuQixRQUFmO0lBQ0QsQ0FGRCxDQUVFLE9BQU9rQyxHQUFQLEVBQVk7TUFDWixJQUFJQSxHQUFHLENBQUM5QixPQUFKLEtBQWdCLGlEQUFwQixFQUF1RTtRQUNyRSxLQUFLRyxhQUFMLENBQW1CNEIsTUFBbkIsQ0FBMEIsQ0FBMUIsRUFBNkIsQ0FBN0IsRUFBZ0NuQyxRQUFRLENBQUNvQyxHQUFULENBQWFoQyxPQUFPLElBQUksQ0FBQ0EsT0FBRCxDQUF4QixDQUFoQztNQUNEO0lBQ0Y7O0lBQ0QsS0FBS0ssUUFBTCxHQUFnQixLQUFoQjtJQUNBLGVBQUksTUFBTSxLQUFLdUIsU0FBTCxFQUFWO0VBQ0Q7O0FBakdxQzs7QUFBeENLLGNBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvYnJpZGdlLnRzP2VkOWQiXSwibmFtZXMiOlsiQkFUQ0hfRFVSQVRJT04iLCJCcmlkZ2UiLCJldmVudHNfMSIsImNvbnN0cnVjdG9yIiwid2FsbCIsInNldE1heExpc3RlbmVycyIsIkluZmluaXR5IiwibGlzdGVuIiwibWVzc2FnZXMiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwibWVzc2FnZSIsIl9lbWl0IiwiX2JhdGNoaW5nUXVldWUiLCJfc2VuZGluZ1F1ZXVlIiwiX3JlY2VpdmluZ1F1ZXVlIiwiX3NlbmRpbmciLCJvbiIsImV2ZW50IiwibGlzdGVuZXIiLCJ3cmFwcGVkTGlzdGVuZXIiLCJhcmdzIiwiZSIsImNvbnNvbGUiLCJlcnJvciIsInRvU3RyaW5nIiwic2VuZCIsInBheWxvYWQiLCJwdXNoIiwiX3RpbWVyIiwic2V0VGltZW91dCIsIl9mbHVzaCIsImxvZyIsImxlbmd0aCIsIl9zZW5kIiwiY2xlYXJUaW1lb3V0IiwiZW1pdCIsIl9jaHVuayIsImxhc3QiLCJfbmV4dFNlbmQiLCJzaGlmdCIsImVyciIsInNwbGljZSIsIm1hcCIsImV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///47294\n")},79410:(__unused_webpack_module,exports)=>{eval('\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.HookEvents = exports.BridgeSubscriptions = exports.BridgeEvents = exports.BuiltinTabs = void 0;\nvar BuiltinTabs;\n\n(function (BuiltinTabs) {\n BuiltinTabs["COMPONENTS"] = "components";\n BuiltinTabs["TIMELINE"] = "timeline";\n BuiltinTabs["PLUGINS"] = "plugins";\n BuiltinTabs["SETTINGS"] = "settings";\n})(BuiltinTabs = exports.BuiltinTabs || (exports.BuiltinTabs = {}));\n\nvar BridgeEvents;\n\n(function (BridgeEvents) {\n // Misc\n BridgeEvents["TO_BACK_SUBSCRIBE"] = "b:subscribe";\n BridgeEvents["TO_BACK_UNSUBSCRIBE"] = "b:unsubscribe";\n /** Backend is ready */\n\n BridgeEvents["TO_FRONT_READY"] = "f:ready";\n /** Displays the "detected Vue" console log */\n\n BridgeEvents["TO_BACK_LOG_DETECTED_VUE"] = "b:log-detected-vue";\n /** Force refresh */\n\n BridgeEvents["TO_BACK_REFRESH"] = "b:refresh";\n /** Tab was switched */\n\n BridgeEvents["TO_BACK_TAB_SWITCH"] = "b:tab:switch";\n BridgeEvents["TO_BACK_LOG"] = "b:log";\n /** Reconnected after background script is terminated (idle) */\n\n BridgeEvents["TO_FRONT_RECONNECTED"] = "f:reconnected";\n /** Change app title (electron) */\n\n BridgeEvents["TO_FRONT_TITLE"] = "f:title"; // Apps\n\n /** App was registered */\n\n BridgeEvents["TO_FRONT_APP_ADD"] = "f:app:add";\n /** Get app list */\n\n BridgeEvents["TO_BACK_APP_LIST"] = "b:app:list";\n BridgeEvents["TO_FRONT_APP_LIST"] = "f:app:list";\n BridgeEvents["TO_FRONT_APP_REMOVE"] = "f:app:remove";\n BridgeEvents["TO_BACK_APP_SELECT"] = "b:app:select";\n BridgeEvents["TO_FRONT_APP_SELECTED"] = "f:app:selected";\n BridgeEvents["TO_BACK_SCAN_LEGACY_APPS"] = "b:app:scan-legacy"; // Components\n\n BridgeEvents["TO_BACK_COMPONENT_TREE"] = "b:component:tree";\n BridgeEvents["TO_FRONT_COMPONENT_TREE"] = "f:component:tree";\n BridgeEvents["TO_BACK_COMPONENT_SELECTED_DATA"] = "b:component:selected-data";\n BridgeEvents["TO_FRONT_COMPONENT_SELECTED_DATA"] = "f:component:selected-data";\n BridgeEvents["TO_BACK_COMPONENT_EXPAND"] = "b:component:expand";\n BridgeEvents["TO_FRONT_COMPONENT_EXPAND"] = "f:component:expand";\n BridgeEvents["TO_BACK_COMPONENT_SCROLL_TO"] = "b:component:scroll-to";\n BridgeEvents["TO_BACK_COMPONENT_FILTER"] = "b:component:filter";\n BridgeEvents["TO_BACK_COMPONENT_MOUSE_OVER"] = "b:component:mouse-over";\n BridgeEvents["TO_BACK_COMPONENT_MOUSE_OUT"] = "b:component:mouse-out";\n BridgeEvents["TO_BACK_COMPONENT_CONTEXT_MENU_TARGET"] = "b:component:context-menu-target";\n BridgeEvents["TO_BACK_COMPONENT_EDIT_STATE"] = "b:component:edit-state";\n BridgeEvents["TO_BACK_COMPONENT_PICK"] = "b:component:pick";\n BridgeEvents["TO_FRONT_COMPONENT_PICK"] = "f:component:pick";\n BridgeEvents["TO_BACK_COMPONENT_PICK_CANCELED"] = "b:component:pick-canceled";\n BridgeEvents["TO_FRONT_COMPONENT_PICK_CANCELED"] = "f:component:pick-canceled";\n BridgeEvents["TO_BACK_COMPONENT_INSPECT_DOM"] = "b:component:inspect-dom";\n BridgeEvents["TO_FRONT_COMPONENT_INSPECT_DOM"] = "f:component:inspect-dom";\n BridgeEvents["TO_BACK_COMPONENT_RENDER_CODE"] = "b:component:render-code";\n BridgeEvents["TO_FRONT_COMPONENT_RENDER_CODE"] = "f:component:render-code";\n BridgeEvents["TO_FRONT_COMPONENT_UPDATED"] = "f:component:updated"; // Timeline\n\n BridgeEvents["TO_FRONT_TIMELINE_EVENT"] = "f:timeline:event";\n BridgeEvents["TO_BACK_TIMELINE_LAYER_LIST"] = "b:timeline:layer-list";\n BridgeEvents["TO_FRONT_TIMELINE_LAYER_LIST"] = "f:timeline:layer-list";\n BridgeEvents["TO_FRONT_TIMELINE_LAYER_ADD"] = "f:timeline:layer-add";\n BridgeEvents["TO_BACK_TIMELINE_SHOW_SCREENSHOT"] = "b:timeline:show-screenshot";\n BridgeEvents["TO_BACK_TIMELINE_CLEAR"] = "b:timeline:clear";\n BridgeEvents["TO_BACK_TIMELINE_EVENT_DATA"] = "b:timeline:event-data";\n BridgeEvents["TO_FRONT_TIMELINE_EVENT_DATA"] = "f:timeline:event-data";\n BridgeEvents["TO_BACK_TIMELINE_LAYER_LOAD_EVENTS"] = "b:timeline:layer-load-events";\n BridgeEvents["TO_FRONT_TIMELINE_LAYER_LOAD_EVENTS"] = "f:timeline:layer-load-events";\n BridgeEvents["TO_BACK_TIMELINE_LOAD_MARKERS"] = "b:timeline:load-markers";\n BridgeEvents["TO_FRONT_TIMELINE_LOAD_MARKERS"] = "f:timeline:load-markers";\n BridgeEvents["TO_FRONT_TIMELINE_MARKER"] = "f:timeline:marker"; // Plugins\n\n BridgeEvents["TO_BACK_DEVTOOLS_PLUGIN_LIST"] = "b:devtools-plugin:list";\n BridgeEvents["TO_FRONT_DEVTOOLS_PLUGIN_LIST"] = "f:devtools-plugin:list";\n BridgeEvents["TO_FRONT_DEVTOOLS_PLUGIN_ADD"] = "f:devtools-plugin:add";\n BridgeEvents["TO_BACK_DEVTOOLS_PLUGIN_SETTING_UPDATED"] = "b:devtools-plugin:setting-updated"; // Custom inspectors\n\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_LIST"] = "b:custom-inspector:list";\n BridgeEvents["TO_FRONT_CUSTOM_INSPECTOR_LIST"] = "f:custom-inspector:list";\n BridgeEvents["TO_FRONT_CUSTOM_INSPECTOR_ADD"] = "f:custom-inspector:add";\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_TREE"] = "b:custom-inspector:tree";\n BridgeEvents["TO_FRONT_CUSTOM_INSPECTOR_TREE"] = "f:custom-inspector:tree";\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_STATE"] = "b:custom-inspector:state";\n BridgeEvents["TO_FRONT_CUSTOM_INSPECTOR_STATE"] = "f:custom-inspector:state";\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_EDIT_STATE"] = "b:custom-inspector:edit-state";\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_ACTION"] = "b:custom-inspector:action";\n BridgeEvents["TO_BACK_CUSTOM_INSPECTOR_NODE_ACTION"] = "b:custom-inspector:node-action";\n BridgeEvents["TO_FRONT_CUSTOM_INSPECTOR_SELECT_NODE"] = "f:custom-inspector:select-node"; // Custom state\n\n BridgeEvents["TO_BACK_CUSTOM_STATE_ACTION"] = "b:custom-state:action";\n})(BridgeEvents = exports.BridgeEvents || (exports.BridgeEvents = {}));\n\nvar BridgeSubscriptions;\n\n(function (BridgeSubscriptions) {\n BridgeSubscriptions["SELECTED_COMPONENT_DATA"] = "component:selected-data";\n BridgeSubscriptions["COMPONENT_TREE"] = "component:tree";\n})(BridgeSubscriptions = exports.BridgeSubscriptions || (exports.BridgeSubscriptions = {}));\n\nvar HookEvents;\n\n(function (HookEvents) {\n HookEvents["INIT"] = "init";\n HookEvents["APP_INIT"] = "app:init";\n HookEvents["APP_ADD"] = "app:add";\n HookEvents["APP_UNMOUNT"] = "app:unmount";\n HookEvents["COMPONENT_UPDATED"] = "component:updated";\n HookEvents["COMPONENT_ADDED"] = "component:added";\n HookEvents["COMPONENT_REMOVED"] = "component:removed";\n HookEvents["COMPONENT_EMIT"] = "component:emit";\n HookEvents["COMPONENT_HIGHLIGHT"] = "component:highlight";\n HookEvents["COMPONENT_UNHIGHLIGHT"] = "component:unhighlight";\n HookEvents["SETUP_DEVTOOLS_PLUGIN"] = "devtools-plugin:setup";\n HookEvents["TIMELINE_LAYER_ADDED"] = "timeline:layer-added";\n HookEvents["TIMELINE_EVENT_ADDED"] = "timeline:event-added";\n HookEvents["CUSTOM_INSPECTOR_ADD"] = "custom-inspector:add";\n HookEvents["CUSTOM_INSPECTOR_SEND_TREE"] = "custom-inspector:send-tree";\n HookEvents["CUSTOM_INSPECTOR_SEND_STATE"] = "custom-inspector:send-state";\n HookEvents["CUSTOM_INSPECTOR_SELECT_NODE"] = "custom-inspector:select-node";\n HookEvents["PERFORMANCE_START"] = "perf:start";\n HookEvents["PERFORMANCE_END"] = "perf:end";\n HookEvents["PLUGIN_SETTINGS_SET"] = "plugin:settings:set";\n /**\n * @deprecated\n */\n\n HookEvents["FLUSH"] = "flush";\n /**\n * @deprecated\n */\n\n HookEvents["TRACK_UPDATE"] = "_track-update";\n /**\n * @deprecated\n */\n\n HookEvents["FLASH_UPDATE"] = "_flash-update";\n})(HookEvents = exports.HookEvents || (exports.HookEvents = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzk0MTAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBWUEsV0FBWjs7QUFBQSxXQUFZQSxXQUFaLEVBQXVCO0VBQ3JCQTtFQUNBQTtFQUNBQTtFQUNBQTtBQUNELENBTEQsRUFBWUEsV0FBVyxHQUFYQyx3QkFBQUEsbUJBQUFBLEdBQVcsRUFBWCxDQUFaOztBQU9BLElBQVlDLFlBQVo7O0FBQUEsV0FBWUEsWUFBWixFQUF3QjtFQUN0QjtFQUNBQTtFQUNBQTtFQUNBOztFQUNBQTtFQUNBOztFQUNBQTtFQUNBOztFQUNBQTtFQUNBOztFQUNBQTtFQUNBQTtFQUNBOztFQUNBQTtFQUNBOztFQUNBQSwyQ0FoQnNCLENBa0J0Qjs7RUFDQTs7RUFDQUE7RUFDQTs7RUFDQUE7RUFDQUE7RUFDQUE7RUFDQUE7RUFDQUE7RUFDQUEsK0RBM0JzQixDQTZCdEI7O0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBLG1FQWxEc0IsQ0FvRHRCOztFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQTtFQUNBQSwrREFqRXNCLENBbUV0Qjs7RUFDQUE7RUFDQUE7RUFDQUE7RUFDQUEsOEZBdkVzQixDQXlFdEI7O0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBLHlGQXBGc0IsQ0FzRnRCOztFQUNBQTtBQUNELENBeEZELEVBQVlBLFlBQVksR0FBWkQseUJBQUFBLG9CQUFBQSxHQUFZLEVBQVosQ0FBWjs7QUEwRkEsSUFBWUUsbUJBQVo7O0FBQUEsV0FBWUEsbUJBQVosRUFBK0I7RUFDN0JBO0VBQ0FBO0FBQ0QsQ0FIRCxFQUFZQSxtQkFBbUIsR0FBbkJGLGdDQUFBQSwyQkFBQUEsR0FBbUIsRUFBbkIsQ0FBWjs7QUFLQSxJQUFZRyxVQUFaOztBQUFBLFdBQVlBLFVBQVosRUFBc0I7RUFDcEJBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0FBO0VBQ0E7Ozs7RUFHQUE7RUFDQTs7OztFQUdBQTtFQUNBOzs7O0VBR0FBO0FBQ0QsQ0FqQ0QsRUFBWUEsVUFBVSxHQUFWSCx1QkFBQUEsa0JBQUFBLEdBQVUsRUFBVixDQUFaIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvY29uc3RzLnRzP2Q5MTgiXSwibmFtZXMiOlsiQnVpbHRpblRhYnMiLCJleHBvcnRzIiwiQnJpZGdlRXZlbnRzIiwiQnJpZGdlU3Vic2NyaXB0aW9ucyIsIkhvb2tFdmVudHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///79410\n')},38158:(__unused_webpack_module,exports)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.StateEditor = void 0;\n\nclass StateEditor {\n set(object, path, value, cb = null) {\n const sections = Array.isArray(path) ? path : path.split('.');\n\n while (sections.length > 1) {\n object = object[sections.shift()];\n\n if (this.isRef(object)) {\n object = this.getRefValue(object);\n }\n }\n\n const field = sections[0];\n\n if (cb) {\n cb(object, field, value);\n } else if (this.isRef(object[field])) {\n this.setRefValue(object[field], value);\n } else {\n object[field] = value;\n }\n }\n\n get(object, path) {\n const sections = Array.isArray(path) ? path : path.split('.');\n\n for (let i = 0; i < sections.length; i++) {\n object = object[sections[i]];\n\n if (this.isRef(object)) {\n object = this.getRefValue(object);\n }\n\n if (!object) {\n return undefined;\n }\n }\n\n return object;\n }\n\n has(object, path, parent = false) {\n if (typeof object === 'undefined') {\n return false;\n }\n\n const sections = Array.isArray(path) ? path.slice() : path.split('.');\n const size = !parent ? 1 : 2;\n\n while (object && sections.length > size) {\n object = object[sections.shift()];\n\n if (this.isRef(object)) {\n object = this.getRefValue(object);\n }\n }\n\n return object != null && Object.prototype.hasOwnProperty.call(object, sections[0]);\n }\n\n createDefaultSetCallback(state) {\n return (obj, field, value) => {\n if (state.remove || state.newKey) {\n if (Array.isArray(obj)) {\n obj.splice(field, 1);\n } else {\n delete obj[field];\n }\n }\n\n if (!state.remove) {\n const target = obj[state.newKey || field];\n\n if (this.isRef(target)) {\n this.setRefValue(target, value);\n } else {\n obj[state.newKey || field] = value;\n }\n }\n };\n }\n\n isRef(ref) {\n // To implement in subclass\n return false;\n }\n\n setRefValue(ref, value) {// To implement in subclass\n }\n\n getRefValue(ref) {\n // To implement in subclass\n return ref;\n }\n\n}\n\nexports.StateEditor = StateEditor;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBZ0NDLElBQWhDLENBQXFDeEIsTUFBckMsRUFBNkNJLFFBQVEsQ0FBQyxDQUFELENBQXJELENBQXpCO0VBQ0Q7O0VBRURxQix3QkFBd0IsQ0FBRUMsS0FBRixFQUF5QjtJQUMvQyxPQUFPLENBQUNDLEdBQUQsRUFBTWYsS0FBTixFQUFhVixLQUFiLEtBQXNCO01BQzNCLElBQUl3QixLQUFLLENBQUNFLE1BQU4sSUFBZ0JGLEtBQUssQ0FBQ0csTUFBMUIsRUFBa0M7UUFDaEMsSUFBSXhCLEtBQUssQ0FBQ0MsT0FBTixDQUFjcUIsR0FBZCxDQUFKLEVBQXdCO1VBQ3RCQSxHQUFHLENBQUNHLE1BQUosQ0FBV2xCLEtBQVgsRUFBa0IsQ0FBbEI7UUFDRCxDQUZELE1BRU87VUFDTCxPQUFPZSxHQUFHLENBQUNmLEtBQUQsQ0FBVjtRQUNEO01BQ0Y7O01BQ0QsSUFBSSxDQUFDYyxLQUFLLENBQUNFLE1BQVgsRUFBbUI7UUFDakIsTUFBTUcsTUFBTSxHQUFHSixHQUFHLENBQUNELEtBQUssQ0FBQ0csTUFBTixJQUFnQmpCLEtBQWpCLENBQWxCOztRQUNBLElBQUksS0FBS0YsS0FBTCxDQUFXcUIsTUFBWCxDQUFKLEVBQXdCO1VBQ3RCLEtBQUtsQixXQUFMLENBQWlCa0IsTUFBakIsRUFBeUI3QixLQUF6QjtRQUNELENBRkQsTUFFTztVQUNMeUIsR0FBRyxDQUFDRCxLQUFLLENBQUNHLE1BQU4sSUFBZ0JqQixLQUFqQixDQUFILEdBQTZCVixLQUE3QjtRQUNEO01BQ0Y7SUFDRixDQWhCRDtFQWlCRDs7RUFFRFEsS0FBSyxDQUFFc0IsR0FBRixFQUFVO0lBQ2I7SUFDQSxPQUFPLEtBQVA7RUFDRDs7RUFFRG5CLFdBQVcsQ0FBRW1CLEdBQUYsRUFBVzlCLEtBQVgsRUFBcUIsQ0FDOUI7RUFDRDs7RUFFRFMsV0FBVyxDQUFFcUIsR0FBRixFQUFVO0lBQ25CO0lBQ0EsT0FBT0EsR0FBUDtFQUNEOztBQWpGcUI7O0FBQXhCQyxtQkFBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy9lZGl0LnRzP2ZlZTciXSwibmFtZXMiOlsiU3RhdGVFZGl0b3IiLCJzZXQiLCJvYmplY3QiLCJwYXRoIiwidmFsdWUiLCJjYiIsInNlY3Rpb25zIiwiQXJyYXkiLCJpc0FycmF5Iiwic3BsaXQiLCJsZW5ndGgiLCJzaGlmdCIsImlzUmVmIiwiZ2V0UmVmVmFsdWUiLCJmaWVsZCIsInNldFJlZlZhbHVlIiwiZ2V0IiwiaSIsInVuZGVmaW5lZCIsImhhcyIsInBhcmVudCIsInNsaWNlIiwic2l6ZSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImNyZWF0ZURlZmF1bHRTZXRDYWxsYmFjayIsInN0YXRlIiwib2JqIiwicmVtb3ZlIiwibmV3S2V5Iiwic3BsaWNlIiwidGFyZ2V0IiwicmVmIiwiZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///38158\n")},66210:(__unused_webpack_module,exports,__webpack_require__)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.initEnv = exports.keys = exports.isLinux = exports.isMac = exports.isWindows = exports.isFirefox = exports.isChrome = exports.target = exports.isBrowser = void 0;\nexports.isBrowser = typeof navigator !== 'undefined';\nexports.target = exports.isBrowser ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : {};\nexports.isChrome = typeof exports.target.chrome !== 'undefined' && !!exports.target.chrome.devtools;\nexports.isFirefox = exports.isBrowser && navigator.userAgent.indexOf('Firefox') > -1;\nexports.isWindows = exports.isBrowser && navigator.platform.indexOf('Win') === 0;\nexports.isMac = exports.isBrowser && navigator.platform === 'MacIntel';\nexports.isLinux = exports.isBrowser && navigator.platform.indexOf('Linux') === 0;\nexports.keys = {\n ctrl: exports.isMac ? '&#8984;' : 'Ctrl',\n shift: 'Shift',\n alt: exports.isMac ? '&#8997;' : 'Alt',\n del: 'Del',\n enter: 'Enter',\n esc: 'Esc'\n};\n\nfunction initEnv(Vue) {\n if (Vue.prototype.hasOwnProperty('$isChrome')) return;\n Object.defineProperties(Vue.prototype, {\n $isChrome: {\n get: () => exports.isChrome\n },\n $isFirefox: {\n get: () => exports.isFirefox\n },\n $isWindows: {\n get: () => exports.isWindows\n },\n $isMac: {\n get: () => exports.isMac\n },\n $isLinux: {\n get: () => exports.isLinux\n },\n $keys: {\n get: () => exports.keys\n }\n });\n if (exports.isWindows) document.body.classList.add('platform-windows');\n if (exports.isMac) document.body.classList.add('platform-mac');\n if (exports.isLinux) document.body.classList.add('platform-linux');\n}\n\nexports.initEnv = initEnv;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjYyMTAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWFBLGlCQUFBQSxHQUFZLE9BQU9DLFNBQVAsS0FBcUIsV0FBakM7QUFDQUQsY0FBQUEsR0FBY0Esb0JBQ3ZCRSxNQUR1QixHQUV2QixPQUFPQyxxQkFBUCxLQUFrQixXQUFsQixHQUNFQSxxQkFERixHQUVFLEVBSk87QUFLQUgsZ0JBQUFBLEdBQVcsT0FBT0EsZUFBT0ksTUFBZCxLQUF5QixXQUF6QixJQUF3QyxDQUFDLENBQUNKLGVBQU9JLE1BQVAsQ0FBY0MsUUFBbkU7QUFDQUwsaUJBQUFBLEdBQVlBLHFCQUFhQyxTQUFTLENBQUNLLFNBQVYsQ0FBb0JDLE9BQXBCLENBQTRCLFNBQTVCLElBQXlDLENBQUMsQ0FBbkU7QUFDQVAsaUJBQUFBLEdBQVlBLHFCQUFhQyxTQUFTLENBQUNPLFFBQVYsQ0FBbUJELE9BQW5CLENBQTJCLEtBQTNCLE1BQXNDLENBQS9EO0FBQ0FQLGFBQUFBLEdBQVFBLHFCQUFhQyxTQUFTLENBQUNPLFFBQVYsS0FBdUIsVUFBNUM7QUFDQVIsZUFBQUEsR0FBVUEscUJBQWFDLFNBQVMsQ0FBQ08sUUFBVixDQUFtQkQsT0FBbkIsQ0FBMkIsT0FBM0IsTUFBd0MsQ0FBL0Q7QUFDQVAsWUFBQUEsR0FBTztFQUNsQlMsSUFBSSxFQUFFVCxnQkFBUSxTQUFSLEdBQW9CLE1BRFI7RUFFbEJVLEtBQUssRUFBRSxPQUZXO0VBR2xCQyxHQUFHLEVBQUVYLGdCQUFRLFNBQVIsR0FBb0IsS0FIUDtFQUlsQlksR0FBRyxFQUFFLEtBSmE7RUFLbEJDLEtBQUssRUFBRSxPQUxXO0VBTWxCQyxHQUFHLEVBQUU7QUFOYSxDQUFQOztBQVNiLFNBQWdCQyxPQUFoQixDQUF5QkMsR0FBekIsRUFBNEI7RUFDMUIsSUFBSUEsR0FBRyxDQUFDQyxTQUFKLENBQWNDLGNBQWQsQ0FBNkIsV0FBN0IsQ0FBSixFQUErQztFQUUvQ0MsTUFBTSxDQUFDQyxnQkFBUCxDQUF3QkosR0FBRyxDQUFDQyxTQUE1QixFQUF1QztJQUNyQ0ksU0FBUyxFQUFFO01BQUVDLEdBQUcsRUFBRSxNQUFNdEI7SUFBYixDQUQwQjtJQUVyQ3VCLFVBQVUsRUFBRTtNQUFFRCxHQUFHLEVBQUUsTUFBTXRCO0lBQWIsQ0FGeUI7SUFHckN3QixVQUFVLEVBQUU7TUFBRUYsR0FBRyxFQUFFLE1BQU10QjtJQUFiLENBSHlCO0lBSXJDeUIsTUFBTSxFQUFFO01BQUVILEdBQUcsRUFBRSxNQUFNdEI7SUFBYixDQUo2QjtJQUtyQzBCLFFBQVEsRUFBRTtNQUFFSixHQUFHLEVBQUUsTUFBTXRCO0lBQWIsQ0FMMkI7SUFNckMyQixLQUFLLEVBQUU7TUFBRUwsR0FBRyxFQUFFLE1BQU10QjtJQUFiO0VBTjhCLENBQXZDO0VBU0EsSUFBSUEsaUJBQUosRUFBZTRCLFFBQVEsQ0FBQ0MsSUFBVCxDQUFjQyxTQUFkLENBQXdCQyxHQUF4QixDQUE0QixrQkFBNUI7RUFDZixJQUFJL0IsYUFBSixFQUFXNEIsUUFBUSxDQUFDQyxJQUFULENBQWNDLFNBQWQsQ0FBd0JDLEdBQXhCLENBQTRCLGNBQTVCO0VBQ1gsSUFBSS9CLGVBQUosRUFBYTRCLFFBQVEsQ0FBQ0MsSUFBVCxDQUFjQyxTQUFkLENBQXdCQyxHQUF4QixDQUE0QixnQkFBNUI7QUFDZDs7QUFmRC9CLGVBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvZW52LnRzPzAxNDciXSwibmFtZXMiOlsiZXhwb3J0cyIsIm5hdmlnYXRvciIsIndpbmRvdyIsImdsb2JhbCIsImNocm9tZSIsImRldnRvb2xzIiwidXNlckFnZW50IiwiaW5kZXhPZiIsInBsYXRmb3JtIiwiY3RybCIsInNoaWZ0IiwiYWx0IiwiZGVsIiwiZW50ZXIiLCJlc2MiLCJpbml0RW52IiwiVnVlIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiJGlzQ2hyb21lIiwiZ2V0IiwiJGlzRmlyZWZveCIsIiRpc1dpbmRvd3MiLCIkaXNNYWMiLCIkaXNMaW51eCIsIiRrZXlzIiwiZG9jdW1lbnQiLCJib2R5IiwiY2xhc3NMaXN0IiwiYWRkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///66210\n")},27146:function(__unused_webpack_module,exports,__webpack_require__){eval('\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n\n if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\n }\n\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\n\n__exportStar(__webpack_require__(79310), exports);\n\n__exportStar(__webpack_require__(47294), exports);\n\n__exportStar(__webpack_require__(79410), exports);\n\n__exportStar(__webpack_require__(38158), exports);\n\n__exportStar(__webpack_require__(66210), exports);\n\n__exportStar(__webpack_require__(12074), exports);\n\n__exportStar(__webpack_require__(86798), exports);\n\n__exportStar(__webpack_require__(29556), exports);\n\n__exportStar(__webpack_require__(423), exports);\n\n__exportStar(__webpack_require__(58561), exports);\n\n__exportStar(__webpack_require__(34723), exports);\n\n__exportStar(__webpack_require__(76203), exports);\n\n__exportStar(__webpack_require__(86283), exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcxNDYuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQUEsYUFBQUEsbUJBQUFBLENBQUFBLEtBQUFBOztBQUNBQSxhQUFBQSxtQkFBQUEsQ0FBQUEsS0FBQUE7O0FBQ0FBLGFBQUFBLG1CQUFBQSxDQUFBQSxLQUFBQTs7QUFDQUEsYUFBQUEsbUJBQUFBLENBQUFBLEtBQUFBOztBQUNBQSxhQUFBQSxtQkFBQUEsQ0FBQUEsS0FBQUE7O0FBQ0FBLGFBQUFBLG1CQUFBQSxDQUFBQSxLQUFBQTs7QUFDQUEsYUFBQUEsbUJBQUFBLENBQUFBLEtBQUFBOztBQUNBQSxhQUFBQSxtQkFBQUEsQ0FBQUEsS0FBQUE7O0FBQ0FBLGFBQUFBLG1CQUFBQSxDQUFBQSxHQUFBQTs7QUFDQUEsYUFBQUEsbUJBQUFBLENBQUFBLEtBQUFBOztBQUNBQSxhQUFBQSxtQkFBQUEsQ0FBQUEsS0FBQUE7O0FBQ0FBLGFBQUFBLG1CQUFBQSxDQUFBQSxLQUFBQTs7QUFDQUEsYUFBQUEsbUJBQUFBLENBQUFBLEtBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvaW5kZXgudHM/NmYzNyJdLCJuYW1lcyI6WyJfX2V4cG9ydFN0YXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27146\n')},12074:(__unused_webpack_module,exports,__webpack_require__)=>{eval('\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.setPluginPermission = exports.hasPluginPermission = exports.PluginPermission = void 0;\n\nconst shared_data_1 = __webpack_require__(29556);\n\nvar PluginPermission;\n\n(function (PluginPermission) {\n PluginPermission["ENABLED"] = "enabled";\n PluginPermission["COMPONENTS"] = "components";\n PluginPermission["CUSTOM_INSPECTOR"] = "custom-inspector";\n PluginPermission["TIMELINE"] = "timeline";\n})(PluginPermission = exports.PluginPermission || (exports.PluginPermission = {}));\n\nfunction hasPluginPermission(pluginId, permission) {\n const result = shared_data_1.SharedData.pluginPermissions[`${pluginId}:${permission}`];\n if (result == null) return true;\n return !!result;\n}\n\nexports.hasPluginPermission = hasPluginPermission;\n\nfunction setPluginPermission(pluginId, permission, active) {\n shared_data_1.SharedData.pluginPermissions = { ...shared_data_1.SharedData.pluginPermissions,\n [`${pluginId}:${permission}`]: active\n };\n}\n\nexports.setPluginPermission = setPluginPermission;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIwNzQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBLElBQVlBLGdCQUFaOztBQUFBLFdBQVlBLGdCQUFaLEVBQTRCO0VBQzFCQTtFQUNBQTtFQUNBQTtFQUNBQTtBQUNELENBTEQsRUFBWUEsZ0JBQWdCLEdBQWhCQyw2QkFBQUEsd0JBQUFBLEdBQWdCLEVBQWhCLENBQVo7O0FBT0EsU0FBZ0JDLG1CQUFoQixDQUFxQ0MsUUFBckMsRUFBdURDLFVBQXZELEVBQW1GO0VBQ2pGLE1BQU1DLE1BQU0sR0FBR0MseUJBQVdDLGlCQUFYLENBQTZCLEdBQUdKLFFBQVEsSUFBSUMsVUFBVSxFQUF0RCxDQUFmO0VBQ0EsSUFBSUMsTUFBTSxJQUFJLElBQWQsRUFBb0IsT0FBTyxJQUFQO0VBQ3BCLE9BQU8sQ0FBQyxDQUFDQSxNQUFUO0FBQ0Q7O0FBSkRKLDJCQUFBQTs7QUFNQSxTQUFnQk8sbUJBQWhCLENBQXFDTCxRQUFyQyxFQUF1REMsVUFBdkQsRUFBcUZLLE1BQXJGLEVBQW9HO0VBQ2xHSCx5QkFBV0MsaUJBQVgsR0FBK0IsRUFDN0IsR0FBR0QseUJBQVdDLGlCQURlO0lBRTdCLENBQUMsR0FBR0osUUFBUSxJQUFJQyxVQUFVLEVBQTFCLEdBQStCSztFQUZGLENBQS9CO0FBSUQ7O0FBTERSLDJCQUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL3BsdWdpbi1wZXJtaXNzaW9ucy50cz9hMzNhIl0sIm5hbWVzIjpbIlBsdWdpblBlcm1pc3Npb24iLCJleHBvcnRzIiwiaGFzUGx1Z2luUGVybWlzc2lvbiIsInBsdWdpbklkIiwicGVybWlzc2lvbiIsInJlc3VsdCIsInNoYXJlZF9kYXRhXzEiLCJwbHVnaW5QZXJtaXNzaW9ucyIsInNldFBsdWdpblBlcm1pc3Npb24iLCJhY3RpdmUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///12074\n')},86798:(__unused_webpack_module,exports,__webpack_require__)=>{eval('\n\nObject.defineProperty(exports, "__esModule", ({\n value: true\n}));\nexports.getPluginDefaultSettings = exports.setPluginSettings = exports.getPluginSettings = void 0;\n\nconst shared_data_1 = __webpack_require__(29556);\n\nfunction getPluginSettings(pluginId, defaultSettings) {\n var _a;\n\n return { ...(defaultSettings !== null && defaultSettings !== void 0 ? defaultSettings : {}),\n ...((_a = shared_data_1.SharedData.pluginSettings[pluginId]) !== null && _a !== void 0 ? _a : {})\n };\n}\n\nexports.getPluginSettings = getPluginSettings;\n\nfunction setPluginSettings(pluginId, settings) {\n shared_data_1.SharedData.pluginSettings = { ...shared_data_1.SharedData.pluginSettings,\n [pluginId]: settings\n };\n}\n\nexports.setPluginSettings = setPluginSettings;\n\nfunction getPluginDefaultSettings(schema) {\n const result = {};\n\n if (schema) {\n for (const id in schema) {\n const item = schema[id];\n result[id] = item.defaultValue;\n }\n }\n\n return result;\n}\n\nexports.getPluginDefaultSettings = getPluginDefaultSettings;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODY3OTguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUdBLFNBQWdCQSxpQkFBaEIsQ0FBZ0ZDLFFBQWhGLEVBQWtHQyxlQUFsRyxFQUE2SDs7O0VBQzNILE9BQU8sRUFDTCxJQUFHQSxlQUFlLFNBQWYsbUJBQWUsV0FBZixxQkFBbUIsRUFBdEIsQ0FESztJQUVMLElBQUcsK0JBQVdDLGNBQVgsQ0FBMEJGLFFBQTFCLE9BQW1DLElBQW5DLElBQW1DRyxhQUFuQyxHQUFtQ0EsRUFBbkMsR0FBdUMsRUFBMUM7RUFGSyxDQUFQO0FBSUQ7O0FBTERDLHlCQUFBQTs7QUFPQSxTQUFnQkMsaUJBQWhCLENBQWdGTCxRQUFoRixFQUFrR00sUUFBbEcsRUFBcUg7RUFDbkhDLHlCQUFXTCxjQUFYLEdBQTRCLEVBQzFCLEdBQUdLLHlCQUFXTCxjQURZO0lBRTFCLENBQUNGLFFBQUQsR0FBWU07RUFGYyxDQUE1QjtBQUlEOztBQUxERix5QkFBQUE7O0FBT0EsU0FBZ0JJLHdCQUFoQixDQUF1RkMsTUFBdkYsRUFBaUk7RUFDL0gsTUFBTUMsTUFBTSxHQUF3QixFQUFwQzs7RUFDQSxJQUFJRCxNQUFKLEVBQVk7SUFDVixLQUFLLE1BQU1FLEVBQVgsSUFBaUJGLE1BQWpCLEVBQXlCO01BQ3ZCLE1BQU1HLElBQUksR0FBR0gsTUFBTSxDQUFDRSxFQUFELENBQW5CO01BQ0FELE1BQU0sQ0FBQ0MsRUFBRCxDQUFOLEdBQWFDLElBQUksQ0FBQ0MsWUFBbEI7SUFDRDtFQUNGOztFQUNELE9BQU9ILE1BQVA7QUFDRDs7QUFURE4sZ0NBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvcGx1Z2luLXNldHRpbmdzLnRzPzk5NjEiXSwibmFtZXMiOlsiZ2V0UGx1Z2luU2V0dGluZ3MiLCJwbHVnaW5JZCIsImRlZmF1bHRTZXR0aW5ncyIsInBsdWdpblNldHRpbmdzIiwiX2EiLCJleHBvcnRzIiwic2V0UGx1Z2luU2V0dGluZ3MiLCJzZXR0aW5ncyIsInNoYXJlZF9kYXRhXzEiLCJnZXRQbHVnaW5EZWZhdWx0U2V0dGluZ3MiLCJzY2hlbWEiLCJyZXN1bHQiLCJpZCIsIml0ZW0iLCJkZWZhdWx0VmFsdWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///86798\n')},86283:(__unused_webpack_module,exports)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.raf = void 0;\nlet pendingCallbacks = [];\n/**\n * requestAnimationFrame that also works on non-browser environments like Node.\n */\n\nexports.raf = typeof requestAnimationFrame === 'function' ? requestAnimationFrame : fn => {\n if (!pendingCallbacks.length) {\n setImmediate(() => {\n const now = performance.now();\n const cbs = pendingCallbacks; // in case cbs add new callbacks\n\n pendingCallbacks = [];\n cbs.forEach(cb => cb(now));\n });\n }\n\n pendingCallbacks.push(fn);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODYyODMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBSUEsZ0JBQWdCLEdBQWtDLEVBQXREO0FBRUE7Ozs7QUFHYUMsV0FBQUEsR0FBTSxPQUFPQyxxQkFBUCxLQUFpQyxVQUFqQyxHQUNmQSxxQkFEZSxHQUVkQyxFQUFELElBQStCO0VBQzdCLElBQUksQ0FBQ0gsZ0JBQWdCLENBQUNJLE1BQXRCLEVBQThCO0lBQzVCQyxZQUFZLENBQUMsTUFBSztNQUNoQixNQUFNQyxHQUFHLEdBQUdDLFdBQVcsQ0FBQ0QsR0FBWixFQUFaO01BQ0EsTUFBTUUsR0FBRyxHQUFHUixnQkFBWixDQUZnQixDQUdoQjs7TUFDQUEsZ0JBQWdCLEdBQUcsRUFBbkI7TUFDQVEsR0FBRyxDQUFDQyxPQUFKLENBQVlDLEVBQUUsSUFBSUEsRUFBRSxDQUFDSixHQUFELENBQXBCO0lBQ0QsQ0FOVyxDQUFaO0VBT0Q7O0VBRUROLGdCQUFnQixDQUFDVyxJQUFqQixDQUFzQlIsRUFBdEI7QUFDRCxDQWRRIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvcmFmLnRzP2E3NGYiXSwibmFtZXMiOlsicGVuZGluZ0NhbGxiYWNrcyIsImV4cG9ydHMiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJmbiIsImxlbmd0aCIsInNldEltbWVkaWF0ZSIsIm5vdyIsInBlcmZvcm1hbmNlIiwiY2JzIiwiZm9yRWFjaCIsImNiIiwicHVzaCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///86283\n")},29556:(__unused_webpack_module,exports,__webpack_require__)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SharedData = exports.watchSharedData = exports.destroySharedData = exports.onSharedDataInit = exports.initSharedData = void 0;\n\nconst storage_1 = __webpack_require__(58561);\n\nconst env_1 = __webpack_require__(66210); // Initial state\n\n\nconst internalSharedData = {\n openInEditorHost: '/',\n componentNameStyle: 'class',\n theme: 'auto',\n displayDensity: 'low',\n timeFormat: 'default',\n recordVuex: true,\n cacheVuexSnapshotsEvery: 50,\n cacheVuexSnapshotsLimit: 10,\n snapshotLoading: false,\n componentEventsEnabled: true,\n performanceMonitoringEnabled: true,\n editableProps: false,\n logDetected: true,\n vuexNewBackend: false,\n vuexAutoload: false,\n vuexGroupGettersByModule: true,\n showMenuScrollTip: true,\n timelineTimeGrid: true,\n timelineScreenshots: true,\n menuStepScrolling: env_1.isMac,\n pluginPermissions: {},\n pluginSettings: {},\n pageConfig: {},\n legacyApps: false,\n trackUpdates: true,\n flashUpdates: false,\n debugInfo: false,\n isBrowser: env_1.isBrowser\n};\nconst persisted = ['componentNameStyle', 'theme', 'displayDensity', 'recordVuex', 'editableProps', 'logDetected', 'vuexNewBackend', 'vuexAutoload', 'vuexGroupGettersByModule', 'timeFormat', 'showMenuScrollTip', 'timelineTimeGrid', 'timelineScreenshots', 'menuStepScrolling', 'pluginPermissions', 'pluginSettings', 'performanceMonitoringEnabled', 'componentEventsEnabled', 'trackUpdates', 'flashUpdates', 'debugInfo'];\nconst storageVersion = '6.0.0-alpha.1'; // ---- INTERNALS ---- //\n\nlet bridge; // List of fields to persist to storage (disabled if 'false')\n// This should be unique to each shared data client to prevent conflicts\n\nlet persist = false;\nlet data;\nlet initRetryInterval;\nlet initRetryCount = 0;\nconst initCbs = [];\n\nfunction initSharedData(params) {\n return new Promise(resolve => {\n // Mandatory params\n bridge = params.bridge;\n persist = !!params.persist;\n\n if (persist) {\n if (false) {} // Load persisted fields\n\n\n persisted.forEach(key => {\n const value = (0, storage_1.getStorage)(`vue-devtools-${storageVersion}:shared-data:${key}`);\n\n if (value !== null) {\n internalSharedData[key] = value;\n }\n });\n bridge.on('shared-data:load', () => {\n // Send all fields\n Object.keys(internalSharedData).forEach(key => {\n sendValue(key, internalSharedData[key]);\n });\n bridge.send('shared-data:load-complete');\n });\n bridge.on('shared-data:init-complete', () => {\n if (false) {}\n\n clearInterval(initRetryInterval);\n resolve();\n });\n bridge.send('shared-data:master-init-waiting'); // In case backend init is executed after frontend\n\n bridge.on('shared-data:minion-init-waiting', () => {\n bridge.send('shared-data:master-init-waiting');\n });\n initRetryCount = 0;\n clearInterval(initRetryInterval);\n initRetryInterval = setInterval(() => {\n if (false) {}\n\n bridge.send('shared-data:master-init-waiting');\n initRetryCount++;\n\n if (initRetryCount > 30) {\n clearInterval(initRetryInterval);\n console.error('[shared data] Master init failed');\n }\n }, 2000);\n } else {\n if (false) {}\n\n bridge.on('shared-data:master-init-waiting', () => {\n if (false) {} // Load all persisted shared data\n\n\n bridge.send('shared-data:load');\n bridge.once('shared-data:load-complete', () => {\n if (false) {}\n\n bridge.send('shared-data:init-complete');\n resolve();\n });\n });\n bridge.send('shared-data:minion-init-waiting');\n }\n\n data = { ...internalSharedData\n };\n\n if (params.Vue) {\n data = params.Vue.observable(data);\n } // Update value from other shared data clients\n\n\n bridge.on('shared-data:set', ({\n key,\n value\n }) => {\n setValue(key, value);\n });\n initCbs.forEach(cb => cb());\n });\n}\n\nexports.initSharedData = initSharedData;\n\nfunction onSharedDataInit(cb) {\n initCbs.push(cb);\n return () => {\n const index = initCbs.indexOf(cb);\n if (index !== -1) initCbs.splice(index, 1);\n };\n}\n\nexports.onSharedDataInit = onSharedDataInit;\n\nfunction destroySharedData() {\n bridge.removeAllListeners('shared-data:set');\n watchers = {};\n}\n\nexports.destroySharedData = destroySharedData;\nlet watchers = {};\n\nfunction setValue(key, value) {\n // Storage\n if (persist && persisted.includes(key)) {\n (0, storage_1.setStorage)(`vue-devtools-${storageVersion}:shared-data:${key}`, value);\n }\n\n const oldValue = data[key];\n data[key] = value;\n const handlers = watchers[key];\n\n if (handlers) {\n handlers.forEach(h => h(value, oldValue));\n } // Validate Proxy set trap\n\n\n return true;\n}\n\nfunction sendValue(key, value) {\n bridge && bridge.send('shared-data:set', {\n key,\n value\n });\n}\n\nfunction watchSharedData(prop, handler) {\n const list = watchers[prop] || (watchers[prop] = []);\n list.push(handler);\n return () => {\n const index = list.indexOf(handler);\n if (index !== -1) list.splice(index, 1);\n };\n}\n\nexports.watchSharedData = watchSharedData;\nconst proxy = {};\nObject.keys(internalSharedData).forEach(key => {\n Object.defineProperty(proxy, key, {\n configurable: false,\n get: () => data[key],\n set: value => {\n sendValue(key, value);\n setValue(key, value);\n }\n });\n});\nexports.SharedData = proxy;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjk1NTYuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBLHlDLENBRUE7OztBQUNBLE1BQU1BLGtCQUFrQixHQUFHO0VBQ3pCQyxnQkFBZ0IsRUFBRSxHQURPO0VBRXpCQyxrQkFBa0IsRUFBRSxPQUZLO0VBR3pCQyxLQUFLLEVBQUUsTUFIa0I7RUFJekJDLGNBQWMsRUFBRSxLQUpTO0VBS3pCQyxVQUFVLEVBQUUsU0FMYTtFQU16QkMsVUFBVSxFQUFFLElBTmE7RUFPekJDLHVCQUF1QixFQUFFLEVBUEE7RUFRekJDLHVCQUF1QixFQUFFLEVBUkE7RUFTekJDLGVBQWUsRUFBRSxLQVRRO0VBVXpCQyxzQkFBc0IsRUFBRSxJQVZDO0VBV3pCQyw0QkFBNEIsRUFBRSxJQVhMO0VBWXpCQyxhQUFhLEVBQUUsS0FaVTtFQWF6QkMsV0FBVyxFQUFFLElBYlk7RUFjekJDLGNBQWMsRUFBRSxLQWRTO0VBZXpCQyxZQUFZLEVBQUUsS0FmVztFQWdCekJDLHdCQUF3QixFQUFFLElBaEJEO0VBaUJ6QkMsaUJBQWlCLEVBQUUsSUFqQk07RUFrQnpCQyxnQkFBZ0IsRUFBRSxJQWxCTztFQW1CekJDLG1CQUFtQixFQUFFLElBbkJJO0VBb0J6QkMsaUJBQWlCLEVBQUVDLFdBcEJNO0VBcUJ6QkMsaUJBQWlCLEVBQUUsRUFyQk07RUFzQnpCQyxjQUFjLEVBQUUsRUF0QlM7RUF1QnpCQyxVQUFVLEVBQUUsRUF2QmE7RUF3QnpCQyxVQUFVLEVBQUUsS0F4QmE7RUF5QnpCQyxZQUFZLEVBQUUsSUF6Qlc7RUEwQnpCQyxZQUFZLEVBQUUsS0ExQlc7RUEyQnpCQyxTQUFTLEVBQUUsS0EzQmM7RUE0QnpCQyxTQUFTLEVBQVRSO0FBNUJ5QixDQUEzQjtBQWlDQSxNQUFNUyxTQUFTLEdBQUcsQ0FDaEIsb0JBRGdCLEVBRWhCLE9BRmdCLEVBR2hCLGdCQUhnQixFQUloQixZQUpnQixFQUtoQixlQUxnQixFQU1oQixhQU5nQixFQU9oQixnQkFQZ0IsRUFRaEIsY0FSZ0IsRUFTaEIsMEJBVGdCLEVBVWhCLFlBVmdCLEVBV2hCLG1CQVhnQixFQVloQixrQkFaZ0IsRUFhaEIscUJBYmdCLEVBY2hCLG1CQWRnQixFQWVoQixtQkFmZ0IsRUFnQmhCLGdCQWhCZ0IsRUFpQmhCLDhCQWpCZ0IsRUFrQmhCLHdCQWxCZ0IsRUFtQmhCLGNBbkJnQixFQW9CaEIsY0FwQmdCLEVBcUJoQixXQXJCZ0IsQ0FBbEI7QUF3QkEsTUFBTUMsY0FBYyxHQUFHLGVBQXZCLEMsQ0FFQTs7QUFFQSxJQUFJQyxNQUFKLEMsQ0FDQTtBQUNBOztBQUNBLElBQUlDLE9BQU8sR0FBRyxLQUFkO0FBQ0EsSUFBSUMsSUFBSjtBQUVBLElBQUlDLGlCQUFKO0FBQ0EsSUFBSUMsY0FBYyxHQUFHLENBQXJCO0FBUUEsTUFBTUMsT0FBTyxHQUFHLEVBQWhCOztBQUVBLFNBQWdCQyxjQUFoQixDQUFnQ0MsTUFBaEMsRUFBd0Q7RUFDdEQsT0FBTyxJQUFJQyxPQUFKLENBQWFDLE9BQUQsSUFBWTtJQUM3QjtJQUNBVCxNQUFNLEdBQUdPLE1BQU0sQ0FBQ1AsTUFBaEI7SUFDQUMsT0FBTyxHQUFHLENBQUMsQ0FBQ00sTUFBTSxDQUFDTixPQUFuQjs7SUFFQSxJQUFJQSxPQUFKLEVBQWE7TUFDWCxJQUFJUyxLQUFKLEVBQTJDLEVBRGhDLENBS1g7OztNQUNBWixTQUFTLENBQUNpQixPQUFWLENBQWtCQyxHQUFHLElBQUc7UUFDdEIsTUFBTUMsS0FBSyxHQUFHLDBCQUFXLGdCQUFnQmxCLGNBQWMsZ0JBQWdCaUIsR0FBRyxFQUE1RCxDQUFkOztRQUNBLElBQUlDLEtBQUssS0FBSyxJQUFkLEVBQW9CO1VBQ2xCakQsa0JBQWtCLENBQUNnRCxHQUFELENBQWxCLEdBQTBCQyxLQUExQjtRQUNEO01BQ0YsQ0FMRDtNQU1BakIsTUFBTSxDQUFDa0IsRUFBUCxDQUFVLGtCQUFWLEVBQThCLE1BQUs7UUFDakM7UUFDQUMsTUFBTSxDQUFDQyxJQUFQLENBQVlwRCxrQkFBWixFQUFnQytDLE9BQWhDLENBQXdDQyxHQUFHLElBQUc7VUFDNUNLLFNBQVMsQ0FBQ0wsR0FBRCxFQUFNaEQsa0JBQWtCLENBQUNnRCxHQUFELENBQXhCLENBQVQ7UUFDRCxDQUZEO1FBR0FoQixNQUFNLENBQUNzQixJQUFQLENBQVksMkJBQVo7TUFDRCxDQU5EO01BT0F0QixNQUFNLENBQUNrQixFQUFQLENBQVUsMkJBQVYsRUFBdUMsTUFBSztRQUMxQyxJQUFJUixLQUFKLEVBQTJDLEVBRzFDOztRQUNEYSxhQUFhLENBQUNwQixpQkFBRCxDQUFiO1FBQ0FNLE9BQU87TUFDUixDQVBEO01BU0FULE1BQU0sQ0FBQ3NCLElBQVAsQ0FBWSxpQ0FBWixFQTVCVyxDQTZCWDs7TUFDQXRCLE1BQU0sQ0FBQ2tCLEVBQVAsQ0FBVSxpQ0FBVixFQUE2QyxNQUFLO1FBQ2hEbEIsTUFBTSxDQUFDc0IsSUFBUCxDQUFZLGlDQUFaO01BQ0QsQ0FGRDtNQUlBbEIsY0FBYyxHQUFHLENBQWpCO01BQ0FtQixhQUFhLENBQUNwQixpQkFBRCxDQUFiO01BQ0FBLGlCQUFpQixHQUFHcUIsV0FBVyxDQUFDLE1BQUs7UUFDbkMsSUFBSWQsS0FBSixFQUEyQyxFQUcxQzs7UUFDRFYsTUFBTSxDQUFDc0IsSUFBUCxDQUFZLGlDQUFaO1FBQ0FsQixjQUFjOztRQUNkLElBQUlBLGNBQWMsR0FBRyxFQUFyQixFQUF5QjtVQUN2Qm1CLGFBQWEsQ0FBQ3BCLGlCQUFELENBQWI7VUFDQVUsT0FBTyxDQUFDWSxLQUFSLENBQWMsa0NBQWQ7UUFDRDtNQUNGLENBWDhCLEVBVzVCLElBWDRCLENBQS9CO0lBWUQsQ0FoREQsTUFnRE87TUFDTCxJQUFJZixLQUFKLEVBQTJDLEVBRzFDOztNQUNEVixNQUFNLENBQUNrQixFQUFQLENBQVUsaUNBQVYsRUFBNkMsTUFBSztRQUNoRCxJQUFJUixLQUFKLEVBQTJDLEVBREssQ0FLaEQ7OztRQUNBVixNQUFNLENBQUNzQixJQUFQLENBQVksa0JBQVo7UUFDQXRCLE1BQU0sQ0FBQzBCLElBQVAsQ0FBWSwyQkFBWixFQUF5QyxNQUFLO1VBQzVDLElBQUloQixLQUFKLEVBQTJDLEVBRzFDOztVQUNEVixNQUFNLENBQUNzQixJQUFQLENBQVksMkJBQVo7VUFDQWIsT0FBTztRQUNSLENBUEQ7TUFRRCxDQWZEO01BZ0JBVCxNQUFNLENBQUNzQixJQUFQLENBQVksaUNBQVo7SUFDRDs7SUFFRHBCLElBQUksR0FBRyxFQUNMLEdBQUdsQztJQURFLENBQVA7O0lBSUEsSUFBSXVDLE1BQU0sQ0FBQ29CLEdBQVgsRUFBZ0I7TUFDZHpCLElBQUksR0FBR0ssTUFBTSxDQUFDb0IsR0FBUCxDQUFXQyxVQUFYLENBQXNCMUIsSUFBdEIsQ0FBUDtJQUNELENBbkY0QixDQXFGN0I7OztJQUNBRixNQUFNLENBQUNrQixFQUFQLENBQVUsaUJBQVYsRUFBNkIsQ0FBQztNQUFFRixHQUFGO01BQU9DO0lBQVAsQ0FBRCxLQUFtQjtNQUM5Q1ksUUFBUSxDQUFDYixHQUFELEVBQU1DLEtBQU4sQ0FBUjtJQUNELENBRkQ7SUFJQVosT0FBTyxDQUFDVSxPQUFSLENBQWdCZSxFQUFFLElBQUlBLEVBQUUsRUFBeEI7RUFDRCxDQTNGTSxDQUFQO0FBNEZEOztBQTdGREMsc0JBQUFBOztBQStGQSxTQUFnQkMsZ0JBQWhCLENBQWtDRixFQUFsQyxFQUFvQztFQUNsQ3pCLE9BQU8sQ0FBQzRCLElBQVIsQ0FBYUgsRUFBYjtFQUNBLE9BQU8sTUFBSztJQUNWLE1BQU1JLEtBQUssR0FBRzdCLE9BQU8sQ0FBQzhCLE9BQVIsQ0FBZ0JMLEVBQWhCLENBQWQ7SUFDQSxJQUFJSSxLQUFLLEtBQUssQ0FBQyxDQUFmLEVBQWtCN0IsT0FBTyxDQUFDK0IsTUFBUixDQUFlRixLQUFmLEVBQXNCLENBQXRCO0VBQ25CLENBSEQ7QUFJRDs7QUFOREgsd0JBQUFBOztBQVFBLFNBQWdCTSxpQkFBaEIsR0FBaUM7RUFDL0JyQyxNQUFNLENBQUNzQyxrQkFBUCxDQUEwQixpQkFBMUI7RUFDQUMsUUFBUSxHQUFHLEVBQVg7QUFDRDs7QUFIRFIseUJBQUFBO0FBS0EsSUFBSVEsUUFBUSxHQUFtRixFQUEvRjs7QUFFQSxTQUFTVixRQUFULENBQW1CYixHQUFuQixFQUFnQ0MsS0FBaEMsRUFBMEM7RUFDeEM7RUFDQSxJQUFJaEIsT0FBTyxJQUFJSCxTQUFTLENBQUMwQyxRQUFWLENBQW1CeEIsR0FBbkIsQ0FBZixFQUF3QztJQUN0QywwQkFBVyxnQkFBZ0JqQixjQUFjLGdCQUFnQmlCLEdBQUcsRUFBNUQsRUFBZ0VDLEtBQWhFO0VBQ0Q7O0VBQ0QsTUFBTXdCLFFBQVEsR0FBR3ZDLElBQUksQ0FBQ2MsR0FBRCxDQUFyQjtFQUNBZCxJQUFJLENBQUNjLEdBQUQsQ0FBSixHQUFZQyxLQUFaO0VBQ0EsTUFBTXlCLFFBQVEsR0FBR0gsUUFBUSxDQUFDdkIsR0FBRCxDQUF6Qjs7RUFDQSxJQUFJMEIsUUFBSixFQUFjO0lBQ1pBLFFBQVEsQ0FBQzNCLE9BQVQsQ0FBaUI0QixDQUFDLElBQUlBLENBQUMsQ0FBQzFCLEtBQUQsRUFBUXdCLFFBQVIsQ0FBdkI7RUFDRCxDQVZ1QyxDQVd4Qzs7O0VBQ0EsT0FBTyxJQUFQO0FBQ0Q7O0FBRUQsU0FBU3BCLFNBQVQsQ0FBb0JMLEdBQXBCLEVBQWlDQyxLQUFqQyxFQUEyQztFQUN6Q2pCLE1BQU0sSUFBSUEsTUFBTSxDQUFDc0IsSUFBUCxDQUFZLGlCQUFaLEVBQStCO0lBQ3ZDTixHQUR1QztJQUV2Q0M7RUFGdUMsQ0FBL0IsQ0FBVjtBQUlEOztBQUVELFNBQWdCMkIsZUFBaEIsQ0FFR0MsSUFGSCxFQUVlQyxPQUZmLEVBRTBGO0VBQ3hGLE1BQU1DLElBQUksR0FBR1IsUUFBUSxDQUFDTSxJQUFELENBQVIsS0FBbUJOLFFBQVEsQ0FBQ00sSUFBRCxDQUFSLEdBQWlCLEVBQXBDLENBQWI7RUFDQUUsSUFBSSxDQUFDZCxJQUFMLENBQVVhLE9BQVY7RUFDQSxPQUFPLE1BQUs7SUFDVixNQUFNWixLQUFLLEdBQUdhLElBQUksQ0FBQ1osT0FBTCxDQUFhVyxPQUFiLENBQWQ7SUFDQSxJQUFJWixLQUFLLEtBQUssQ0FBQyxDQUFmLEVBQWtCYSxJQUFJLENBQUNYLE1BQUwsQ0FBWUYsS0FBWixFQUFtQixDQUFuQjtFQUNuQixDQUhEO0FBSUQ7O0FBVERILHVCQUFBQTtBQVdBLE1BQU1pQixLQUFLLEdBQXVDLEVBQWxEO0FBQ0E3QixNQUFNLENBQUNDLElBQVAsQ0FBWXBELGtCQUFaLEVBQWdDK0MsT0FBaEMsQ0FBd0NDLEdBQUcsSUFBRztFQUM1Q0csTUFBTSxDQUFDOEIsY0FBUCxDQUFzQkQsS0FBdEIsRUFBNkJoQyxHQUE3QixFQUFrQztJQUNoQ2tDLFlBQVksRUFBRSxLQURrQjtJQUVoQ0MsR0FBRyxFQUFFLE1BQU1qRCxJQUFJLENBQUNjLEdBQUQsQ0FGaUI7SUFHaENvQyxHQUFHLEVBQUduQyxLQUFELElBQVU7TUFDYkksU0FBUyxDQUFDTCxHQUFELEVBQU1DLEtBQU4sQ0FBVDtNQUNBWSxRQUFRLENBQUNiLEdBQUQsRUFBTUMsS0FBTixDQUFSO0lBQ0Q7RUFOK0IsQ0FBbEM7QUFRRCxDQVREO0FBV2FjLGtCQUFBQSxHQUFhaUIsS0FBYiIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL3NoYXJlZC1kYXRhLnRzP2QwYmIiXSwibmFtZXMiOlsiaW50ZXJuYWxTaGFyZWREYXRhIiwib3BlbkluRWRpdG9ySG9zdCIsImNvbXBvbmVudE5hbWVTdHlsZSIsInRoZW1lIiwiZGlzcGxheURlbnNpdHkiLCJ0aW1lRm9ybWF0IiwicmVjb3JkVnVleCIsImNhY2hlVnVleFNuYXBzaG90c0V2ZXJ5IiwiY2FjaGVWdWV4U25hcHNob3RzTGltaXQiLCJzbmFwc2hvdExvYWRpbmciLCJjb21wb25lbnRFdmVudHNFbmFibGVkIiwicGVyZm9ybWFuY2VNb25pdG9yaW5nRW5hYmxlZCIsImVkaXRhYmxlUHJvcHMiLCJsb2dEZXRlY3RlZCIsInZ1ZXhOZXdCYWNrZW5kIiwidnVleEF1dG9sb2FkIiwidnVleEdyb3VwR2V0dGVyc0J5TW9kdWxlIiwic2hvd01lbnVTY3JvbGxUaXAiLCJ0aW1lbGluZVRpbWVHcmlkIiwidGltZWxpbmVTY3JlZW5zaG90cyIsIm1lbnVTdGVwU2Nyb2xsaW5nIiwiZW52XzEiLCJwbHVnaW5QZXJtaXNzaW9ucyIsInBsdWdpblNldHRpbmdzIiwicGFnZUNvbmZpZyIsImxlZ2FjeUFwcHMiLCJ0cmFja1VwZGF0ZXMiLCJmbGFzaFVwZGF0ZXMiLCJkZWJ1Z0luZm8iLCJpc0Jyb3dzZXIiLCJwZXJzaXN0ZWQiLCJzdG9yYWdlVmVyc2lvbiIsImJyaWRnZSIsInBlcnNpc3QiLCJkYXRhIiwiaW5pdFJldHJ5SW50ZXJ2YWwiLCJpbml0UmV0cnlDb3VudCIsImluaXRDYnMiLCJpbml0U2hhcmVkRGF0YSIsInBhcmFtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSIsImxvZyIsImZvckVhY2giLCJrZXkiLCJ2YWx1ZSIsIm9uIiwiT2JqZWN0Iiwia2V5cyIsInNlbmRWYWx1ZSIsInNlbmQiLCJjbGVhckludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJlcnJvciIsIm9uY2UiLCJWdWUiLCJvYnNlcnZhYmxlIiwic2V0VmFsdWUiLCJjYiIsImV4cG9ydHMiLCJvblNoYXJlZERhdGFJbml0IiwicHVzaCIsImluZGV4IiwiaW5kZXhPZiIsInNwbGljZSIsImRlc3Ryb3lTaGFyZWREYXRhIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwid2F0Y2hlcnMiLCJpbmNsdWRlcyIsIm9sZFZhbHVlIiwiaGFuZGxlcnMiLCJoIiwid2F0Y2hTaGFyZWREYXRhIiwicHJvcCIsImhhbmRsZXIiLCJsaXN0IiwicHJveHkiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImdldCIsInNldCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///29556\n")},423:(Q,B)=>{Object.defineProperty(B,"__esModule",{value:!0})},58561:(__unused_webpack_module,exports,__webpack_require__)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.clearStorage = exports.removeStorage = exports.setStorage = exports.getStorage = exports.initStorage = void 0;\n\nconst env_1 = __webpack_require__(66210); // If we can, we use the browser extension API to store data\n// it's async though, so we synchronize changes from an intermediate\n// storageData object\n\n\nconst useStorage = typeof env_1.target.chrome !== 'undefined' && typeof env_1.target.chrome.storage !== 'undefined';\nlet storageData = null;\n\nfunction initStorage() {\n return new Promise(resolve => {\n if (useStorage) {\n env_1.target.chrome.storage.local.get(null, result => {\n storageData = result;\n resolve();\n });\n } else {\n storageData = {};\n resolve();\n }\n });\n}\n\nexports.initStorage = initStorage;\n\nfunction getStorage(key, defaultValue = null) {\n checkStorage();\n\n if (useStorage) {\n return getDefaultValue(storageData[key], defaultValue);\n } else {\n try {\n return getDefaultValue(JSON.parse(localStorage.getItem(key)), defaultValue);\n } catch (e) {}\n }\n}\n\nexports.getStorage = getStorage;\n\nfunction setStorage(key, val) {\n checkStorage();\n\n if (useStorage) {\n storageData[key] = val;\n env_1.target.chrome.storage.local.set({\n [key]: val\n });\n } else {\n try {\n localStorage.setItem(key, JSON.stringify(val));\n } catch (e) {}\n }\n}\n\nexports.setStorage = setStorage;\n\nfunction removeStorage(key) {\n checkStorage();\n\n if (useStorage) {\n delete storageData[key];\n env_1.target.chrome.storage.local.remove([key]);\n } else {\n try {\n localStorage.removeItem(key);\n } catch (e) {}\n }\n}\n\nexports.removeStorage = removeStorage;\n\nfunction clearStorage() {\n checkStorage();\n\n if (useStorage) {\n storageData = {};\n env_1.target.chrome.storage.local.clear();\n } else {\n try {\n localStorage.clear();\n } catch (e) {}\n }\n}\n\nexports.clearStorage = clearStorage;\n\nfunction checkStorage() {\n if (!storageData) {\n throw new Error('Storage wasn\\'t initialized with \\'init()\\'');\n }\n}\n\nfunction getDefaultValue(value, defaultValue) {\n if (value == null) {\n return defaultValue;\n }\n\n return value;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFBSSxDQUFDWCxXQUFMLEVBQWtCO0lBQ2hCLE1BQU0sSUFBSTRCLEtBQUosQ0FBVSw2Q0FBVixDQUFOO0VBQ0Q7QUFDRjs7QUFFRCxTQUFTaEIsZUFBVCxDQUEwQmlCLEtBQTFCLEVBQWlDbkIsWUFBakMsRUFBNkM7RUFDM0MsSUFBSW1CLEtBQUssSUFBSSxJQUFiLEVBQW1CO0lBQ2pCLE9BQU9uQixZQUFQO0VBQ0Q7O0VBQ0QsT0FBT21CLEtBQVA7QUFDRCIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL3N0b3JhZ2UudHM/NTMyZiJdLCJuYW1lcyI6WyJ1c2VTdG9yYWdlIiwiZW52XzEiLCJjaHJvbWUiLCJzdG9yYWdlIiwic3RvcmFnZURhdGEiLCJpbml0U3RvcmFnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwibG9jYWwiLCJnZXQiLCJyZXN1bHQiLCJleHBvcnRzIiwiZ2V0U3RvcmFnZSIsImtleSIsImRlZmF1bHRWYWx1ZSIsImNoZWNrU3RvcmFnZSIsImdldERlZmF1bHRWYWx1ZSIsIkpTT04iLCJwYXJzZSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJlIiwic2V0U3RvcmFnZSIsInZhbCIsInNldCIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJyZW1vdmVTdG9yYWdlIiwicmVtb3ZlIiwicmVtb3ZlSXRlbSIsImNsZWFyU3RvcmFnZSIsImNsZWFyIiwiRXJyb3IiLCJ2YWx1ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///58561\n")},34723:(__unused_webpack_module,exports)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.stringifyStrictCircularAutoChunks = exports.parseCircularAutoChunks = exports.stringifyCircularAutoChunks = void 0;\nconst MAX_SERIALIZED_SIZE = 512 * 1024; // 1MB\n\nfunction encode(data, replacer, list, seen) {\n let stored, key, value, i, l;\n const seenIndex = seen.get(data);\n\n if (seenIndex != null) {\n return seenIndex;\n }\n\n const index = list.length;\n const proto = Object.prototype.toString.call(data);\n\n if (proto === '[object Object]') {\n stored = {};\n seen.set(data, index);\n list.push(stored);\n const keys = Object.keys(data);\n\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n value = data[key];\n if (replacer) value = replacer.call(data, key, value);\n stored[key] = encode(value, replacer, list, seen);\n }\n } else if (proto === '[object Array]') {\n stored = [];\n seen.set(data, index);\n list.push(stored);\n\n for (i = 0, l = data.length; i < l; i++) {\n value = data[i];\n if (replacer) value = replacer.call(data, i, value);\n stored[i] = encode(value, replacer, list, seen);\n }\n } else {\n list.push(data);\n }\n\n return index;\n}\n\nfunction decode(list, reviver) {\n let i = list.length;\n let j, k, data, key, value, proto;\n\n while (i--) {\n data = list[i];\n proto = Object.prototype.toString.call(data);\n\n if (proto === '[object Object]') {\n const keys = Object.keys(data);\n\n for (j = 0, k = keys.length; j < k; j++) {\n key = keys[j];\n value = list[data[key]];\n if (reviver) value = reviver.call(data, key, value);\n data[key] = value;\n }\n } else if (proto === '[object Array]') {\n for (j = 0, k = data.length; j < k; j++) {\n value = list[data[j]];\n if (reviver) value = reviver.call(data, j, value);\n data[j] = value;\n }\n }\n }\n}\n\nfunction stringifyCircularAutoChunks(data, replacer = null, space = null) {\n let result;\n\n try {\n result = arguments.length === 1 ? JSON.stringify(data) // @ts-ignore\n : JSON.stringify(data, replacer, space);\n } catch (e) {\n result = stringifyStrictCircularAutoChunks(data, replacer, space);\n }\n\n if (result.length > MAX_SERIALIZED_SIZE) {\n const chunkCount = Math.ceil(result.length / MAX_SERIALIZED_SIZE);\n const chunks = [];\n\n for (let i = 0; i < chunkCount; i++) {\n chunks.push(result.slice(i * MAX_SERIALIZED_SIZE, (i + 1) * MAX_SERIALIZED_SIZE));\n }\n\n return chunks;\n }\n\n return result;\n}\n\nexports.stringifyCircularAutoChunks = stringifyCircularAutoChunks;\n\nfunction parseCircularAutoChunks(data, reviver = null) {\n if (Array.isArray(data)) {\n data = data.join('');\n }\n\n const hasCircular = /^\\s/.test(data);\n\n if (!hasCircular) {\n return arguments.length === 1 ? JSON.parse(data) // @ts-ignore\n : JSON.parse(data, reviver);\n } else {\n const list = JSON.parse(data);\n decode(list, reviver);\n return list[0];\n }\n}\n\nexports.parseCircularAutoChunks = parseCircularAutoChunks;\n\nfunction stringifyStrictCircularAutoChunks(data, replacer = null, space = null) {\n const list = [];\n encode(data, replacer, list, new Map());\n return space ? ' ' + JSON.stringify(list, null, space) : ' ' + JSON.stringify(list);\n}\n\nexports.stringifyStrictCircularAutoChunks = stringifyStrictCircularAutoChunks;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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ZCxDQUFKLEVBQXlCO0lBQ3ZCQSxJQUFJLEdBQUdBLElBQUksQ0FBQzBDLElBQUwsQ0FBVSxFQUFWLENBQVA7RUFDRDs7RUFDRCxNQUFNQyxXQUFXLEdBQUcsTUFBTUMsSUFBTixDQUFXNUMsSUFBWCxDQUFwQjs7RUFDQSxJQUFJLENBQUMyQyxXQUFMLEVBQWtCO0lBQ2hCLE9BQU9mLFNBQVMsQ0FBQ2hCLE1BQVYsS0FBcUIsQ0FBckIsR0FDSGlCLElBQUksQ0FBQ2dCLEtBQUwsQ0FBVzdDLElBQVgsQ0FERyxDQUVMO0lBRkssRUFHSDZCLElBQUksQ0FBQ2dCLEtBQUwsQ0FBVzdDLElBQVgsRUFBaUJzQixPQUFqQixDQUhKO0VBSUQsQ0FMRCxNQUtPO0lBQ0wsTUFBTXBCLElBQUksR0FBRzJCLElBQUksQ0FBQ2dCLEtBQUwsQ0FBVzdDLElBQVgsQ0FBYjtJQUNBcUIsTUFBTSxDQUFDbkIsSUFBRCxFQUFPb0IsT0FBUCxDQUFOO0lBQ0EsT0FBT3BCLElBQUksQ0FBQyxDQUFELENBQVg7RUFDRDtBQUNGOztBQWZEb0MsK0JBQUFBOztBQWlCQSxTQUFnQk4saUNBQWhCLENBQW1EaEMsSUFBbkQsRUFBOERDLFdBQXdELElBQXRILEVBQTRIeUIsUUFBZ0IsSUFBNUksRUFBZ0o7RUFDOUksTUFBTXhCLElBQUksR0FBRyxFQUFiO0VBQ0FILE1BQU0sQ0FBQ0MsSUFBRCxFQUFPQyxRQUFQLEVBQWlCQyxJQUFqQixFQUF1QixJQUFJNEMsR0FBSixFQUF2QixDQUFOO0VBQ0EsT0FBT3BCLEtBQUssR0FDUixNQUFNRyxJQUFJLENBQUNDLFNBQUwsQ0FBZTVCLElBQWYsRUFBcUIsSUFBckIsRUFBMkJ3QixLQUEzQixDQURFLEdBRVIsTUFBTUcsSUFBSSxDQUFDQyxTQUFMLENBQWU1QixJQUFmLENBRlY7QUFHRDs7QUFORG9DLHlDQUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL3RyYW5zZmVyLnRzPzg3ZGQiXSwibmFtZXMiOlsiTUFYX1NFUklBTElaRURfU0laRSIsImVuY29kZSIsImRhdGEiLCJyZXBsYWNlciIsImxpc3QiLCJzZWVuIiwic3RvcmVkIiwia2V5IiwidmFsdWUiLCJpIiwibCIsInNlZW5JbmRleCIsImdldCIsImluZGV4IiwibGVuZ3RoIiwicHJvdG8iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJzZXQiLCJwdXNoIiwia2V5cyIsImRlY29kZSIsInJldml2ZXIiLCJqIiwiayIsInN0cmluZ2lmeUNpcmN1bGFyQXV0b0NodW5rcyIsInNwYWNlIiwicmVzdWx0IiwiYXJndW1lbnRzIiwiSlNPTiIsInN0cmluZ2lmeSIsImUiLCJzdHJpbmdpZnlTdHJpY3RDaXJjdWxhckF1dG9DaHVua3MiLCJjaHVua0NvdW50IiwiTWF0aCIsImNlaWwiLCJjaHVua3MiLCJzbGljZSIsImV4cG9ydHMiLCJwYXJzZUNpcmN1bGFyQXV0b0NodW5rcyIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJoYXNDaXJjdWxhciIsInRlc3QiLCJwYXJzZSIsIk1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///34723\n")},76203:function(__unused_webpack_module,exports,__webpack_require__){eval("\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.isEmptyObject = exports.copyToClipboard = exports.escape = exports.openInEditor = exports.focusInput = exports.simpleGet = exports.sortByKey = exports.searchDeepInObject = exports.isPlainObject = exports.revive = exports.parse = exports.getCustomRefDetails = exports.getCustomHTMLElementDetails = exports.getCustomFunctionDetails = exports.getCustomComponentDefinitionDetails = exports.getComponentName = exports.reviveSet = exports.getCustomSetDetails = exports.reviveMap = exports.getCustomMapDetails = exports.stringify = exports.specialTokenToString = exports.MAX_ARRAY_SIZE = exports.MAX_STRING_SIZE = exports.SPECIAL_TOKENS = exports.NAN = exports.NEGATIVE_INFINITY = exports.INFINITY = exports.UNDEFINED = exports.inDoc = exports.getComponentDisplayName = exports.kebabize = exports.camelize = exports.classify = void 0;\n\nconst path_1 = __importDefault(__webpack_require__(21023));\n\nconst transfer_1 = __webpack_require__(34723);\n\nconst backend_1 = __webpack_require__(79310);\n\nconst shared_data_1 = __webpack_require__(29556);\n\nconst env_1 = __webpack_require__(66210);\n\nfunction cached(fn) {\n const cache = Object.create(null);\n return function cachedFn(str) {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n\nconst classifyRE = /(?:^|[-_/])(\\w)/g;\nexports.classify = cached(str => {\n // fix: str.replace may causes '\"replace\" is not a function' exception.\n // This bug may causes the UI 'Component Filter' to not work properly\n // e.g. The type of 'str' is Number.\n // So need cover 'str' to String.\n return str && ('' + str).replace(classifyRE, toUpper);\n});\nconst camelizeRE = /-(\\w)/g;\nexports.camelize = cached(str => {\n return str && str.replace(camelizeRE, toUpper);\n});\nconst kebabizeRE = /([a-z0-9])([A-Z])/g;\nexports.kebabize = cached(str => {\n return str && str.replace(kebabizeRE, (_, lowerCaseCharacter, upperCaseLetter) => {\n return `${lowerCaseCharacter}-${upperCaseLetter}`;\n }).toLowerCase();\n});\n\nfunction toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n}\n\nfunction getComponentDisplayName(originalName, style = 'class') {\n switch (style) {\n case 'class':\n return (0, exports.classify)(originalName);\n\n case 'kebab':\n return (0, exports.kebabize)(originalName);\n\n case 'original':\n default:\n return originalName;\n }\n}\n\nexports.getComponentDisplayName = getComponentDisplayName;\n\nfunction inDoc(node) {\n if (!node) return false;\n const doc = node.ownerDocument.documentElement;\n const parent = node.parentNode;\n return doc === node || doc === parent || !!(parent && parent.nodeType === 1 && doc.contains(parent));\n}\n\nexports.inDoc = inDoc;\n/**\n * Stringify/parse data using CircularJSON.\n */\n\nexports.UNDEFINED = '__vue_devtool_undefined__';\nexports.INFINITY = '__vue_devtool_infinity__';\nexports.NEGATIVE_INFINITY = '__vue_devtool_negative_infinity__';\nexports.NAN = '__vue_devtool_nan__';\nexports.SPECIAL_TOKENS = {\n true: true,\n false: false,\n undefined: exports.UNDEFINED,\n null: null,\n '-Infinity': exports.NEGATIVE_INFINITY,\n Infinity: exports.INFINITY,\n NaN: exports.NAN\n};\nexports.MAX_STRING_SIZE = 10000;\nexports.MAX_ARRAY_SIZE = 5000;\n\nfunction specialTokenToString(value) {\n if (value === null) {\n return 'null';\n } else if (value === exports.UNDEFINED) {\n return 'undefined';\n } else if (value === exports.NAN) {\n return 'NaN';\n } else if (value === exports.INFINITY) {\n return 'Infinity';\n } else if (value === exports.NEGATIVE_INFINITY) {\n return '-Infinity';\n }\n\n return false;\n}\n\nexports.specialTokenToString = specialTokenToString;\n/**\n * Needed to prevent stack overflow\n * while replacing complex objects\n * like components because we create\n * new objects with the CustomValue API\n * (.i.e `{ _custom: { ... } }`)\n */\n\nclass EncodeCache {\n constructor() {\n this.map = new Map();\n }\n /**\n * Returns a result unique to each input data\n * @param {*} data Input data\n * @param {*} factory Function used to create the unique result\n */\n\n\n cache(data, factory) {\n const cached = this.map.get(data);\n\n if (cached) {\n return cached;\n } else {\n const result = factory(data);\n this.map.set(data, result);\n return result;\n }\n }\n\n clear() {\n this.map.clear();\n }\n\n}\n\nconst encodeCache = new EncodeCache();\n\nclass ReviveCache {\n constructor(maxSize) {\n this.maxSize = maxSize;\n this.map = new Map();\n this.index = 0;\n this.size = 0;\n }\n\n cache(value) {\n const currentIndex = this.index;\n this.map.set(currentIndex, value);\n this.size++;\n\n if (this.size > this.maxSize) {\n this.map.delete(currentIndex - this.size);\n this.size--;\n }\n\n this.index++;\n return currentIndex;\n }\n\n read(id) {\n return this.map.get(id);\n }\n\n}\n\nconst reviveCache = new ReviveCache(1000);\nconst replacers = {\n internal: replacerForInternal,\n user: replaceForUser\n};\n\nfunction stringify(data, target = 'internal') {\n // Create a fresh cache for each serialization\n encodeCache.clear();\n return (0, transfer_1.stringifyCircularAutoChunks)(data, replacers[target]);\n}\n\nexports.stringify = stringify;\n\nfunction replacerForInternal(key) {\n var _a; // @ts-ignore\n\n\n const val = this[key];\n const type = typeof val;\n\n if (Array.isArray(val)) {\n const l = val.length;\n\n if (l > exports.MAX_ARRAY_SIZE) {\n return {\n _isArray: true,\n length: l,\n items: val.slice(0, exports.MAX_ARRAY_SIZE)\n };\n }\n\n return val;\n } else if (typeof val === 'string') {\n if (val.length > exports.MAX_STRING_SIZE) {\n return val.substring(0, exports.MAX_STRING_SIZE) + `... (${val.length} total length)`;\n } else {\n return val;\n }\n } else if (type === 'undefined') {\n return exports.UNDEFINED;\n } else if (val === Infinity) {\n return exports.INFINITY;\n } else if (val === -Infinity) {\n return exports.NEGATIVE_INFINITY;\n } else if (type === 'function') {\n return getCustomFunctionDetails(val);\n } else if (type === 'symbol') {\n return `[native Symbol ${Symbol.prototype.toString.call(val)}]`;\n } else if (val !== null && type === 'object') {\n const proto = Object.prototype.toString.call(val);\n\n if (proto === '[object Map]') {\n return encodeCache.cache(val, () => getCustomMapDetails(val));\n } else if (proto === '[object Set]') {\n return encodeCache.cache(val, () => getCustomSetDetails(val));\n } else if (proto === '[object RegExp]') {\n // special handling of native type\n return `[native RegExp ${RegExp.prototype.toString.call(val)}]`;\n } else if (proto === '[object Date]') {\n return `[native Date ${Date.prototype.toString.call(val)}]`;\n } else if (proto === '[object Error]') {\n return `[native Error ${val.message}<>${val.stack}]`;\n } else if (val.state && val._vm) {\n return encodeCache.cache(val, () => (0, backend_1.getCustomStoreDetails)(val));\n } else if (val.constructor && val.constructor.name === 'VueRouter') {\n return encodeCache.cache(val, () => (0, backend_1.getCustomRouterDetails)(val));\n } else if ((0, backend_1.isVueInstance)(val)) {\n return encodeCache.cache(val, () => (0, backend_1.getCustomInstanceDetails)(val));\n } else if (typeof val.render === 'function') {\n return encodeCache.cache(val, () => getCustomComponentDefinitionDetails(val));\n } else if (val.constructor && val.constructor.name === 'VNode') {\n return `[native VNode <${val.tag}>]`;\n } else if (typeof HTMLElement !== 'undefined' && val instanceof HTMLElement) {\n return encodeCache.cache(val, () => getCustomHTMLElementDetails(val));\n } else if (((_a = val.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'Store' && val._wrappedGetters) {\n return `[object Store]`;\n } else if (val.currentRoute) {\n return `[object Router]`;\n }\n\n const customDetails = (0, backend_1.getCustomObjectDetails)(val, proto);\n if (customDetails != null) return customDetails;\n } else if (Number.isNaN(val)) {\n return exports.NAN;\n }\n\n return sanitize(val);\n} // @TODO revive from backend to have more data to the clipboard\n\n\nfunction replaceForUser(key) {\n // @ts-ignore\n let val = this[key];\n const type = typeof val;\n\n if ((val === null || val === void 0 ? void 0 : val._custom) && 'value' in val._custom) {\n val = val._custom.value;\n }\n\n if (type !== 'object') {\n if (val === exports.UNDEFINED) {\n return undefined;\n } else if (val === exports.INFINITY) {\n return Infinity;\n } else if (val === exports.NEGATIVE_INFINITY) {\n return -Infinity;\n } else if (val === exports.NAN) {\n return NaN;\n }\n\n return val;\n }\n\n return sanitize(val);\n}\n\nfunction getCustomMapDetails(val) {\n const list = [];\n val.forEach((value, key) => list.push({\n key,\n value\n }));\n return {\n _custom: {\n type: 'map',\n display: 'Map',\n value: list,\n readOnly: true,\n fields: {\n abstract: true\n }\n }\n };\n}\n\nexports.getCustomMapDetails = getCustomMapDetails;\n\nfunction reviveMap(val) {\n const result = new Map();\n const list = val._custom.value;\n\n for (let i = 0; i < list.length; i++) {\n const {\n key,\n value\n } = list[i];\n result.set(key, revive(value));\n }\n\n return result;\n}\n\nexports.reviveMap = reviveMap;\n\nfunction getCustomSetDetails(val) {\n const list = Array.from(val);\n return {\n _custom: {\n type: 'set',\n display: `Set[${list.length}]`,\n value: list,\n readOnly: true\n }\n };\n}\n\nexports.getCustomSetDetails = getCustomSetDetails;\n\nfunction reviveSet(val) {\n const result = new Set();\n const list = val._custom.value;\n\n for (let i = 0; i < list.length; i++) {\n const value = list[i];\n result.add(revive(value));\n }\n\n return result;\n}\n\nexports.reviveSet = reviveSet; // Use a custom basename functions instead of the shimed version\n// because it doesn't work on Windows\n\nfunction basename(filename, ext) {\n return path_1.default.basename(filename.replace(/^[a-zA-Z]:/, '').replace(/\\\\/g, '/'), ext);\n}\n\nfunction getComponentName(options) {\n const name = options.displayName || options.name || options._componentTag;\n\n if (name) {\n return name;\n }\n\n const file = options.__file; // injected by vue-loader\n\n if (file) {\n return (0, exports.classify)(basename(file, '.vue'));\n }\n}\n\nexports.getComponentName = getComponentName;\n\nfunction getCustomComponentDefinitionDetails(def) {\n let display = getComponentName(def);\n\n if (display) {\n if (def.name && def.__file) {\n display += ` <span>(${def.__file})</span>`;\n }\n } else {\n display = '<i>Unknown Component</i>';\n }\n\n return {\n _custom: {\n type: 'component-definition',\n display,\n tooltip: 'Component definition',\n ...(def.__file ? {\n file: def.__file\n } : {})\n }\n };\n}\n\nexports.getCustomComponentDefinitionDetails = getCustomComponentDefinitionDetails; // eslint-disable-next-line @typescript-eslint/ban-types\n\nfunction getCustomFunctionDetails(func) {\n let string = '';\n let matches = null;\n\n try {\n string = Function.prototype.toString.call(func);\n matches = String.prototype.match.call(string, /\\([\\s\\S]*?\\)/);\n } catch (e) {// Func is probably a Proxy, which can break Function.prototype.toString()\n } // Trim any excess whitespace from the argument string\n\n\n const match = matches && matches[0];\n const args = typeof match === 'string' ? match : '(?)';\n const name = typeof func.name === 'string' ? func.name : '';\n return {\n _custom: {\n type: 'function',\n display: `<span style=\"opacity:.5;\">function</span> ${escape(name)}${args}`,\n tooltip: string.trim() ? `<pre>${string}</pre>` : null,\n _reviveId: reviveCache.cache(func)\n }\n };\n}\n\nexports.getCustomFunctionDetails = getCustomFunctionDetails;\n\nfunction getCustomHTMLElementDetails(value) {\n try {\n return {\n _custom: {\n type: 'HTMLElement',\n display: `<span class=\"opacity-30\">&lt;</span><span class=\"text-blue-500\">${value.tagName.toLowerCase()}</span><span class=\"opacity-30\">&gt;</span>`,\n value: namedNodeMapToObject(value.attributes),\n actions: [{\n icon: 'input',\n tooltip: 'Log element to console',\n action: () => {\n // eslint-disable-next-line no-console\n console.log(value);\n }\n }]\n }\n };\n } catch (e) {\n return {\n _custom: {\n type: 'HTMLElement',\n display: `<span class=\"text-blue-500\">${String(value)}</span>`\n }\n };\n }\n}\n\nexports.getCustomHTMLElementDetails = getCustomHTMLElementDetails;\n\nfunction namedNodeMapToObject(map) {\n const result = {};\n const l = map.length;\n\n for (let i = 0; i < l; i++) {\n const node = map.item(i);\n result[node.name] = node.value;\n }\n\n return result;\n}\n\nfunction getCustomRefDetails(instance, key, ref) {\n let value;\n\n if (Array.isArray(ref)) {\n value = ref.map(r => getCustomRefDetails(instance, key, r)).map(data => data.value);\n } else {\n let name;\n\n if (ref._isVue) {\n name = getComponentName(ref.$options);\n } else {\n name = ref.tagName.toLowerCase();\n }\n\n value = {\n _custom: {\n display: `&lt;${name}` + (ref.id ? ` <span class=\"attr-title\">id</span>=\"${ref.id}\"` : '') + (ref.className ? ` <span class=\"attr-title\">class</span>=\"${ref.className}\"` : '') + '&gt;',\n uid: instance.__VUE_DEVTOOLS_UID__,\n type: 'reference'\n }\n };\n }\n\n return {\n type: '$refs',\n key: key,\n value,\n editable: false\n };\n}\n\nexports.getCustomRefDetails = getCustomRefDetails;\n\nfunction parse(data, revive = false) {\n return revive ? (0, transfer_1.parseCircularAutoChunks)(data, reviver) : (0, transfer_1.parseCircularAutoChunks)(data);\n}\n\nexports.parse = parse;\nconst specialTypeRE = /^\\[native (\\w+) (.*?)(<>((.|\\s)*))?\\]$/;\nconst symbolRE = /^\\[native Symbol Symbol\\((.*)\\)\\]$/;\n\nfunction reviver(key, val) {\n return revive(val);\n}\n\nfunction revive(val) {\n if (val === exports.UNDEFINED) {\n return undefined;\n } else if (val === exports.INFINITY) {\n return Infinity;\n } else if (val === exports.NEGATIVE_INFINITY) {\n return -Infinity;\n } else if (val === exports.NAN) {\n return NaN;\n } else if (val && val._custom) {\n const {\n _custom: custom\n } = val;\n\n if (custom.type === 'component') {\n return (0, backend_1.getInstanceMap)().get(custom.id);\n } else if (custom.type === 'map') {\n return reviveMap(val);\n } else if (custom.type === 'set') {\n return reviveSet(val);\n } else if (custom._reviveId) {\n return reviveCache.read(custom._reviveId);\n } else {\n return revive(custom.value);\n }\n } else if (symbolRE.test(val)) {\n const [, string] = symbolRE.exec(val);\n return Symbol.for(string);\n } else if (specialTypeRE.test(val)) {\n const [, type, string,, details] = specialTypeRE.exec(val);\n const result = new env_1.target[type](string);\n\n if (type === 'Error' && details) {\n result.stack = details;\n }\n\n return result;\n } else {\n return val;\n }\n}\n\nexports.revive = revive;\n/**\n * Sanitize data to be posted to the other side.\n * Since the message posted is sent with structured clone,\n * we need to filter out any types that might cause an error.\n *\n * @param {*} data\n * @return {*}\n */\n\nfunction sanitize(data) {\n if (!isPrimitive(data) && !Array.isArray(data) && !isPlainObject(data)) {\n // handle types that will probably cause issues in\n // the structured clone\n return Object.prototype.toString.call(data);\n } else {\n return data;\n }\n}\n\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nexports.isPlainObject = isPlainObject;\n\nfunction isPrimitive(data) {\n if (data == null) {\n return true;\n }\n\n const type = typeof data;\n return type === 'string' || type === 'number' || type === 'boolean';\n}\n/**\n * Searches a key or value in the object, with a maximum deepness\n * @param {*} obj Search target\n * @param {string} searchTerm Search string\n * @returns {boolean} Search match\n */\n\n\nfunction searchDeepInObject(obj, searchTerm) {\n const seen = new Map();\n const result = internalSearchObject(obj, searchTerm.toLowerCase(), seen, 0);\n seen.clear();\n return result;\n}\n\nexports.searchDeepInObject = searchDeepInObject;\nconst SEARCH_MAX_DEPTH = 10;\n/**\n * Executes a search on each field of the provided object\n * @param {*} obj Search target\n * @param {string} searchTerm Search string\n * @param {Map<any,boolean>} seen Map containing the search result to prevent stack overflow by walking on the same object multiple times\n * @param {number} depth Deep search depth level, which is capped to prevent performance issues\n * @returns {boolean} Search match\n */\n\nfunction internalSearchObject(obj, searchTerm, seen, depth) {\n if (depth > SEARCH_MAX_DEPTH) {\n return false;\n }\n\n let match = false;\n const keys = Object.keys(obj);\n let key, value;\n\n for (let i = 0; i < keys.length; i++) {\n key = keys[i];\n value = obj[key];\n match = internalSearchCheck(searchTerm, key, value, seen, depth + 1);\n\n if (match) {\n break;\n }\n }\n\n return match;\n}\n/**\n * Executes a search on each value of the provided array\n * @param {*} array Search target\n * @param {string} searchTerm Search string\n * @param {Map<any,boolean>} seen Map containing the search result to prevent stack overflow by walking on the same object multiple times\n * @param {number} depth Deep search depth level, which is capped to prevent performance issues\n * @returns {boolean} Search match\n */\n\n\nfunction internalSearchArray(array, searchTerm, seen, depth) {\n if (depth > SEARCH_MAX_DEPTH) {\n return false;\n }\n\n let match = false;\n let value;\n\n for (let i = 0; i < array.length; i++) {\n value = array[i];\n match = internalSearchCheck(searchTerm, null, value, seen, depth + 1);\n\n if (match) {\n break;\n }\n }\n\n return match;\n}\n/**\n * Checks if the provided field matches the search terms\n * @param {string} searchTerm Search string\n * @param {string} key Field key (null if from array)\n * @param {*} value Field value\n * @param {Map<any,boolean>} seen Map containing the search result to prevent stack overflow by walking on the same object multiple times\n * @param {number} depth Deep search depth level, which is capped to prevent performance issues\n * @returns {boolean} Search match\n */\n\n\nfunction internalSearchCheck(searchTerm, key, value, seen, depth) {\n let match = false;\n let result;\n\n if (key === '_custom') {\n key = value.display;\n value = value.value;\n }\n\n (result = specialTokenToString(value)) && (value = result);\n\n if (key && compare(key, searchTerm)) {\n match = true;\n seen.set(value, true);\n } else if (seen.has(value)) {\n match = seen.get(value);\n } else if (Array.isArray(value)) {\n seen.set(value, null);\n match = internalSearchArray(value, searchTerm, seen, depth);\n seen.set(value, match);\n } else if (isPlainObject(value)) {\n seen.set(value, null);\n match = internalSearchObject(value, searchTerm, seen, depth);\n seen.set(value, match);\n } else if (compare(value, searchTerm)) {\n match = true;\n seen.set(value, true);\n }\n\n return match;\n}\n/**\n * Compares two values\n * @param {*} value Mixed type value that will be cast to string\n * @param {string} searchTerm Search string\n * @returns {boolean} Search match\n */\n\n\nfunction compare(value, searchTerm) {\n return ('' + value).toLowerCase().indexOf(searchTerm) !== -1;\n}\n\nfunction sortByKey(state) {\n return state && state.slice().sort((a, b) => {\n if (a.key < b.key) return -1;\n if (a.key > b.key) return 1;\n return 0;\n });\n}\n\nexports.sortByKey = sortByKey;\n\nfunction simpleGet(object, path) {\n const sections = Array.isArray(path) ? path : path.split('.');\n\n for (let i = 0; i < sections.length; i++) {\n object = object[sections[i]];\n\n if (!object) {\n return undefined;\n }\n }\n\n return object;\n}\n\nexports.simpleGet = simpleGet;\n\nfunction focusInput(el) {\n el.focus();\n el.setSelectionRange(0, el.value.length);\n}\n\nexports.focusInput = focusInput;\n\nfunction openInEditor(file) {\n // Console display\n const fileName = file.replace(/\\\\/g, '\\\\\\\\');\n const src = `fetch('${shared_data_1.SharedData.openInEditorHost}__open-in-editor?file=${encodeURI(file)}').then(response => {\n if (response.ok) {\n console.log('File ${fileName} opened in editor')\n } else {\n const msg = 'Opening component ${fileName} failed'\n const target = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {}\n if (target.__VUE_DEVTOOLS_TOAST__) {\n target.__VUE_DEVTOOLS_TOAST__(msg, 'error')\n } else {\n console.log('%c' + msg, 'color:red')\n }\n console.log('Check the setup of your project, see https://devtools.vuejs.org/guide/open-in-editor.html')\n }\n })`;\n\n if (env_1.isChrome) {\n env_1.target.chrome.devtools.inspectedWindow.eval(src);\n } else {\n // eslint-disable-next-line no-eval\n eval(src);\n }\n}\n\nexports.openInEditor = openInEditor;\nconst ESC = {\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n '&': '&amp;'\n};\n\nfunction escape(s) {\n return s.replace(/[<>\"&]/g, escapeChar);\n}\n\nexports.escape = escape;\n\nfunction escapeChar(a) {\n return ESC[a] || a;\n}\n\nfunction copyToClipboard(state) {\n let text;\n\n if (typeof state !== 'object') {\n text = String(state);\n } else {\n text = stringify(state, 'user');\n } // @TODO navigator.clipboard is buggy in extensions\n\n\n if (typeof document === 'undefined') return;\n const dummyTextArea = document.createElement('textarea');\n dummyTextArea.textContent = text;\n document.body.appendChild(dummyTextArea);\n dummyTextArea.select();\n document.execCommand('copy');\n document.body.removeChild(dummyTextArea);\n}\n\nexports.copyToClipboard = copyToClipboard;\n\nfunction isEmptyObject(obj) {\n return obj === exports.UNDEFINED || !obj || Object.keys(obj).length === 0;\n}\n\nexports.isEmptyObject = isEmptyObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvdXRpbC50cz9hNjQzIl0sIm5hbWVzIjpbImNhY2hlZCIsImZuIiwiY2FjaGUiLCJPYmplY3QiLCJjcmVhdGUiLCJjYWNoZWRGbiIsInN0ciIsImhpdCIsImNsYXNzaWZ5UkUiLCJleHBvcnRzIiwicmVwbGFjZSIsInRvVXBwZXIiLCJjYW1lbGl6ZVJFIiwia2ViYWJpemVSRSIsIl8iLCJsb3dlckNhc2VDaGFyYWN0ZXIiLCJ1cHBlckNhc2VMZXR0ZXIiLCJ0b0xvd2VyQ2FzZSIsImMiLCJ0b1VwcGVyQ2FzZSIsImdldENvbXBvbmVudERpc3BsYXlOYW1lIiwib3JpZ2luYWxOYW1lIiwic3R5bGUiLCJpbkRvYyIsIm5vZGUiLCJkb2MiLCJvd25lckRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwicGFyZW50IiwicGFyZW50Tm9kZSIsIm5vZGVUeXBlIiwiY29udGFpbnMiLCJ0cnVlIiwiZmFsc2UiLCJ1bmRlZmluZWQiLCJudWxsIiwiSW5maW5pdHkiLCJOYU4iLCJzcGVjaWFsVG9rZW5Ub1N0cmluZyIsInZhbHVlIiwiRW5jb2RlQ2FjaGUiLCJjb25zdHJ1Y3RvciIsIm1hcCIsIk1hcCIsImRhdGEiLCJmYWN0b3J5IiwiZ2V0IiwicmVzdWx0Iiwic2V0IiwiY2xlYXIiLCJlbmNvZGVDYWNoZSIsIlJldml2ZUNhY2hlIiwibWF4U2l6ZSIsImluZGV4Iiwic2l6ZSIsImN1cnJlbnRJbmRleCIsImRlbGV0ZSIsInJlYWQiLCJpZCIsInJldml2ZUNhY2hlIiwicmVwbGFjZXJzIiwiaW50ZXJuYWwiLCJyZXBsYWNlckZvckludGVybmFsIiwidXNlciIsInJlcGxhY2VGb3JVc2VyIiwic3RyaW5naWZ5IiwidGFyZ2V0Iiwia2V5IiwidmFsIiwidHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImwiLCJsZW5ndGgiLCJfaXNBcnJheSIsIml0ZW1zIiwic2xpY2UiLCJzdWJzdHJpbmciLCJnZXRDdXN0b21GdW5jdGlvbkRldGFpbHMiLCJTeW1ib2wiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJwcm90byIsImdldEN1c3RvbU1hcERldGFpbHMiLCJnZXRDdXN0b21TZXREZXRhaWxzIiwiUmVnRXhwIiwiRGF0ZSIsIm1lc3NhZ2UiLCJzdGFjayIsInN0YXRlIiwiX3ZtIiwibmFtZSIsInJlbmRlciIsImdldEN1c3RvbUNvbXBvbmVudERlZmluaXRpb25EZXRhaWxzIiwidGFnIiwiSFRNTEVsZW1lbnQiLCJnZXRDdXN0b21IVE1MRWxlbWVudERldGFpbHMiLCJfYSIsIl93cmFwcGVkR2V0dGVycyIsImN1cnJlbnRSb3V0ZSIsImN1c3RvbURldGFpbHMiLCJOdW1iZXIiLCJpc05hTiIsInNhbml0aXplIiwiX2N1c3RvbSIsImxpc3QiLCJmb3JFYWNoIiwicHVzaCIsImRpc3BsYXkiLCJyZWFkT25seSIsImZpZWxkcyIsImFic3RyYWN0IiwicmV2aXZlTWFwIiwiaSIsInJldml2ZSIsImZyb20iLCJyZXZpdmVTZXQiLCJTZXQiLCJhZGQiLCJiYXNlbmFtZSIsImZpbGVuYW1lIiwiZXh0IiwicGF0aF8xIiwiZ2V0Q29tcG9uZW50TmFtZSIsIm9wdGlvbnMiLCJkaXNwbGF5TmFtZSIsIl9jb21wb25lbnRUYWciLCJmaWxlIiwiX19maWxlIiwiZGVmIiwidG9vbHRpcCIsImZ1bmMiLCJzdHJpbmciLCJtYXRjaGVzIiwiRnVuY3Rpb24iLCJTdHJpbmciLCJtYXRjaCIsImUiLCJhcmdzIiwiZXNjYXBlIiwidHJpbSIsIl9yZXZpdmVJZCIsInRhZ05hbWUiLCJuYW1lZE5vZGVNYXBUb09iamVjdCIsImF0dHJpYnV0ZXMiLCJhY3Rpb25zIiwiaWNvbiIsImFjdGlvbiIsImNvbnNvbGUiLCJsb2ciLCJpdGVtIiwiZ2V0Q3VzdG9tUmVmRGV0YWlscyIsImluc3RhbmNlIiwicmVmIiwiciIsIl9pc1Z1ZSIsIiRvcHRpb25zIiwiY2xhc3NOYW1lIiwidWlkIiwiX19WVUVfREVWVE9PTFNfVUlEX18iLCJlZGl0YWJsZSIsInBhcnNlIiwicmV2aXZlciIsInNwZWNpYWxUeXBlUkUiLCJzeW1ib2xSRSIsImN1c3RvbSIsInRlc3QiLCJleGVjIiwiZm9yIiwiZGV0YWlscyIsImVudl8xIiwiaXNQcmltaXRpdmUiLCJpc1BsYWluT2JqZWN0Iiwib2JqIiwic2VhcmNoRGVlcEluT2JqZWN0Iiwic2VhcmNoVGVybSIsInNlZW4iLCJpbnRlcm5hbFNlYXJjaE9iamVjdCIsIlNFQVJDSF9NQVhfREVQVEgiLCJkZXB0aCIsImtleXMiLCJpbnRlcm5hbFNlYXJjaENoZWNrIiwiaW50ZXJuYWxTZWFyY2hBcnJheSIsImFycmF5IiwiY29tcGFyZSIsImhhcyIsImluZGV4T2YiLCJzb3J0QnlLZXkiLCJzb3J0IiwiYSIsImIiLCJzaW1wbGVHZXQiLCJvYmplY3QiLCJwYXRoIiwic2VjdGlvbnMiLCJzcGxpdCIsImZvY3VzSW5wdXQiLCJlbCIsImZvY3VzIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJvcGVuSW5FZGl0b3IiLCJmaWxlTmFtZSIsInNyYyIsInNoYXJlZF9kYXRhXzEiLCJvcGVuSW5FZGl0b3JIb3N0IiwiZW5jb2RlVVJJIiwiY2hyb21lIiwiZGV2dG9vbHMiLCJpbnNwZWN0ZWRXaW5kb3ciLCJldmFsIiwiRVNDIiwicyIsImVzY2FwZUNoYXIiLCJjb3B5VG9DbGlwYm9hcmQiLCJ0ZXh0IiwiZG9jdW1lbnQiLCJkdW1teVRleHRBcmVhIiwiY3JlYXRlRWxlbWVudCIsInRleHRDb250ZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwic2VsZWN0IiwiZXhlY0NvbW1hbmQiLCJyZW1vdmVDaGlsZCIsImlzRW1wdHlPYmplY3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///76203\n")},85628:(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{eval("/* harmony import */ var _back_hook__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6793);\n/* harmony import */ var _vue_devtools_shared_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27146);\n/* harmony import */ var _vue_devtools_shared_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_vue_devtools_shared_utils__WEBPACK_IMPORTED_MODULE_1__);\n\n\n(0,_back_hook__WEBPACK_IMPORTED_MODULE_0__/* .installHook */ .U)(_vue_devtools_shared_utils__WEBPACK_IMPORTED_MODULE_1__.target);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODU2MjguanMiLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQTtBQUVBQSxnRUFBVyxDQUFDQyw4REFBRCxDQUFYIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uL3NyYy9ob29rLmpzPzg3Y2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zdGFsbEhvb2sgfSBmcm9tICdAYmFjay9ob29rJ1xuaW1wb3J0IHsgdGFyZ2V0IH0gZnJvbSAnQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHMnXG5cbmluc3RhbGxIb29rKHRhcmdldClcbiJdLCJuYW1lcyI6WyJpbnN0YWxsSG9vayIsInRhcmdldCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///85628\n")},22699:module=>{eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFFBQVE7QUFDL0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQixPQUFPO0FBQ3pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMseUJBQXlCO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLGdCQUFnQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhEQUE4RCxZQUFZO0FBQzFFO0FBQ0EsOERBQThELFlBQVk7QUFDMUU7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxZQUFZO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vLi4vbm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanM/YWY2YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUiA9IHR5cGVvZiBSZWZsZWN0ID09PSAnb2JqZWN0JyA/IFJlZmxlY3QgOiBudWxsXG52YXIgUmVmbGVjdEFwcGx5ID0gUiAmJiB0eXBlb2YgUi5hcHBseSA9PT0gJ2Z1bmN0aW9uJ1xuICA/IFIuYXBwbHlcbiAgOiBmdW5jdGlvbiBSZWZsZWN0QXBwbHkodGFyZ2V0LCByZWNlaXZlciwgYXJncykge1xuICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbCh0YXJnZXQsIHJlY2VpdmVyLCBhcmdzKTtcbiAgfVxuXG52YXIgUmVmbGVjdE93bktleXNcbmlmIChSICYmIHR5cGVvZiBSLm93bktleXMgPT09ICdmdW5jdGlvbicpIHtcbiAgUmVmbGVjdE93bktleXMgPSBSLm93bktleXNcbn0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICBSZWZsZWN0T3duS2V5cyA9IGZ1bmN0aW9uIFJlZmxlY3RPd25LZXlzKHRhcmdldCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQpXG4gICAgICAuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KSk7XG4gIH07XG59IGVsc2Uge1xuICBSZWZsZWN0T3duS2V5cyA9IGZ1bmN0aW9uIFJlZmxlY3RPd25LZXlzKHRhcmdldCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBQcm9jZXNzRW1pdFdhcm5pbmcod2FybmluZykge1xuICBpZiAoY29uc29sZSAmJiBjb25zb2xlLndhcm4pIGNvbnNvbGUud2Fybih3YXJuaW5nKTtcbn1cblxudmFyIE51bWJlcklzTmFOID0gTnVtYmVyLmlzTmFOIHx8IGZ1bmN0aW9uIE51bWJlcklzTmFOKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgRXZlbnRFbWl0dGVyLmluaXQuY2FsbCh0aGlzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyO1xubW9kdWxlLmV4cG9ydHMub25jZSA9IG9uY2U7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuMTAueFxuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzID0gdW5kZWZpbmVkO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzQ291bnQgPSAwO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuXG4vLyBCeSBkZWZhdWx0IEV2ZW50RW1pdHRlcnMgd2lsbCBwcmludCBhIHdhcm5pbmcgaWYgbW9yZSB0aGFuIDEwIGxpc3RlbmVycyBhcmVcbi8vIGFkZGVkIHRvIGl0LiBUaGlzIGlzIGEgdXNlZnVsIGRlZmF1bHQgd2hpY2ggaGVscHMgZmluZGluZyBtZW1vcnkgbGVha3MuXG52YXIgZGVmYXVsdE1heExpc3RlbmVycyA9IDEwO1xuXG5mdW5jdGlvbiBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKSB7XG4gIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGxpc3RlbmVyKTtcbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnRFbWl0dGVyLCAnZGVmYXVsdE1heExpc3RlbmVycycsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZGVmYXVsdE1heExpc3RlbmVycztcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbihhcmcpIHtcbiAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCB8fCBOdW1iZXJJc05hTihhcmcpKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiZGVmYXVsdE1heExpc3RlbmVyc1wiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcgKyBhcmcgKyAnLicpO1xuICAgIH1cbiAgICBkZWZhdWx0TWF4TGlzdGVuZXJzID0gYXJnO1xuICB9XG59KTtcblxuRXZlbnRFbWl0dGVyLmluaXQgPSBmdW5jdGlvbigpIHtcblxuICBpZiAodGhpcy5fZXZlbnRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHRoaXMuX2V2ZW50cyA9PT0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHMpIHtcbiAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgfVxuXG4gIHRoaXMuX21heExpc3RlbmVycyA9IHRoaXMuX21heExpc3RlbmVycyB8fCB1bmRlZmluZWQ7XG59O1xuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBzZXRNYXhMaXN0ZW5lcnMobikge1xuICBpZiAodHlwZW9mIG4gIT09ICdudW1iZXInIHx8IG4gPCAwIHx8IE51bWJlcklzTmFOKG4pKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcIm5cIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnICsgbiArICcuJyk7XG4gIH1cbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBfZ2V0TWF4TGlzdGVuZXJzKHRoYXQpIHtcbiAgaWYgKHRoYXQuX21heExpc3RlbmVycyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgcmV0dXJuIHRoYXQuX21heExpc3RlbmVycztcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBnZXRNYXhMaXN0ZW5lcnMoKSB7XG4gIHJldHVybiBfZ2V0TWF4TGlzdGVuZXJzKHRoaXMpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gZW1pdCh0eXBlKSB7XG4gIHZhciBhcmdzID0gW107XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgdmFyIGRvRXJyb3IgPSAodHlwZSA9PT0gJ2Vycm9yJyk7XG5cbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgaWYgKGV2ZW50cyAhPT0gdW5kZWZpbmVkKVxuICAgIGRvRXJyb3IgPSAoZG9FcnJvciAmJiBldmVudHMuZXJyb3IgPT09IHVuZGVmaW5lZCk7XG4gIGVsc2UgaWYgKCFkb0Vycm9yKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyBJZiB0aGVyZSBpcyBubyAnZXJyb3InIGV2ZW50IGxpc3RlbmVyIHRoZW4gdGhyb3cuXG4gIGlmIChkb0Vycm9yKSB7XG4gICAgdmFyIGVyO1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDApXG4gICAgICBlciA9IGFyZ3NbMF07XG4gICAgaWYgKGVyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIC8vIE5vdGU6IFRoZSBjb21tZW50cyBvbiB0aGUgYHRocm93YCBsaW5lcyBhcmUgaW50ZW50aW9uYWwsIHRoZXkgc2hvd1xuICAgICAgLy8gdXAgaW4gTm9kZSdzIG91dHB1dCBpZiB0aGlzIHJlc3VsdHMgaW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbi5cbiAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICAgIH1cbiAgICAvLyBBdCBsZWFzdCBnaXZlIHNvbWUga2luZCBvZiBjb250ZXh0IHRvIHRoZSB1c2VyXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcignVW5oYW5kbGVkIGVycm9yLicgKyAoZXIgPyAnICgnICsgZXIubWVzc2FnZSArICcpJyA6ICcnKSk7XG4gICAgZXJyLmNvbnRleHQgPSBlcjtcbiAgICB0aHJvdyBlcnI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gIH1cblxuICB2YXIgaGFuZGxlciA9IGV2ZW50c1t0eXBlXTtcblxuICBpZiAoaGFuZGxlciA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICBSZWZsZWN0QXBwbHkoaGFuZGxlciwgdGhpcywgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGxlbiA9IGhhbmRsZXIubGVuZ3RoO1xuICAgIHZhciBsaXN0ZW5lcnMgPSBhcnJheUNsb25lKGhhbmRsZXIsIGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgIFJlZmxlY3RBcHBseShsaXN0ZW5lcnNbaV0sIHRoaXMsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5mdW5jdGlvbiBfYWRkTGlzdGVuZXIodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgcHJlcGVuZCkge1xuICB2YXIgbTtcbiAgdmFyIGV2ZW50cztcbiAgdmFyIGV4aXN0aW5nO1xuXG4gIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuXG4gIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGFyZ2V0Ll9ldmVudHNDb3VudCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgICAvLyBhZGRpbmcgaXQgdG8gdGhlIGxpc3RlbmVycywgZmlyc3QgZW1pdCBcIm5ld0xpc3RlbmVyXCIuXG4gICAgaWYgKGV2ZW50cy5uZXdMaXN0ZW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0YXJnZXQuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICAgICAgbGlzdGVuZXIubGlzdGVuZXIgPyBsaXN0ZW5lci5saXN0ZW5lciA6IGxpc3RlbmVyKTtcblxuICAgICAgLy8gUmUtYXNzaWduIGBldmVudHNgIGJlY2F1c2UgYSBuZXdMaXN0ZW5lciBoYW5kbGVyIGNvdWxkIGhhdmUgY2F1c2VkIHRoZVxuICAgICAgLy8gdGhpcy5fZXZlbnRzIHRvIGJlIGFzc2lnbmVkIHRvIGEgbmV3IG9iamVjdFxuICAgICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG4gICAgfVxuICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdO1xuICB9XG5cbiAgaWYgKGV4aXN0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICAgICsrdGFyZ2V0Ll9ldmVudHNDb3VudDtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID1cbiAgICAgICAgcHJlcGVuZCA/IFtsaXN0ZW5lciwgZXhpc3RpbmddIDogW2V4aXN0aW5nLCBsaXN0ZW5lcl07XG4gICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBhbiBhcnJheSwganVzdCBhcHBlbmQuXG4gICAgfSBlbHNlIGlmIChwcmVwZW5kKSB7XG4gICAgICBleGlzdGluZy51bnNoaWZ0KGxpc3RlbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhpc3RpbmcucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgICBtID0gX2dldE1heExpc3RlbmVycyh0YXJnZXQpO1xuICAgIGlmIChtID4gMCAmJiBleGlzdGluZy5sZW5ndGggPiBtICYmICFleGlzdGluZy53YXJuZWQpIHtcbiAgICAgIGV4aXN0aW5nLndhcm5lZCA9IHRydWU7XG4gICAgICAvLyBObyBlcnJvciBjb2RlIGZvciB0aGlzIHNpbmNlIGl0IGlzIGEgV2FybmluZ1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICB2YXIgdyA9IG5ldyBFcnJvcignUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcubGVuZ3RoICsgJyAnICsgU3RyaW5nKHR5cGUpICsgJyBsaXN0ZW5lcnMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNyZWFzZSBsaW1pdCcpO1xuICAgICAgdy5uYW1lID0gJ01heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZyc7XG4gICAgICB3LmVtaXR0ZXIgPSB0YXJnZXQ7XG4gICAgICB3LnR5cGUgPSB0eXBlO1xuICAgICAgdy5jb3VudCA9IGV4aXN0aW5nLmxlbmd0aDtcbiAgICAgIFByb2Nlc3NFbWl0V2FybmluZyh3KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gYWRkTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIHRydWUpO1xuICAgIH07XG5cbmZ1bmN0aW9uIG9uY2VXcmFwcGVyKCkge1xuICBpZiAoIXRoaXMuZmlyZWQpIHtcbiAgICB0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsIHRoaXMud3JhcEZuKTtcbiAgICB0aGlzLmZpcmVkID0gdHJ1ZTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpO1xuICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LCBhcmd1bWVudHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9vbmNlV3JhcCh0YXJnZXQsIHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBzdGF0ZSA9IHsgZmlyZWQ6IGZhbHNlLCB3cmFwRm46IHVuZGVmaW5lZCwgdGFyZ2V0OiB0YXJnZXQsIHR5cGU6IHR5cGUsIGxpc3RlbmVyOiBsaXN0ZW5lciB9O1xuICB2YXIgd3JhcHBlZCA9IG9uY2VXcmFwcGVyLmJpbmQoc3RhdGUpO1xuICB3cmFwcGVkLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHN0YXRlLndyYXBGbiA9IHdyYXBwZWQ7XG4gIHJldHVybiB3cmFwcGVkO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbiBvbmNlKHR5cGUsIGxpc3RlbmVyKSB7XG4gIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuICB0aGlzLm9uKHR5cGUsIF9vbmNlV3JhcCh0aGlzLCB0eXBlLCBsaXN0ZW5lcikpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcHJlcGVuZE9uY2VMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG4gICAgICB0aGlzLnByZXBlbmRMaXN0ZW5lcih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbi8vIEVtaXRzIGEgJ3JlbW92ZUxpc3RlbmVyJyBldmVudCBpZiBhbmQgb25seSBpZiB0aGUgbGlzdGVuZXIgd2FzIHJlbW92ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgdmFyIGxpc3QsIGV2ZW50cywgcG9zaXRpb24sIGksIG9yaWdpbmFsTGlzdGVuZXI7XG5cbiAgICAgIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBsaXN0ID0gZXZlbnRzW3R5cGVdO1xuICAgICAgaWYgKGxpc3QgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fCBsaXN0Lmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMClcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdC5saXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGxpc3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcG9zaXRpb24gPSAtMTtcblxuICAgICAgICBmb3IgKGkgPSBsaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8IGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBvcmlnaW5hbExpc3RlbmVyID0gbGlzdFtpXS5saXN0ZW5lcjtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSAwKVxuICAgICAgICAgIGxpc3Quc2hpZnQoKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgc3BsaWNlT25lKGxpc3QsIHBvc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICBldmVudHNbdHlwZV0gPSBsaXN0WzBdO1xuXG4gICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgb3JpZ2luYWxMaXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub2ZmID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPVxuICAgIGZ1bmN0aW9uIHJlbW92ZUFsbExpc3RlbmVycyh0eXBlKSB7XG4gICAgICB2YXIgbGlzdGVuZXJzLCBldmVudHMsIGk7XG5cbiAgICAgIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgICAgIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIC8vIG5vdCBsaXN0ZW5pbmcgZm9yIHJlbW92ZUxpc3RlbmVyLCBubyBuZWVkIHRvIGVtaXRcbiAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50c1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhldmVudHMpO1xuICAgICAgICB2YXIga2V5O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgbGlzdGVuZXJzID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVycyk7XG4gICAgICB9IGVsc2UgaWYgKGxpc3RlbmVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIExJRk8gb3JkZXJcbiAgICAgICAgZm9yIChpID0gbGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbmZ1bmN0aW9uIF9saXN0ZW5lcnModGFyZ2V0LCB0eXBlLCB1bndyYXApIHtcbiAgdmFyIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gW107XG5cbiAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG4gIGlmIChldmxpc3RlbmVyID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIFtdO1xuXG4gIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJylcbiAgICByZXR1cm4gdW53cmFwID8gW2V2bGlzdGVuZXIubGlzdGVuZXIgfHwgZXZsaXN0ZW5lcl0gOiBbZXZsaXN0ZW5lcl07XG5cbiAgcmV0dXJuIHVud3JhcCA/XG4gICAgdW53cmFwTGlzdGVuZXJzKGV2bGlzdGVuZXIpIDogYXJyYXlDbG9uZShldmxpc3RlbmVyLCBldmxpc3RlbmVyLmxlbmd0aCk7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24gbGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgdHJ1ZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJhd0xpc3RlbmVycyA9IGZ1bmN0aW9uIHJhd0xpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIubGlzdGVuZXJDb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLmxpc3RlbmVyQ291bnQodHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyQ291bnQuY2FsbChlbWl0dGVyLCB0eXBlKTtcbiAgfVxufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lckNvdW50ID0gbGlzdGVuZXJDb3VudDtcbmZ1bmN0aW9uIGxpc3RlbmVyQ291bnQodHlwZSkge1xuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKGV2bGlzdGVuZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGV2bGlzdGVuZXIubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmV2ZW50TmFtZXMgPSBmdW5jdGlvbiBldmVudE5hbWVzKCkge1xuICByZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQgPiAwID8gUmVmbGVjdE93bktleXModGhpcy5fZXZlbnRzKSA6IFtdO1xufTtcblxuZnVuY3Rpb24gYXJyYXlDbG9uZShhcnIsIG4pIHtcbiAgdmFyIGNvcHkgPSBuZXcgQXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKVxuICAgIGNvcHlbaV0gPSBhcnJbaV07XG4gIHJldHVybiBjb3B5O1xufVxuXG5mdW5jdGlvbiBzcGxpY2VPbmUobGlzdCwgaW5kZXgpIHtcbiAgZm9yICg7IGluZGV4ICsgMSA8IGxpc3QubGVuZ3RoOyBpbmRleCsrKVxuICAgIGxpc3RbaW5kZXhdID0gbGlzdFtpbmRleCArIDFdO1xuICBsaXN0LnBvcCgpO1xufVxuXG5mdW5jdGlvbiB1bndyYXBMaXN0ZW5lcnMoYXJyKSB7XG4gIHZhciByZXQgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmV0Lmxlbmd0aDsgKytpKSB7XG4gICAgcmV0W2ldID0gYXJyW2ldLmxpc3RlbmVyIHx8IGFycltpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBvbmNlKGVtaXR0ZXIsIG5hbWUpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmdW5jdGlvbiBlcnJvckxpc3RlbmVyKGVycikge1xuICAgICAgZW1pdHRlci5yZW1vdmVMaXN0ZW5lcihuYW1lLCByZXNvbHZlcik7XG4gICAgICByZWplY3QoZXJyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXNvbHZlcigpIHtcbiAgICAgIGlmICh0eXBlb2YgZW1pdHRlci5yZW1vdmVMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIGVycm9yTGlzdGVuZXIpO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO1xuICAgIH07XG5cbiAgICBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZW1pdHRlciwgbmFtZSwgcmVzb2x2ZXIsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICBpZiAobmFtZSAhPT0gJ2Vycm9yJykge1xuICAgICAgYWRkRXJyb3JIYW5kbGVySWZFdmVudEVtaXR0ZXIoZW1pdHRlciwgZXJyb3JMaXN0ZW5lciwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyKGVtaXR0ZXIsIGhhbmRsZXIsIGZsYWdzKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5vbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlbWl0dGVyLCAnZXJyb3InLCBoYW5kbGVyLCBmbGFncyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyKGVtaXR0ZXIsIG5hbWUsIGxpc3RlbmVyLCBmbGFncykge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIub24gPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoZmxhZ3Mub25jZSkge1xuICAgICAgZW1pdHRlci5vbmNlKG5hbWUsIGxpc3RlbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW1pdHRlci5vbihuYW1lLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBlbWl0dGVyLmFkZEV2ZW50TGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBFdmVudFRhcmdldCBkb2VzIG5vdCBoYXZlIGBlcnJvcmAgZXZlbnQgc2VtYW50aWNzIGxpa2UgTm9kZVxuICAgIC8vIEV2ZW50RW1pdHRlcnMsIHdlIGRvIG5vdCBsaXN0ZW4gZm9yIGBlcnJvcmAgZXZlbnRzIGhlcmUuXG4gICAgZW1pdHRlci5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGZ1bmN0aW9uIHdyYXBMaXN0ZW5lcihhcmcpIHtcbiAgICAgIC8vIElFIGRvZXMgbm90IGhhdmUgYnVpbHRpbiBgeyBvbmNlOiB0cnVlIH1gIHN1cHBvcnQgc28gd2VcbiAgICAgIC8vIGhhdmUgdG8gZG8gaXQgbWFudWFsbHkuXG4gICAgICBpZiAoZmxhZ3Mub25jZSkge1xuICAgICAgICBlbWl0dGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgd3JhcExpc3RlbmVyKTtcbiAgICAgIH1cbiAgICAgIGxpc3RlbmVyKGFyZyk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiZW1pdHRlclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBFdmVudEVtaXR0ZXIuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBlbWl0dGVyKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///22699\n")},21023:module=>{eval("// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0ZBQW9GO0FBQ3BGO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhEQUE4RDs7QUFFOUQ7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uLy4uL25vZGVfbW9kdWxlcy9wYXRoLWJyb3dzZXJpZnkvaW5kZXguanM/YTBkNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAncGF0aCcgbW9kdWxlIGV4dHJhY3RlZCBmcm9tIE5vZGUuanMgdjguMTEuMSAob25seSB0aGUgcG9zaXggcGFydClcbi8vIHRyYW5zcGxpdGVkIHdpdGggQmFiZWxcblxuLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gYXNzZXJ0UGF0aChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICcgKyBKU09OLnN0cmluZ2lmeShwYXRoKSk7XG4gIH1cbn1cblxuLy8gUmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIHdpdGggZGlyZWN0b3J5IG5hbWVzXG5mdW5jdGlvbiBub3JtYWxpemVTdHJpbmdQb3NpeChwYXRoLCBhbGxvd0Fib3ZlUm9vdCkge1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBsYXN0U2VnbWVudExlbmd0aCA9IDA7XG4gIHZhciBsYXN0U2xhc2ggPSAtMTtcbiAgdmFyIGRvdHMgPSAwO1xuICB2YXIgY29kZTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gcGF0aC5sZW5ndGg7ICsraSkge1xuICAgIGlmIChpIDwgcGF0aC5sZW5ndGgpXG4gICAgICBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGVsc2UgaWYgKGNvZGUgPT09IDQ3IC8qLyovKVxuICAgICAgYnJlYWs7XG4gICAgZWxzZVxuICAgICAgY29kZSA9IDQ3IC8qLyovO1xuICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gaSAtIDEgfHwgZG90cyA9PT0gMSkge1xuICAgICAgICAvLyBOT09QXG4gICAgICB9IGVsc2UgaWYgKGxhc3RTbGFzaCAhPT0gaSAtIDEgJiYgZG90cyA9PT0gMikge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA8IDIgfHwgbGFzdFNlZ21lbnRMZW5ndGggIT09IDIgfHwgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDEpICE9PSA0NiAvKi4qLyB8fCByZXMuY2hhckNvZGVBdChyZXMubGVuZ3RoIC0gMikgIT09IDQ2IC8qLiovKSB7XG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICB2YXIgbGFzdFNsYXNoSW5kZXggPSByZXMubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgIGlmIChsYXN0U2xhc2hJbmRleCAhPT0gcmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHJlcyA9ICcnO1xuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMgPSByZXMuc2xpY2UoMCwgbGFzdFNsYXNoSW5kZXgpO1xuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMubGVuZ3RoID09PSAyIHx8IHJlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJlcyA9ICcnO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJlcyArPSAnLy4uJztcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXMgPSAnLi4nO1xuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKVxuICAgICAgICAgIHJlcyArPSAnLycgKyBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmVzID0gcGF0aC5zbGljZShsYXN0U2xhc2ggKyAxLCBpKTtcbiAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSBpIC0gbGFzdFNsYXNoIC0gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICBkb3RzID0gMDtcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDQ2IC8qLiovICYmIGRvdHMgIT09IC0xKSB7XG4gICAgICArK2RvdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvdHMgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gX2Zvcm1hdChzZXAsIHBhdGhPYmplY3QpIHtcbiAgdmFyIGRpciA9IHBhdGhPYmplY3QuZGlyIHx8IHBhdGhPYmplY3Qucm9vdDtcbiAgdmFyIGJhc2UgPSBwYXRoT2JqZWN0LmJhc2UgfHwgKHBhdGhPYmplY3QubmFtZSB8fCAnJykgKyAocGF0aE9iamVjdC5leHQgfHwgJycpO1xuICBpZiAoIWRpcikge1xuICAgIHJldHVybiBiYXNlO1xuICB9XG4gIGlmIChkaXIgPT09IHBhdGhPYmplY3Qucm9vdCkge1xuICAgIHJldHVybiBkaXIgKyBiYXNlO1xuICB9XG4gIHJldHVybiBkaXIgKyBzZXAgKyBiYXNlO1xufVxuXG52YXIgcG9zaXggPSB7XG4gIC8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSgpIHtcbiAgICB2YXIgcmVzb2x2ZWRQYXRoID0gJyc7XG4gICAgdmFyIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcbiAgICB2YXIgY3dkO1xuXG4gICAgZm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICAgIHZhciBwYXRoO1xuICAgICAgaWYgKGkgPj0gMClcbiAgICAgICAgcGF0aCA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoY3dkID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgY3dkID0gcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgcGF0aCA9IGN3ZDtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgICAgLy8gU2tpcCBlbXB0eSBlbnRyaWVzXG4gICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgICByZXNvbHZlZEFic29sdXRlID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKi8qLztcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gICAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVTdHJpbmdQb3NpeChyZXNvbHZlZFBhdGgsICFyZXNvbHZlZEFic29sdXRlKTtcblxuICAgIGlmIChyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgICBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApXG4gICAgICAgIHJldHVybiAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiAnLyc7XG4gICAgfSBlbHNlIGlmIChyZXNvbHZlZFBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVkUGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcuJztcbiAgICB9XG4gIH0sXG5cbiAgbm9ybWFsaXplOiBmdW5jdGlvbiBub3JtYWxpemUocGF0aCkge1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiAnLic7XG5cbiAgICB2YXIgaXNBYnNvbHV0ZSA9IHBhdGguY2hhckNvZGVBdCgwKSA9PT0gNDcgLyovKi87XG4gICAgdmFyIHRyYWlsaW5nU2VwYXJhdG9yID0gcGF0aC5jaGFyQ29kZUF0KHBhdGgubGVuZ3RoIC0gMSkgPT09IDQ3IC8qLyovO1xuXG4gICAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gICAgcGF0aCA9IG5vcm1hbGl6ZVN0cmluZ1Bvc2l4KHBhdGgsICFpc0Fic29sdXRlKTtcblxuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgcGF0aCA9ICcuJztcbiAgICBpZiAocGF0aC5sZW5ndGggPiAwICYmIHRyYWlsaW5nU2VwYXJhdG9yKSBwYXRoICs9ICcvJztcblxuICAgIGlmIChpc0Fic29sdXRlKSByZXR1cm4gJy8nICsgcGF0aDtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBpc0Fic29sdXRlOiBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIHJldHVybiBwYXRoLmxlbmd0aCA+IDAgJiYgcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKi8qLztcbiAgfSxcblxuICBqb2luOiBmdW5jdGlvbiBqb2luKCkge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuICcuJztcbiAgICB2YXIgam9pbmVkO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuICAgICAgYXNzZXJ0UGF0aChhcmcpO1xuICAgICAgaWYgKGFyZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChqb2luZWQgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICBqb2luZWQgPSBhcmc7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBqb2luZWQgKz0gJy8nICsgYXJnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoam9pbmVkID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gJy4nO1xuICAgIHJldHVybiBwb3NpeC5ub3JtYWxpemUoam9pbmVkKTtcbiAgfSxcblxuICByZWxhdGl2ZTogZnVuY3Rpb24gcmVsYXRpdmUoZnJvbSwgdG8pIHtcbiAgICBhc3NlcnRQYXRoKGZyb20pO1xuICAgIGFzc2VydFBhdGgodG8pO1xuXG4gICAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJyc7XG5cbiAgICBmcm9tID0gcG9zaXgucmVzb2x2ZShmcm9tKTtcbiAgICB0byA9IHBvc2l4LnJlc29sdmUodG8pO1xuXG4gICAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gJyc7XG5cbiAgICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gICAgdmFyIGZyb21TdGFydCA9IDE7XG4gICAgZm9yICg7IGZyb21TdGFydCA8IGZyb20ubGVuZ3RoOyArK2Zyb21TdGFydCkge1xuICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSA0NyAvKi8qLylcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHZhciBmcm9tRW5kID0gZnJvbS5sZW5ndGg7XG4gICAgdmFyIGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gICAgLy8gVHJpbSBhbnkgbGVhZGluZyBiYWNrc2xhc2hlc1xuICAgIHZhciB0b1N0YXJ0ID0gMTtcbiAgICBmb3IgKDsgdG9TdGFydCA8IHRvLmxlbmd0aDsgKyt0b1N0YXJ0KSB7XG4gICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSAhPT0gNDcgLyovKi8pXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB2YXIgdG9FbmQgPSB0by5sZW5ndGg7XG4gICAgdmFyIHRvTGVuID0gdG9FbmQgLSB0b1N0YXJ0O1xuXG4gICAgLy8gQ29tcGFyZSBwYXRocyB0byBmaW5kIHRoZSBsb25nZXN0IGNvbW1vbiBwYXRoIGZyb20gcm9vdFxuICAgIHZhciBsZW5ndGggPSBmcm9tTGVuIDwgdG9MZW4gPyBmcm9tTGVuIDogdG9MZW47XG4gICAgdmFyIGxhc3RDb21tb25TZXAgPSAtMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yICg7IGkgPD0gbGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmIChpID09PSBsZW5ndGgpIHtcbiAgICAgICAgaWYgKHRvTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYGZyb21gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGB0b2AuXG4gICAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXInOyB0bz0nL2Zvby9iYXIvYmF6J1xuICAgICAgICAgICAgcmV0dXJuIHRvLnNsaWNlKHRvU3RhcnQgKyBpICsgMSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIHJvb3RcbiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvJzsgdG89Jy9mb28nXG4gICAgICAgICAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCArIGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmcm9tTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYGZyb21gLlxuICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209Jy9mb28vYmFyL2Jheic7IHRvPScvZm9vL2JhcidcbiAgICAgICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYHRvYCBpcyB0aGUgcm9vdC5cbiAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vJzsgdG89Jy8nXG4gICAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB2YXIgZnJvbUNvZGUgPSBmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSk7XG4gICAgICB2YXIgdG9Db2RlID0gdG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSk7XG4gICAgICBpZiAoZnJvbUNvZGUgIT09IHRvQ29kZSlcbiAgICAgICAgYnJlYWs7XG4gICAgICBlbHNlIGlmIChmcm9tQ29kZSA9PT0gNDcgLyovKi8pXG4gICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgIH1cblxuICAgIHZhciBvdXQgPSAnJztcbiAgICAvLyBHZW5lcmF0ZSB0aGUgcmVsYXRpdmUgcGF0aCBiYXNlZCBvbiB0aGUgcGF0aCBkaWZmZXJlbmNlIGJldHdlZW4gYHRvYFxuICAgIC8vIGFuZCBgZnJvbWBcbiAgICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICAgIGlmIChpID09PSBmcm9tRW5kIHx8IGZyb20uY2hhckNvZGVBdChpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgaWYgKG91dC5sZW5ndGggPT09IDApXG4gICAgICAgICAgb3V0ICs9ICcuLic7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBvdXQgKz0gJy8uLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGFzdGx5LCBhcHBlbmQgdGhlIHJlc3Qgb2YgdGhlIGRlc3RpbmF0aW9uIChgdG9gKSBwYXRoIHRoYXQgY29tZXMgYWZ0ZXJcbiAgICAvLyB0aGUgY29tbW9uIHBhdGggcGFydHNcbiAgICBpZiAob3V0Lmxlbmd0aCA+IDApXG4gICAgICByZXR1cm4gb3V0ICsgdG8uc2xpY2UodG9TdGFydCArIGxhc3RDb21tb25TZXApO1xuICAgIGVsc2Uge1xuICAgICAgdG9TdGFydCArPSBsYXN0Q29tbW9uU2VwO1xuICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCkgPT09IDQ3IC8qLyovKVxuICAgICAgICArK3RvU3RhcnQ7XG4gICAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCk7XG4gICAgfVxuICB9LFxuXG4gIF9tYWtlTG9uZzogZnVuY3Rpb24gX21ha2VMb25nKHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBkaXJuYW1lOiBmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcuJztcbiAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcbiAgICB2YXIgaGFzUm9vdCA9IGNvZGUgPT09IDQ3IC8qLyovO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICBmb3IgKHZhciBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDE7IC0taSkge1xuICAgICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvclxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5kID09PSAtMSkgcmV0dXJuIGhhc1Jvb3QgPyAnLycgOiAnLic7XG4gICAgaWYgKGhhc1Jvb3QgJiYgZW5kID09PSAxKSByZXR1cm4gJy8vJztcbiAgICByZXR1cm4gcGF0aC5zbGljZSgwLCBlbmQpO1xuICB9LFxuXG4gIGJhc2VuYW1lOiBmdW5jdGlvbiBiYXNlbmFtZShwYXRoLCBleHQpIHtcbiAgICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGV4dCAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZXh0XCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiBleHQubGVuZ3RoID4gMCAmJiBleHQubGVuZ3RoIDw9IHBhdGgubGVuZ3RoKSB7XG4gICAgICBpZiAoZXh0Lmxlbmd0aCA9PT0gcGF0aC5sZW5ndGggJiYgZXh0ID09PSBwYXRoKSByZXR1cm4gJyc7XG4gICAgICB2YXIgZXh0SWR4ID0gZXh0Lmxlbmd0aCAtIDE7XG4gICAgICB2YXIgZmlyc3ROb25TbGFzaEVuZCA9IC0xO1xuICAgICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChmaXJzdE5vblNsYXNoRW5kID09PSAtMSkge1xuICAgICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIHJlbWVtYmVyIHRoaXMgaW5kZXggaW4gY2FzZVxuICAgICAgICAgICAgLy8gd2UgbmVlZCBpdCBpZiB0aGUgZXh0ZW5zaW9uIGVuZHMgdXAgbm90IG1hdGNoaW5nXG4gICAgICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICAgIGZpcnN0Tm9uU2xhc2hFbmQgPSBpICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV4dElkeCA+PSAwKSB7XG4gICAgICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggdGhlIGV4cGxpY2l0IGV4dGVuc2lvblxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IGV4dC5jaGFyQ29kZUF0KGV4dElkeCkpIHtcbiAgICAgICAgICAgICAgaWYgKC0tZXh0SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgdGhlIGV4dGVuc2lvbiwgc28gbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyIHBhdGhcbiAgICAgICAgICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBFeHRlbnNpb24gZG9lcyBub3QgbWF0Y2gsIHNvIG91ciByZXN1bHQgaXMgdGhlIGVudGlyZSBwYXRoXG4gICAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgICBleHRJZHggPSAtMTtcbiAgICAgICAgICAgICAgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXJ0ID09PSBlbmQpIGVuZCA9IGZpcnN0Tm9uU2xhc2hFbmQ7ZWxzZSBpZiAoZW5kID09PSAtMSkgZW5kID0gcGF0aC5sZW5ndGg7XG4gICAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgICAgIC8vIHBhdGggY29tcG9uZW50XG4gICAgICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiAnJztcbiAgICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgfSxcblxuICBleHRuYW1lOiBmdW5jdGlvbiBleHRuYW1lKHBhdGgpIHtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIHZhciBzdGFydERvdCA9IC0xO1xuICAgIHZhciBzdGFydFBhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gICAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgICB2YXIgcHJlRG90U3RhdGUgPSAwO1xuICAgIGZvciAodmFyIGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKVxuICAgICAgICAgICAgc3RhcnREb3QgPSBpO1xuICAgICAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKVxuICAgICAgICAgICAgcHJlRG90U3RhdGUgPSAxO1xuICAgICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICAgICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAgICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgICAgICBwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbiAgfSxcblxuICBmb3JtYXQ6IGZ1bmN0aW9uIGZvcm1hdChwYXRoT2JqZWN0KSB7XG4gICAgaWYgKHBhdGhPYmplY3QgPT09IG51bGwgfHwgdHlwZW9mIHBhdGhPYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJwYXRoT2JqZWN0XCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHBhdGhPYmplY3QpO1xuICAgIH1cbiAgICByZXR1cm4gX2Zvcm1hdCgnLycsIHBhdGhPYmplY3QpO1xuICB9LFxuXG4gIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShwYXRoKSB7XG4gICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgIHZhciByZXQgPSB7IHJvb3Q6ICcnLCBkaXI6ICcnLCBiYXNlOiAnJywgZXh0OiAnJywgbmFtZTogJycgfTtcbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiByZXQ7XG4gICAgdmFyIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIGlzQWJzb2x1dGUgPSBjb2RlID09PSA0NyAvKi8qLztcbiAgICB2YXIgc3RhcnQ7XG4gICAgaWYgKGlzQWJzb2x1dGUpIHtcbiAgICAgIHJldC5yb290ID0gJy8nO1xuICAgICAgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfVxuICAgIHZhciBzdGFydERvdCA9IC0xO1xuICAgIHZhciBzdGFydFBhcnQgPSAwO1xuICAgIHZhciBlbmQgPSAtMTtcbiAgICB2YXIgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgICB2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTtcblxuICAgIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICAgIHZhciBwcmVEb3RTdGF0ZSA9IDA7XG5cbiAgICAvLyBHZXQgbm9uLWRpciBpbmZvXG4gICAgZm9yICg7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSA0NyAvKi8qLykge1xuICAgICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gNDYgLyouKi8pIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7ZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnREb3QgPT09IC0xIHx8IGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKSB7XG4gICAgICBpZiAoZW5kICE9PSAtMSkge1xuICAgICAgICBpZiAoc3RhcnRQYXJ0ID09PSAwICYmIGlzQWJzb2x1dGUpIHJldC5iYXNlID0gcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKDEsIGVuZCk7ZWxzZSByZXQuYmFzZSA9IHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGFydFBhcnQgPT09IDAgJiYgaXNBYnNvbHV0ZSkge1xuICAgICAgICByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgc3RhcnREb3QpO1xuICAgICAgICByZXQuYmFzZSA9IHBhdGguc2xpY2UoMSwgZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIHN0YXJ0RG90KTtcbiAgICAgICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICAgIHJldC5leHQgPSBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICAgIH1cblxuICAgIGlmIChzdGFydFBhcnQgPiAwKSByZXQuZGlyID0gcGF0aC5zbGljZSgwLCBzdGFydFBhcnQgLSAxKTtlbHNlIGlmIChpc0Fic29sdXRlKSByZXQuZGlyID0gJy8nO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBzZXA6ICcvJyxcbiAgZGVsaW1pdGVyOiAnOicsXG4gIHdpbjMyOiBudWxsLFxuICBwb3NpeDogbnVsbFxufTtcblxucG9zaXgucG9zaXggPSBwb3NpeDtcblxubW9kdWxlLmV4cG9ydHMgPSBwb3NpeDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///21023\n")}},__webpack_module_cache__={};function __webpack_require__(Q){var B=__webpack_module_cache__[Q];if(void 0!==B)return B.exports;var U=__webpack_module_cache__[Q]={exports:{}};return __webpack_modules__[Q].call(U.exports,U,U.exports,__webpack_require__),U.exports}(()=>{__webpack_require__.n=Q=>{var B=Q&&Q.__esModule?()=>Q["default"]:()=>Q;return __webpack_require__.d(B,{a:B}),B}})(),(()=>{__webpack_require__.d=(Q,B)=>{for(var U in B)__webpack_require__.o(B,U)&&!__webpack_require__.o(Q,U)&&Object.defineProperty(Q,U,{enumerable:!0,get:B[U]})}})(),(()=>{__webpack_require__.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(Q){if("object"===typeof window)return window}}()})(),(()=>{__webpack_require__.o=(Q,B)=>Object.prototype.hasOwnProperty.call(Q,B)})();var __webpack_exports__=__webpack_require__(85628)})();