@vue/devtools 6.0.5 → 6.0.9
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/backend.js +15 -15
- package/build/devtools.js +1 -1
- package/build/hook.js +1 -1
- package/package.json +1 -1
package/build/backend.js
CHANGED
|
@@ -27,7 +27,7 @@ eval("/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffe
|
|
|
27
27
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
28
28
|
|
|
29
29
|
"use strict";
|
|
30
|
-
eval("// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"setupDevtoolsPlugin\": () => (/* binding */ setupDevtoolsPlugin)\n});\n\n;// CONCATENATED MODULE: ../api/lib/esm/env.js\nfunction getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nfunction getTarget() {\n // @ts-ignore\n return typeof navigator !== 'undefined' && typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : {};\n}\nconst isProxyAvailable = typeof Proxy === 'function';\n;// CONCATENATED MODULE: ../api/lib/esm/const.js\nconst HOOK_SETUP = 'devtools-plugin:setup';\nconst HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n;// CONCATENATED MODULE: ../api/lib/esm/proxy.js\n\nclass ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n } catch (e) {// noop\n }\n\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n } catch (e) {// noop\n }\n\n currentSettings = value;\n }\n\n };\n\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n } else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args\n });\n };\n }\n }\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n } else if (prop === 'on') {\n return this.proxiedOn;\n } else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => {}\n });\n return this.fallbacks[prop](...args);\n };\n } else {\n return (...args) => {\n return new Promise(resolve => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve\n });\n });\n };\n }\n }\n });\n }\n\n async setRealTarget(target) {\n this.target = target;\n\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n\n}\n;// CONCATENATED MODULE: ../api/lib/esm/index.js\n\n\n\n\n\nfunction setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && pluginDescriptor.enableEarlyProxy;\n\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n } else {\n const proxy = enableProxy ? new ApiProxy(pluginDescriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor,\n setupFn,\n proxy\n });\n if (proxy) setupFn(proxy.proxiedTarget);\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFBSS9DLFFBQUosQ0FBYTZDLGdCQUFiLEVBQStCMUMsSUFBL0IsQ0FBSCxHQUEwQyxJQUFuRTtBQUNBLFVBQU1pRCxJQUFJLEdBQUdoRCxNQUFNLENBQUNpRCx3QkFBUCxHQUFrQ2pELE1BQU0sQ0FBQ2lELHdCQUFQLElBQW1DLEVBQWxGO0FBQ0FELElBQUFBLElBQUksQ0FBQ2hCLElBQUwsQ0FBVTtBQUNOUyxNQUFBQSxnQkFETTtBQUVOQyxNQUFBQSxPQUZNO0FBR05LLE1BQUFBO0FBSE0sS0FBVjtBQUtBLFFBQUlBLEtBQUosRUFDSUwsT0FBTyxDQUFDSyxLQUFLLENBQUNiLGFBQVAsQ0FBUDtBQUNQO0FBQ0oiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL2FwaS9saWIvZXNtL2Vudi5qcz9jZGYzIiwid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vYXBpL2xpYi9lc20vY29uc3QuanM/MTgwNSIsIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL2FwaS9saWIvZXNtL3Byb3h5LmpzPzc1MjAiLCJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9hcGkvbGliL2VzbS9pbmRleC5qcz83MjA1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXREZXZ0b29sc0dsb2JhbEhvb2soKSB7XG4gICAgcmV0dXJuIGdldFRhcmdldCgpLl9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0KCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICA/IHdpbmRvd1xuICAgICAgICA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICA/IGdsb2JhbFxuICAgICAgICAgICAgOiB7fTtcbn1cbmV4cG9ydCBjb25zdCBpc1Byb3h5QXZhaWxhYmxlID0gdHlwZW9mIFByb3h5ID09PSAnZnVuY3Rpb24nO1xuIiwiZXhwb3J0IGNvbnN0IEhPT0tfU0VUVVAgPSAnZGV2dG9vbHMtcGx1Z2luOnNldHVwJztcbmV4cG9ydCBjb25zdCBIT09LX1BMVUdJTl9TRVRUSU5HU19TRVQgPSAncGx1Z2luOnNldHRpbmdzOnNldCc7XG4iLCJpbXBvcnQgeyBIT09LX1BMVUdJTl9TRVRUSU5HU19TRVQgfSBmcm9tICcuL2NvbnN0JztcbmV4cG9ydCBjbGFzcyBBcGlQcm94eSB7XG4gICAgY29uc3RydWN0b3IocGx1Z2luLCBob29rKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy50YXJnZXRRdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLm9uUXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XG4gICAgICAgIHRoaXMuaG9vayA9IGhvb2s7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRTZXR0aW5ncyA9IHt9O1xuICAgICAgICBpZiAocGx1Z2luLnNldHRpbmdzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkIGluIHBsdWdpbi5zZXR0aW5ncykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBwbHVnaW4uc2V0dGluZ3NbaWRdO1xuICAgICAgICAgICAgICAgIGRlZmF1bHRTZXR0aW5nc1tpZF0gPSBpdGVtLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsb2NhbFNldHRpbmdzU2F2ZUlkID0gYF9fdnVlLWRldnRvb2xzLXBsdWdpbi1zZXR0aW5nc19fJHtwbHVnaW4uaWR9YDtcbiAgICAgICAgbGV0IGN1cnJlbnRTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRTZXR0aW5ncyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFNldHRpbmdzU2F2ZUlkKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGN1cnJlbnRTZXR0aW5ncywgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIG5vb3BcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZhbGxiYWNrcyA9IHtcbiAgICAgICAgICAgIGdldFNldHRpbmdzKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2V0dGluZ3M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0U2V0dGluZ3ModmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFNldHRpbmdzU2F2ZUlkLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBub29wXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRTZXR0aW5ncyA9IHZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGhvb2spIHtcbiAgICAgICAgICAgIGhvb2sub24oSE9PS19QTFVHSU5fU0VUVElOR1NfU0VULCAocGx1Z2luSWQsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBsdWdpbklkID09PSB0aGlzLnBsdWdpbi5pZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZhbGxiYWNrcy5zZXRTZXR0aW5ncyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm94aWVkT24gPSBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgICAgIGdldDogKF90YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0Lm9uW3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uUXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBwcm9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcm94aWVkVGFyZ2V0ID0gbmV3IFByb3h5KHt9LCB7XG4gICAgICAgICAgICBnZXQ6IChfdGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRhcmdldFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcCA9PT0gJ29uJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm94aWVkT247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKE9iamVjdC5rZXlzKHRoaXMuZmFsbGJhY2tzKS5pbmNsdWRlcyhwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0UXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBwcm9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZTogKCkgPT4geyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mYWxsYmFja3NbcHJvcF0oLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldFF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgc2V0UmVhbFRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm9uUXVldWUpIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Lm9uW2l0ZW0ubWV0aG9kXSguLi5pdGVtLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnRhcmdldFF1ZXVlKSB7XG4gICAgICAgICAgICBpdGVtLnJlc29sdmUoYXdhaXQgdGhpcy50YXJnZXRbaXRlbS5tZXRob2RdKC4uLml0ZW0uYXJncykpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IHsgZ2V0VGFyZ2V0LCBnZXREZXZ0b29sc0dsb2JhbEhvb2ssIGlzUHJveHlBdmFpbGFibGUgfSBmcm9tICcuL2Vudic7XG5pbXBvcnQgeyBIT09LX1NFVFVQIH0gZnJvbSAnLi9jb25zdCc7XG5pbXBvcnQgeyBBcGlQcm94eSB9IGZyb20gJy4vcHJveHknO1xuZXhwb3J0ICogZnJvbSAnLi9hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW4nO1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwRGV2dG9vbHNQbHVnaW4ocGx1Z2luRGVzY3JpcHRvciwgc2V0dXBGbikge1xuICAgIGNvbnN0IHRhcmdldCA9IGdldFRhcmdldCgpO1xuICAgIGNvbnN0IGhvb2sgPSBnZXREZXZ0b29sc0dsb2JhbEhvb2soKTtcbiAgICBjb25zdCBlbmFibGVQcm94eSA9IGlzUHJveHlBdmFpbGFibGUgJiYgcGx1Z2luRGVzY3JpcHRvci5lbmFibGVFYXJseVByb3h5O1xuICAgIGlmIChob29rICYmICh0YXJnZXQuX19WVUVfREVWVE9PTFNfUExVR0lOX0FQSV9BVkFJTEFCTEVfXyB8fCAhZW5hYmxlUHJveHkpKSB7XG4gICAgICAgIGhvb2suZW1pdChIT09LX1NFVFVQLCBwbHVnaW5EZXNjcmlwdG9yLCBzZXR1cEZuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IHByb3h5ID0gZW5hYmxlUHJveHkgPyBuZXcgQXBpUHJveHkocGx1Z2luRGVzY3JpcHRvciwgaG9vaykgOiBudWxsO1xuICAgICAgICBjb25zdCBsaXN0ID0gdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX1BMVUdJTlNfXyA9IHRhcmdldC5fX1ZVRV9ERVZUT09MU19QTFVHSU5TX18gfHwgW107XG4gICAgICAgIGxpc3QucHVzaCh7XG4gICAgICAgICAgICBwbHVnaW5EZXNjcmlwdG9yLFxuICAgICAgICAgICAgc2V0dXBGbixcbiAgICAgICAgICAgIHByb3h5LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByb3h5KVxuICAgICAgICAgICAgc2V0dXBGbihwcm94eS5wcm94aWVkVGFyZ2V0KTtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsiZ2V0RGV2dG9vbHNHbG9iYWxIb29rIiwiZ2V0VGFyZ2V0IiwiX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyIsIm5hdmlnYXRvciIsIndpbmRvdyIsImdsb2JhbCIsImlzUHJveHlBdmFpbGFibGUiLCJQcm94eSIsIkhPT0tfU0VUVVAiLCJIT09LX1BMVUdJTl9TRVRUSU5HU19TRVQiLCJBcGlQcm94eSIsImNvbnN0cnVjdG9yIiwicGx1Z2luIiwiaG9vayIsInRhcmdldCIsInRhcmdldFF1ZXVlIiwib25RdWV1ZSIsImRlZmF1bHRTZXR0aW5ncyIsInNldHRpbmdzIiwiaWQiLCJpdGVtIiwiZGVmYXVsdFZhbHVlIiwibG9jYWxTZXR0aW5nc1NhdmVJZCIsImN1cnJlbnRTZXR0aW5ncyIsIk9iamVjdCIsImFzc2lnbiIsInJhdyIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwiZSIsImZhbGxiYWNrcyIsImdldFNldHRpbmdzIiwic2V0U2V0dGluZ3MiLCJ2YWx1ZSIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJvbiIsInBsdWdpbklkIiwicHJveGllZE9uIiwiZ2V0IiwiX3RhcmdldCIsInByb3AiLCJhcmdzIiwicHVzaCIsIm1ldGhvZCIsInByb3hpZWRUYXJnZXQiLCJrZXlzIiwiaW5jbHVkZXMiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInNldFJlYWxUYXJnZXQiLCJzZXR1cERldnRvb2xzUGx1Z2luIiwicGx1Z2luRGVzY3JpcHRvciIsInNldHVwRm4iLCJlbmFibGVQcm94eSIsImVuYWJsZUVhcmx5UHJveHkiLCJfX1ZVRV9ERVZUT09MU19QTFVHSU5fQVBJX0FWQUlMQUJMRV9fIiwiZW1pdCIsInByb3h5IiwibGlzdCIsIl9fVlVFX0RFVlRPT0xTX1BMVUdJTlNfXyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///72039\n");
|
|
30
|
+
eval("// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"setupDevtoolsPlugin\": () => (/* binding */ setupDevtoolsPlugin)\n});\n\n;// CONCATENATED MODULE: ../api/lib/esm/env.js\nfunction getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nfunction getTarget() {\n // @ts-ignore\n return typeof navigator !== 'undefined' && typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : {};\n}\nconst isProxyAvailable = typeof Proxy === 'function';\n;// CONCATENATED MODULE: ../api/lib/esm/const.js\nconst HOOK_SETUP = 'devtools-plugin:setup';\nconst HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n;// CONCATENATED MODULE: ../api/lib/esm/proxy.js\n\nclass ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n } catch (e) {// noop\n }\n\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n } catch (e) {// noop\n }\n\n currentSettings = value;\n }\n\n };\n\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n } else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args\n });\n };\n }\n }\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n } else if (prop === 'on') {\n return this.proxiedOn;\n } else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => {}\n });\n return this.fallbacks[prop](...args);\n };\n } else {\n return (...args) => {\n return new Promise(resolve => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve\n });\n });\n };\n }\n }\n });\n }\n\n async setRealTarget(target) {\n this.target = target;\n\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n\n}\n;// CONCATENATED MODULE: ../api/lib/esm/index.js\n\n\n\n\n\nfunction setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n } else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy\n });\n if (proxy) setupFn(proxy.proxiedTarget);\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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VUFBTU0sS0FBSyxHQUFHSixXQUFXLEdBQUcsSUFBSWhELFFBQUosQ0FBYStDLFVBQWIsRUFBeUI1QyxJQUF6QixDQUFILEdBQW9DLElBQTdEO0FBQ0EsVUFBTWtELElBQUksR0FBR2pELE1BQU0sQ0FBQ2tELHdCQUFQLEdBQWtDbEQsTUFBTSxDQUFDa0Qsd0JBQVAsSUFBbUMsRUFBbEY7QUFDQUQsSUFBQUEsSUFBSSxDQUFDakIsSUFBTCxDQUFVO0FBQ05TLE1BQUFBLGdCQUFnQixFQUFFRSxVQURaO0FBRU5ELE1BQUFBLE9BRk07QUFHTk0sTUFBQUE7QUFITSxLQUFWO0FBS0EsUUFBSUEsS0FBSixFQUNJTixPQUFPLENBQUNNLEtBQUssQ0FBQ2QsYUFBUCxDQUFQO0FBQ1A7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vYXBpL2xpYi9lc20vZW52LmpzP2NkZjMiLCJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9hcGkvbGliL2VzbS9jb25zdC5qcz8xODA1Iiwid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vYXBpL2xpYi9lc20vcHJveHkuanM/NzUyMCIsIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL2FwaS9saWIvZXNtL2luZGV4LmpzPzcyMDUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldERldnRvb2xzR2xvYmFsSG9vaygpIHtcbiAgICByZXR1cm4gZ2V0VGFyZ2V0KCkuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYXJnZXQoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgID8gd2luZG93XG4gICAgICAgIDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gZ2xvYmFsXG4gICAgICAgICAgICA6IHt9O1xufVxuZXhwb3J0IGNvbnN0IGlzUHJveHlBdmFpbGFibGUgPSB0eXBlb2YgUHJveHkgPT09ICdmdW5jdGlvbic7XG4iLCJleHBvcnQgY29uc3QgSE9PS19TRVRVUCA9ICdkZXZ0b29scy1wbHVnaW46c2V0dXAnO1xuZXhwb3J0IGNvbnN0IEhPT0tfUExVR0lOX1NFVFRJTkdTX1NFVCA9ICdwbHVnaW46c2V0dGluZ3M6c2V0JztcbiIsImltcG9ydCB7IEhPT0tfUExVR0lOX1NFVFRJTkdTX1NFVCB9IGZyb20gJy4vY29uc3QnO1xuZXhwb3J0IGNsYXNzIEFwaVByb3h5IHtcbiAgICBjb25zdHJ1Y3RvcihwbHVnaW4sIGhvb2spIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLnRhcmdldFF1ZXVlID0gW107XG4gICAgICAgIHRoaXMub25RdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgICAgICAgdGhpcy5ob29rID0gaG9vaztcbiAgICAgICAgY29uc3QgZGVmYXVsdFNldHRpbmdzID0ge307XG4gICAgICAgIGlmIChwbHVnaW4uc2V0dGluZ3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaWQgaW4gcGx1Z2luLnNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHBsdWdpbi5zZXR0aW5nc1tpZF07XG4gICAgICAgICAgICAgICAgZGVmYXVsdFNldHRpbmdzW2lkXSA9IGl0ZW0uZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxvY2FsU2V0dGluZ3NTYXZlSWQgPSBgX192dWUtZGV2dG9vbHMtcGx1Z2luLXNldHRpbmdzX18ke3BsdWdpbi5pZH1gO1xuICAgICAgICBsZXQgY3VycmVudFNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdFNldHRpbmdzKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU2V0dGluZ3NTYXZlSWQpO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmF3KTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY3VycmVudFNldHRpbmdzLCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gbm9vcFxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmFsbGJhY2tzID0ge1xuICAgICAgICAgICAgZ2V0U2V0dGluZ3MoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTZXR0aW5ncztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRTZXR0aW5ncyh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU2V0dGluZ3NTYXZlSWQsIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG5vb3BcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudFNldHRpbmdzID0gdmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBpZiAoaG9vaykge1xuICAgICAgICAgICAgaG9vay5vbihIT09LX1BMVUdJTl9TRVRUSU5HU19TRVQsIChwbHVnaW5JZCwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGx1Z2luSWQgPT09IHRoaXMucGx1Z2luLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmFsbGJhY2tzLnNldFNldHRpbmdzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb3hpZWRPbiA9IG5ldyBQcm94eSh7fSwge1xuICAgICAgICAgICAgZ2V0OiAoX3RhcmdldCwgcHJvcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50YXJnZXQub25bcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25RdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnByb3hpZWRUYXJnZXQgPSBuZXcgUHJveHkoe30sIHtcbiAgICAgICAgICAgIGdldDogKF90YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0W3Byb3BdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wID09PSAnb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3hpZWRPbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoT2JqZWN0LmtleXModGhpcy5mYWxsYmFja3MpLmluY2x1ZGVzKHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRRdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IHByb3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlOiAoKSA9PiB7IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZhbGxiYWNrc1twcm9wXSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0UXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogcHJvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzZXRSZWFsVGFyZ2V0KHRhcmdldCkge1xuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMub25RdWV1ZSkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQub25baXRlbS5tZXRob2RdKC4uLml0ZW0uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMudGFyZ2V0UXVldWUpIHtcbiAgICAgICAgICAgIGl0ZW0ucmVzb2x2ZShhd2FpdCB0aGlzLnRhcmdldFtpdGVtLm1ldGhvZF0oLi4uaXRlbS5hcmdzKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJpbXBvcnQgeyBnZXRUYXJnZXQsIGdldERldnRvb2xzR2xvYmFsSG9vaywgaXNQcm94eUF2YWlsYWJsZSB9IGZyb20gJy4vZW52JztcbmltcG9ydCB7IEhPT0tfU0VUVVAgfSBmcm9tICcuL2NvbnN0JztcbmltcG9ydCB7IEFwaVByb3h5IH0gZnJvbSAnLi9wcm94eSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbic7XG5leHBvcnQgZnVuY3Rpb24gc2V0dXBEZXZ0b29sc1BsdWdpbihwbHVnaW5EZXNjcmlwdG9yLCBzZXR1cEZuKSB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IHBsdWdpbkRlc2NyaXB0b3I7XG4gICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KCk7XG4gICAgY29uc3QgaG9vayA9IGdldERldnRvb2xzR2xvYmFsSG9vaygpO1xuICAgIGNvbnN0IGVuYWJsZVByb3h5ID0gaXNQcm94eUF2YWlsYWJsZSAmJiBkZXNjcmlwdG9yLmVuYWJsZUVhcmx5UHJveHk7XG4gICAgaWYgKGhvb2sgJiYgKHRhcmdldC5fX1ZVRV9ERVZUT09MU19QTFVHSU5fQVBJX0FWQUlMQUJMRV9fIHx8ICFlbmFibGVQcm94eSkpIHtcbiAgICAgICAgaG9vay5lbWl0KEhPT0tfU0VUVVAsIHBsdWdpbkRlc2NyaXB0b3IsIHNldHVwRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJveHkgPSBlbmFibGVQcm94eSA/IG5ldyBBcGlQcm94eShkZXNjcmlwdG9yLCBob29rKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0YXJnZXQuX19WVUVfREVWVE9PTFNfUExVR0lOU19fID0gdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX1BMVUdJTlNfXyB8fCBbXTtcbiAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICAgIHBsdWdpbkRlc2NyaXB0b3I6IGRlc2NyaXB0b3IsXG4gICAgICAgICAgICBzZXR1cEZuLFxuICAgICAgICAgICAgcHJveHksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocHJveHkpXG4gICAgICAgICAgICBzZXR1cEZuKHByb3h5LnByb3hpZWRUYXJnZXQpO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJnZXREZXZ0b29sc0dsb2JhbEhvb2siLCJnZXRUYXJnZXQiLCJfX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwibmF2aWdhdG9yIiwid2luZG93IiwiZ2xvYmFsIiwiaXNQcm94eUF2YWlsYWJsZSIsIlByb3h5IiwiSE9PS19TRVRVUCIsIkhPT0tfUExVR0lOX1NFVFRJTkdTX1NFVCIsIkFwaVByb3h5IiwiY29uc3RydWN0b3IiLCJwbHVnaW4iLCJob29rIiwidGFyZ2V0IiwidGFyZ2V0UXVldWUiLCJvblF1ZXVlIiwiZGVmYXVsdFNldHRpbmdzIiwic2V0dGluZ3MiLCJpZCIsIml0ZW0iLCJkZWZhdWx0VmFsdWUiLCJsb2NhbFNldHRpbmdzU2F2ZUlkIiwiY3VycmVudFNldHRpbmdzIiwiT2JqZWN0IiwiYXNzaWduIiwicmF3IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJlIiwiZmFsbGJhY2tzIiwiZ2V0U2V0dGluZ3MiLCJzZXRTZXR0aW5ncyIsInZhbHVlIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsIm9uIiwicGx1Z2luSWQiLCJwcm94aWVkT24iLCJnZXQiLCJfdGFyZ2V0IiwicHJvcCIsImFyZ3MiLCJwdXNoIiwibWV0aG9kIiwicHJveGllZFRhcmdldCIsImtleXMiLCJpbmNsdWRlcyIsInJlc29sdmUiLCJQcm9taXNlIiwic2V0UmVhbFRhcmdldCIsInNldHVwRGV2dG9vbHNQbHVnaW4iLCJwbHVnaW5EZXNjcmlwdG9yIiwic2V0dXBGbiIsImRlc2NyaXB0b3IiLCJlbmFibGVQcm94eSIsImVuYWJsZUVhcmx5UHJveHkiLCJfX1ZVRV9ERVZUT09MU19QTFVHSU5fQVBJX0FWQUlMQUJMRV9fIiwiZW1pdCIsInByb3h5IiwibGlzdCIsIl9fVlVFX0RFVlRPT0xTX1BMVUdJTlNfXyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///72039\n");
|
|
31
31
|
|
|
32
32
|
/***/ }),
|
|
33
33
|
|
|
@@ -107,7 +107,7 @@ Object.defineProperty(exports, "__esModule", ({
|
|
|
107
107
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
108
108
|
|
|
109
109
|
"use strict";
|
|
110
|
-
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._legacy_getAndRegisterApps = exports.removeApp = exports.sendApps = exports.waitForAppsRegistration = exports.getAppRecord = exports.getAppRecordId = exports.mapAppRecord = exports.selectApp = exports.registerApp = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst speakingurl_1 = __importDefault(__webpack_require__(97500));\n\nconst queue_1 = __webpack_require__(49107);\n\nconst scan_1 = __webpack_require__(18426);\n\nconst timeline_1 = __webpack_require__(41515);\n\nconst backend_1 = __webpack_require__(36873);\n\nconst global_hook_js_1 = __webpack_require__(13179);\n\nconst jobs = new queue_1.JobQueue();\nlet recordId = 0;\nconst appRecordPromises = new Map();\n\nasync function registerApp(options, ctx) {\n return jobs.queue(() => registerAppJob(options, ctx));\n}\n\nexports.registerApp = registerApp;\n\nasync function registerAppJob(options, ctx) {\n // Dedupe\n if (ctx.appRecords.find(a => a.options.app === options.app)) {\n return;\n }\n\n if (!options.version) {\n throw new Error('[Vue Devtools] Vue version not found');\n } // Find correct backend\n\n\n const baseFrameworkVersion = parseInt(options.version.substring(0, options.version.indexOf('.')));\n\n for (let i = 0; i < backend_1.availableBackends.length; i++) {\n const backendOptions = backend_1.availableBackends[i];\n\n if (backendOptions.frameworkVersion === baseFrameworkVersion) {\n // Enable backend if it's not enabled\n const backend = (0, backend_1.getBackend)(backendOptions, ctx);\n await createAppRecord(options, backend, ctx);\n break;\n }\n }\n}\n\nasync function createAppRecord(options, backend, ctx) {\n var _a;\n\n const rootInstance = await backend.api.getAppRootInstance(options.app);\n\n if (rootInstance) {\n if ((await backend.api.getComponentDevtoolsOptions(rootInstance)).hide) {\n return;\n }\n\n recordId++;\n const name = await backend.api.getAppRecordName(options.app, recordId.toString());\n const id = getAppRecordId(options.app, (0, speakingurl_1.default)(name));\n const [el] = await backend.api.getComponentRootElements(rootInstance);\n const record = {\n id,\n name,\n options,\n backend,\n lastInspectedComponentId: null,\n instanceMap: new Map(),\n rootInstance,\n perfGroupIds: new Map(),\n iframe: document !== el.ownerDocument ? el.ownerDocument.location.pathname : null,\n meta: (_a = options.meta) !== null && _a !== void 0 ? _a : {}\n };\n options.app.__VUE_DEVTOOLS_APP_RECORD__ = record;\n const rootId = `${record.id}:root`;\n record.instanceMap.set(rootId, record.rootInstance);\n record.rootInstance.__VUE_DEVTOOLS_UID__ = rootId; // Timeline\n\n (0, timeline_1.addBuiltinLayers)(record, ctx);\n ctx.appRecords.push(record);\n\n if (backend.options.setupApp) {\n backend.options.setupApp(backend.api, record);\n }\n\n await backend.api.registerApplication(options.app);\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_APP_ADD, {\n appRecord: mapAppRecord(record)\n });\n\n if (appRecordPromises.has(options.app)) {\n for (const r of appRecordPromises.get(options.app)) {\n await r(record);\n }\n } // Auto select first app\n\n\n if (ctx.currentAppRecord == null) {\n await selectApp(record, ctx);\n }\n } else {\n console.warn('[Vue devtools] No root instance found for app, it might have been unmounted', options.app);\n }\n}\n\nasync function selectApp(record, ctx) {\n ctx.currentAppRecord = record;\n ctx.currentInspectedComponentId = record.lastInspectedComponentId;\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_APP_SELECTED, {\n id: record.id,\n lastInspectedComponentId: record.lastInspectedComponentId\n });\n}\n\nexports.selectApp = selectApp;\n\nfunction mapAppRecord(record) {\n return {\n id: record.id,\n name: record.name,\n version: record.options.version,\n iframe: record.iframe\n };\n}\n\nexports.mapAppRecord = mapAppRecord;\nconst appIds = new Set();\n\nfunction getAppRecordId(app, defaultId) {\n if (app.__VUE_DEVTOOLS_APP_RECORD_ID__ != null) {\n return app.__VUE_DEVTOOLS_APP_RECORD_ID__;\n }\n\n let id = defaultId !== null && defaultId !== void 0 ? defaultId : (recordId++).toString();\n\n if (defaultId && appIds.has(id)) {\n let count = 1;\n\n while (appIds.has(`${defaultId}:${count}`)) {\n count++;\n }\n\n id = `${defaultId}_${count}`;\n }\n\n appIds.add(id);\n app.__VUE_DEVTOOLS_APP_RECORD_ID__ = id;\n return id;\n}\n\nexports.getAppRecordId = getAppRecordId;\n\nasync function getAppRecord(app, ctx) {\n const record = ctx.appRecords.find(ar => ar.options.app === app);\n\n if (record) {\n return record;\n }\n\n return new Promise((resolve, reject) => {\n let resolvers = appRecordPromises.get(app);\n let timedOut = false;\n\n if (!resolvers) {\n resolvers = [];\n appRecordPromises.set(app, resolvers);\n }\n\n const fn = record => {\n if (!timedOut) {\n clearTimeout(timer);\n resolve(record);\n }\n };\n\n resolvers.push(fn);\n const timer = setTimeout(() => {\n timedOut = true;\n const index = resolvers.indexOf(fn);\n if (index !== -1) resolvers.splice(index, 1);\n\n if (shared_utils_1.SharedData.debugInfo) {\n // eslint-disable-next-line no-console\n console.log('Timed out waiting for app record', app);\n }\n\n reject(new Error(`Timed out getting app record for app`));\n }, 60000);\n });\n}\n\nexports.getAppRecord = getAppRecord;\n\nfunction waitForAppsRegistration() {\n return jobs.queue(async () => {});\n}\n\nexports.waitForAppsRegistration = waitForAppsRegistration;\n\nasync function sendApps(ctx) {\n const appRecords = [];\n\n for (const appRecord of ctx.appRecords) {\n appRecords.push(appRecord);\n }\n\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_APP_LIST, {\n apps: appRecords.map(mapAppRecord)\n });\n}\n\nexports.sendApps = sendApps;\n\nfunction removeAppRecord(appRecord, ctx) {\n try {\n appIds.delete(appRecord.id);\n const index = ctx.appRecords.indexOf(appRecord);\n if (index !== -1) ctx.appRecords.splice(index, 1);\n (0, timeline_1.removeLayersForApp)(appRecord.options.app, ctx);\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_APP_REMOVE, {\n id: appRecord.id\n });\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n}\n\nasync function removeApp(app, ctx) {\n try {\n const appRecord = await getAppRecord(app, ctx);\n\n if (appRecord) {\n removeAppRecord(appRecord, ctx);\n }\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n}\n\nexports.removeApp = removeApp; // eslint-disable-next-line camelcase\n\nasync function _legacy_getAndRegisterApps(ctx) {\n // Remove apps that are legacy\n ctx.appRecords.forEach(appRecord => {\n if (appRecord.meta.Vue) {\n removeAppRecord(appRecord, ctx);\n }\n });\n const apps = (0, scan_1.scan)();\n apps.forEach(app => {\n const Vue = global_hook_js_1.hook.Vue;\n registerApp({\n app,\n types: {},\n version: Vue === null || Vue === void 0 ? void 0 : Vue.version,\n meta: {\n Vue\n }\n }, ctx);\n });\n}\n\nexports._legacy_getAndRegisterApps = _legacy_getAndRegisterApps;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUU7QUFDSjtBQURJO0FBSkksS0FBRCxFQU9SLEdBUFEsQ0FBWDtBQVFELEdBVkQ7QUFXRDs7QUFwQkQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy9hcHAudHM/ZjcxNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuX2xlZ2FjeV9nZXRBbmRSZWdpc3RlckFwcHMgPSBleHBvcnRzLnJlbW92ZUFwcCA9IGV4cG9ydHMuc2VuZEFwcHMgPSBleHBvcnRzLndhaXRGb3JBcHBzUmVnaXN0cmF0aW9uID0gZXhwb3J0cy5nZXRBcHBSZWNvcmQgPSBleHBvcnRzLmdldEFwcFJlY29yZElkID0gZXhwb3J0cy5tYXBBcHBSZWNvcmQgPSBleHBvcnRzLnNlbGVjdEFwcCA9IGV4cG9ydHMucmVnaXN0ZXJBcHAgPSB2b2lkIDA7XG5jb25zdCBzaGFyZWRfdXRpbHNfMSA9IHJlcXVpcmUoXCJAdnVlLWRldnRvb2xzL3NoYXJlZC11dGlsc1wiKTtcbmNvbnN0IHNwZWFraW5ndXJsXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcInNwZWFraW5ndXJsXCIpKTtcbmNvbnN0IHF1ZXVlXzEgPSByZXF1aXJlKFwiLi91dGlsL3F1ZXVlXCIpO1xuY29uc3Qgc2Nhbl8xID0gcmVxdWlyZShcIi4vbGVnYWN5L3NjYW5cIik7XG5jb25zdCB0aW1lbGluZV8xID0gcmVxdWlyZShcIi4vdGltZWxpbmVcIik7XG5jb25zdCBiYWNrZW5kXzEgPSByZXF1aXJlKFwiLi9iYWNrZW5kXCIpO1xuY29uc3QgZ2xvYmFsX2hvb2tfanNfMSA9IHJlcXVpcmUoXCIuL2dsb2JhbC1ob29rLmpzXCIpO1xuY29uc3Qgam9icyA9IG5ldyBxdWV1ZV8xLkpvYlF1ZXVlKCk7XG5sZXQgcmVjb3JkSWQgPSAwO1xuY29uc3QgYXBwUmVjb3JkUHJvbWlzZXMgPSBuZXcgTWFwKCk7XG5hc3luYyBmdW5jdGlvbiByZWdpc3RlckFwcChvcHRpb25zLCBjdHgpIHtcbiAgICByZXR1cm4gam9icy5xdWV1ZSgoKSA9PiByZWdpc3RlckFwcEpvYihvcHRpb25zLCBjdHgpKTtcbn1cbmV4cG9ydHMucmVnaXN0ZXJBcHAgPSByZWdpc3RlckFwcDtcbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyQXBwSm9iKG9wdGlvbnMsIGN0eCkge1xuICAgIC8vIERlZHVwZVxuICAgIGlmIChjdHguYXBwUmVjb3Jkcy5maW5kKGEgPT4gYS5vcHRpb25zLmFwcCA9PT0gb3B0aW9ucy5hcHApKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLnZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdbVnVlIERldnRvb2xzXSBWdWUgdmVyc2lvbiBub3QgZm91bmQnKTtcbiAgICB9XG4gICAgLy8gRmluZCBjb3JyZWN0IGJhY2tlbmRcbiAgICBjb25zdCBiYXNlRnJhbWV3b3JrVmVyc2lvbiA9IHBhcnNlSW50KG9wdGlvbnMudmVyc2lvbi5zdWJzdHJpbmcoMCwgb3B0aW9ucy52ZXJzaW9uLmluZGV4T2YoJy4nKSkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmFja2VuZF8xLmF2YWlsYWJsZUJhY2tlbmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGJhY2tlbmRPcHRpb25zID0gYmFja2VuZF8xLmF2YWlsYWJsZUJhY2tlbmRzW2ldO1xuICAgICAgICBpZiAoYmFja2VuZE9wdGlvbnMuZnJhbWV3b3JrVmVyc2lvbiA9PT0gYmFzZUZyYW1ld29ya1ZlcnNpb24pIHtcbiAgICAgICAgICAgIC8vIEVuYWJsZSBiYWNrZW5kIGlmIGl0J3Mgbm90IGVuYWJsZWRcbiAgICAgICAgICAgIGNvbnN0IGJhY2tlbmQgPSAoMCwgYmFja2VuZF8xLmdldEJhY2tlbmQpKGJhY2tlbmRPcHRpb25zLCBjdHgpO1xuICAgICAgICAgICAgYXdhaXQgY3JlYXRlQXBwUmVjb3JkKG9wdGlvbnMsIGJhY2tlbmQsIGN0eCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFwcFJlY29yZChvcHRpb25zLCBiYWNrZW5kLCBjdHgpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3Qgcm9vdEluc3RhbmNlID0gYXdhaXQgYmFja2VuZC5hcGkuZ2V0QXBwUm9vdEluc3RhbmNlKG9wdGlvbnMuYXBwKTtcbiAgICBpZiAocm9vdEluc3RhbmNlKSB7XG4gICAgICAgIGlmICgoYXdhaXQgYmFja2VuZC5hcGkuZ2V0Q29tcG9uZW50RGV2dG9vbHNPcHRpb25zKHJvb3RJbnN0YW5jZSkpLmhpZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZWNvcmRJZCsrO1xuICAgICAgICBjb25zdCBuYW1lID0gYXdhaXQgYmFja2VuZC5hcGkuZ2V0QXBwUmVjb3JkTmFtZShvcHRpb25zLmFwcCwgcmVjb3JkSWQudG9TdHJpbmcoKSk7XG4gICAgICAgIGNvbnN0IGlkID0gZ2V0QXBwUmVjb3JkSWQob3B0aW9ucy5hcHAsICgwLCBzcGVha2luZ3VybF8xLmRlZmF1bHQpKG5hbWUpKTtcbiAgICAgICAgY29uc3QgW2VsXSA9IGF3YWl0IGJhY2tlbmQuYXBpLmdldENvbXBvbmVudFJvb3RFbGVtZW50cyhyb290SW5zdGFuY2UpO1xuICAgICAgICBjb25zdCByZWNvcmQgPSB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgYmFja2VuZCxcbiAgICAgICAgICAgIGxhc3RJbnNwZWN0ZWRDb21wb25lbnRJZDogbnVsbCxcbiAgICAgICAgICAgIGluc3RhbmNlTWFwOiBuZXcgTWFwKCksXG4gICAgICAgICAgICByb290SW5zdGFuY2UsXG4gICAgICAgICAgICBwZXJmR3JvdXBJZHM6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgIGlmcmFtZTogZG9jdW1lbnQgIT09IGVsLm93bmVyRG9jdW1lbnQgPyBlbC5vd25lckRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lIDogbnVsbCxcbiAgICAgICAgICAgIG1ldGE6IChfYSA9IG9wdGlvbnMubWV0YSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge30sXG4gICAgICAgIH07XG4gICAgICAgIG9wdGlvbnMuYXBwLl9fVlVFX0RFVlRPT0xTX0FQUF9SRUNPUkRfXyA9IHJlY29yZDtcbiAgICAgICAgY29uc3Qgcm9vdElkID0gYCR7cmVjb3JkLmlkfTpyb290YDtcbiAgICAgICAgcmVjb3JkLmluc3RhbmNlTWFwLnNldChyb290SWQsIHJlY29yZC5yb290SW5zdGFuY2UpO1xuICAgICAgICByZWNvcmQucm9vdEluc3RhbmNlLl9fVlVFX0RFVlRPT0xTX1VJRF9fID0gcm9vdElkO1xuICAgICAgICAvLyBUaW1lbGluZVxuICAgICAgICAoMCwgdGltZWxpbmVfMS5hZGRCdWlsdGluTGF5ZXJzKShyZWNvcmQsIGN0eCk7XG4gICAgICAgIGN0eC5hcHBSZWNvcmRzLnB1c2gocmVjb3JkKTtcbiAgICAgICAgaWYgKGJhY2tlbmQub3B0aW9ucy5zZXR1cEFwcCkge1xuICAgICAgICAgICAgYmFja2VuZC5vcHRpb25zLnNldHVwQXBwKGJhY2tlbmQuYXBpLCByZWNvcmQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGJhY2tlbmQuYXBpLnJlZ2lzdGVyQXBwbGljYXRpb24ob3B0aW9ucy5hcHApO1xuICAgICAgICBjdHguYnJpZGdlLnNlbmQoc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0ZST05UX0FQUF9BREQsIHtcbiAgICAgICAgICAgIGFwcFJlY29yZDogbWFwQXBwUmVjb3JkKHJlY29yZCksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoYXBwUmVjb3JkUHJvbWlzZXMuaGFzKG9wdGlvbnMuYXBwKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCByIG9mIGFwcFJlY29yZFByb21pc2VzLmdldChvcHRpb25zLmFwcCkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCByKHJlY29yZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQXV0byBzZWxlY3QgZmlyc3QgYXBwXG4gICAgICAgIGlmIChjdHguY3VycmVudEFwcFJlY29yZCA9PSBudWxsKSB7XG4gICAgICAgICAgICBhd2FpdCBzZWxlY3RBcHAocmVjb3JkLCBjdHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tWdWUgZGV2dG9vbHNdIE5vIHJvb3QgaW5zdGFuY2UgZm91bmQgZm9yIGFwcCwgaXQgbWlnaHQgaGF2ZSBiZWVuIHVubW91bnRlZCcsIG9wdGlvbnMuYXBwKTtcbiAgICB9XG59XG5hc3luYyBmdW5jdGlvbiBzZWxlY3RBcHAocmVjb3JkLCBjdHgpIHtcbiAgICBjdHguY3VycmVudEFwcFJlY29yZCA9IHJlY29yZDtcbiAgICBjdHguY3VycmVudEluc3BlY3RlZENvbXBvbmVudElkID0gcmVjb3JkLmxhc3RJbnNwZWN0ZWRDb21wb25lbnRJZDtcbiAgICBjdHguYnJpZGdlLnNlbmQoc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0ZST05UX0FQUF9TRUxFQ1RFRCwge1xuICAgICAgICBpZDogcmVjb3JkLmlkLFxuICAgICAgICBsYXN0SW5zcGVjdGVkQ29tcG9uZW50SWQ6IHJlY29yZC5sYXN0SW5zcGVjdGVkQ29tcG9uZW50SWQsXG4gICAgfSk7XG59XG5leHBvcnRzLnNlbGVjdEFwcCA9IHNlbGVjdEFwcDtcbmZ1bmN0aW9uIG1hcEFwcFJlY29yZChyZWNvcmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogcmVjb3JkLmlkLFxuICAgICAgICBuYW1lOiByZWNvcmQubmFtZSxcbiAgICAgICAgdmVyc2lvbjogcmVjb3JkLm9wdGlvbnMudmVyc2lvbixcbiAgICAgICAgaWZyYW1lOiByZWNvcmQuaWZyYW1lLFxuICAgIH07XG59XG5leHBvcnRzLm1hcEFwcFJlY29yZCA9IG1hcEFwcFJlY29yZDtcbmNvbnN0IGFwcElkcyA9IG5ldyBTZXQoKTtcbmZ1bmN0aW9uIGdldEFwcFJlY29yZElkKGFwcCwgZGVmYXVsdElkKSB7XG4gICAgaWYgKGFwcC5fX1ZVRV9ERVZUT09MU19BUFBfUkVDT1JEX0lEX18gIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYXBwLl9fVlVFX0RFVlRPT0xTX0FQUF9SRUNPUkRfSURfXztcbiAgICB9XG4gICAgbGV0IGlkID0gZGVmYXVsdElkICE9PSBudWxsICYmIGRlZmF1bHRJZCAhPT0gdm9pZCAwID8gZGVmYXVsdElkIDogKHJlY29yZElkKyspLnRvU3RyaW5nKCk7XG4gICAgaWYgKGRlZmF1bHRJZCAmJiBhcHBJZHMuaGFzKGlkKSkge1xuICAgICAgICBsZXQgY291bnQgPSAxO1xuICAgICAgICB3aGlsZSAoYXBwSWRzLmhhcyhgJHtkZWZhdWx0SWR9OiR7Y291bnR9YCkpIHtcbiAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgICAgaWQgPSBgJHtkZWZhdWx0SWR9XyR7Y291bnR9YDtcbiAgICB9XG4gICAgYXBwSWRzLmFkZChpZCk7XG4gICAgYXBwLl9fVlVFX0RFVlRPT0xTX0FQUF9SRUNPUkRfSURfXyA9IGlkO1xuICAgIHJldHVybiBpZDtcbn1cbmV4cG9ydHMuZ2V0QXBwUmVjb3JkSWQgPSBnZXRBcHBSZWNvcmRJZDtcbmFzeW5jIGZ1bmN0aW9uIGdldEFwcFJlY29yZChhcHAsIGN0eCkge1xuICAgIGNvbnN0IHJlY29yZCA9IGN0eC5hcHBSZWNvcmRzLmZpbmQoYXIgPT4gYXIub3B0aW9ucy5hcHAgPT09IGFwcCk7XG4gICAgaWYgKHJlY29yZCkge1xuICAgICAgICByZXR1cm4gcmVjb3JkO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsZXQgcmVzb2x2ZXJzID0gYXBwUmVjb3JkUHJvbWlzZXMuZ2V0KGFwcCk7XG4gICAgICAgIGxldCB0aW1lZE91dCA9IGZhbHNlO1xuICAgICAgICBpZiAoIXJlc29sdmVycykge1xuICAgICAgICAgICAgcmVzb2x2ZXJzID0gW107XG4gICAgICAgICAgICBhcHBSZWNvcmRQcm9taXNlcy5zZXQoYXBwLCByZXNvbHZlcnMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZuID0gKHJlY29yZCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aW1lZE91dCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZWNvcmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXNvbHZlcnMucHVzaChmbik7XG4gICAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aW1lZE91dCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHJlc29sdmVycy5pbmRleE9mKGZuKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgICAgICAgICAgcmVzb2x2ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdUaW1lZCBvdXQgd2FpdGluZyBmb3IgYXBwIHJlY29yZCcsIGFwcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBUaW1lZCBvdXQgZ2V0dGluZyBhcHAgcmVjb3JkIGZvciBhcHBgKSk7XG4gICAgICAgIH0sIDYwMDAwKTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuZ2V0QXBwUmVjb3JkID0gZ2V0QXBwUmVjb3JkO1xuZnVuY3Rpb24gd2FpdEZvckFwcHNSZWdpc3RyYXRpb24oKSB7XG4gICAgcmV0dXJuIGpvYnMucXVldWUoYXN5bmMgKCkgPT4geyB9KTtcbn1cbmV4cG9ydHMud2FpdEZvckFwcHNSZWdpc3RyYXRpb24gPSB3YWl0Rm9yQXBwc1JlZ2lzdHJhdGlvbjtcbmFzeW5jIGZ1bmN0aW9uIHNlbmRBcHBzKGN0eCkge1xuICAgIGNvbnN0IGFwcFJlY29yZHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGFwcFJlY29yZCBvZiBjdHguYXBwUmVjb3Jkcykge1xuICAgICAgICBhcHBSZWNvcmRzLnB1c2goYXBwUmVjb3JkKTtcbiAgICB9XG4gICAgY3R4LmJyaWRnZS5zZW5kKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19GUk9OVF9BUFBfTElTVCwge1xuICAgICAgICBhcHBzOiBhcHBSZWNvcmRzLm1hcChtYXBBcHBSZWNvcmQpLFxuICAgIH0pO1xufVxuZXhwb3J0cy5zZW5kQXBwcyA9IHNlbmRBcHBzO1xuZnVuY3Rpb24gcmVtb3ZlQXBwUmVjb3JkKGFwcFJlY29yZCwgY3R4KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgYXBwSWRzLmRlbGV0ZShhcHBSZWNvcmQuaWQpO1xuICAgICAgICBjb25zdCBpbmRleCA9IGN0eC5hcHBSZWNvcmRzLmluZGV4T2YoYXBwUmVjb3JkKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSlcbiAgICAgICAgICAgIGN0eC5hcHBSZWNvcmRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICgwLCB0aW1lbGluZV8xLnJlbW92ZUxheWVyc0ZvckFwcCkoYXBwUmVjb3JkLm9wdGlvbnMuYXBwLCBjdHgpO1xuICAgICAgICBjdHguYnJpZGdlLnNlbmQoc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0ZST05UX0FQUF9SRU1PVkUsIHsgaWQ6IGFwcFJlY29yZC5pZCB9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHNoYXJlZF91dGlsc18xLlNoYXJlZERhdGEuZGVidWdJbmZvKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuYXN5bmMgZnVuY3Rpb24gcmVtb3ZlQXBwKGFwcCwgY3R4KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYXBwUmVjb3JkID0gYXdhaXQgZ2V0QXBwUmVjb3JkKGFwcCwgY3R4KTtcbiAgICAgICAgaWYgKGFwcFJlY29yZCkge1xuICAgICAgICAgICAgcmVtb3ZlQXBwUmVjb3JkKGFwcFJlY29yZCwgY3R4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLnJlbW92ZUFwcCA9IHJlbW92ZUFwcDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2VcbmFzeW5jIGZ1bmN0aW9uIF9sZWdhY3lfZ2V0QW5kUmVnaXN0ZXJBcHBzKGN0eCkge1xuICAgIC8vIFJlbW92ZSBhcHBzIHRoYXQgYXJlIGxlZ2FjeVxuICAgIGN0eC5hcHBSZWNvcmRzLmZvckVhY2goYXBwUmVjb3JkID0+IHtcbiAgICAgICAgaWYgKGFwcFJlY29yZC5tZXRhLlZ1ZSkge1xuICAgICAgICAgICAgcmVtb3ZlQXBwUmVjb3JkKGFwcFJlY29yZCwgY3R4KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGFwcHMgPSAoMCwgc2Nhbl8xLnNjYW4pKCk7XG4gICAgYXBwcy5mb3JFYWNoKGFwcCA9PiB7XG4gICAgICAgIGNvbnN0IFZ1ZSA9IGdsb2JhbF9ob29rX2pzXzEuaG9vay5WdWU7XG4gICAgICAgIHJlZ2lzdGVyQXBwKHtcbiAgICAgICAgICAgIGFwcCxcbiAgICAgICAgICAgIHR5cGVzOiB7fSxcbiAgICAgICAgICAgIHZlcnNpb246IFZ1ZSA9PT0gbnVsbCB8fCBWdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IFZ1ZS52ZXJzaW9uLFxuICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgIFZ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sIGN0eCk7XG4gICAgfSk7XG59XG5leHBvcnRzLl9sZWdhY3lfZ2V0QW5kUmVnaXN0ZXJBcHBzID0gX2xlZ2FjeV9nZXRBbmRSZWdpc3RlckFwcHM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///79132\n");
|
|
110
|
+
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._legacy_getAndRegisterApps = exports.removeApp = exports.sendApps = exports.waitForAppsRegistration = exports.getAppRecord = exports.getAppRecordId = exports.mapAppRecord = exports.selectApp = exports.registerApp = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst speakingurl_1 = __importDefault(__webpack_require__(97500));\n\nconst queue_1 = __webpack_require__(49107);\n\nconst scan_1 = __webpack_require__(18426);\n\nconst timeline_1 = __webpack_require__(41515);\n\nconst backend_1 = __webpack_require__(36873);\n\nconst global_hook_js_1 = __webpack_require__(13179);\n\nconst jobs = new queue_1.JobQueue();\nlet recordId = 0;\nconst appRecordPromises = new Map();\n\nasync function registerApp(options, ctx) {\n return jobs.queue('regiserApp', () => registerAppJob(options, ctx));\n}\n\nexports.registerApp = registerApp;\n\nasync function registerAppJob(options, ctx) {\n // Dedupe\n if (ctx.appRecords.find(a => a.options.app === options.app)) {\n return;\n }\n\n if (!options.version) {\n throw new Error('[Vue Devtools] Vue version not found');\n } // Find correct backend\n\n\n const baseFrameworkVersion = parseInt(options.version.substring(0, options.version.indexOf('.')));\n\n for (let i = 0; i < backend_1.availableBackends.length; i++) {\n const backendOptions = backend_1.availableBackends[i];\n\n if (backendOptions.frameworkVersion === baseFrameworkVersion) {\n // Enable backend if it's not enabled\n const backend = (0, backend_1.getBackend)(backendOptions, ctx);\n await createAppRecord(options, backend, ctx);\n break;\n }\n }\n}\n\nasync function createAppRecord(options, backend, ctx) {\n var _a;\n\n const rootInstance = await backend.api.getAppRootInstance(options.app);\n\n if (rootInstance) {\n if ((await backend.api.getComponentDevtoolsOptions(rootInstance)).hide) {\n return;\n }\n\n recordId++;\n const name = await backend.api.getAppRecordName(options.app, recordId.toString());\n const id = getAppRecordId(options.app, (0, speakingurl_1.default)(name));\n const [el] = await backend.api.getComponentRootElements(rootInstance);\n const record = {\n id,\n name,\n options,\n backend,\n lastInspectedComponentId: null,\n instanceMap: new Map(),\n rootInstance,\n perfGroupIds: new Map(),\n iframe: document !== el.ownerDocument ? el.ownerDocument.location.pathname : null,\n meta: (_a = options.meta) !== null && _a !== void 0 ? _a : {}\n };\n options.app.__VUE_DEVTOOLS_APP_RECORD__ = record;\n const rootId = `${record.id}:root`;\n record.instanceMap.set(rootId, record.rootInstance);\n record.rootInstance.__VUE_DEVTOOLS_UID__ = rootId; // Timeline\n\n (0, timeline_1.addBuiltinLayers)(record, ctx);\n ctx.appRecords.push(record);\n\n if (backend.options.setupApp) {\n backend.options.setupApp(backend.api, record);\n }\n\n await backend.api.registerApplication(options.app);\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_APP_ADD, {\n appRecord: mapAppRecord(record)\n });\n\n if (appRecordPromises.has(options.app)) {\n for (const r of appRecordPromises.get(options.app)) {\n await r(record);\n }\n } // Auto select first app\n\n\n if (ctx.currentAppRecord == null) {\n await selectApp(record, ctx);\n }\n } else {\n console.warn('[Vue devtools] No root instance found for app, it might have been unmounted', options.app);\n }\n}\n\nasync function selectApp(record, ctx) {\n ctx.currentAppRecord = record;\n ctx.currentInspectedComponentId = record.lastInspectedComponentId;\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_APP_SELECTED, {\n id: record.id,\n lastInspectedComponentId: record.lastInspectedComponentId\n });\n}\n\nexports.selectApp = selectApp;\n\nfunction mapAppRecord(record) {\n return {\n id: record.id,\n name: record.name,\n version: record.options.version,\n iframe: record.iframe\n };\n}\n\nexports.mapAppRecord = mapAppRecord;\nconst appIds = new Set();\n\nfunction getAppRecordId(app, defaultId) {\n if (app.__VUE_DEVTOOLS_APP_RECORD_ID__ != null) {\n return app.__VUE_DEVTOOLS_APP_RECORD_ID__;\n }\n\n let id = defaultId !== null && defaultId !== void 0 ? defaultId : (recordId++).toString();\n\n if (defaultId && appIds.has(id)) {\n let count = 1;\n\n while (appIds.has(`${defaultId}_${count}`)) {\n count++;\n }\n\n id = `${defaultId}_${count}`;\n }\n\n appIds.add(id);\n app.__VUE_DEVTOOLS_APP_RECORD_ID__ = id;\n return id;\n}\n\nexports.getAppRecordId = getAppRecordId;\n\nasync function getAppRecord(app, ctx) {\n const record = ctx.appRecords.find(ar => ar.options.app === app);\n\n if (record) {\n return record;\n }\n\n return new Promise((resolve, reject) => {\n let resolvers = appRecordPromises.get(app);\n let timedOut = false;\n\n if (!resolvers) {\n resolvers = [];\n appRecordPromises.set(app, resolvers);\n }\n\n const fn = record => {\n if (!timedOut) {\n clearTimeout(timer);\n resolve(record);\n }\n };\n\n resolvers.push(fn);\n const timer = setTimeout(() => {\n timedOut = true;\n const index = resolvers.indexOf(fn);\n if (index !== -1) resolvers.splice(index, 1);\n\n if (shared_utils_1.SharedData.debugInfo) {\n // eslint-disable-next-line no-console\n console.log('Timed out waiting for app record', app);\n }\n\n reject(new Error(`Timed out getting app record for app`));\n }, 60000);\n });\n}\n\nexports.getAppRecord = getAppRecord;\n\nfunction waitForAppsRegistration() {\n return jobs.queue('waitForAppsRegistrationNoop', async () => {});\n}\n\nexports.waitForAppsRegistration = waitForAppsRegistration;\n\nasync function sendApps(ctx) {\n const appRecords = [];\n\n for (const appRecord of ctx.appRecords) {\n appRecords.push(appRecord);\n }\n\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_APP_LIST, {\n apps: appRecords.map(mapAppRecord)\n });\n}\n\nexports.sendApps = sendApps;\n\nfunction removeAppRecord(appRecord, ctx) {\n try {\n appIds.delete(appRecord.id);\n const index = ctx.appRecords.indexOf(appRecord);\n if (index !== -1) ctx.appRecords.splice(index, 1);\n (0, timeline_1.removeLayersForApp)(appRecord.options.app, ctx);\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_APP_REMOVE, {\n id: appRecord.id\n });\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n}\n\nasync function removeApp(app, ctx) {\n try {\n const appRecord = await getAppRecord(app, ctx);\n\n if (appRecord) {\n removeAppRecord(appRecord, ctx);\n }\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n}\n\nexports.removeApp = removeApp;\nlet scanTimeout; // eslint-disable-next-line camelcase\n\nfunction _legacy_getAndRegisterApps(ctx, clear = false) {\n setTimeout(() => {\n try {\n if (clear) {\n // Remove apps that are legacy\n ctx.appRecords.forEach(appRecord => {\n if (appRecord.meta.Vue) {\n removeAppRecord(appRecord, ctx);\n }\n });\n }\n\n const apps = (0, scan_1.scan)();\n clearTimeout(scanTimeout);\n\n if (!apps.length) {\n scanTimeout = setTimeout(() => _legacy_getAndRegisterApps(ctx), 1000);\n }\n\n apps.forEach(app => {\n const Vue = global_hook_js_1.hook.Vue;\n registerApp({\n app,\n types: {},\n version: Vue === null || Vue === void 0 ? void 0 : Vue.version,\n meta: {\n Vue\n }\n }, ctx);\n });\n } catch (e) {\n console.error(`Error scanning for legacy apps:`);\n console.error(e);\n }\n }, 0);\n}\n\nexports._legacy_getAndRegisterApps = _legacy_getAndRegisterApps;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LG1CQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sMEJBQTBCLENBQUMsR0FBRCxDQUFqQyxFQUF3QyxJQUF4QyxDQUF4QjtBQUNEOztBQUVELFVBQUksQ0FBQyxPQUFMLENBQWEsR0FBRyxJQUFHO0FBQ2pCLGNBQU0sR0FBRyxHQUFHLHNCQUFLLEdBQWpCO0FBQ0EsbUJBQVcsQ0FBQztBQUNWLGFBRFU7QUFFVixlQUFLLEVBQUUsRUFGRztBQUdWLGlCQUFPLEVBQUUsR0FBRyxTQUFILE9BQUcsV0FBSCxHQUFHLE1BQUgsTUFBRyxDQUFFLE9BSEo7QUFJVixjQUFJLEVBQUU7QUFDSjtBQURJO0FBSkksU0FBRCxFQU9SLEdBUFEsQ0FBWDtBQVFELE9BVkQ7QUFXRCxLQTVCRCxDQTRCRSxPQUFPLENBQVAsRUFBVTtBQUNWLGFBQU8sQ0FBQyxLQUFSLENBQWMsaUNBQWQ7QUFDQSxhQUFPLENBQUMsS0FBUixDQUFjLENBQWQ7QUFDRDtBQUNGLEdBakNTLEVBaUNQLENBakNPLENBQVY7QUFrQ0Q7O0FBbkNEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvYXBwLnRzP2Y3MTUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLl9sZWdhY3lfZ2V0QW5kUmVnaXN0ZXJBcHBzID0gZXhwb3J0cy5yZW1vdmVBcHAgPSBleHBvcnRzLnNlbmRBcHBzID0gZXhwb3J0cy53YWl0Rm9yQXBwc1JlZ2lzdHJhdGlvbiA9IGV4cG9ydHMuZ2V0QXBwUmVjb3JkID0gZXhwb3J0cy5nZXRBcHBSZWNvcmRJZCA9IGV4cG9ydHMubWFwQXBwUmVjb3JkID0gZXhwb3J0cy5zZWxlY3RBcHAgPSBleHBvcnRzLnJlZ2lzdGVyQXBwID0gdm9pZCAwO1xuY29uc3Qgc2hhcmVkX3V0aWxzXzEgPSByZXF1aXJlKFwiQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHNcIik7XG5jb25zdCBzcGVha2luZ3VybF8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJzcGVha2luZ3VybFwiKSk7XG5jb25zdCBxdWV1ZV8xID0gcmVxdWlyZShcIi4vdXRpbC9xdWV1ZVwiKTtcbmNvbnN0IHNjYW5fMSA9IHJlcXVpcmUoXCIuL2xlZ2FjeS9zY2FuXCIpO1xuY29uc3QgdGltZWxpbmVfMSA9IHJlcXVpcmUoXCIuL3RpbWVsaW5lXCIpO1xuY29uc3QgYmFja2VuZF8xID0gcmVxdWlyZShcIi4vYmFja2VuZFwiKTtcbmNvbnN0IGdsb2JhbF9ob29rX2pzXzEgPSByZXF1aXJlKFwiLi9nbG9iYWwtaG9vay5qc1wiKTtcbmNvbnN0IGpvYnMgPSBuZXcgcXVldWVfMS5Kb2JRdWV1ZSgpO1xubGV0IHJlY29yZElkID0gMDtcbmNvbnN0IGFwcFJlY29yZFByb21pc2VzID0gbmV3IE1hcCgpO1xuYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJBcHAob3B0aW9ucywgY3R4KSB7XG4gICAgcmV0dXJuIGpvYnMucXVldWUoJ3JlZ2lzZXJBcHAnLCAoKSA9PiByZWdpc3RlckFwcEpvYihvcHRpb25zLCBjdHgpKTtcbn1cbmV4cG9ydHMucmVnaXN0ZXJBcHAgPSByZWdpc3RlckFwcDtcbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyQXBwSm9iKG9wdGlvbnMsIGN0eCkge1xuICAgIC8vIERlZHVwZVxuICAgIGlmIChjdHguYXBwUmVjb3Jkcy5maW5kKGEgPT4gYS5vcHRpb25zLmFwcCA9PT0gb3B0aW9ucy5hcHApKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLnZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdbVnVlIERldnRvb2xzXSBWdWUgdmVyc2lvbiBub3QgZm91bmQnKTtcbiAgICB9XG4gICAgLy8gRmluZCBjb3JyZWN0IGJhY2tlbmRcbiAgICBjb25zdCBiYXNlRnJhbWV3b3JrVmVyc2lvbiA9IHBhcnNlSW50KG9wdGlvbnMudmVyc2lvbi5zdWJzdHJpbmcoMCwgb3B0aW9ucy52ZXJzaW9uLmluZGV4T2YoJy4nKSkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmFja2VuZF8xLmF2YWlsYWJsZUJhY2tlbmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGJhY2tlbmRPcHRpb25zID0gYmFja2VuZF8xLmF2YWlsYWJsZUJhY2tlbmRzW2ldO1xuICAgICAgICBpZiAoYmFja2VuZE9wdGlvbnMuZnJhbWV3b3JrVmVyc2lvbiA9PT0gYmFzZUZyYW1ld29ya1ZlcnNpb24pIHtcbiAgICAgICAgICAgIC8vIEVuYWJsZSBiYWNrZW5kIGlmIGl0J3Mgbm90IGVuYWJsZWRcbiAgICAgICAgICAgIGNvbnN0IGJhY2tlbmQgPSAoMCwgYmFja2VuZF8xLmdldEJhY2tlbmQpKGJhY2tlbmRPcHRpb25zLCBjdHgpO1xuICAgICAgICAgICAgYXdhaXQgY3JlYXRlQXBwUmVjb3JkKG9wdGlvbnMsIGJhY2tlbmQsIGN0eCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFwcFJlY29yZChvcHRpb25zLCBiYWNrZW5kLCBjdHgpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3Qgcm9vdEluc3RhbmNlID0gYXdhaXQgYmFja2VuZC5hcGkuZ2V0QXBwUm9vdEluc3RhbmNlKG9wdGlvbnMuYXBwKTtcbiAgICBpZiAocm9vdEluc3RhbmNlKSB7XG4gICAgICAgIGlmICgoYXdhaXQgYmFja2VuZC5hcGkuZ2V0Q29tcG9uZW50RGV2dG9vbHNPcHRpb25zKHJvb3RJbnN0YW5jZSkpLmhpZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZWNvcmRJZCsrO1xuICAgICAgICBjb25zdCBuYW1lID0gYXdhaXQgYmFja2VuZC5hcGkuZ2V0QXBwUmVjb3JkTmFtZShvcHRpb25zLmFwcCwgcmVjb3JkSWQudG9TdHJpbmcoKSk7XG4gICAgICAgIGNvbnN0IGlkID0gZ2V0QXBwUmVjb3JkSWQob3B0aW9ucy5hcHAsICgwLCBzcGVha2luZ3VybF8xLmRlZmF1bHQpKG5hbWUpKTtcbiAgICAgICAgY29uc3QgW2VsXSA9IGF3YWl0IGJhY2tlbmQuYXBpLmdldENvbXBvbmVudFJvb3RFbGVtZW50cyhyb290SW5zdGFuY2UpO1xuICAgICAgICBjb25zdCByZWNvcmQgPSB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgYmFja2VuZCxcbiAgICAgICAgICAgIGxhc3RJbnNwZWN0ZWRDb21wb25lbnRJZDogbnVsbCxcbiAgICAgICAgICAgIGluc3RhbmNlTWFwOiBuZXcgTWFwKCksXG4gICAgICAgICAgICByb290SW5zdGFuY2UsXG4gICAgICAgICAgICBwZXJmR3JvdXBJZHM6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgIGlmcmFtZTogZG9jdW1lbnQgIT09IGVsLm93bmVyRG9jdW1lbnQgPyBlbC5vd25lckRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lIDogbnVsbCxcbiAgICAgICAgICAgIG1ldGE6IChfYSA9IG9wdGlvbnMubWV0YSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge30sXG4gICAgICAgIH07XG4gICAgICAgIG9wdGlvbnMuYXBwLl9fVlVFX0RFVlRPT0xTX0FQUF9SRUNPUkRfXyA9IHJlY29yZDtcbiAgICAgICAgY29uc3Qgcm9vdElkID0gYCR7cmVjb3JkLmlkfTpyb290YDtcbiAgICAgICAgcmVjb3JkLmluc3RhbmNlTWFwLnNldChyb290SWQsIHJlY29yZC5yb290SW5zdGFuY2UpO1xuICAgICAgICByZWNvcmQucm9vdEluc3RhbmNlLl9fVlVFX0RFVlRPT0xTX1VJRF9fID0gcm9vdElkO1xuICAgICAgICAvLyBUaW1lbGluZVxuICAgICAgICAoMCwgdGltZWxpbmVfMS5hZGRCdWlsdGluTGF5ZXJzKShyZWNvcmQsIGN0eCk7XG4gICAgICAgIGN0eC5hcHBSZWNvcmRzLnB1c2gocmVjb3JkKTtcbiAgICAgICAgaWYgKGJhY2tlbmQub3B0aW9ucy5zZXR1cEFwcCkge1xuICAgICAgICAgICAgYmFja2VuZC5vcHRpb25zLnNldHVwQXBwKGJhY2tlbmQuYXBpLCByZWNvcmQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGJhY2tlbmQuYXBpLnJlZ2lzdGVyQXBwbGljYXRpb24ob3B0aW9ucy5hcHApO1xuICAgICAgICBjdHguYnJpZGdlLnNlbmQoc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0ZST05UX0FQUF9BREQsIHtcbiAgICAgICAgICAgIGFwcFJlY29yZDogbWFwQXBwUmVjb3JkKHJlY29yZCksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoYXBwUmVjb3JkUHJvbWlzZXMuaGFzKG9wdGlvbnMuYXBwKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCByIG9mIGFwcFJlY29yZFByb21pc2VzLmdldChvcHRpb25zLmFwcCkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCByKHJlY29yZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQXV0byBzZWxlY3QgZmlyc3QgYXBwXG4gICAgICAgIGlmIChjdHguY3VycmVudEFwcFJlY29yZCA9PSBudWxsKSB7XG4gICAgICAgICAgICBhd2FpdCBzZWxlY3RBcHAocmVjb3JkLCBjdHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tWdWUgZGV2dG9vbHNdIE5vIHJvb3QgaW5zdGFuY2UgZm91bmQgZm9yIGFwcCwgaXQgbWlnaHQgaGF2ZSBiZWVuIHVubW91bnRlZCcsIG9wdGlvbnMuYXBwKTtcbiAgICB9XG59XG5hc3luYyBmdW5jdGlvbiBzZWxlY3RBcHAocmVjb3JkLCBjdHgpIHtcbiAgICBjdHguY3VycmVudEFwcFJlY29yZCA9IHJlY29yZDtcbiAgICBjdHguY3VycmVudEluc3BlY3RlZENvbXBvbmVudElkID0gcmVjb3JkLmxhc3RJbnNwZWN0ZWRDb21wb25lbnRJZDtcbiAgICBjdHguYnJpZGdlLnNlbmQoc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0ZST05UX0FQUF9TRUxFQ1RFRCwge1xuICAgICAgICBpZDogcmVjb3JkLmlkLFxuICAgICAgICBsYXN0SW5zcGVjdGVkQ29tcG9uZW50SWQ6IHJlY29yZC5sYXN0SW5zcGVjdGVkQ29tcG9uZW50SWQsXG4gICAgfSk7XG59XG5leHBvcnRzLnNlbGVjdEFwcCA9IHNlbGVjdEFwcDtcbmZ1bmN0aW9uIG1hcEFwcFJlY29yZChyZWNvcmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogcmVjb3JkLmlkLFxuICAgICAgICBuYW1lOiByZWNvcmQubmFtZSxcbiAgICAgICAgdmVyc2lvbjogcmVjb3JkLm9wdGlvbnMudmVyc2lvbixcbiAgICAgICAgaWZyYW1lOiByZWNvcmQuaWZyYW1lLFxuICAgIH07XG59XG5leHBvcnRzLm1hcEFwcFJlY29yZCA9IG1hcEFwcFJlY29yZDtcbmNvbnN0IGFwcElkcyA9IG5ldyBTZXQoKTtcbmZ1bmN0aW9uIGdldEFwcFJlY29yZElkKGFwcCwgZGVmYXVsdElkKSB7XG4gICAgaWYgKGFwcC5fX1ZVRV9ERVZUT09MU19BUFBfUkVDT1JEX0lEX18gIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYXBwLl9fVlVFX0RFVlRPT0xTX0FQUF9SRUNPUkRfSURfXztcbiAgICB9XG4gICAgbGV0IGlkID0gZGVmYXVsdElkICE9PSBudWxsICYmIGRlZmF1bHRJZCAhPT0gdm9pZCAwID8gZGVmYXVsdElkIDogKHJlY29yZElkKyspLnRvU3RyaW5nKCk7XG4gICAgaWYgKGRlZmF1bHRJZCAmJiBhcHBJZHMuaGFzKGlkKSkge1xuICAgICAgICBsZXQgY291bnQgPSAxO1xuICAgICAgICB3aGlsZSAoYXBwSWRzLmhhcyhgJHtkZWZhdWx0SWR9XyR7Y291bnR9YCkpIHtcbiAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgICAgaWQgPSBgJHtkZWZhdWx0SWR9XyR7Y291bnR9YDtcbiAgICB9XG4gICAgYXBwSWRzLmFkZChpZCk7XG4gICAgYXBwLl9fVlVFX0RFVlRPT0xTX0FQUF9SRUNPUkRfSURfXyA9IGlkO1xuICAgIHJldHVybiBpZDtcbn1cbmV4cG9ydHMuZ2V0QXBwUmVjb3JkSWQgPSBnZXRBcHBSZWNvcmRJZDtcbmFzeW5jIGZ1bmN0aW9uIGdldEFwcFJlY29yZChhcHAsIGN0eCkge1xuICAgIGNvbnN0IHJlY29yZCA9IGN0eC5hcHBSZWNvcmRzLmZpbmQoYXIgPT4gYXIub3B0aW9ucy5hcHAgPT09IGFwcCk7XG4gICAgaWYgKHJlY29yZCkge1xuICAgICAgICByZXR1cm4gcmVjb3JkO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBsZXQgcmVzb2x2ZXJzID0gYXBwUmVjb3JkUHJvbWlzZXMuZ2V0KGFwcCk7XG4gICAgICAgIGxldCB0aW1lZE91dCA9IGZhbHNlO1xuICAgICAgICBpZiAoIXJlc29sdmVycykge1xuICAgICAgICAgICAgcmVzb2x2ZXJzID0gW107XG4gICAgICAgICAgICBhcHBSZWNvcmRQcm9taXNlcy5zZXQoYXBwLCByZXNvbHZlcnMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZuID0gKHJlY29yZCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aW1lZE91dCkge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZWNvcmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXNvbHZlcnMucHVzaChmbik7XG4gICAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aW1lZE91dCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHJlc29sdmVycy5pbmRleE9mKGZuKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgICAgICAgICAgcmVzb2x2ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdUaW1lZCBvdXQgd2FpdGluZyBmb3IgYXBwIHJlY29yZCcsIGFwcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBUaW1lZCBvdXQgZ2V0dGluZyBhcHAgcmVjb3JkIGZvciBhcHBgKSk7XG4gICAgICAgIH0sIDYwMDAwKTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuZ2V0QXBwUmVjb3JkID0gZ2V0QXBwUmVjb3JkO1xuZnVuY3Rpb24gd2FpdEZvckFwcHNSZWdpc3RyYXRpb24oKSB7XG4gICAgcmV0dXJuIGpvYnMucXVldWUoJ3dhaXRGb3JBcHBzUmVnaXN0cmF0aW9uTm9vcCcsIGFzeW5jICgpID0+IHsgfSk7XG59XG5leHBvcnRzLndhaXRGb3JBcHBzUmVnaXN0cmF0aW9uID0gd2FpdEZvckFwcHNSZWdpc3RyYXRpb247XG5hc3luYyBmdW5jdGlvbiBzZW5kQXBwcyhjdHgpIHtcbiAgICBjb25zdCBhcHBSZWNvcmRzID0gW107XG4gICAgZm9yIChjb25zdCBhcHBSZWNvcmQgb2YgY3R4LmFwcFJlY29yZHMpIHtcbiAgICAgICAgYXBwUmVjb3Jkcy5wdXNoKGFwcFJlY29yZCk7XG4gICAgfVxuICAgIGN0eC5icmlkZ2Uuc2VuZChzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fRlJPTlRfQVBQX0xJU1QsIHtcbiAgICAgICAgYXBwczogYXBwUmVjb3Jkcy5tYXAobWFwQXBwUmVjb3JkKSxcbiAgICB9KTtcbn1cbmV4cG9ydHMuc2VuZEFwcHMgPSBzZW5kQXBwcztcbmZ1bmN0aW9uIHJlbW92ZUFwcFJlY29yZChhcHBSZWNvcmQsIGN0eCkge1xuICAgIHRyeSB7XG4gICAgICAgIGFwcElkcy5kZWxldGUoYXBwUmVjb3JkLmlkKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBjdHguYXBwUmVjb3Jkcy5pbmRleE9mKGFwcFJlY29yZCk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgICAgICBjdHguYXBwUmVjb3Jkcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAoMCwgdGltZWxpbmVfMS5yZW1vdmVMYXllcnNGb3JBcHApKGFwcFJlY29yZC5vcHRpb25zLmFwcCwgY3R4KTtcbiAgICAgICAgY3R4LmJyaWRnZS5zZW5kKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19GUk9OVF9BUFBfUkVNT1ZFLCB7IGlkOiBhcHBSZWNvcmQuaWQgfSk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChzaGFyZWRfdXRpbHNfMS5TaGFyZWREYXRhLmRlYnVnSW5mbykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIHJlbW92ZUFwcChhcHAsIGN0eCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGFwcFJlY29yZCA9IGF3YWl0IGdldEFwcFJlY29yZChhcHAsIGN0eCk7XG4gICAgICAgIGlmIChhcHBSZWNvcmQpIHtcbiAgICAgICAgICAgIHJlbW92ZUFwcFJlY29yZChhcHBSZWNvcmQsIGN0eCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHNoYXJlZF91dGlsc18xLlNoYXJlZERhdGEuZGVidWdJbmZvKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5yZW1vdmVBcHAgPSByZW1vdmVBcHA7XG5sZXQgc2NhblRpbWVvdXQ7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlXG5mdW5jdGlvbiBfbGVnYWN5X2dldEFuZFJlZ2lzdGVyQXBwcyhjdHgsIGNsZWFyID0gZmFsc2UpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChjbGVhcikge1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBhcHBzIHRoYXQgYXJlIGxlZ2FjeVxuICAgICAgICAgICAgICAgIGN0eC5hcHBSZWNvcmRzLmZvckVhY2goYXBwUmVjb3JkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFwcFJlY29yZC5tZXRhLlZ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQXBwUmVjb3JkKGFwcFJlY29yZCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYXBwcyA9ICgwLCBzY2FuXzEuc2NhbikoKTtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChzY2FuVGltZW91dCk7XG4gICAgICAgICAgICBpZiAoIWFwcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc2NhblRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IF9sZWdhY3lfZ2V0QW5kUmVnaXN0ZXJBcHBzKGN0eCksIDEwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXBwcy5mb3JFYWNoKGFwcCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgVnVlID0gZ2xvYmFsX2hvb2tfanNfMS5ob29rLlZ1ZTtcbiAgICAgICAgICAgICAgICByZWdpc3RlckFwcCh7XG4gICAgICAgICAgICAgICAgICAgIGFwcCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZXM6IHt9LFxuICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiBWdWUgPT09IG51bGwgfHwgVnVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBWdWUudmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgbWV0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgVnVlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sIGN0eCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3Igc2Nhbm5pbmcgZm9yIGxlZ2FjeSBhcHBzOmApO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH0sIDApO1xufVxuZXhwb3J0cy5fbGVnYWN5X2dldEFuZFJlZ2lzdGVyQXBwcyA9IF9sZWdhY3lfZ2V0QW5kUmVnaXN0ZXJBcHBzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79132\n");
|
|
111
111
|
|
|
112
112
|
/***/ }),
|
|
113
113
|
|
|
@@ -147,7 +147,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
147
147
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
148
148
|
|
|
149
149
|
"use strict";
|
|
150
|
-
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.unHighlight = exports.highlight = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst queue_1 = __webpack_require__(49107);\n\nlet overlay;\nlet overlayContent;\nlet currentInstance;\n\nfunction createOverlay() {\n if (overlay || !shared_utils_1.isBrowser) return;\n overlay = document.createElement('div');\n overlay.style.backgroundColor = 'rgba(65, 184, 131, 0.35)';\n overlay.style.position = 'fixed';\n overlay.style.zIndex = '99999999999998';\n overlay.style.pointerEvents = 'none';\n overlay.style.borderRadius = '3px';\n overlayContent = document.createElement('div');\n overlayContent.style.position = 'fixed';\n overlayContent.style.zIndex = '99999999999999';\n overlayContent.style.pointerEvents = 'none';\n overlayContent.style.backgroundColor = 'white';\n overlayContent.style.fontFamily = 'monospace';\n overlayContent.style.fontSize = '11px';\n overlayContent.style.padding = '4px 8px';\n overlayContent.style.borderRadius = '3px';\n overlayContent.style.color = '#333';\n overlayContent.style.textAlign = 'center';\n overlayContent.style.border = 'rgba(65, 184, 131, 0.5) 1px solid';\n overlayContent.style.backgroundClip = 'padding-box';\n} // Use a job queue to preserve highlight/unhighlight calls order\n// This prevents \"sticky\" highlights that are not removed because highlight is async\n\n\nconst jobQueue = new queue_1.JobQueue();\n\nasync function highlight(instance, backend, ctx) {\n await jobQueue.queue(async () => {\n if (!instance) return;\n const bounds = await backend.api.getComponentBounds(instance);\n\n if (bounds) {\n createOverlay(); // Name\n\n const name = (await backend.api.getComponentName(instance)) || 'Anonymous';\n const pre = document.createElement('span');\n pre.style.opacity = '0.6';\n pre.innerText = '<';\n const text = document.createElement('span');\n text.style.fontWeight = 'bold';\n text.style.color = '#09ab56';\n text.innerText = name;\n const post = document.createElement('span');\n post.style.opacity = '0.6';\n post.innerText = '>'; // Size\n\n const size = document.createElement('span');\n size.style.opacity = '0.5';\n size.style.marginLeft = '6px';\n size.appendChild(document.createTextNode((Math.round(bounds.width * 100) / 100).toString()));\n const multiply = document.createElement('span');\n multiply.style.marginLeft = multiply.style.marginRight = '2px';\n multiply.innerText = '×';\n size.appendChild(multiply);\n size.appendChild(document.createTextNode((Math.round(bounds.height * 100) / 100).toString()));\n currentInstance = instance;\n await showOverlay(bounds, [pre, text, post, size]);\n }\n\n startUpdateTimer(backend, ctx);\n });\n}\n\nexports.highlight = highlight;\n\nasync function unHighlight() {\n await jobQueue.queue(async () => {\n var _a, _b;\n\n (_a = overlay === null || overlay === void 0 ? void 0 : overlay.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(overlay);\n (_b = overlayContent === null || overlayContent === void 0 ? void 0 : overlayContent.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(overlayContent);\n currentInstance = null;\n stopUpdateTimer();\n });\n}\n\nexports.unHighlight = unHighlight;\n\nfunction showOverlay(bounds, children = null) {\n if (!shared_utils_1.isBrowser || !children.length) return;\n positionOverlay(bounds);\n document.body.appendChild(overlay);\n overlayContent.innerHTML = '';\n children.forEach(child => overlayContent.appendChild(child));\n document.body.appendChild(overlayContent);\n positionOverlayContent(bounds);\n}\n\nfunction positionOverlay({\n width = 0,\n height = 0,\n top = 0,\n left = 0\n}) {\n overlay.style.width = Math.round(width) + 'px';\n overlay.style.height = Math.round(height) + 'px';\n overlay.style.left = Math.round(left) + 'px';\n overlay.style.top = Math.round(top) + 'px';\n}\n\nfunction positionOverlayContent({\n height = 0,\n top = 0,\n left = 0\n}) {\n // Content position (prevents overflow)\n const contentWidth = overlayContent.offsetWidth;\n const contentHeight = overlayContent.offsetHeight;\n let contentLeft = left;\n\n if (contentLeft < 0) {\n contentLeft = 0;\n } else if (contentLeft + contentWidth > window.innerWidth) {\n contentLeft = window.innerWidth - contentWidth;\n }\n\n let contentTop = top - contentHeight - 2;\n\n if (contentTop < 0) {\n contentTop = top + height + 2;\n }\n\n if (contentTop < 0) {\n contentTop = 0;\n } else if (contentTop + contentHeight > window.innerHeight) {\n contentTop = window.innerHeight - contentHeight;\n }\n\n overlayContent.style.left = ~~contentLeft + 'px';\n overlayContent.style.top = ~~contentTop + 'px';\n}\n\nasync function updateOverlay(backend, ctx) {\n if (currentInstance) {\n const bounds = await backend.api.getComponentBounds(currentInstance);\n\n if (bounds) {\n const sizeEl = overlayContent.children.item(3);\n const widthEl = sizeEl.childNodes[0];\n widthEl.textContent = (Math.round(bounds.width * 100) / 100).toString();\n const heightEl = sizeEl.childNodes[2];\n heightEl.textContent = (Math.round(bounds.height * 100) / 100).toString();\n positionOverlay(bounds);\n positionOverlayContent(bounds);\n }\n }\n}\n\nlet updateTimer;\n\nfunction startUpdateTimer(backend, ctx) {\n stopUpdateTimer();\n updateTimer = setInterval(() => {\n jobQueue.queue(async () => {\n await updateOverlay(backend, ctx);\n });\n }, 1000 / 30); // 30fps\n}\n\nfunction stopUpdateTimer() {\n clearInterval(updateTimer);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUN0QixlQUFhLENBQUMsV0FBRCxDQUFiO0FBQ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy9oaWdobGlnaHRlci50cz9kMzA1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy51bkhpZ2hsaWdodCA9IGV4cG9ydHMuaGlnaGxpZ2h0ID0gdm9pZCAwO1xuY29uc3Qgc2hhcmVkX3V0aWxzXzEgPSByZXF1aXJlKFwiQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHNcIik7XG5jb25zdCBxdWV1ZV8xID0gcmVxdWlyZShcIi4vdXRpbC9xdWV1ZVwiKTtcbmxldCBvdmVybGF5O1xubGV0IG92ZXJsYXlDb250ZW50O1xubGV0IGN1cnJlbnRJbnN0YW5jZTtcbmZ1bmN0aW9uIGNyZWF0ZU92ZXJsYXkoKSB7XG4gICAgaWYgKG92ZXJsYXkgfHwgIXNoYXJlZF91dGlsc18xLmlzQnJvd3NlcilcbiAgICAgICAgcmV0dXJuO1xuICAgIG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBvdmVybGF5LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdyZ2JhKDY1LCAxODQsIDEzMSwgMC4zNSknO1xuICAgIG92ZXJsYXkuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIG92ZXJsYXkuc3R5bGUuekluZGV4ID0gJzk5OTk5OTk5OTk5OTk4JztcbiAgICBvdmVybGF5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgb3ZlcmxheS5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnM3B4JztcbiAgICBvdmVybGF5Q29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG92ZXJsYXlDb250ZW50LnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS56SW5kZXggPSAnOTk5OTk5OTk5OTk5OTknO1xuICAgIG92ZXJsYXlDb250ZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgb3ZlcmxheUNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3doaXRlJztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS5mb250RmFtaWx5ID0gJ21vbm9zcGFjZSc7XG4gICAgb3ZlcmxheUNvbnRlbnQuc3R5bGUuZm9udFNpemUgPSAnMTFweCc7XG4gICAgb3ZlcmxheUNvbnRlbnQuc3R5bGUucGFkZGluZyA9ICc0cHggOHB4JztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnM3B4JztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS5jb2xvciA9ICcjMzMzJztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS5ib3JkZXIgPSAncmdiYSg2NSwgMTg0LCAxMzEsIDAuNSkgMXB4IHNvbGlkJztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICdwYWRkaW5nLWJveCc7XG59XG4vLyBVc2UgYSBqb2IgcXVldWUgdG8gcHJlc2VydmUgaGlnaGxpZ2h0L3VuaGlnaGxpZ2h0IGNhbGxzIG9yZGVyXG4vLyBUaGlzIHByZXZlbnRzIFwic3RpY2t5XCIgaGlnaGxpZ2h0cyB0aGF0IGFyZSBub3QgcmVtb3ZlZCBiZWNhdXNlIGhpZ2hsaWdodCBpcyBhc3luY1xuY29uc3Qgam9iUXVldWUgPSBuZXcgcXVldWVfMS5Kb2JRdWV1ZSgpO1xuYXN5bmMgZnVuY3Rpb24gaGlnaGxpZ2h0KGluc3RhbmNlLCBiYWNrZW5kLCBjdHgpIHtcbiAgICBhd2FpdCBqb2JRdWV1ZS5xdWV1ZShhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmICghaW5zdGFuY2UpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGJvdW5kcyA9IGF3YWl0IGJhY2tlbmQuYXBpLmdldENvbXBvbmVudEJvdW5kcyhpbnN0YW5jZSk7XG4gICAgICAgIGlmIChib3VuZHMpIHtcbiAgICAgICAgICAgIGNyZWF0ZU92ZXJsYXkoKTtcbiAgICAgICAgICAgIC8vIE5hbWVcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSAoYXdhaXQgYmFja2VuZC5hcGkuZ2V0Q29tcG9uZW50TmFtZShpbnN0YW5jZSkpIHx8ICdBbm9ueW1vdXMnO1xuICAgICAgICAgICAgY29uc3QgcHJlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgcHJlLnN0eWxlLm9wYWNpdHkgPSAnMC42JztcbiAgICAgICAgICAgIHByZS5pbm5lclRleHQgPSAnPCc7XG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgdGV4dC5zdHlsZS5mb250V2VpZ2h0ID0gJ2JvbGQnO1xuICAgICAgICAgICAgdGV4dC5zdHlsZS5jb2xvciA9ICcjMDlhYjU2JztcbiAgICAgICAgICAgIHRleHQuaW5uZXJUZXh0ID0gbmFtZTtcbiAgICAgICAgICAgIGNvbnN0IHBvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICBwb3N0LnN0eWxlLm9wYWNpdHkgPSAnMC42JztcbiAgICAgICAgICAgIHBvc3QuaW5uZXJUZXh0ID0gJz4nO1xuICAgICAgICAgICAgLy8gU2l6ZVxuICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIHNpemUuc3R5bGUub3BhY2l0eSA9ICcwLjUnO1xuICAgICAgICAgICAgc2l6ZS5zdHlsZS5tYXJnaW5MZWZ0ID0gJzZweCc7XG4gICAgICAgICAgICBzaXplLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKChNYXRoLnJvdW5kKGJvdW5kcy53aWR0aCAqIDEwMCkgLyAxMDApLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgIGNvbnN0IG11bHRpcGx5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgbXVsdGlwbHkuc3R5bGUubWFyZ2luTGVmdCA9IG11bHRpcGx5LnN0eWxlLm1hcmdpblJpZ2h0ID0gJzJweCc7XG4gICAgICAgICAgICBtdWx0aXBseS5pbm5lclRleHQgPSAnw5cnO1xuICAgICAgICAgICAgc2l6ZS5hcHBlbmRDaGlsZChtdWx0aXBseSk7XG4gICAgICAgICAgICBzaXplLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKChNYXRoLnJvdW5kKGJvdW5kcy5oZWlnaHQgKiAxMDApIC8gMTAwKS50b1N0cmluZygpKSk7XG4gICAgICAgICAgICBjdXJyZW50SW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgICAgICAgICAgIGF3YWl0IHNob3dPdmVybGF5KGJvdW5kcywgW3ByZSwgdGV4dCwgcG9zdCwgc2l6ZV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YXJ0VXBkYXRlVGltZXIoYmFja2VuZCwgY3R4KTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuaGlnaGxpZ2h0ID0gaGlnaGxpZ2h0O1xuYXN5bmMgZnVuY3Rpb24gdW5IaWdobGlnaHQoKSB7XG4gICAgYXdhaXQgam9iUXVldWUucXVldWUoYXN5bmMgKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2EgPSBvdmVybGF5ID09PSBudWxsIHx8IG92ZXJsYXkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG92ZXJsYXkucGFyZW50Tm9kZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlbW92ZUNoaWxkKG92ZXJsYXkpO1xuICAgICAgICAoX2IgPSBvdmVybGF5Q29udGVudCA9PT0gbnVsbCB8fCBvdmVybGF5Q29udGVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3ZlcmxheUNvbnRlbnQucGFyZW50Tm9kZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnJlbW92ZUNoaWxkKG92ZXJsYXlDb250ZW50KTtcbiAgICAgICAgY3VycmVudEluc3RhbmNlID0gbnVsbDtcbiAgICAgICAgc3RvcFVwZGF0ZVRpbWVyKCk7XG4gICAgfSk7XG59XG5leHBvcnRzLnVuSGlnaGxpZ2h0ID0gdW5IaWdobGlnaHQ7XG5mdW5jdGlvbiBzaG93T3ZlcmxheShib3VuZHMsIGNoaWxkcmVuID0gbnVsbCkge1xuICAgIGlmICghc2hhcmVkX3V0aWxzXzEuaXNCcm93c2VyIHx8ICFjaGlsZHJlbi5sZW5ndGgpXG4gICAgICAgIHJldHVybjtcbiAgICBwb3NpdGlvbk92ZXJsYXkoYm91bmRzKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG92ZXJsYXkpO1xuICAgIG92ZXJsYXlDb250ZW50LmlubmVySFRNTCA9ICcnO1xuICAgIGNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4gb3ZlcmxheUNvbnRlbnQuYXBwZW5kQ2hpbGQoY2hpbGQpKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG92ZXJsYXlDb250ZW50KTtcbiAgICBwb3NpdGlvbk92ZXJsYXlDb250ZW50KGJvdW5kcyk7XG59XG5mdW5jdGlvbiBwb3NpdGlvbk92ZXJsYXkoeyB3aWR0aCA9IDAsIGhlaWdodCA9IDAsIHRvcCA9IDAsIGxlZnQgPSAwIH0pIHtcbiAgICBvdmVybGF5LnN0eWxlLndpZHRoID0gTWF0aC5yb3VuZCh3aWR0aCkgKyAncHgnO1xuICAgIG92ZXJsYXkuc3R5bGUuaGVpZ2h0ID0gTWF0aC5yb3VuZChoZWlnaHQpICsgJ3B4JztcbiAgICBvdmVybGF5LnN0eWxlLmxlZnQgPSBNYXRoLnJvdW5kKGxlZnQpICsgJ3B4JztcbiAgICBvdmVybGF5LnN0eWxlLnRvcCA9IE1hdGgucm91bmQodG9wKSArICdweCc7XG59XG5mdW5jdGlvbiBwb3NpdGlvbk92ZXJsYXlDb250ZW50KHsgaGVpZ2h0ID0gMCwgdG9wID0gMCwgbGVmdCA9IDAgfSkge1xuICAgIC8vIENvbnRlbnQgcG9zaXRpb24gKHByZXZlbnRzIG92ZXJmbG93KVxuICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IG92ZXJsYXlDb250ZW50Lm9mZnNldFdpZHRoO1xuICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSBvdmVybGF5Q29udGVudC5vZmZzZXRIZWlnaHQ7XG4gICAgbGV0IGNvbnRlbnRMZWZ0ID0gbGVmdDtcbiAgICBpZiAoY29udGVudExlZnQgPCAwKSB7XG4gICAgICAgIGNvbnRlbnRMZWZ0ID0gMDtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29udGVudExlZnQgKyBjb250ZW50V2lkdGggPiB3aW5kb3cuaW5uZXJXaWR0aCkge1xuICAgICAgICBjb250ZW50TGVmdCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gY29udGVudFdpZHRoO1xuICAgIH1cbiAgICBsZXQgY29udGVudFRvcCA9IHRvcCAtIGNvbnRlbnRIZWlnaHQgLSAyO1xuICAgIGlmIChjb250ZW50VG9wIDwgMCkge1xuICAgICAgICBjb250ZW50VG9wID0gdG9wICsgaGVpZ2h0ICsgMjtcbiAgICB9XG4gICAgaWYgKGNvbnRlbnRUb3AgPCAwKSB7XG4gICAgICAgIGNvbnRlbnRUb3AgPSAwO1xuICAgIH1cbiAgICBlbHNlIGlmIChjb250ZW50VG9wICsgY29udGVudEhlaWdodCA+IHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgICAgICBjb250ZW50VG9wID0gd2luZG93LmlubmVySGVpZ2h0IC0gY29udGVudEhlaWdodDtcbiAgICB9XG4gICAgb3ZlcmxheUNvbnRlbnQuc3R5bGUubGVmdCA9IH5+Y29udGVudExlZnQgKyAncHgnO1xuICAgIG92ZXJsYXlDb250ZW50LnN0eWxlLnRvcCA9IH5+Y29udGVudFRvcCArICdweCc7XG59XG5hc3luYyBmdW5jdGlvbiB1cGRhdGVPdmVybGF5KGJhY2tlbmQsIGN0eCkge1xuICAgIGlmIChjdXJyZW50SW5zdGFuY2UpIHtcbiAgICAgICAgY29uc3QgYm91bmRzID0gYXdhaXQgYmFja2VuZC5hcGkuZ2V0Q29tcG9uZW50Qm91bmRzKGN1cnJlbnRJbnN0YW5jZSk7XG4gICAgICAgIGlmIChib3VuZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNpemVFbCA9IG92ZXJsYXlDb250ZW50LmNoaWxkcmVuLml0ZW0oMyk7XG4gICAgICAgICAgICBjb25zdCB3aWR0aEVsID0gc2l6ZUVsLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgICB3aWR0aEVsLnRleHRDb250ZW50ID0gKE1hdGgucm91bmQoYm91bmRzLndpZHRoICogMTAwKSAvIDEwMCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodEVsID0gc2l6ZUVsLmNoaWxkTm9kZXNbMl07XG4gICAgICAgICAgICBoZWlnaHRFbC50ZXh0Q29udGVudCA9IChNYXRoLnJvdW5kKGJvdW5kcy5oZWlnaHQgKiAxMDApIC8gMTAwKS50b1N0cmluZygpO1xuICAgICAgICAgICAgcG9zaXRpb25PdmVybGF5KGJvdW5kcyk7XG4gICAgICAgICAgICBwb3NpdGlvbk92ZXJsYXlDb250ZW50KGJvdW5kcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5sZXQgdXBkYXRlVGltZXI7XG5mdW5jdGlvbiBzdGFydFVwZGF0ZVRpbWVyKGJhY2tlbmQsIGN0eCkge1xuICAgIHN0b3BVcGRhdGVUaW1lcigpO1xuICAgIHVwZGF0ZVRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBqb2JRdWV1ZS5xdWV1ZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB1cGRhdGVPdmVybGF5KGJhY2tlbmQsIGN0eCk7XG4gICAgICAgIH0pO1xuICAgIH0sIDEwMDAgLyAzMCk7IC8vIDMwZnBzXG59XG5mdW5jdGlvbiBzdG9wVXBkYXRlVGltZXIoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh1cGRhdGVUaW1lcik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oaWdobGlnaHRlci5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///44877\n");
|
|
150
|
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.unHighlight = exports.highlight = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst queue_1 = __webpack_require__(49107);\n\nlet overlay;\nlet overlayContent;\nlet currentInstance;\n\nfunction createOverlay() {\n if (overlay || !shared_utils_1.isBrowser) return;\n overlay = document.createElement('div');\n overlay.style.backgroundColor = 'rgba(65, 184, 131, 0.35)';\n overlay.style.position = 'fixed';\n overlay.style.zIndex = '99999999999998';\n overlay.style.pointerEvents = 'none';\n overlay.style.borderRadius = '3px';\n overlayContent = document.createElement('div');\n overlayContent.style.position = 'fixed';\n overlayContent.style.zIndex = '99999999999999';\n overlayContent.style.pointerEvents = 'none';\n overlayContent.style.backgroundColor = 'white';\n overlayContent.style.fontFamily = 'monospace';\n overlayContent.style.fontSize = '11px';\n overlayContent.style.padding = '4px 8px';\n overlayContent.style.borderRadius = '3px';\n overlayContent.style.color = '#333';\n overlayContent.style.textAlign = 'center';\n overlayContent.style.border = 'rgba(65, 184, 131, 0.5) 1px solid';\n overlayContent.style.backgroundClip = 'padding-box';\n} // Use a job queue to preserve highlight/unhighlight calls order\n// This prevents \"sticky\" highlights that are not removed because highlight is async\n\n\nconst jobQueue = new queue_1.JobQueue();\n\nasync function highlight(instance, backend, ctx) {\n await jobQueue.queue('highlight', async () => {\n if (!instance) return;\n const bounds = await backend.api.getComponentBounds(instance);\n\n if (bounds) {\n createOverlay(); // Name\n\n const name = (await backend.api.getComponentName(instance)) || 'Anonymous';\n const pre = document.createElement('span');\n pre.style.opacity = '0.6';\n pre.innerText = '<';\n const text = document.createElement('span');\n text.style.fontWeight = 'bold';\n text.style.color = '#09ab56';\n text.innerText = name;\n const post = document.createElement('span');\n post.style.opacity = '0.6';\n post.innerText = '>'; // Size\n\n const size = document.createElement('span');\n size.style.opacity = '0.5';\n size.style.marginLeft = '6px';\n size.appendChild(document.createTextNode((Math.round(bounds.width * 100) / 100).toString()));\n const multiply = document.createElement('span');\n multiply.style.marginLeft = multiply.style.marginRight = '2px';\n multiply.innerText = '×';\n size.appendChild(multiply);\n size.appendChild(document.createTextNode((Math.round(bounds.height * 100) / 100).toString()));\n currentInstance = instance;\n await showOverlay(bounds, [pre, text, post, size]);\n }\n\n startUpdateTimer(backend, ctx);\n });\n}\n\nexports.highlight = highlight;\n\nasync function unHighlight() {\n await jobQueue.queue('unHighlight', async () => {\n var _a, _b;\n\n (_a = overlay === null || overlay === void 0 ? void 0 : overlay.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(overlay);\n (_b = overlayContent === null || overlayContent === void 0 ? void 0 : overlayContent.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(overlayContent);\n currentInstance = null;\n stopUpdateTimer();\n });\n}\n\nexports.unHighlight = unHighlight;\n\nfunction showOverlay(bounds, children = null) {\n if (!shared_utils_1.isBrowser || !children.length) return;\n positionOverlay(bounds);\n document.body.appendChild(overlay);\n overlayContent.innerHTML = '';\n children.forEach(child => overlayContent.appendChild(child));\n document.body.appendChild(overlayContent);\n positionOverlayContent(bounds);\n}\n\nfunction positionOverlay({\n width = 0,\n height = 0,\n top = 0,\n left = 0\n}) {\n overlay.style.width = Math.round(width) + 'px';\n overlay.style.height = Math.round(height) + 'px';\n overlay.style.left = Math.round(left) + 'px';\n overlay.style.top = Math.round(top) + 'px';\n}\n\nfunction positionOverlayContent({\n height = 0,\n top = 0,\n left = 0\n}) {\n // Content position (prevents overflow)\n const contentWidth = overlayContent.offsetWidth;\n const contentHeight = overlayContent.offsetHeight;\n let contentLeft = left;\n\n if (contentLeft < 0) {\n contentLeft = 0;\n } else if (contentLeft + contentWidth > window.innerWidth) {\n contentLeft = window.innerWidth - contentWidth;\n }\n\n let contentTop = top - contentHeight - 2;\n\n if (contentTop < 0) {\n contentTop = top + height + 2;\n }\n\n if (contentTop < 0) {\n contentTop = 0;\n } else if (contentTop + contentHeight > window.innerHeight) {\n contentTop = window.innerHeight - contentHeight;\n }\n\n overlayContent.style.left = ~~contentLeft + 'px';\n overlayContent.style.top = ~~contentTop + 'px';\n}\n\nasync function updateOverlay(backend, ctx) {\n if (currentInstance) {\n const bounds = await backend.api.getComponentBounds(currentInstance);\n\n if (bounds) {\n const sizeEl = overlayContent.children.item(3);\n const widthEl = sizeEl.childNodes[0];\n widthEl.textContent = (Math.round(bounds.width * 100) / 100).toString();\n const heightEl = sizeEl.childNodes[2];\n heightEl.textContent = (Math.round(bounds.height * 100) / 100).toString();\n positionOverlay(bounds);\n positionOverlayContent(bounds);\n }\n }\n}\n\nlet updateTimer;\n\nfunction startUpdateTimer(backend, ctx) {\n stopUpdateTimer();\n updateTimer = setInterval(() => {\n jobQueue.queue('updateOverlay', async () => {\n await updateOverlay(backend, ctx);\n });\n }, 1000 / 30); // 30fps\n}\n\nfunction stopUpdateTimer() {\n clearInterval(updateTimer);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QU14RDtBQUNmOztBQUVELFNBQVMsZUFBVCxHQUF3QjtBQUN0QixlQUFhLENBQUMsV0FBRCxDQUFiO0FBQ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy9oaWdobGlnaHRlci50cz9kMzA1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy51bkhpZ2hsaWdodCA9IGV4cG9ydHMuaGlnaGxpZ2h0ID0gdm9pZCAwO1xuY29uc3Qgc2hhcmVkX3V0aWxzXzEgPSByZXF1aXJlKFwiQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHNcIik7XG5jb25zdCBxdWV1ZV8xID0gcmVxdWlyZShcIi4vdXRpbC9xdWV1ZVwiKTtcbmxldCBvdmVybGF5O1xubGV0IG92ZXJsYXlDb250ZW50O1xubGV0IGN1cnJlbnRJbnN0YW5jZTtcbmZ1bmN0aW9uIGNyZWF0ZU92ZXJsYXkoKSB7XG4gICAgaWYgKG92ZXJsYXkgfHwgIXNoYXJlZF91dGlsc18xLmlzQnJvd3NlcilcbiAgICAgICAgcmV0dXJuO1xuICAgIG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBvdmVybGF5LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdyZ2JhKDY1LCAxODQsIDEzMSwgMC4zNSknO1xuICAgIG92ZXJsYXkuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIG92ZXJsYXkuc3R5bGUuekluZGV4ID0gJzk5OTk5OTk5OTk5OTk4JztcbiAgICBvdmVybGF5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgb3ZlcmxheS5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnM3B4JztcbiAgICBvdmVybGF5Q29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG92ZXJsYXlDb250ZW50LnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS56SW5kZXggPSAnOTk5OTk5OTk5OTk5OTknO1xuICAgIG92ZXJsYXlDb250ZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgb3ZlcmxheUNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3doaXRlJztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS5mb250RmFtaWx5ID0gJ21vbm9zcGFjZSc7XG4gICAgb3ZlcmxheUNvbnRlbnQuc3R5bGUuZm9udFNpemUgPSAnMTFweCc7XG4gICAgb3ZlcmxheUNvbnRlbnQuc3R5bGUucGFkZGluZyA9ICc0cHggOHB4JztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnM3B4JztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS5jb2xvciA9ICcjMzMzJztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS5ib3JkZXIgPSAncmdiYSg2NSwgMTg0LCAxMzEsIDAuNSkgMXB4IHNvbGlkJztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9ICdwYWRkaW5nLWJveCc7XG59XG4vLyBVc2UgYSBqb2IgcXVldWUgdG8gcHJlc2VydmUgaGlnaGxpZ2h0L3VuaGlnaGxpZ2h0IGNhbGxzIG9yZGVyXG4vLyBUaGlzIHByZXZlbnRzIFwic3RpY2t5XCIgaGlnaGxpZ2h0cyB0aGF0IGFyZSBub3QgcmVtb3ZlZCBiZWNhdXNlIGhpZ2hsaWdodCBpcyBhc3luY1xuY29uc3Qgam9iUXVldWUgPSBuZXcgcXVldWVfMS5Kb2JRdWV1ZSgpO1xuYXN5bmMgZnVuY3Rpb24gaGlnaGxpZ2h0KGluc3RhbmNlLCBiYWNrZW5kLCBjdHgpIHtcbiAgICBhd2FpdCBqb2JRdWV1ZS5xdWV1ZSgnaGlnaGxpZ2h0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoIWluc3RhbmNlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBib3VuZHMgPSBhd2FpdCBiYWNrZW5kLmFwaS5nZXRDb21wb25lbnRCb3VuZHMoaW5zdGFuY2UpO1xuICAgICAgICBpZiAoYm91bmRzKSB7XG4gICAgICAgICAgICBjcmVhdGVPdmVybGF5KCk7XG4gICAgICAgICAgICAvLyBOYW1lXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gKGF3YWl0IGJhY2tlbmQuYXBpLmdldENvbXBvbmVudE5hbWUoaW5zdGFuY2UpKSB8fCAnQW5vbnltb3VzJztcbiAgICAgICAgICAgIGNvbnN0IHByZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIHByZS5zdHlsZS5vcGFjaXR5ID0gJzAuNic7XG4gICAgICAgICAgICBwcmUuaW5uZXJUZXh0ID0gJzwnO1xuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIHRleHQuc3R5bGUuZm9udFdlaWdodCA9ICdib2xkJztcbiAgICAgICAgICAgIHRleHQuc3R5bGUuY29sb3IgPSAnIzA5YWI1Nic7XG4gICAgICAgICAgICB0ZXh0LmlubmVyVGV4dCA9IG5hbWU7XG4gICAgICAgICAgICBjb25zdCBwb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgcG9zdC5zdHlsZS5vcGFjaXR5ID0gJzAuNic7XG4gICAgICAgICAgICBwb3N0LmlubmVyVGV4dCA9ICc+JztcbiAgICAgICAgICAgIC8vIFNpemVcbiAgICAgICAgICAgIGNvbnN0IHNpemUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICBzaXplLnN0eWxlLm9wYWNpdHkgPSAnMC41JztcbiAgICAgICAgICAgIHNpemUuc3R5bGUubWFyZ2luTGVmdCA9ICc2cHgnO1xuICAgICAgICAgICAgc2l6ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgoTWF0aC5yb3VuZChib3VuZHMud2lkdGggKiAxMDApIC8gMTAwKS50b1N0cmluZygpKSk7XG4gICAgICAgICAgICBjb25zdCBtdWx0aXBseSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIG11bHRpcGx5LnN0eWxlLm1hcmdpbkxlZnQgPSBtdWx0aXBseS5zdHlsZS5tYXJnaW5SaWdodCA9ICcycHgnO1xuICAgICAgICAgICAgbXVsdGlwbHkuaW5uZXJUZXh0ID0gJ8OXJztcbiAgICAgICAgICAgIHNpemUuYXBwZW5kQ2hpbGQobXVsdGlwbHkpO1xuICAgICAgICAgICAgc2l6ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgoTWF0aC5yb3VuZChib3VuZHMuaGVpZ2h0ICogMTAwKSAvIDEwMCkudG9TdHJpbmcoKSkpO1xuICAgICAgICAgICAgY3VycmVudEluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgICAgICBhd2FpdCBzaG93T3ZlcmxheShib3VuZHMsIFtwcmUsIHRleHQsIHBvc3QsIHNpemVdKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFydFVwZGF0ZVRpbWVyKGJhY2tlbmQsIGN0eCk7XG4gICAgfSk7XG59XG5leHBvcnRzLmhpZ2hsaWdodCA9IGhpZ2hsaWdodDtcbmFzeW5jIGZ1bmN0aW9uIHVuSGlnaGxpZ2h0KCkge1xuICAgIGF3YWl0IGpvYlF1ZXVlLnF1ZXVlKCd1bkhpZ2hsaWdodCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9hID0gb3ZlcmxheSA9PT0gbnVsbCB8fCBvdmVybGF5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdmVybGF5LnBhcmVudE5vZGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZW1vdmVDaGlsZChvdmVybGF5KTtcbiAgICAgICAgKF9iID0gb3ZlcmxheUNvbnRlbnQgPT09IG51bGwgfHwgb3ZlcmxheUNvbnRlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG92ZXJsYXlDb250ZW50LnBhcmVudE5vZGUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZW1vdmVDaGlsZChvdmVybGF5Q29udGVudCk7XG4gICAgICAgIGN1cnJlbnRJbnN0YW5jZSA9IG51bGw7XG4gICAgICAgIHN0b3BVcGRhdGVUaW1lcigpO1xuICAgIH0pO1xufVxuZXhwb3J0cy51bkhpZ2hsaWdodCA9IHVuSGlnaGxpZ2h0O1xuZnVuY3Rpb24gc2hvd092ZXJsYXkoYm91bmRzLCBjaGlsZHJlbiA9IG51bGwpIHtcbiAgICBpZiAoIXNoYXJlZF91dGlsc18xLmlzQnJvd3NlciB8fCAhY2hpbGRyZW4ubGVuZ3RoKVxuICAgICAgICByZXR1cm47XG4gICAgcG9zaXRpb25PdmVybGF5KGJvdW5kcyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KTtcbiAgICBvdmVybGF5Q29udGVudC5pbm5lckhUTUwgPSAnJztcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IG92ZXJsYXlDb250ZW50LmFwcGVuZENoaWxkKGNoaWxkKSk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5Q29udGVudCk7XG4gICAgcG9zaXRpb25PdmVybGF5Q29udGVudChib3VuZHMpO1xufVxuZnVuY3Rpb24gcG9zaXRpb25PdmVybGF5KHsgd2lkdGggPSAwLCBoZWlnaHQgPSAwLCB0b3AgPSAwLCBsZWZ0ID0gMCB9KSB7XG4gICAgb3ZlcmxheS5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQod2lkdGgpICsgJ3B4JztcbiAgICBvdmVybGF5LnN0eWxlLmhlaWdodCA9IE1hdGgucm91bmQoaGVpZ2h0KSArICdweCc7XG4gICAgb3ZlcmxheS5zdHlsZS5sZWZ0ID0gTWF0aC5yb3VuZChsZWZ0KSArICdweCc7XG4gICAgb3ZlcmxheS5zdHlsZS50b3AgPSBNYXRoLnJvdW5kKHRvcCkgKyAncHgnO1xufVxuZnVuY3Rpb24gcG9zaXRpb25PdmVybGF5Q29udGVudCh7IGhlaWdodCA9IDAsIHRvcCA9IDAsIGxlZnQgPSAwIH0pIHtcbiAgICAvLyBDb250ZW50IHBvc2l0aW9uIChwcmV2ZW50cyBvdmVyZmxvdylcbiAgICBjb25zdCBjb250ZW50V2lkdGggPSBvdmVybGF5Q29udGVudC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gb3ZlcmxheUNvbnRlbnQub2Zmc2V0SGVpZ2h0O1xuICAgIGxldCBjb250ZW50TGVmdCA9IGxlZnQ7XG4gICAgaWYgKGNvbnRlbnRMZWZ0IDwgMCkge1xuICAgICAgICBjb250ZW50TGVmdCA9IDA7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNvbnRlbnRMZWZ0ICsgY29udGVudFdpZHRoID4gd2luZG93LmlubmVyV2lkdGgpIHtcbiAgICAgICAgY29udGVudExlZnQgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGNvbnRlbnRXaWR0aDtcbiAgICB9XG4gICAgbGV0IGNvbnRlbnRUb3AgPSB0b3AgLSBjb250ZW50SGVpZ2h0IC0gMjtcbiAgICBpZiAoY29udGVudFRvcCA8IDApIHtcbiAgICAgICAgY29udGVudFRvcCA9IHRvcCArIGhlaWdodCArIDI7XG4gICAgfVxuICAgIGlmIChjb250ZW50VG9wIDwgMCkge1xuICAgICAgICBjb250ZW50VG9wID0gMDtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29udGVudFRvcCArIGNvbnRlbnRIZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICAgICAgY29udGVudFRvcCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIGNvbnRlbnRIZWlnaHQ7XG4gICAgfVxuICAgIG92ZXJsYXlDb250ZW50LnN0eWxlLmxlZnQgPSB+fmNvbnRlbnRMZWZ0ICsgJ3B4JztcbiAgICBvdmVybGF5Q29udGVudC5zdHlsZS50b3AgPSB+fmNvbnRlbnRUb3AgKyAncHgnO1xufVxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlT3ZlcmxheShiYWNrZW5kLCBjdHgpIHtcbiAgICBpZiAoY3VycmVudEluc3RhbmNlKSB7XG4gICAgICAgIGNvbnN0IGJvdW5kcyA9IGF3YWl0IGJhY2tlbmQuYXBpLmdldENvbXBvbmVudEJvdW5kcyhjdXJyZW50SW5zdGFuY2UpO1xuICAgICAgICBpZiAoYm91bmRzKSB7XG4gICAgICAgICAgICBjb25zdCBzaXplRWwgPSBvdmVybGF5Q29udGVudC5jaGlsZHJlbi5pdGVtKDMpO1xuICAgICAgICAgICAgY29uc3Qgd2lkdGhFbCA9IHNpemVFbC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICAgICAgd2lkdGhFbC50ZXh0Q29udGVudCA9IChNYXRoLnJvdW5kKGJvdW5kcy53aWR0aCAqIDEwMCkgLyAxMDApLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHRFbCA9IHNpemVFbC5jaGlsZE5vZGVzWzJdO1xuICAgICAgICAgICAgaGVpZ2h0RWwudGV4dENvbnRlbnQgPSAoTWF0aC5yb3VuZChib3VuZHMuaGVpZ2h0ICogMTAwKSAvIDEwMCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHBvc2l0aW9uT3ZlcmxheShib3VuZHMpO1xuICAgICAgICAgICAgcG9zaXRpb25PdmVybGF5Q29udGVudChib3VuZHMpO1xuICAgICAgICB9XG4gICAgfVxufVxubGV0IHVwZGF0ZVRpbWVyO1xuZnVuY3Rpb24gc3RhcnRVcGRhdGVUaW1lcihiYWNrZW5kLCBjdHgpIHtcbiAgICBzdG9wVXBkYXRlVGltZXIoKTtcbiAgICB1cGRhdGVUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgam9iUXVldWUucXVldWUoJ3VwZGF0ZU92ZXJsYXknLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB1cGRhdGVPdmVybGF5KGJhY2tlbmQsIGN0eCk7XG4gICAgICAgIH0pO1xuICAgIH0sIDEwMDAgLyAzMCk7IC8vIDMwZnBzXG59XG5mdW5jdGlvbiBzdG9wVXBkYXRlVGltZXIoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh1cGRhdGVUaW1lcik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1oaWdobGlnaHRlci5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///44877\n");
|
|
151
151
|
|
|
152
152
|
/***/ }),
|
|
153
153
|
|
|
@@ -155,7 +155,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
155
155
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
156
156
|
|
|
157
157
|
"use strict";
|
|
158
|
-
eval("\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nvar _a, _b;\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.initBackend = void 0;\n\nconst app_backend_api_1 = __webpack_require__(64803);\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst debounce_1 = __importDefault(__webpack_require__(54073));\n\nconst global_hook_1 = __webpack_require__(13179);\n\nconst subscriptions_1 = __webpack_require__(19815);\n\nconst highlighter_1 = __webpack_require__(44877);\n\nconst timeline_1 = __webpack_require__(41515);\n\nconst component_pick_1 = __importDefault(__webpack_require__(76794));\n\nconst component_1 = __webpack_require__(63304);\n\nconst plugin_1 = __webpack_require__(42989);\n\nconst app_1 = __webpack_require__(79132);\n\nconst inspector_1 = __webpack_require__(96048);\n\nconst timeline_screenshot_1 = __webpack_require__(11354);\n\nconst perf_1 = __webpack_require__(75552);\n\nconst page_config_1 = __webpack_require__(26639);\n\nconst timeline_marker_1 = __webpack_require__(72063);\n\nlet ctx = (_a = shared_utils_1.target.__vdevtools_ctx) !== null && _a !== void 0 ? _a : null;\nlet connected = (_b = shared_utils_1.target.__vdevtools_connected) !== null && _b !== void 0 ? _b : false;\n\nasync function initBackend(bridge) {\n await (0, shared_utils_1.initSharedData)({\n bridge,\n persist: false\n });\n (0, page_config_1.initOnPageConfig)();\n\n if (!connected) {\n // connected = false\n ctx = shared_utils_1.target.__vdevtools_ctx = (0, app_backend_api_1.createBackendContext)({\n bridge,\n hook: global_hook_1.hook\n });\n\n if (global_hook_1.hook.Vue) {\n connect();\n (0, app_1._legacy_getAndRegisterApps)(ctx);\n }\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.INIT, () => {\n (0, app_1._legacy_getAndRegisterApps)(ctx);\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.APP_ADD, async app => {\n await (0, app_1._legacy_getAndRegisterApps)(ctx);\n await (0, app_1.registerApp)(app, ctx); // Will init connect\n\n global_hook_1.hook.emit(shared_utils_1.HookEvents.INIT);\n }); // Add apps that already sent init\n\n if (global_hook_1.hook.apps.length) {\n global_hook_1.hook.apps.forEach(app => {\n (0, app_1.registerApp)(app, ctx);\n connect();\n });\n }\n } else {\n ctx.bridge = bridge;\n connectBridge();\n }\n}\n\nexports.initBackend = initBackend;\n\nasync function connect() {\n if (connected) {\n return;\n }\n\n connected = shared_utils_1.target.__vdevtools_connected = true;\n await (0, app_1.waitForAppsRegistration)();\n connectBridge();\n ctx.currentTab = shared_utils_1.BuiltinTabs.COMPONENTS; // Apps\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.APP_UNMOUNT, app => {\n (0, app_1.removeApp)(app, ctx);\n }); // Components\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.COMPONENT_UPDATED, async (app, uid, parentUid, component) => {\n try {\n let id;\n let appRecord;\n\n if (app && uid != null) {\n id = await (0, component_1.getComponentId)(app, uid, component, ctx);\n appRecord = await (0, app_1.getAppRecord)(app, ctx);\n } else {\n id = ctx.currentInspectedComponentId;\n appRecord = ctx.currentAppRecord;\n } // Update component inspector\n\n\n if (id && (0, subscriptions_1.isSubscribed)(shared_utils_1.BridgeSubscriptions.SELECTED_COMPONENT_DATA, sub => sub.payload.instanceId === id)) {\n (0, component_1.sendSelectedComponentData)(appRecord, id, ctx);\n } // Update tree (tags)\n\n\n if ((0, subscriptions_1.isSubscribed)(shared_utils_1.BridgeSubscriptions.COMPONENT_TREE, sub => sub.payload.instanceId === id)) {\n (0, component_1.sendComponentTreeData)(appRecord, id, appRecord.componentFilter, 0, ctx);\n }\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.COMPONENT_ADDED, async (app, uid, parentUid, component) => {\n try {\n const id = await (0, component_1.getComponentId)(app, uid, component, ctx);\n const appRecord = await (0, app_1.getAppRecord)(app, ctx);\n\n if (component) {\n if (component.__VUE_DEVTOOLS_UID__ == null) {\n component.__VUE_DEVTOOLS_UID__ = id;\n }\n\n if (!appRecord.instanceMap.has(id)) {\n appRecord.instanceMap.set(id, component);\n }\n }\n\n if (parentUid != null) {\n const parentInstances = await appRecord.backend.api.walkComponentParents(component);\n\n if (parentInstances.length) {\n // Check two parents level to update `hasChildren\n for (let i = 0; i < 2 && i < parentInstances.length; i++) {\n const parentId = await (0, component_1.getComponentId)(app, parentUid, parentInstances[i], ctx);\n\n if ((0, subscriptions_1.isSubscribed)(shared_utils_1.BridgeSubscriptions.COMPONENT_TREE, sub => sub.payload.instanceId === parentId)) {\n requestAnimationFrame(() => {\n (0, component_1.sendComponentTreeData)(appRecord, parentId, appRecord.componentFilter, null, ctx);\n });\n }\n }\n }\n }\n\n if (ctx.currentInspectedComponentId === id) {\n (0, component_1.sendSelectedComponentData)(appRecord, id, ctx);\n }\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.COMPONENT_REMOVED, async (app, uid, parentUid, component) => {\n try {\n const appRecord = await (0, app_1.getAppRecord)(app, ctx);\n\n if (parentUid != null) {\n const parentInstances = await appRecord.backend.api.walkComponentParents(component);\n\n if (parentInstances.length) {\n const parentId = await (0, component_1.getComponentId)(app, parentUid, parentInstances[0], ctx);\n\n if ((0, subscriptions_1.isSubscribed)(shared_utils_1.BridgeSubscriptions.COMPONENT_TREE, sub => sub.payload.instanceId === parentId)) {\n requestAnimationFrame(async () => {\n try {\n (0, component_1.sendComponentTreeData)(await (0, app_1.getAppRecord)(app, ctx), parentId, appRecord.componentFilter, null, ctx);\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n });\n }\n }\n }\n\n const id = await (0, component_1.getComponentId)(app, uid, component, ctx);\n\n if ((0, subscriptions_1.isSubscribed)(shared_utils_1.BridgeSubscriptions.SELECTED_COMPONENT_DATA, sub => sub.payload.instanceId === id)) {\n (0, component_1.sendEmptyComponentData)(id, ctx);\n }\n\n appRecord.instanceMap.delete(id);\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n }); // Component perf\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.PERFORMANCE_START, (app, uid, vm, type, time) => {\n (0, perf_1.performanceMarkStart)(app, uid, vm, type, time, ctx);\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.PERFORMANCE_END, (app, uid, vm, type, time) => {\n (0, perf_1.performanceMarkEnd)(app, uid, vm, type, time, ctx);\n }); // Highlighter\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.COMPONENT_HIGHLIGHT, instanceId => {\n (0, highlighter_1.highlight)(ctx.currentAppRecord.instanceMap.get(instanceId), ctx.currentAppRecord.backend, ctx);\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.COMPONENT_UNHIGHLIGHT, () => {\n (0, highlighter_1.unHighlight)();\n }); // Timeline\n\n (0, timeline_1.setupTimeline)(ctx);\n global_hook_1.hook.on(shared_utils_1.HookEvents.TIMELINE_LAYER_ADDED, async (options, plugin) => {\n const appRecord = await (0, app_1.getAppRecord)(plugin.descriptor.app, ctx);\n ctx.timelineLayers.push({ ...options,\n appRecord,\n plugin,\n events: []\n });\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_TIMELINE_LAYER_ADD, {});\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.TIMELINE_EVENT_ADDED, async (options, plugin) => {\n await (0, timeline_1.addTimelineEvent)(options, plugin.descriptor.app, ctx);\n }); // Custom inspectors\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.CUSTOM_INSPECTOR_ADD, async (options, plugin) => {\n const appRecord = await (0, app_1.getAppRecord)(plugin.descriptor.app, ctx);\n ctx.customInspectors.push({ ...options,\n appRecord,\n plugin,\n treeFilter: '',\n selectedNodeId: null\n });\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_CUSTOM_INSPECTOR_ADD, {});\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.CUSTOM_INSPECTOR_SEND_TREE, (inspectorId, plugin) => {\n const inspector = (0, inspector_1.getInspector)(inspectorId, plugin.descriptor.app, ctx);\n\n if (inspector) {\n (0, inspector_1.sendInspectorTree)(inspector, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.CUSTOM_INSPECTOR_SEND_STATE, (inspectorId, plugin) => {\n const inspector = (0, inspector_1.getInspector)(inspectorId, plugin.descriptor.app, ctx);\n\n if (inspector) {\n (0, inspector_1.sendInspectorState)(inspector, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.CUSTOM_INSPECTOR_SELECT_NODE, async (inspectorId, nodeId, plugin) => {\n const inspector = (0, inspector_1.getInspector)(inspectorId, plugin.descriptor.app, ctx);\n\n if (inspector) {\n await (0, inspector_1.selectInspectorNode)(inspector, nodeId, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n }); // Plugins\n\n (0, plugin_1.addPreviouslyRegisteredPlugins)(ctx);\n (0, plugin_1.addQueuedPlugins)(ctx);\n global_hook_1.hook.on(shared_utils_1.HookEvents.SETUP_DEVTOOLS_PLUGIN, async (pluginDescriptor, setupFn) => {\n await (0, plugin_1.addPlugin)({\n pluginDescriptor,\n setupFn\n }, ctx);\n });\n shared_utils_1.target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ = true; // Legacy flush\n\n const handleFlush = (0, debounce_1.default)(() => {\n var _a;\n\n if ((_a = ctx.currentAppRecord) === null || _a === void 0 ? void 0 : _a.backend.options.features.includes(app_backend_api_1.BuiltinBackendFeature.FLUSH)) {\n (0, component_1.sendComponentTreeData)(ctx.currentAppRecord, '_root', ctx.currentAppRecord.componentFilter, null, ctx);\n\n if (ctx.currentInspectedComponentId) {\n (0, component_1.sendSelectedComponentData)(ctx.currentAppRecord, ctx.currentInspectedComponentId, ctx);\n }\n }\n }, 500);\n global_hook_1.hook.off(shared_utils_1.HookEvents.FLUSH);\n global_hook_1.hook.on(shared_utils_1.HookEvents.FLUSH, handleFlush); // Connect done\n\n (0, timeline_marker_1.addTimelineMarker)({\n id: 'vue-devtools-init-backend',\n time: Date.now(),\n label: 'Vue Devtools connected',\n color: 0x41B883,\n all: true\n }, ctx);\n}\n\nfunction connectBridge() {\n // Subscriptions\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_SUBSCRIBE, ({\n type,\n payload\n }) => {\n (0, subscriptions_1.subscribe)(type, payload);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_UNSUBSCRIBE, ({\n type,\n payload\n }) => {\n (0, subscriptions_1.unsubscribe)(type, payload);\n }); // Tabs\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TAB_SWITCH, async tab => {\n ctx.currentTab = tab;\n await (0, highlighter_1.unHighlight)();\n }); // Apps\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_APP_LIST, () => {\n (0, app_1.sendApps)(ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_APP_SELECT, async id => {\n if (id == null) return;\n const record = ctx.appRecords.find(r => r.id === id);\n\n if (record) {\n await (0, app_1.selectApp)(record, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`App with id ${id} not found`);\n }\n }); // Components\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_TREE, ({\n instanceId,\n filter\n }) => {\n ctx.currentAppRecord.componentFilter = filter;\n (0, component_1.sendComponentTreeData)(ctx.currentAppRecord, instanceId, filter, null, ctx);\n (0, subscriptions_1.subscribe)(shared_utils_1.BridgeSubscriptions.COMPONENT_TREE, {\n instanceId\n });\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_SELECTED_DATA, instanceId => {\n (0, component_1.sendSelectedComponentData)(ctx.currentAppRecord, instanceId, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_EDIT_STATE, ({\n instanceId,\n dotPath,\n type,\n value,\n newKey,\n remove\n }) => {\n (0, component_1.editComponentState)(instanceId, dotPath, type, {\n value,\n newKey,\n remove\n }, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_INSPECT_DOM, async ({\n instanceId\n }) => {\n const instance = (0, component_1.getComponentInstance)(ctx.currentAppRecord, instanceId, ctx);\n\n if (instance) {\n const [el] = await ctx.currentAppRecord.backend.api.getComponentRootElements(instance);\n\n if (el) {\n // @ts-ignore\n window.__VUE_DEVTOOLS_INSPECT_TARGET__ = el;\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_COMPONENT_INSPECT_DOM, null);\n }\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_SCROLL_TO, async ({\n instanceId\n }) => {\n const instance = (0, component_1.getComponentInstance)(ctx.currentAppRecord, instanceId, ctx);\n\n if (instance) {\n const [el] = await ctx.currentAppRecord.backend.api.getComponentRootElements(instance);\n\n if (el) {\n if (typeof el.scrollIntoView === 'function') {\n el.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center'\n });\n } else {\n // Handle nodes that don't implement scrollIntoView\n const bounds = await ctx.currentAppRecord.backend.api.getComponentBounds(instance);\n const scrollTarget = document.createElement('div');\n scrollTarget.style.position = 'absolute';\n scrollTarget.style.width = `${bounds.width}px`;\n scrollTarget.style.height = `${bounds.height}px`;\n scrollTarget.style.top = `${bounds.top}px`;\n scrollTarget.style.left = `${bounds.left}px`;\n document.body.appendChild(scrollTarget);\n scrollTarget.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center'\n });\n setTimeout(() => {\n document.body.removeChild(scrollTarget);\n }, 2000);\n }\n\n (0, highlighter_1.highlight)(instance, ctx.currentAppRecord.backend, ctx);\n setTimeout(() => {\n (0, highlighter_1.unHighlight)();\n }, 2000);\n }\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_RENDER_CODE, async ({\n instanceId\n }) => {\n const instance = (0, component_1.getComponentInstance)(ctx.currentAppRecord, instanceId, ctx);\n\n if (instance) {\n const {\n code\n } = await ctx.currentAppRecord.backend.api.getComponentRenderCode(instance);\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_COMPONENT_RENDER_CODE, {\n instanceId,\n code\n });\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_STATE_ACTION, async ({\n value,\n actionIndex\n }) => {\n const rawAction = value._custom.actions[actionIndex];\n const action = (0, shared_utils_1.revive)(rawAction === null || rawAction === void 0 ? void 0 : rawAction.action);\n\n if (action) {\n try {\n await action();\n } catch (e) {\n console.error(e);\n }\n } else {\n console.warn(`Couldn't revive action ${actionIndex} from`, value);\n }\n }); // Highlighter\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_MOUSE_OVER, instanceId => {\n (0, highlighter_1.highlight)(ctx.currentAppRecord.instanceMap.get(instanceId), ctx.currentAppRecord.backend, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_MOUSE_OUT, () => {\n (0, highlighter_1.unHighlight)();\n }); // Component picker\n\n const componentPicker = new component_pick_1.default(ctx);\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_PICK, () => {\n componentPicker.startSelecting();\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_PICK_CANCELED, () => {\n componentPicker.stopSelecting();\n }); // Timeline\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_LAYER_LIST, () => {\n (0, timeline_1.sendTimelineLayers)(ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_SHOW_SCREENSHOT, ({\n screenshot\n }) => {\n (0, timeline_screenshot_1.showScreenshot)(screenshot, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_CLEAR, async () => {\n await (0, timeline_1.clearTimeline)(ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_EVENT_DATA, async ({\n id\n }) => {\n await (0, timeline_1.sendTimelineEventData)(id, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_LAYER_LOAD_EVENTS, ({\n appId,\n layerId\n }) => {\n (0, timeline_1.sendTimelineLayerEvents)(appId, layerId, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_LOAD_MARKERS, async () => {\n await (0, timeline_marker_1.sendTimelineMarkers)(ctx);\n }); // Custom inspectors\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_INSPECTOR_LIST, () => {\n (0, inspector_1.sendCustomInspectors)(ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_INSPECTOR_TREE, async ({\n inspectorId,\n appId,\n treeFilter\n }) => {\n const inspector = await (0, inspector_1.getInspectorWithAppId)(inspectorId, appId, ctx);\n\n if (inspector) {\n inspector.treeFilter = treeFilter;\n (0, inspector_1.sendInspectorTree)(inspector, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_INSPECTOR_STATE, async ({\n inspectorId,\n appId,\n nodeId\n }) => {\n const inspector = await (0, inspector_1.getInspectorWithAppId)(inspectorId, appId, ctx);\n\n if (inspector) {\n inspector.selectedNodeId = nodeId;\n (0, inspector_1.sendInspectorState)(inspector, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_INSPECTOR_EDIT_STATE, async ({\n inspectorId,\n appId,\n nodeId,\n path,\n type,\n payload\n }) => {\n const inspector = await (0, inspector_1.getInspectorWithAppId)(inspectorId, appId, ctx);\n\n if (inspector) {\n await (0, inspector_1.editInspectorState)(inspector, nodeId, path, type, payload, ctx);\n inspector.selectedNodeId = nodeId;\n await (0, inspector_1.sendInspectorState)(inspector, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_INSPECTOR_ACTION, async ({\n inspectorId,\n appId,\n actionIndex\n }) => {\n const inspector = await (0, inspector_1.getInspectorWithAppId)(inspectorId, appId, ctx);\n\n if (inspector) {\n const action = inspector.actions[actionIndex];\n\n try {\n await action.action();\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n }); // Misc\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_LOG, payload => {\n let value = payload.value;\n\n if (payload.serialized) {\n value = (0, shared_utils_1.parse)(value, payload.revive);\n } else if (payload.revive) {\n value = (0, shared_utils_1.revive)(value);\n } // eslint-disable-next-line no-console\n\n\n console[payload.level](value);\n }); // Plugins\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_DEVTOOLS_PLUGIN_LIST, async () => {\n await (0, plugin_1.sendPluginList)(ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_DEVTOOLS_PLUGIN_SETTING_UPDATED, ({\n pluginId,\n key,\n newValue,\n oldValue\n }) => {\n const settings = (0, shared_utils_1.getPluginSettings)(pluginId);\n ctx.hook.emit(shared_utils_1.HookEvents.PLUGIN_SETTINGS_SET, pluginId, settings);\n ctx.currentAppRecord.backend.api.callHook(\"setPluginSettings\"\n /* SET_PLUGIN_SETTINGS */\n , {\n app: ctx.currentAppRecord.options.app,\n pluginId,\n key,\n newValue,\n oldValue,\n settings\n });\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFHLENBQUMsTUFBSixDQUFXLEVBQVgsQ0FBYyw0QkFBYSw0QkFBM0IsRUFBeUQsWUFBVztBQUNsRSxVQUFNLDZCQUFlLEdBQWYsQ0FBTjtBQUNELEdBRkQ7QUFJQSxLQUFHLENBQUMsTUFBSixDQUFXLEVBQVgsQ0FBYyw0QkFBYSx1Q0FBM0IsRUFBb0UsQ0FBQztBQUFFLFlBQUY7QUFBWSxPQUFaO0FBQWlCLFlBQWpCO0FBQTJCO0FBQTNCLEdBQUQsS0FBMEM7QUFDNUcsVUFBTSxRQUFRLEdBQUcsc0NBQWtCLFFBQWxCLENBQWpCO0FBQ0EsT0FBRyxDQUFDLElBQUosQ0FBUyxJQUFULENBQWMsMEJBQVcsbUJBQXpCLEVBQThDLFFBQTlDLEVBQXdELFFBQXhEO0FBQ0EsT0FBRyxDQUFDLGdCQUFKLENBQXFCLE9BQXJCLENBQTZCLEdBQTdCLENBQWlDLFFBQWpDLENBQXlDO0FBQUE7QUFBekMsTUFBcUU7QUFDbkUsU0FBRyxFQUFFLEdBQUcsQ0FBQyxnQkFBSixDQUFxQixPQUFyQixDQUE2QixHQURpQztBQUVuRSxjQUZtRTtBQUduRSxTQUhtRTtBQUluRSxjQUptRTtBQUtuRSxjQUxtRTtBQU1uRTtBQU5tRSxLQUFyRTtBQVFELEdBWEQ7QUFZRCIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL2luZGV4LnRzPzZmMzciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG52YXIgX2EsIF9iO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5pbml0QmFja2VuZCA9IHZvaWQgMDtcbmNvbnN0IGFwcF9iYWNrZW5kX2FwaV8xID0gcmVxdWlyZShcIkB2dWUtZGV2dG9vbHMvYXBwLWJhY2tlbmQtYXBpXCIpO1xuY29uc3Qgc2hhcmVkX3V0aWxzXzEgPSByZXF1aXJlKFwiQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHNcIik7XG5jb25zdCBkZWJvdW5jZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJsb2Rhc2gvZGVib3VuY2VcIikpO1xuY29uc3QgZ2xvYmFsX2hvb2tfMSA9IHJlcXVpcmUoXCIuL2dsb2JhbC1ob29rXCIpO1xuY29uc3Qgc3Vic2NyaXB0aW9uc18xID0gcmVxdWlyZShcIi4vdXRpbC9zdWJzY3JpcHRpb25zXCIpO1xuY29uc3QgaGlnaGxpZ2h0ZXJfMSA9IHJlcXVpcmUoXCIuL2hpZ2hsaWdodGVyXCIpO1xuY29uc3QgdGltZWxpbmVfMSA9IHJlcXVpcmUoXCIuL3RpbWVsaW5lXCIpO1xuY29uc3QgY29tcG9uZW50X3BpY2tfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiLi9jb21wb25lbnQtcGlja1wiKSk7XG5jb25zdCBjb21wb25lbnRfMSA9IHJlcXVpcmUoXCIuL2NvbXBvbmVudFwiKTtcbmNvbnN0IHBsdWdpbl8xID0gcmVxdWlyZShcIi4vcGx1Z2luXCIpO1xuY29uc3QgYXBwXzEgPSByZXF1aXJlKFwiLi9hcHBcIik7XG5jb25zdCBpbnNwZWN0b3JfMSA9IHJlcXVpcmUoXCIuL2luc3BlY3RvclwiKTtcbmNvbnN0IHRpbWVsaW5lX3NjcmVlbnNob3RfMSA9IHJlcXVpcmUoXCIuL3RpbWVsaW5lLXNjcmVlbnNob3RcIik7XG5jb25zdCBwZXJmXzEgPSByZXF1aXJlKFwiLi9wZXJmXCIpO1xuY29uc3QgcGFnZV9jb25maWdfMSA9IHJlcXVpcmUoXCIuL3BhZ2UtY29uZmlnXCIpO1xuY29uc3QgdGltZWxpbmVfbWFya2VyXzEgPSByZXF1aXJlKFwiLi90aW1lbGluZS1tYXJrZXJcIik7XG5sZXQgY3R4ID0gKF9hID0gc2hhcmVkX3V0aWxzXzEudGFyZ2V0Ll9fdmRldnRvb2xzX2N0eCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbDtcbmxldCBjb25uZWN0ZWQgPSAoX2IgPSBzaGFyZWRfdXRpbHNfMS50YXJnZXQuX192ZGV2dG9vbHNfY29ubmVjdGVkKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBmYWxzZTtcbmFzeW5jIGZ1bmN0aW9uIGluaXRCYWNrZW5kKGJyaWRnZSkge1xuICAgIGF3YWl0ICgwLCBzaGFyZWRfdXRpbHNfMS5pbml0U2hhcmVkRGF0YSkoe1xuICAgICAgICBicmlkZ2UsXG4gICAgICAgIHBlcnNpc3Q6IGZhbHNlLFxuICAgIH0pO1xuICAgICgwLCBwYWdlX2NvbmZpZ18xLmluaXRPblBhZ2VDb25maWcpKCk7XG4gICAgaWYgKCFjb25uZWN0ZWQpIHtcbiAgICAgICAgLy8gY29ubmVjdGVkID0gZmFsc2VcbiAgICAgICAgY3R4ID0gc2hhcmVkX3V0aWxzXzEudGFyZ2V0Ll9fdmRldnRvb2xzX2N0eCA9ICgwLCBhcHBfYmFja2VuZF9hcGlfMS5jcmVhdGVCYWNrZW5kQ29udGV4dCkoe1xuICAgICAgICAgICAgYnJpZGdlLFxuICAgICAgICAgICAgaG9vazogZ2xvYmFsX2hvb2tfMS5ob29rLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGdsb2JhbF9ob29rXzEuaG9vay5WdWUpIHtcbiAgICAgICAgICAgIGNvbm5lY3QoKTtcbiAgICAgICAgICAgICgwLCBhcHBfMS5fbGVnYWN5X2dldEFuZFJlZ2lzdGVyQXBwcykoY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5JTklULCAoKSA9PiB7XG4gICAgICAgICAgICAoMCwgYXBwXzEuX2xlZ2FjeV9nZXRBbmRSZWdpc3RlckFwcHMpKGN0eCk7XG4gICAgICAgIH0pO1xuICAgICAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5BUFBfQURELCBhc3luYyAoYXBwKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCAoMCwgYXBwXzEuX2xlZ2FjeV9nZXRBbmRSZWdpc3RlckFwcHMpKGN0eCk7XG4gICAgICAgICAgICBhd2FpdCAoMCwgYXBwXzEucmVnaXN0ZXJBcHApKGFwcCwgY3R4KTtcbiAgICAgICAgICAgIC8vIFdpbGwgaW5pdCBjb25uZWN0XG4gICAgICAgICAgICBnbG9iYWxfaG9va18xLmhvb2suZW1pdChzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLklOSVQpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gQWRkIGFwcHMgdGhhdCBhbHJlYWR5IHNlbnQgaW5pdFxuICAgICAgICBpZiAoZ2xvYmFsX2hvb2tfMS5ob29rLmFwcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBnbG9iYWxfaG9va18xLmhvb2suYXBwcy5mb3JFYWNoKGFwcCA9PiB7XG4gICAgICAgICAgICAgICAgKDAsIGFwcF8xLnJlZ2lzdGVyQXBwKShhcHAsIGN0eCk7XG4gICAgICAgICAgICAgICAgY29ubmVjdCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGN0eC5icmlkZ2UgPSBicmlkZ2U7XG4gICAgICAgIGNvbm5lY3RCcmlkZ2UoKTtcbiAgICB9XG59XG5leHBvcnRzLmluaXRCYWNrZW5kID0gaW5pdEJhY2tlbmQ7XG5hc3luYyBmdW5jdGlvbiBjb25uZWN0KCkge1xuICAgIGlmIChjb25uZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25uZWN0ZWQgPSBzaGFyZWRfdXRpbHNfMS50YXJnZXQuX192ZGV2dG9vbHNfY29ubmVjdGVkID0gdHJ1ZTtcbiAgICBhd2FpdCAoMCwgYXBwXzEud2FpdEZvckFwcHNSZWdpc3RyYXRpb24pKCk7XG4gICAgY29ubmVjdEJyaWRnZSgpO1xuICAgIGN0eC5jdXJyZW50VGFiID0gc2hhcmVkX3V0aWxzXzEuQnVpbHRpblRhYnMuQ09NUE9ORU5UUztcbiAgICAvLyBBcHBzXG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuQVBQX1VOTU9VTlQsIGFwcCA9PiB7XG4gICAgICAgICgwLCBhcHBfMS5yZW1vdmVBcHApKGFwcCwgY3R4KTtcbiAgICB9KTtcbiAgICAvLyBDb21wb25lbnRzXG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuQ09NUE9ORU5UX1VQREFURUQsIGFzeW5jIChhcHAsIHVpZCwgcGFyZW50VWlkLCBjb21wb25lbnQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBpZDtcbiAgICAgICAgICAgIGxldCBhcHBSZWNvcmQ7XG4gICAgICAgICAgICBpZiAoYXBwICYmIHVpZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBhd2FpdCAoMCwgY29tcG9uZW50XzEuZ2V0Q29tcG9uZW50SWQpKGFwcCwgdWlkLCBjb21wb25lbnQsIGN0eCk7XG4gICAgICAgICAgICAgICAgYXBwUmVjb3JkID0gYXdhaXQgKDAsIGFwcF8xLmdldEFwcFJlY29yZCkoYXBwLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWQgPSBjdHguY3VycmVudEluc3BlY3RlZENvbXBvbmVudElkO1xuICAgICAgICAgICAgICAgIGFwcFJlY29yZCA9IGN0eC5jdXJyZW50QXBwUmVjb3JkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVXBkYXRlIGNvbXBvbmVudCBpbnNwZWN0b3JcbiAgICAgICAgICAgIGlmIChpZCAmJiAoMCwgc3Vic2NyaXB0aW9uc18xLmlzU3Vic2NyaWJlZCkoc2hhcmVkX3V0aWxzXzEuQnJpZGdlU3Vic2NyaXB0aW9ucy5TRUxFQ1RFRF9DT01QT05FTlRfREFUQSwgc3ViID0+IHN1Yi5wYXlsb2FkLmluc3RhbmNlSWQgPT09IGlkKSkge1xuICAgICAgICAgICAgICAgICgwLCBjb21wb25lbnRfMS5zZW5kU2VsZWN0ZWRDb21wb25lbnREYXRhKShhcHBSZWNvcmQsIGlkLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVXBkYXRlIHRyZWUgKHRhZ3MpXG4gICAgICAgICAgICBpZiAoKDAsIHN1YnNjcmlwdGlvbnNfMS5pc1N1YnNjcmliZWQpKHNoYXJlZF91dGlsc18xLkJyaWRnZVN1YnNjcmlwdGlvbnMuQ09NUE9ORU5UX1RSRUUsIHN1YiA9PiBzdWIucGF5bG9hZC5pbnN0YW5jZUlkID09PSBpZCkpIHtcbiAgICAgICAgICAgICAgICAoMCwgY29tcG9uZW50XzEuc2VuZENvbXBvbmVudFRyZWVEYXRhKShhcHBSZWNvcmQsIGlkLCBhcHBSZWNvcmQuY29tcG9uZW50RmlsdGVyLCAwLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuQ09NUE9ORU5UX0FEREVELCBhc3luYyAoYXBwLCB1aWQsIHBhcmVudFVpZCwgY29tcG9uZW50KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IGF3YWl0ICgwLCBjb21wb25lbnRfMS5nZXRDb21wb25lbnRJZCkoYXBwLCB1aWQsIGNvbXBvbmVudCwgY3R4KTtcbiAgICAgICAgICAgIGNvbnN0IGFwcFJlY29yZCA9IGF3YWl0ICgwLCBhcHBfMS5nZXRBcHBSZWNvcmQpKGFwcCwgY3R4KTtcbiAgICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50Ll9fVlVFX0RFVlRPT0xTX1VJRF9fID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Ll9fVlVFX0RFVlRPT0xTX1VJRF9fID0gaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghYXBwUmVjb3JkLmluc3RhbmNlTWFwLmhhcyhpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwUmVjb3JkLmluc3RhbmNlTWFwLnNldChpZCwgY29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFyZW50VWlkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRJbnN0YW5jZXMgPSBhd2FpdCBhcHBSZWNvcmQuYmFja2VuZC5hcGkud2Fsa0NvbXBvbmVudFBhcmVudHMoY29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50SW5zdGFuY2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayB0d28gcGFyZW50cyBsZXZlbCB0byB1cGRhdGUgYGhhc0NoaWxkcmVuXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMiAmJiBpIDwgcGFyZW50SW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRJZCA9IGF3YWl0ICgwLCBjb21wb25lbnRfMS5nZXRDb21wb25lbnRJZCkoYXBwLCBwYXJlbnRVaWQsIHBhcmVudEluc3RhbmNlc1tpXSwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoMCwgc3Vic2NyaXB0aW9uc18xLmlzU3Vic2NyaWJlZCkoc2hhcmVkX3V0aWxzXzEuQnJpZGdlU3Vic2NyaXB0aW9ucy5DT01QT05FTlRfVFJFRSwgc3ViID0+IHN1Yi5wYXlsb2FkLmluc3RhbmNlSWQgPT09IHBhcmVudElkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBjb21wb25lbnRfMS5zZW5kQ29tcG9uZW50VHJlZURhdGEpKGFwcFJlY29yZCwgcGFyZW50SWQsIGFwcFJlY29yZC5jb21wb25lbnRGaWx0ZXIsIG51bGwsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3R4LmN1cnJlbnRJbnNwZWN0ZWRDb21wb25lbnRJZCA9PT0gaWQpIHtcbiAgICAgICAgICAgICAgICAoMCwgY29tcG9uZW50XzEuc2VuZFNlbGVjdGVkQ29tcG9uZW50RGF0YSkoYXBwUmVjb3JkLCBpZCwgY3R4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKHNoYXJlZF91dGlsc18xLlNoYXJlZERhdGEuZGVidWdJbmZvKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGdsb2JhbF9ob29rXzEuaG9vay5vbihzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLkNPTVBPTkVOVF9SRU1PVkVELCBhc3luYyAoYXBwLCB1aWQsIHBhcmVudFVpZCwgY29tcG9uZW50KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBhcHBSZWNvcmQgPSBhd2FpdCAoMCwgYXBwXzEuZ2V0QXBwUmVjb3JkKShhcHAsIGN0eCk7XG4gICAgICAgICAgICBpZiAocGFyZW50VWlkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRJbnN0YW5jZXMgPSBhd2FpdCBhcHBSZWNvcmQuYmFja2VuZC5hcGkud2Fsa0NvbXBvbmVudFBhcmVudHMoY29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50SW5zdGFuY2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRJZCA9IGF3YWl0ICgwLCBjb21wb25lbnRfMS5nZXRDb21wb25lbnRJZCkoYXBwLCBwYXJlbnRVaWQsIHBhcmVudEluc3RhbmNlc1swXSwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCgwLCBzdWJzY3JpcHRpb25zXzEuaXNTdWJzY3JpYmVkKShzaGFyZWRfdXRpbHNfMS5CcmlkZ2VTdWJzY3JpcHRpb25zLkNPTVBPTkVOVF9UUkVFLCBzdWIgPT4gc3ViLnBheWxvYWQuaW5zdGFuY2VJZCA9PT0gcGFyZW50SWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCBjb21wb25lbnRfMS5zZW5kQ29tcG9uZW50VHJlZURhdGEpKGF3YWl0ICgwLCBhcHBfMS5nZXRBcHBSZWNvcmQpKGFwcCwgY3R4KSwgcGFyZW50SWQsIGFwcFJlY29yZC5jb21wb25lbnRGaWx0ZXIsIG51bGwsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFyZWRfdXRpbHNfMS5TaGFyZWREYXRhLmRlYnVnSW5mbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaWQgPSBhd2FpdCAoMCwgY29tcG9uZW50XzEuZ2V0Q29tcG9uZW50SWQpKGFwcCwgdWlkLCBjb21wb25lbnQsIGN0eCk7XG4gICAgICAgICAgICBpZiAoKDAsIHN1YnNjcmlwdGlvbnNfMS5pc1N1YnNjcmliZWQpKHNoYXJlZF91dGlsc18xLkJyaWRnZVN1YnNjcmlwdGlvbnMuU0VMRUNURURfQ09NUE9ORU5UX0RBVEEsIHN1YiA9PiBzdWIucGF5bG9hZC5pbnN0YW5jZUlkID09PSBpZCkpIHtcbiAgICAgICAgICAgICAgICAoMCwgY29tcG9uZW50XzEuc2VuZEVtcHR5Q29tcG9uZW50RGF0YSkoaWQsIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhcHBSZWNvcmQuaW5zdGFuY2VNYXAuZGVsZXRlKGlkKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKHNoYXJlZF91dGlsc18xLlNoYXJlZERhdGEuZGVidWdJbmZvKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vIENvbXBvbmVudCBwZXJmXG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuUEVSRk9STUFOQ0VfU1RBUlQsIChhcHAsIHVpZCwgdm0sIHR5cGUsIHRpbWUpID0+IHtcbiAgICAgICAgKDAsIHBlcmZfMS5wZXJmb3JtYW5jZU1hcmtTdGFydCkoYXBwLCB1aWQsIHZtLCB0eXBlLCB0aW1lLCBjdHgpO1xuICAgIH0pO1xuICAgIGdsb2JhbF9ob29rXzEuaG9vay5vbihzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLlBFUkZPUk1BTkNFX0VORCwgKGFwcCwgdWlkLCB2bSwgdHlwZSwgdGltZSkgPT4ge1xuICAgICAgICAoMCwgcGVyZl8xLnBlcmZvcm1hbmNlTWFya0VuZCkoYXBwLCB1aWQsIHZtLCB0eXBlLCB0aW1lLCBjdHgpO1xuICAgIH0pO1xuICAgIC8vIEhpZ2hsaWdodGVyXG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuQ09NUE9ORU5UX0hJR0hMSUdIVCwgaW5zdGFuY2VJZCA9PiB7XG4gICAgICAgICgwLCBoaWdobGlnaHRlcl8xLmhpZ2hsaWdodCkoY3R4LmN1cnJlbnRBcHBSZWNvcmQuaW5zdGFuY2VNYXAuZ2V0KGluc3RhbmNlSWQpLCBjdHguY3VycmVudEFwcFJlY29yZC5iYWNrZW5kLCBjdHgpO1xuICAgIH0pO1xuICAgIGdsb2JhbF9ob29rXzEuaG9vay5vbihzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLkNPTVBPTkVOVF9VTkhJR0hMSUdIVCwgKCkgPT4ge1xuICAgICAgICAoMCwgaGlnaGxpZ2h0ZXJfMS51bkhpZ2hsaWdodCkoKTtcbiAgICB9KTtcbiAgICAvLyBUaW1lbGluZVxuICAgICgwLCB0aW1lbGluZV8xLnNldHVwVGltZWxpbmUpKGN0eCk7XG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuVElNRUxJTkVfTEFZRVJfQURERUQsIGFzeW5jIChvcHRpb25zLCBwbHVnaW4pID0+IHtcbiAgICAgICAgY29uc3QgYXBwUmVjb3JkID0gYXdhaXQgKDAsIGFwcF8xLmdldEFwcFJlY29yZCkocGx1Z2luLmRlc2NyaXB0b3IuYXBwLCBjdHgpO1xuICAgICAgICBjdHgudGltZWxpbmVMYXllcnMucHVzaCh7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgYXBwUmVjb3JkLFxuICAgICAgICAgICAgcGx1Z2luLFxuICAgICAgICAgICAgZXZlbnRzOiBbXSxcbiAgICAgICAgfSk7XG4gICAgICAgIGN0eC5icmlkZ2Uuc2VuZChzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fRlJPTlRfVElNRUxJTkVfTEFZRVJfQURELCB7fSk7XG4gICAgfSk7XG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuVElNRUxJTkVfRVZFTlRfQURERUQsIGFzeW5jIChvcHRpb25zLCBwbHVnaW4pID0+IHtcbiAgICAgICAgYXdhaXQgKDAsIHRpbWVsaW5lXzEuYWRkVGltZWxpbmVFdmVudCkob3B0aW9ucywgcGx1Z2luLmRlc2NyaXB0b3IuYXBwLCBjdHgpO1xuICAgIH0pO1xuICAgIC8vIEN1c3RvbSBpbnNwZWN0b3JzXG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuQ1VTVE9NX0lOU1BFQ1RPUl9BREQsIGFzeW5jIChvcHRpb25zLCBwbHVnaW4pID0+IHtcbiAgICAgICAgY29uc3QgYXBwUmVjb3JkID0gYXdhaXQgKDAsIGFwcF8xLmdldEFwcFJlY29yZCkocGx1Z2luLmRlc2NyaXB0b3IuYXBwLCBjdHgpO1xuICAgICAgICBjdHguY3VzdG9tSW5zcGVjdG9ycy5wdXNoKHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBhcHBSZWNvcmQsXG4gICAgICAgICAgICBwbHVnaW4sXG4gICAgICAgICAgICB0cmVlRmlsdGVyOiAnJyxcbiAgICAgICAgICAgIHNlbGVjdGVkTm9kZUlkOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgICAgY3R4LmJyaWRnZS5zZW5kKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19GUk9OVF9DVVNUT01fSU5TUEVDVE9SX0FERCwge30pO1xuICAgIH0pO1xuICAgIGdsb2JhbF9ob29rXzEuaG9vay5vbihzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLkNVU1RPTV9JTlNQRUNUT1JfU0VORF9UUkVFLCAoaW5zcGVjdG9ySWQsIHBsdWdpbikgPT4ge1xuICAgICAgICBjb25zdCBpbnNwZWN0b3IgPSAoMCwgaW5zcGVjdG9yXzEuZ2V0SW5zcGVjdG9yKShpbnNwZWN0b3JJZCwgcGx1Z2luLmRlc2NyaXB0b3IuYXBwLCBjdHgpO1xuICAgICAgICBpZiAoaW5zcGVjdG9yKSB7XG4gICAgICAgICAgICAoMCwgaW5zcGVjdG9yXzEuc2VuZEluc3BlY3RvclRyZWUpKGluc3BlY3RvciwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzaGFyZWRfdXRpbHNfMS5TaGFyZWREYXRhLmRlYnVnSW5mbykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBJbnNwZWN0b3IgJHtpbnNwZWN0b3JJZH0gbm90IGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5DVVNUT01fSU5TUEVDVE9SX1NFTkRfU1RBVEUsIChpbnNwZWN0b3JJZCwgcGx1Z2luKSA9PiB7XG4gICAgICAgIGNvbnN0IGluc3BlY3RvciA9ICgwLCBpbnNwZWN0b3JfMS5nZXRJbnNwZWN0b3IpKGluc3BlY3RvcklkLCBwbHVnaW4uZGVzY3JpcHRvci5hcHAsIGN0eCk7XG4gICAgICAgIGlmIChpbnNwZWN0b3IpIHtcbiAgICAgICAgICAgICgwLCBpbnNwZWN0b3JfMS5zZW5kSW5zcGVjdG9yU3RhdGUpKGluc3BlY3RvciwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzaGFyZWRfdXRpbHNfMS5TaGFyZWREYXRhLmRlYnVnSW5mbykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBJbnNwZWN0b3IgJHtpbnNwZWN0b3JJZH0gbm90IGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5DVVNUT01fSU5TUEVDVE9SX1NFTEVDVF9OT0RFLCBhc3luYyAoaW5zcGVjdG9ySWQsIG5vZGVJZCwgcGx1Z2luKSA9PiB7XG4gICAgICAgIGNvbnN0IGluc3BlY3RvciA9ICgwLCBpbnNwZWN0b3JfMS5nZXRJbnNwZWN0b3IpKGluc3BlY3RvcklkLCBwbHVnaW4uZGVzY3JpcHRvci5hcHAsIGN0eCk7XG4gICAgICAgIGlmIChpbnNwZWN0b3IpIHtcbiAgICAgICAgICAgIGF3YWl0ICgwLCBpbnNwZWN0b3JfMS5zZWxlY3RJbnNwZWN0b3JOb2RlKShpbnNwZWN0b3IsIG5vZGVJZCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzaGFyZWRfdXRpbHNfMS5TaGFyZWREYXRhLmRlYnVnSW5mbykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBJbnNwZWN0b3IgJHtpbnNwZWN0b3JJZH0gbm90IGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBQbHVnaW5zXG4gICAgKDAsIHBsdWdpbl8xLmFkZFByZXZpb3VzbHlSZWdpc3RlcmVkUGx1Z2lucykoY3R4KTtcbiAgICAoMCwgcGx1Z2luXzEuYWRkUXVldWVkUGx1Z2lucykoY3R4KTtcbiAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5TRVRVUF9ERVZUT09MU19QTFVHSU4sIGFzeW5jIChwbHVnaW5EZXNjcmlwdG9yLCBzZXR1cEZuKSA9PiB7XG4gICAgICAgIGF3YWl0ICgwLCBwbHVnaW5fMS5hZGRQbHVnaW4pKHsgcGx1Z2luRGVzY3JpcHRvciwgc2V0dXBGbiB9LCBjdHgpO1xuICAgIH0pO1xuICAgIHNoYXJlZF91dGlsc18xLnRhcmdldC5fX1ZVRV9ERVZUT09MU19QTFVHSU5fQVBJX0FWQUlMQUJMRV9fID0gdHJ1ZTtcbiAgICAvLyBMZWdhY3kgZmx1c2hcbiAgICBjb25zdCBoYW5kbGVGbHVzaCA9ICgwLCBkZWJvdW5jZV8xLmRlZmF1bHQpKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoKF9hID0gY3R4LmN1cnJlbnRBcHBSZWNvcmQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5iYWNrZW5kLm9wdGlvbnMuZmVhdHVyZXMuaW5jbHVkZXMoYXBwX2JhY2tlbmRfYXBpXzEuQnVpbHRpbkJhY2tlbmRGZWF0dXJlLkZMVVNIKSkge1xuICAgICAgICAgICAgKDAsIGNvbXBvbmVudF8xLnNlbmRDb21wb25lbnRUcmVlRGF0YSkoY3R4LmN1cnJlbnRBcHBSZWNvcmQsICdfcm9vdCcsIGN0eC5jdXJyZW50QXBwUmVjb3JkLmNvbXBvbmVudEZpbHRlciwgbnVsbCwgY3R4KTtcbiAgICAgICAgICAgIGlmIChjdHguY3VycmVudEluc3BlY3RlZENvbXBvbmVudElkKSB7XG4gICAgICAgICAgICAgICAgKDAsIGNvbXBvbmVudF8xLnNlbmRTZWxlY3RlZENvbXBvbmVudERhdGEpKGN0eC5jdXJyZW50QXBwUmVjb3JkLCBjdHguY3VycmVudEluc3BlY3RlZENvbXBvbmVudElkLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgNTAwKTtcbiAgICBnbG9iYWxfaG9va18xLmhvb2sub2ZmKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuRkxVU0gpO1xuICAgIGdsb2JhbF9ob29rXzEuaG9vay5vbihzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLkZMVVNILCBoYW5kbGVGbHVzaCk7XG4gICAgLy8gQ29ubmVjdCBkb25lXG4gICAgKDAsIHRpbWVsaW5lX21hcmtlcl8xLmFkZFRpbWVsaW5lTWFya2VyKSh7XG4gICAgICAgIGlkOiAndnVlLWRldnRvb2xzLWluaXQtYmFja2VuZCcsXG4gICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgIGxhYmVsOiAnVnVlIERldnRvb2xzIGNvbm5lY3RlZCcsXG4gICAgICAgIGNvbG9yOiAweDQxQjg4MyxcbiAgICAgICAgYWxsOiB0cnVlLFxuICAgIH0sIGN0eCk7XG59XG5mdW5jdGlvbiBjb25uZWN0QnJpZGdlKCkge1xuICAgIC8vIFN1YnNjcmlwdGlvbnNcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX1NVQlNDUklCRSwgKHsgdHlwZSwgcGF5bG9hZCB9KSA9PiB7XG4gICAgICAgICgwLCBzdWJzY3JpcHRpb25zXzEuc3Vic2NyaWJlKSh0eXBlLCBwYXlsb2FkKTtcbiAgICB9KTtcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX1VOU1VCU0NSSUJFLCAoeyB0eXBlLCBwYXlsb2FkIH0pID0+IHtcbiAgICAgICAgKDAsIHN1YnNjcmlwdGlvbnNfMS51bnN1YnNjcmliZSkodHlwZSwgcGF5bG9hZCk7XG4gICAgfSk7XG4gICAgLy8gVGFic1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfVEFCX1NXSVRDSCwgYXN5bmMgKHRhYikgPT4ge1xuICAgICAgICBjdHguY3VycmVudFRhYiA9IHRhYjtcbiAgICAgICAgYXdhaXQgKDAsIGhpZ2hsaWdodGVyXzEudW5IaWdobGlnaHQpKCk7XG4gICAgfSk7XG4gICAgLy8gQXBwc1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQVBQX0xJU1QsICgpID0+IHtcbiAgICAgICAgKDAsIGFwcF8xLnNlbmRBcHBzKShjdHgpO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQVBQX1NFTEVDVCwgYXN5bmMgKGlkKSA9PiB7XG4gICAgICAgIGlmIChpZCA9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCByZWNvcmQgPSBjdHguYXBwUmVjb3Jkcy5maW5kKHIgPT4gci5pZCA9PT0gaWQpO1xuICAgICAgICBpZiAocmVjb3JkKSB7XG4gICAgICAgICAgICBhd2FpdCAoMCwgYXBwXzEuc2VsZWN0QXBwKShyZWNvcmQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgQXBwIHdpdGggaWQgJHtpZH0gbm90IGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBDb21wb25lbnRzXG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DT01QT05FTlRfVFJFRSwgKHsgaW5zdGFuY2VJZCwgZmlsdGVyIH0pID0+IHtcbiAgICAgICAgY3R4LmN1cnJlbnRBcHBSZWNvcmQuY29tcG9uZW50RmlsdGVyID0gZmlsdGVyO1xuICAgICAgICAoMCwgY29tcG9uZW50XzEuc2VuZENvbXBvbmVudFRyZWVEYXRhKShjdHguY3VycmVudEFwcFJlY29yZCwgaW5zdGFuY2VJZCwgZmlsdGVyLCBudWxsLCBjdHgpO1xuICAgICAgICAoMCwgc3Vic2NyaXB0aW9uc18xLnN1YnNjcmliZSkoc2hhcmVkX3V0aWxzXzEuQnJpZGdlU3Vic2NyaXB0aW9ucy5DT01QT05FTlRfVFJFRSwgeyBpbnN0YW5jZUlkIH0pO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQ09NUE9ORU5UX1NFTEVDVEVEX0RBVEEsIChpbnN0YW5jZUlkKSA9PiB7XG4gICAgICAgICgwLCBjb21wb25lbnRfMS5zZW5kU2VsZWN0ZWRDb21wb25lbnREYXRhKShjdHguY3VycmVudEFwcFJlY29yZCwgaW5zdGFuY2VJZCwgY3R4KTtcbiAgICB9KTtcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX0NPTVBPTkVOVF9FRElUX1NUQVRFLCAoeyBpbnN0YW5jZUlkLCBkb3RQYXRoLCB0eXBlLCB2YWx1ZSwgbmV3S2V5LCByZW1vdmUgfSkgPT4ge1xuICAgICAgICAoMCwgY29tcG9uZW50XzEuZWRpdENvbXBvbmVudFN0YXRlKShpbnN0YW5jZUlkLCBkb3RQYXRoLCB0eXBlLCB7IHZhbHVlLCBuZXdLZXksIHJlbW92ZSB9LCBjdHgpO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQ09NUE9ORU5UX0lOU1BFQ1RfRE9NLCBhc3luYyAoeyBpbnN0YW5jZUlkIH0pID0+IHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSAoMCwgY29tcG9uZW50XzEuZ2V0Q29tcG9uZW50SW5zdGFuY2UpKGN0eC5jdXJyZW50QXBwUmVjb3JkLCBpbnN0YW5jZUlkLCBjdHgpO1xuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IFtlbF0gPSBhd2FpdCBjdHguY3VycmVudEFwcFJlY29yZC5iYWNrZW5kLmFwaS5nZXRDb21wb25lbnRSb290RWxlbWVudHMoaW5zdGFuY2UpO1xuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIHdpbmRvdy5fX1ZVRV9ERVZUT09MU19JTlNQRUNUX1RBUkdFVF9fID0gZWw7XG4gICAgICAgICAgICAgICAgY3R4LmJyaWRnZS5zZW5kKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19GUk9OVF9DT01QT05FTlRfSU5TUEVDVF9ET00sIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DT01QT05FTlRfU0NST0xMX1RPLCBhc3luYyAoeyBpbnN0YW5jZUlkIH0pID0+IHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSAoMCwgY29tcG9uZW50XzEuZ2V0Q29tcG9uZW50SW5zdGFuY2UpKGN0eC5jdXJyZW50QXBwUmVjb3JkLCBpbnN0YW5jZUlkLCBjdHgpO1xuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IFtlbF0gPSBhd2FpdCBjdHguY3VycmVudEFwcFJlY29yZC5iYWNrZW5kLmFwaS5nZXRDb21wb25lbnRSb290RWxlbWVudHMoaW5zdGFuY2UpO1xuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbC5zY3JvbGxJbnRvVmlldyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBlbC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jazogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmU6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBub2RlcyB0aGF0IGRvbid0IGltcGxlbWVudCBzY3JvbGxJbnRvVmlld1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib3VuZHMgPSBhd2FpdCBjdHguY3VycmVudEFwcFJlY29yZC5iYWNrZW5kLmFwaS5nZXRDb21wb25lbnRCb3VuZHMoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JvbGxUYXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVGFyZ2V0LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVGFyZ2V0LnN0eWxlLndpZHRoID0gYCR7Ym91bmRzLndpZHRofXB4YDtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVGFyZ2V0LnN0eWxlLmhlaWdodCA9IGAke2JvdW5kcy5oZWlnaHR9cHhgO1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUYXJnZXQuc3R5bGUudG9wID0gYCR7Ym91bmRzLnRvcH1weGA7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFRhcmdldC5zdHlsZS5sZWZ0ID0gYCR7Ym91bmRzLmxlZnR9cHhgO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcm9sbFRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFRhcmdldC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jazogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmU6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNjcm9sbFRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAoMCwgaGlnaGxpZ2h0ZXJfMS5oaWdobGlnaHQpKGluc3RhbmNlLCBjdHguY3VycmVudEFwcFJlY29yZC5iYWNrZW5kLCBjdHgpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAoMCwgaGlnaGxpZ2h0ZXJfMS51bkhpZ2hsaWdodCkoKTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQ09NUE9ORU5UX1JFTkRFUl9DT0RFLCBhc3luYyAoeyBpbnN0YW5jZUlkIH0pID0+IHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSAoMCwgY29tcG9uZW50XzEuZ2V0Q29tcG9uZW50SW5zdGFuY2UpKGN0eC5jdXJyZW50QXBwUmVjb3JkLCBpbnN0YW5jZUlkLCBjdHgpO1xuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gYXdhaXQgY3R4LmN1cnJlbnRBcHBSZWNvcmQuYmFja2VuZC5hcGkuZ2V0Q29tcG9uZW50UmVuZGVyQ29kZShpbnN0YW5jZSk7XG4gICAgICAgICAgICBjdHguYnJpZGdlLnNlbmQoc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0ZST05UX0NPTVBPTkVOVF9SRU5ERVJfQ09ERSwge1xuICAgICAgICAgICAgICAgIGluc3RhbmNlSWQsXG4gICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DVVNUT01fU1RBVEVfQUNUSU9OLCBhc3luYyAoeyB2YWx1ZSwgYWN0aW9uSW5kZXggfSkgPT4ge1xuICAgICAgICBjb25zdCByYXdBY3Rpb24gPSB2YWx1ZS5fY3VzdG9tLmFjdGlvbnNbYWN0aW9uSW5kZXhdO1xuICAgICAgICBjb25zdCBhY3Rpb24gPSAoMCwgc2hhcmVkX3V0aWxzXzEucmV2aXZlKShyYXdBY3Rpb24gPT09IG51bGwgfHwgcmF3QWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByYXdBY3Rpb24uYWN0aW9uKTtcbiAgICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBhY3Rpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgQ291bGRuJ3QgcmV2aXZlIGFjdGlvbiAke2FjdGlvbkluZGV4fSBmcm9tYCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gSGlnaGxpZ2h0ZXJcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX0NPTVBPTkVOVF9NT1VTRV9PVkVSLCBpbnN0YW5jZUlkID0+IHtcbiAgICAgICAgKDAsIGhpZ2hsaWdodGVyXzEuaGlnaGxpZ2h0KShjdHguY3VycmVudEFwcFJlY29yZC5pbnN0YW5jZU1hcC5nZXQoaW5zdGFuY2VJZCksIGN0eC5jdXJyZW50QXBwUmVjb3JkLmJhY2tlbmQsIGN0eCk7XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DT01QT05FTlRfTU9VU0VfT1VULCAoKSA9PiB7XG4gICAgICAgICgwLCBoaWdobGlnaHRlcl8xLnVuSGlnaGxpZ2h0KSgpO1xuICAgIH0pO1xuICAgIC8vIENvbXBvbmVudCBwaWNrZXJcbiAgICBjb25zdCBjb21wb25lbnRQaWNrZXIgPSBuZXcgY29tcG9uZW50X3BpY2tfMS5kZWZhdWx0KGN0eCk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DT01QT05FTlRfUElDSywgKCkgPT4ge1xuICAgICAgICBjb21wb25lbnRQaWNrZXIuc3RhcnRTZWxlY3RpbmcoKTtcbiAgICB9KTtcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX0NPTVBPTkVOVF9QSUNLX0NBTkNFTEVELCAoKSA9PiB7XG4gICAgICAgIGNvbXBvbmVudFBpY2tlci5zdG9wU2VsZWN0aW5nKCk7XG4gICAgfSk7XG4gICAgLy8gVGltZWxpbmVcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX1RJTUVMSU5FX0xBWUVSX0xJU1QsICgpID0+IHtcbiAgICAgICAgKDAsIHRpbWVsaW5lXzEuc2VuZFRpbWVsaW5lTGF5ZXJzKShjdHgpO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfVElNRUxJTkVfU0hPV19TQ1JFRU5TSE9ULCAoeyBzY3JlZW5zaG90IH0pID0+IHtcbiAgICAgICAgKDAsIHRpbWVsaW5lX3NjcmVlbnNob3RfMS5zaG93U2NyZWVuc2hvdCkoc2NyZWVuc2hvdCwgY3R4KTtcbiAgICB9KTtcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX1RJTUVMSU5FX0NMRUFSLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0ICgwLCB0aW1lbGluZV8xLmNsZWFyVGltZWxpbmUpKGN0eCk7XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19USU1FTElORV9FVkVOVF9EQVRBLCBhc3luYyAoeyBpZCB9KSA9PiB7XG4gICAgICAgIGF3YWl0ICgwLCB0aW1lbGluZV8xLnNlbmRUaW1lbGluZUV2ZW50RGF0YSkoaWQsIGN0eCk7XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19USU1FTElORV9MQVlFUl9MT0FEX0VWRU5UUywgKHsgYXBwSWQsIGxheWVySWQgfSkgPT4ge1xuICAgICAgICAoMCwgdGltZWxpbmVfMS5zZW5kVGltZWxpbmVMYXllckV2ZW50cykoYXBwSWQsIGxheWVySWQsIGN0eCk7XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19USU1FTElORV9MT0FEX01BUktFUlMsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgKDAsIHRpbWVsaW5lX21hcmtlcl8xLnNlbmRUaW1lbGluZU1hcmtlcnMpKGN0eCk7XG4gICAgfSk7XG4gICAgLy8gQ3VzdG9tIGluc3BlY3RvcnNcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX0NVU1RPTV9JTlNQRUNUT1JfTElTVCwgKCkgPT4ge1xuICAgICAgICAoMCwgaW5zcGVjdG9yXzEuc2VuZEN1c3RvbUluc3BlY3RvcnMpKGN0eCk7XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DVVNUT01fSU5TUEVDVE9SX1RSRUUsIGFzeW5jICh7IGluc3BlY3RvcklkLCBhcHBJZCwgdHJlZUZpbHRlciB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGluc3BlY3RvciA9IGF3YWl0ICgwLCBpbnNwZWN0b3JfMS5nZXRJbnNwZWN0b3JXaXRoQXBwSWQpKGluc3BlY3RvcklkLCBhcHBJZCwgY3R4KTtcbiAgICAgICAgaWYgKGluc3BlY3Rvcikge1xuICAgICAgICAgICAgaW5zcGVjdG9yLnRyZWVGaWx0ZXIgPSB0cmVlRmlsdGVyO1xuICAgICAgICAgICAgKDAsIGluc3BlY3Rvcl8xLnNlbmRJbnNwZWN0b3JUcmVlKShpbnNwZWN0b3IsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgSW5zcGVjdG9yICR7aW5zcGVjdG9ySWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DVVNUT01fSU5TUEVDVE9SX1NUQVRFLCBhc3luYyAoeyBpbnNwZWN0b3JJZCwgYXBwSWQsIG5vZGVJZCB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGluc3BlY3RvciA9IGF3YWl0ICgwLCBpbnNwZWN0b3JfMS5nZXRJbnNwZWN0b3JXaXRoQXBwSWQpKGluc3BlY3RvcklkLCBhcHBJZCwgY3R4KTtcbiAgICAgICAgaWYgKGluc3BlY3Rvcikge1xuICAgICAgICAgICAgaW5zcGVjdG9yLnNlbGVjdGVkTm9kZUlkID0gbm9kZUlkO1xuICAgICAgICAgICAgKDAsIGluc3BlY3Rvcl8xLnNlbmRJbnNwZWN0b3JTdGF0ZSkoaW5zcGVjdG9yLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNoYXJlZF91dGlsc18xLlNoYXJlZERhdGEuZGVidWdJbmZvKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYEluc3BlY3RvciAke2luc3BlY3RvcklkfSBub3QgZm91bmRgKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9FRElUX1NUQVRFLCBhc3luYyAoeyBpbnNwZWN0b3JJZCwgYXBwSWQsIG5vZGVJZCwgcGF0aCwgdHlwZSwgcGF5bG9hZCB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGluc3BlY3RvciA9IGF3YWl0ICgwLCBpbnNwZWN0b3JfMS5nZXRJbnNwZWN0b3JXaXRoQXBwSWQpKGluc3BlY3RvcklkLCBhcHBJZCwgY3R4KTtcbiAgICAgICAgaWYgKGluc3BlY3Rvcikge1xuICAgICAgICAgICAgYXdhaXQgKDAsIGluc3BlY3Rvcl8xLmVkaXRJbnNwZWN0b3JTdGF0ZSkoaW5zcGVjdG9yLCBub2RlSWQsIHBhdGgsIHR5cGUsIHBheWxvYWQsIGN0eCk7XG4gICAgICAgICAgICBpbnNwZWN0b3Iuc2VsZWN0ZWROb2RlSWQgPSBub2RlSWQ7XG4gICAgICAgICAgICBhd2FpdCAoMCwgaW5zcGVjdG9yXzEuc2VuZEluc3BlY3RvclN0YXRlKShpbnNwZWN0b3IsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgSW5zcGVjdG9yICR7aW5zcGVjdG9ySWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DVVNUT01fSU5TUEVDVE9SX0FDVElPTiwgYXN5bmMgKHsgaW5zcGVjdG9ySWQsIGFwcElkLCBhY3Rpb25JbmRleCB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGluc3BlY3RvciA9IGF3YWl0ICgwLCBpbnNwZWN0b3JfMS5nZXRJbnNwZWN0b3JXaXRoQXBwSWQpKGluc3BlY3RvcklkLCBhcHBJZCwgY3R4KTtcbiAgICAgICAgaWYgKGluc3BlY3Rvcikge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gaW5zcGVjdG9yLmFjdGlvbnNbYWN0aW9uSW5kZXhdO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBhY3Rpb24uYWN0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChzaGFyZWRfdXRpbHNfMS5TaGFyZWREYXRhLmRlYnVnSW5mbykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzaGFyZWRfdXRpbHNfMS5TaGFyZWREYXRhLmRlYnVnSW5mbykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBJbnNwZWN0b3IgJHtpbnNwZWN0b3JJZH0gbm90IGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBNaXNjXG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19MT0csIChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmIChwYXlsb2FkLnNlcmlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHZhbHVlID0gKDAsIHNoYXJlZF91dGlsc18xLnBhcnNlKSh2YWx1ZSwgcGF5bG9hZC5yZXZpdmUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBheWxvYWQucmV2aXZlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9ICgwLCBzaGFyZWRfdXRpbHNfMS5yZXZpdmUpKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlW3BheWxvYWQubGV2ZWxdKHZhbHVlKTtcbiAgICB9KTtcbiAgICAvLyBQbHVnaW5zXG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19ERVZUT09MU19QTFVHSU5fTElTVCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCAoMCwgcGx1Z2luXzEuc2VuZFBsdWdpbkxpc3QpKGN0eCk7XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19ERVZUT09MU19QTFVHSU5fU0VUVElOR19VUERBVEVELCAoeyBwbHVnaW5JZCwga2V5LCBuZXdWYWx1ZSwgb2xkVmFsdWUgfSkgPT4ge1xuICAgICAgICBjb25zdCBzZXR0aW5ncyA9ICgwLCBzaGFyZWRfdXRpbHNfMS5nZXRQbHVnaW5TZXR0aW5ncykocGx1Z2luSWQpO1xuICAgICAgICBjdHguaG9vay5lbWl0KHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuUExVR0lOX1NFVFRJTkdTX1NFVCwgcGx1Z2luSWQsIHNldHRpbmdzKTtcbiAgICAgICAgY3R4LmN1cnJlbnRBcHBSZWNvcmQuYmFja2VuZC5hcGkuY2FsbEhvb2soXCJzZXRQbHVnaW5TZXR0aW5nc1wiIC8qIFNFVF9QTFVHSU5fU0VUVElOR1MgKi8sIHtcbiAgICAgICAgICAgIGFwcDogY3R4LmN1cnJlbnRBcHBSZWNvcmQub3B0aW9ucy5hcHAsXG4gICAgICAgICAgICBwbHVnaW5JZCxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIG5ld1ZhbHVlLFxuICAgICAgICAgICAgb2xkVmFsdWUsXG4gICAgICAgICAgICBzZXR0aW5ncyxcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///6895\n");
|
|
158
|
+
eval("\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\n\nvar _a, _b;\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.initBackend = void 0;\n\nconst app_backend_api_1 = __webpack_require__(64803);\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst debounce_1 = __importDefault(__webpack_require__(54073));\n\nconst global_hook_1 = __webpack_require__(13179);\n\nconst subscriptions_1 = __webpack_require__(19815);\n\nconst highlighter_1 = __webpack_require__(44877);\n\nconst timeline_1 = __webpack_require__(41515);\n\nconst component_pick_1 = __importDefault(__webpack_require__(76794));\n\nconst component_1 = __webpack_require__(63304);\n\nconst plugin_1 = __webpack_require__(42989);\n\nconst app_1 = __webpack_require__(79132);\n\nconst inspector_1 = __webpack_require__(96048);\n\nconst timeline_screenshot_1 = __webpack_require__(11354);\n\nconst perf_1 = __webpack_require__(75552);\n\nconst page_config_1 = __webpack_require__(26639);\n\nconst timeline_marker_1 = __webpack_require__(72063);\n\nlet ctx = (_a = shared_utils_1.target.__vdevtools_ctx) !== null && _a !== void 0 ? _a : null;\nlet connected = (_b = shared_utils_1.target.__vdevtools_connected) !== null && _b !== void 0 ? _b : false;\n\nasync function initBackend(bridge) {\n await (0, shared_utils_1.initSharedData)({\n bridge,\n persist: false\n });\n (0, page_config_1.initOnPageConfig)();\n\n if (!connected) {\n // connected = false\n ctx = shared_utils_1.target.__vdevtools_ctx = (0, app_backend_api_1.createBackendContext)({\n bridge,\n hook: global_hook_1.hook\n });\n shared_utils_1.SharedData.legacyApps = false;\n\n if (global_hook_1.hook.Vue) {\n connect();\n (0, app_1._legacy_getAndRegisterApps)(ctx, true);\n shared_utils_1.SharedData.legacyApps = true;\n }\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.INIT, () => {\n (0, app_1._legacy_getAndRegisterApps)(ctx, true);\n shared_utils_1.SharedData.legacyApps = true;\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.APP_ADD, async app => {\n await (0, app_1.registerApp)(app, ctx);\n connect();\n }); // Add apps that already sent init\n\n if (global_hook_1.hook.apps.length) {\n global_hook_1.hook.apps.forEach(app => {\n (0, app_1.registerApp)(app, ctx);\n connect();\n });\n }\n } else {\n ctx.bridge = bridge;\n connectBridge();\n }\n}\n\nexports.initBackend = initBackend;\n\nasync function connect() {\n if (connected) {\n return;\n }\n\n connected = shared_utils_1.target.__vdevtools_connected = true;\n await (0, app_1.waitForAppsRegistration)();\n connectBridge();\n ctx.currentTab = shared_utils_1.BuiltinTabs.COMPONENTS; // Apps\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.APP_UNMOUNT, async app => {\n await (0, app_1.removeApp)(app, ctx);\n }); // Components\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.COMPONENT_UPDATED, async (app, uid, parentUid, component) => {\n try {\n let id;\n let appRecord;\n\n if (app && uid != null) {\n id = await (0, component_1.getComponentId)(app, uid, component, ctx);\n appRecord = await (0, app_1.getAppRecord)(app, ctx);\n } else {\n id = ctx.currentInspectedComponentId;\n appRecord = ctx.currentAppRecord;\n } // Update component inspector\n\n\n if (id && (0, subscriptions_1.isSubscribed)(shared_utils_1.BridgeSubscriptions.SELECTED_COMPONENT_DATA, sub => sub.payload.instanceId === id)) {\n (0, component_1.sendSelectedComponentData)(appRecord, id, ctx);\n } // Update tree (tags)\n\n\n if ((0, subscriptions_1.isSubscribed)(shared_utils_1.BridgeSubscriptions.COMPONENT_TREE, sub => sub.payload.instanceId === id)) {\n (0, component_1.sendComponentTreeData)(appRecord, id, appRecord.componentFilter, 0, ctx);\n }\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.COMPONENT_ADDED, async (app, uid, parentUid, component) => {\n try {\n const id = await (0, component_1.getComponentId)(app, uid, component, ctx);\n const appRecord = await (0, app_1.getAppRecord)(app, ctx);\n\n if (component) {\n if (component.__VUE_DEVTOOLS_UID__ == null) {\n component.__VUE_DEVTOOLS_UID__ = id;\n }\n\n if (!appRecord.instanceMap.has(id)) {\n appRecord.instanceMap.set(id, component);\n }\n }\n\n if (parentUid != null) {\n const parentInstances = await appRecord.backend.api.walkComponentParents(component);\n\n if (parentInstances.length) {\n // Check two parents level to update `hasChildren\n for (let i = 0; i < 2 && i < parentInstances.length; i++) {\n const parentId = await (0, component_1.getComponentId)(app, parentUid, parentInstances[i], ctx);\n\n if ((0, subscriptions_1.isSubscribed)(shared_utils_1.BridgeSubscriptions.COMPONENT_TREE, sub => sub.payload.instanceId === parentId)) {\n requestAnimationFrame(() => {\n (0, component_1.sendComponentTreeData)(appRecord, parentId, appRecord.componentFilter, null, ctx);\n });\n }\n }\n }\n }\n\n if (ctx.currentInspectedComponentId === id) {\n (0, component_1.sendSelectedComponentData)(appRecord, id, ctx);\n }\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.COMPONENT_REMOVED, async (app, uid, parentUid, component) => {\n try {\n const appRecord = await (0, app_1.getAppRecord)(app, ctx);\n\n if (parentUid != null) {\n const parentInstances = await appRecord.backend.api.walkComponentParents(component);\n\n if (parentInstances.length) {\n const parentId = await (0, component_1.getComponentId)(app, parentUid, parentInstances[0], ctx);\n\n if ((0, subscriptions_1.isSubscribed)(shared_utils_1.BridgeSubscriptions.COMPONENT_TREE, sub => sub.payload.instanceId === parentId)) {\n requestAnimationFrame(async () => {\n try {\n (0, component_1.sendComponentTreeData)(await (0, app_1.getAppRecord)(app, ctx), parentId, appRecord.componentFilter, null, ctx);\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n });\n }\n }\n }\n\n const id = await (0, component_1.getComponentId)(app, uid, component, ctx);\n\n if ((0, subscriptions_1.isSubscribed)(shared_utils_1.BridgeSubscriptions.SELECTED_COMPONENT_DATA, sub => sub.payload.instanceId === id)) {\n (0, component_1.sendEmptyComponentData)(id, ctx);\n }\n\n appRecord.instanceMap.delete(id);\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n }); // Component perf\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.PERFORMANCE_START, async (app, uid, vm, type, time) => {\n await (0, perf_1.performanceMarkStart)(app, uid, vm, type, time, ctx);\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.PERFORMANCE_END, async (app, uid, vm, type, time) => {\n await (0, perf_1.performanceMarkEnd)(app, uid, vm, type, time, ctx);\n }); // Highlighter\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.COMPONENT_HIGHLIGHT, async instanceId => {\n await (0, highlighter_1.highlight)(ctx.currentAppRecord.instanceMap.get(instanceId), ctx.currentAppRecord.backend, ctx);\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.COMPONENT_UNHIGHLIGHT, async () => {\n await (0, highlighter_1.unHighlight)();\n }); // Timeline\n\n (0, timeline_1.setupTimeline)(ctx);\n global_hook_1.hook.on(shared_utils_1.HookEvents.TIMELINE_LAYER_ADDED, async (options, plugin) => {\n const appRecord = await (0, app_1.getAppRecord)(plugin.descriptor.app, ctx);\n ctx.timelineLayers.push({ ...options,\n appRecord,\n plugin,\n events: []\n });\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_TIMELINE_LAYER_ADD, {});\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.TIMELINE_EVENT_ADDED, async (options, plugin) => {\n await (0, timeline_1.addTimelineEvent)(options, plugin.descriptor.app, ctx);\n }); // Custom inspectors\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.CUSTOM_INSPECTOR_ADD, async (options, plugin) => {\n const appRecord = await (0, app_1.getAppRecord)(plugin.descriptor.app, ctx);\n ctx.customInspectors.push({ ...options,\n appRecord,\n plugin,\n treeFilter: '',\n selectedNodeId: null\n });\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_CUSTOM_INSPECTOR_ADD, {});\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.CUSTOM_INSPECTOR_SEND_TREE, async (inspectorId, plugin) => {\n const inspector = (0, inspector_1.getInspector)(inspectorId, plugin.descriptor.app, ctx);\n\n if (inspector) {\n await (0, inspector_1.sendInspectorTree)(inspector, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.CUSTOM_INSPECTOR_SEND_STATE, async (inspectorId, plugin) => {\n const inspector = (0, inspector_1.getInspector)(inspectorId, plugin.descriptor.app, ctx);\n\n if (inspector) {\n await (0, inspector_1.sendInspectorState)(inspector, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n });\n global_hook_1.hook.on(shared_utils_1.HookEvents.CUSTOM_INSPECTOR_SELECT_NODE, async (inspectorId, nodeId, plugin) => {\n const inspector = (0, inspector_1.getInspector)(inspectorId, plugin.descriptor.app, ctx);\n\n if (inspector) {\n await (0, inspector_1.selectInspectorNode)(inspector, nodeId, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n }); // Plugins\n\n try {\n await (0, plugin_1.addPreviouslyRegisteredPlugins)(ctx);\n } catch (e) {\n console.error(`Error adding previously registered plugins:`);\n console.error(e);\n }\n\n try {\n await (0, plugin_1.addQueuedPlugins)(ctx);\n } catch (e) {\n console.error(`Error adding queued plugins:`);\n console.error(e);\n }\n\n global_hook_1.hook.on(shared_utils_1.HookEvents.SETUP_DEVTOOLS_PLUGIN, async (pluginDescriptor, setupFn) => {\n await (0, plugin_1.addPlugin)({\n pluginDescriptor,\n setupFn\n }, ctx);\n });\n shared_utils_1.target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ = true; // Legacy flush\n\n const handleFlush = (0, debounce_1.default)(async () => {\n var _a;\n\n if ((_a = ctx.currentAppRecord) === null || _a === void 0 ? void 0 : _a.backend.options.features.includes(app_backend_api_1.BuiltinBackendFeature.FLUSH)) {\n await (0, component_1.sendComponentTreeData)(ctx.currentAppRecord, '_root', ctx.currentAppRecord.componentFilter, null, ctx);\n\n if (ctx.currentInspectedComponentId) {\n await (0, component_1.sendSelectedComponentData)(ctx.currentAppRecord, ctx.currentInspectedComponentId, ctx);\n }\n }\n }, 500);\n global_hook_1.hook.off(shared_utils_1.HookEvents.FLUSH);\n global_hook_1.hook.on(shared_utils_1.HookEvents.FLUSH, handleFlush); // Connect done\n\n try {\n await (0, timeline_marker_1.addTimelineMarker)({\n id: 'vue-devtools-init-backend',\n time: Date.now(),\n label: 'Vue Devtools connected',\n color: 0x41B883,\n all: true\n }, ctx);\n } catch (e) {\n console.error(`Error while adding devtools connected timeline marker:`);\n console.error(e);\n }\n}\n\nfunction connectBridge() {\n // Subscriptions\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_SUBSCRIBE, ({\n type,\n payload\n }) => {\n (0, subscriptions_1.subscribe)(type, payload);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_UNSUBSCRIBE, ({\n type,\n payload\n }) => {\n (0, subscriptions_1.unsubscribe)(type, payload);\n }); // Tabs\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TAB_SWITCH, async tab => {\n ctx.currentTab = tab;\n await (0, highlighter_1.unHighlight)();\n }); // Apps\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_APP_LIST, async () => {\n await (0, app_1.sendApps)(ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_APP_SELECT, async id => {\n if (id == null) return;\n const record = ctx.appRecords.find(r => r.id === id);\n\n if (record) {\n await (0, app_1.selectApp)(record, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`App with id ${id} not found`);\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_SCAN_LEGACY_APPS, () => {\n if (global_hook_1.hook.Vue) {\n (0, app_1._legacy_getAndRegisterApps)(ctx);\n }\n }); // Components\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_TREE, async ({\n instanceId,\n filter\n }) => {\n ctx.currentAppRecord.componentFilter = filter;\n (0, subscriptions_1.subscribe)(shared_utils_1.BridgeSubscriptions.COMPONENT_TREE, {\n instanceId\n });\n await (0, component_1.sendComponentTreeData)(ctx.currentAppRecord, instanceId, filter, null, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_SELECTED_DATA, async instanceId => {\n await (0, component_1.sendSelectedComponentData)(ctx.currentAppRecord, instanceId, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_EDIT_STATE, async ({\n instanceId,\n dotPath,\n type,\n value,\n newKey,\n remove\n }) => {\n await (0, component_1.editComponentState)(instanceId, dotPath, type, {\n value,\n newKey,\n remove\n }, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_INSPECT_DOM, async ({\n instanceId\n }) => {\n const instance = (0, component_1.getComponentInstance)(ctx.currentAppRecord, instanceId, ctx);\n\n if (instance) {\n const [el] = await ctx.currentAppRecord.backend.api.getComponentRootElements(instance);\n\n if (el) {\n // @ts-ignore\n window.__VUE_DEVTOOLS_INSPECT_TARGET__ = el;\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_COMPONENT_INSPECT_DOM, null);\n }\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_SCROLL_TO, async ({\n instanceId\n }) => {\n const instance = (0, component_1.getComponentInstance)(ctx.currentAppRecord, instanceId, ctx);\n\n if (instance) {\n const [el] = await ctx.currentAppRecord.backend.api.getComponentRootElements(instance);\n\n if (el) {\n if (typeof el.scrollIntoView === 'function') {\n el.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center'\n });\n } else {\n // Handle nodes that don't implement scrollIntoView\n const bounds = await ctx.currentAppRecord.backend.api.getComponentBounds(instance);\n const scrollTarget = document.createElement('div');\n scrollTarget.style.position = 'absolute';\n scrollTarget.style.width = `${bounds.width}px`;\n scrollTarget.style.height = `${bounds.height}px`;\n scrollTarget.style.top = `${bounds.top}px`;\n scrollTarget.style.left = `${bounds.left}px`;\n document.body.appendChild(scrollTarget);\n scrollTarget.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center'\n });\n setTimeout(() => {\n document.body.removeChild(scrollTarget);\n }, 2000);\n }\n\n (0, highlighter_1.highlight)(instance, ctx.currentAppRecord.backend, ctx);\n setTimeout(() => {\n (0, highlighter_1.unHighlight)();\n }, 2000);\n }\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_RENDER_CODE, async ({\n instanceId\n }) => {\n const instance = (0, component_1.getComponentInstance)(ctx.currentAppRecord, instanceId, ctx);\n\n if (instance) {\n const {\n code\n } = await ctx.currentAppRecord.backend.api.getComponentRenderCode(instance);\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_COMPONENT_RENDER_CODE, {\n instanceId,\n code\n });\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_STATE_ACTION, async ({\n value,\n actionIndex\n }) => {\n const rawAction = value._custom.actions[actionIndex];\n const action = (0, shared_utils_1.revive)(rawAction === null || rawAction === void 0 ? void 0 : rawAction.action);\n\n if (action) {\n try {\n await action();\n } catch (e) {\n console.error(e);\n }\n } else {\n console.warn(`Couldn't revive action ${actionIndex} from`, value);\n }\n }); // Highlighter\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_MOUSE_OVER, async instanceId => {\n await (0, highlighter_1.highlight)(ctx.currentAppRecord.instanceMap.get(instanceId), ctx.currentAppRecord.backend, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_MOUSE_OUT, async () => {\n await (0, highlighter_1.unHighlight)();\n }); // Component picker\n\n const componentPicker = new component_pick_1.default(ctx);\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_PICK, () => {\n componentPicker.startSelecting();\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_COMPONENT_PICK_CANCELED, () => {\n componentPicker.stopSelecting();\n }); // Timeline\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_LAYER_LIST, async () => {\n await (0, timeline_1.sendTimelineLayers)(ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_SHOW_SCREENSHOT, async ({\n screenshot\n }) => {\n await (0, timeline_screenshot_1.showScreenshot)(screenshot, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_CLEAR, async () => {\n await (0, timeline_1.clearTimeline)(ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_EVENT_DATA, async ({\n id\n }) => {\n await (0, timeline_1.sendTimelineEventData)(id, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_LAYER_LOAD_EVENTS, async ({\n appId,\n layerId\n }) => {\n await (0, timeline_1.sendTimelineLayerEvents)(appId, layerId, ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_TIMELINE_LOAD_MARKERS, async () => {\n await (0, timeline_marker_1.sendTimelineMarkers)(ctx);\n }); // Custom inspectors\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_INSPECTOR_LIST, async () => {\n await (0, inspector_1.sendCustomInspectors)(ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_INSPECTOR_TREE, async ({\n inspectorId,\n appId,\n treeFilter\n }) => {\n const inspector = await (0, inspector_1.getInspectorWithAppId)(inspectorId, appId, ctx);\n\n if (inspector) {\n inspector.treeFilter = treeFilter;\n (0, inspector_1.sendInspectorTree)(inspector, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_INSPECTOR_STATE, async ({\n inspectorId,\n appId,\n nodeId\n }) => {\n const inspector = await (0, inspector_1.getInspectorWithAppId)(inspectorId, appId, ctx);\n\n if (inspector) {\n inspector.selectedNodeId = nodeId;\n (0, inspector_1.sendInspectorState)(inspector, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_INSPECTOR_EDIT_STATE, async ({\n inspectorId,\n appId,\n nodeId,\n path,\n type,\n payload\n }) => {\n const inspector = await (0, inspector_1.getInspectorWithAppId)(inspectorId, appId, ctx);\n\n if (inspector) {\n await (0, inspector_1.editInspectorState)(inspector, nodeId, path, type, payload, ctx);\n inspector.selectedNodeId = nodeId;\n await (0, inspector_1.sendInspectorState)(inspector, ctx);\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_CUSTOM_INSPECTOR_ACTION, async ({\n inspectorId,\n appId,\n actionIndex\n }) => {\n const inspector = await (0, inspector_1.getInspectorWithAppId)(inspectorId, appId, ctx);\n\n if (inspector) {\n const action = inspector.actions[actionIndex];\n\n try {\n await action.action();\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n } else if (shared_utils_1.SharedData.debugInfo) {\n console.warn(`Inspector ${inspectorId} not found`);\n }\n }); // Misc\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_LOG, payload => {\n let value = payload.value;\n\n if (payload.serialized) {\n value = (0, shared_utils_1.parse)(value, payload.revive);\n } else if (payload.revive) {\n value = (0, shared_utils_1.revive)(value);\n } // eslint-disable-next-line no-console\n\n\n console[payload.level](value);\n }); // Plugins\n\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_DEVTOOLS_PLUGIN_LIST, async () => {\n await (0, plugin_1.sendPluginList)(ctx);\n });\n ctx.bridge.on(shared_utils_1.BridgeEvents.TO_BACK_DEVTOOLS_PLUGIN_SETTING_UPDATED, ({\n pluginId,\n key,\n newValue,\n oldValue\n }) => {\n const settings = (0, shared_utils_1.getPluginSettings)(pluginId);\n ctx.hook.emit(shared_utils_1.HookEvents.PLUGIN_SETTINGS_SET, pluginId, settings);\n ctx.currentAppRecord.backend.api.callHook(\"setPluginSettings\"\n /* SET_PLUGIN_SETTINGS */\n , {\n app: ctx.currentAppRecord.options.app,\n pluginId,\n key,\n newValue,\n oldValue,\n settings\n });\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFZLE9BQVo7QUFBaUIsWUFBakI7QUFBMkI7QUFBM0IsR0FBRCxLQUEwQztBQUM1RyxVQUFNLFFBQVEsR0FBRyxzQ0FBa0IsUUFBbEIsQ0FBakI7QUFDQSxPQUFHLENBQUMsSUFBSixDQUFTLElBQVQsQ0FBYywwQkFBVyxtQkFBekIsRUFBOEMsUUFBOUMsRUFBd0QsUUFBeEQ7QUFDQSxPQUFHLENBQUMsZ0JBQUosQ0FBcUIsT0FBckIsQ0FBNkIsR0FBN0IsQ0FBaUMsUUFBakMsQ0FBeUM7QUFBQTtBQUF6QyxNQUFxRTtBQUNuRSxTQUFHLEVBQUUsR0FBRyxDQUFDLGdCQUFKLENBQXFCLE9BQXJCLENBQTZCLEdBRGlDO0FBRW5FLGNBRm1FO0FBR25FLFNBSG1FO0FBSW5FLGNBSm1FO0FBS25FLGNBTG1FO0FBTW5FO0FBTm1FLEtBQXJFO0FBUUQsR0FYRDtBQVlEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvaW5kZXgudHM/NmYzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbnZhciBfYSwgX2I7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmluaXRCYWNrZW5kID0gdm9pZCAwO1xuY29uc3QgYXBwX2JhY2tlbmRfYXBpXzEgPSByZXF1aXJlKFwiQHZ1ZS1kZXZ0b29scy9hcHAtYmFja2VuZC1hcGlcIik7XG5jb25zdCBzaGFyZWRfdXRpbHNfMSA9IHJlcXVpcmUoXCJAdnVlLWRldnRvb2xzL3NoYXJlZC11dGlsc1wiKTtcbmNvbnN0IGRlYm91bmNlXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImxvZGFzaC9kZWJvdW5jZVwiKSk7XG5jb25zdCBnbG9iYWxfaG9va18xID0gcmVxdWlyZShcIi4vZ2xvYmFsLWhvb2tcIik7XG5jb25zdCBzdWJzY3JpcHRpb25zXzEgPSByZXF1aXJlKFwiLi91dGlsL3N1YnNjcmlwdGlvbnNcIik7XG5jb25zdCBoaWdobGlnaHRlcl8xID0gcmVxdWlyZShcIi4vaGlnaGxpZ2h0ZXJcIik7XG5jb25zdCB0aW1lbGluZV8xID0gcmVxdWlyZShcIi4vdGltZWxpbmVcIik7XG5jb25zdCBjb21wb25lbnRfcGlja18xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCIuL2NvbXBvbmVudC1waWNrXCIpKTtcbmNvbnN0IGNvbXBvbmVudF8xID0gcmVxdWlyZShcIi4vY29tcG9uZW50XCIpO1xuY29uc3QgcGx1Z2luXzEgPSByZXF1aXJlKFwiLi9wbHVnaW5cIik7XG5jb25zdCBhcHBfMSA9IHJlcXVpcmUoXCIuL2FwcFwiKTtcbmNvbnN0IGluc3BlY3Rvcl8xID0gcmVxdWlyZShcIi4vaW5zcGVjdG9yXCIpO1xuY29uc3QgdGltZWxpbmVfc2NyZWVuc2hvdF8xID0gcmVxdWlyZShcIi4vdGltZWxpbmUtc2NyZWVuc2hvdFwiKTtcbmNvbnN0IHBlcmZfMSA9IHJlcXVpcmUoXCIuL3BlcmZcIik7XG5jb25zdCBwYWdlX2NvbmZpZ18xID0gcmVxdWlyZShcIi4vcGFnZS1jb25maWdcIik7XG5jb25zdCB0aW1lbGluZV9tYXJrZXJfMSA9IHJlcXVpcmUoXCIuL3RpbWVsaW5lLW1hcmtlclwiKTtcbmxldCBjdHggPSAoX2EgPSBzaGFyZWRfdXRpbHNfMS50YXJnZXQuX192ZGV2dG9vbHNfY3R4KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xubGV0IGNvbm5lY3RlZCA9IChfYiA9IHNoYXJlZF91dGlsc18xLnRhcmdldC5fX3ZkZXZ0b29sc19jb25uZWN0ZWQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlO1xuYXN5bmMgZnVuY3Rpb24gaW5pdEJhY2tlbmQoYnJpZGdlKSB7XG4gICAgYXdhaXQgKDAsIHNoYXJlZF91dGlsc18xLmluaXRTaGFyZWREYXRhKSh7XG4gICAgICAgIGJyaWRnZSxcbiAgICAgICAgcGVyc2lzdDogZmFsc2UsXG4gICAgfSk7XG4gICAgKDAsIHBhZ2VfY29uZmlnXzEuaW5pdE9uUGFnZUNvbmZpZykoKTtcbiAgICBpZiAoIWNvbm5lY3RlZCkge1xuICAgICAgICAvLyBjb25uZWN0ZWQgPSBmYWxzZVxuICAgICAgICBjdHggPSBzaGFyZWRfdXRpbHNfMS50YXJnZXQuX192ZGV2dG9vbHNfY3R4ID0gKDAsIGFwcF9iYWNrZW5kX2FwaV8xLmNyZWF0ZUJhY2tlbmRDb250ZXh0KSh7XG4gICAgICAgICAgICBicmlkZ2UsXG4gICAgICAgICAgICBob29rOiBnbG9iYWxfaG9va18xLmhvb2ssXG4gICAgICAgIH0pO1xuICAgICAgICBzaGFyZWRfdXRpbHNfMS5TaGFyZWREYXRhLmxlZ2FjeUFwcHMgPSBmYWxzZTtcbiAgICAgICAgaWYgKGdsb2JhbF9ob29rXzEuaG9vay5WdWUpIHtcbiAgICAgICAgICAgIGNvbm5lY3QoKTtcbiAgICAgICAgICAgICgwLCBhcHBfMS5fbGVnYWN5X2dldEFuZFJlZ2lzdGVyQXBwcykoY3R4LCB0cnVlKTtcbiAgICAgICAgICAgIHNoYXJlZF91dGlsc18xLlNoYXJlZERhdGEubGVnYWN5QXBwcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuSU5JVCwgKCkgPT4ge1xuICAgICAgICAgICAgKDAsIGFwcF8xLl9sZWdhY3lfZ2V0QW5kUmVnaXN0ZXJBcHBzKShjdHgsIHRydWUpO1xuICAgICAgICAgICAgc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5sZWdhY3lBcHBzID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGdsb2JhbF9ob29rXzEuaG9vay5vbihzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLkFQUF9BREQsIGFzeW5jIChhcHApID0+IHtcbiAgICAgICAgICAgIGF3YWl0ICgwLCBhcHBfMS5yZWdpc3RlckFwcCkoYXBwLCBjdHgpO1xuICAgICAgICAgICAgY29ubmVjdCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gQWRkIGFwcHMgdGhhdCBhbHJlYWR5IHNlbnQgaW5pdFxuICAgICAgICBpZiAoZ2xvYmFsX2hvb2tfMS5ob29rLmFwcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBnbG9iYWxfaG9va18xLmhvb2suYXBwcy5mb3JFYWNoKGFwcCA9PiB7XG4gICAgICAgICAgICAgICAgKDAsIGFwcF8xLnJlZ2lzdGVyQXBwKShhcHAsIGN0eCk7XG4gICAgICAgICAgICAgICAgY29ubmVjdCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGN0eC5icmlkZ2UgPSBicmlkZ2U7XG4gICAgICAgIGNvbm5lY3RCcmlkZ2UoKTtcbiAgICB9XG59XG5leHBvcnRzLmluaXRCYWNrZW5kID0gaW5pdEJhY2tlbmQ7XG5hc3luYyBmdW5jdGlvbiBjb25uZWN0KCkge1xuICAgIGlmIChjb25uZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25uZWN0ZWQgPSBzaGFyZWRfdXRpbHNfMS50YXJnZXQuX192ZGV2dG9vbHNfY29ubmVjdGVkID0gdHJ1ZTtcbiAgICBhd2FpdCAoMCwgYXBwXzEud2FpdEZvckFwcHNSZWdpc3RyYXRpb24pKCk7XG4gICAgY29ubmVjdEJyaWRnZSgpO1xuICAgIGN0eC5jdXJyZW50VGFiID0gc2hhcmVkX3V0aWxzXzEuQnVpbHRpblRhYnMuQ09NUE9ORU5UUztcbiAgICAvLyBBcHBzXG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuQVBQX1VOTU9VTlQsIGFzeW5jIChhcHApID0+IHtcbiAgICAgICAgYXdhaXQgKDAsIGFwcF8xLnJlbW92ZUFwcCkoYXBwLCBjdHgpO1xuICAgIH0pO1xuICAgIC8vIENvbXBvbmVudHNcbiAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5DT01QT05FTlRfVVBEQVRFRCwgYXN5bmMgKGFwcCwgdWlkLCBwYXJlbnRVaWQsIGNvbXBvbmVudCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGlkO1xuICAgICAgICAgICAgbGV0IGFwcFJlY29yZDtcbiAgICAgICAgICAgIGlmIChhcHAgJiYgdWlkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZCA9IGF3YWl0ICgwLCBjb21wb25lbnRfMS5nZXRDb21wb25lbnRJZCkoYXBwLCB1aWQsIGNvbXBvbmVudCwgY3R4KTtcbiAgICAgICAgICAgICAgICBhcHBSZWNvcmQgPSBhd2FpdCAoMCwgYXBwXzEuZ2V0QXBwUmVjb3JkKShhcHAsIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZCA9IGN0eC5jdXJyZW50SW5zcGVjdGVkQ29tcG9uZW50SWQ7XG4gICAgICAgICAgICAgICAgYXBwUmVjb3JkID0gY3R4LmN1cnJlbnRBcHBSZWNvcmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBVcGRhdGUgY29tcG9uZW50IGluc3BlY3RvclxuICAgICAgICAgICAgaWYgKGlkICYmICgwLCBzdWJzY3JpcHRpb25zXzEuaXNTdWJzY3JpYmVkKShzaGFyZWRfdXRpbHNfMS5CcmlkZ2VTdWJzY3JpcHRpb25zLlNFTEVDVEVEX0NPTVBPTkVOVF9EQVRBLCBzdWIgPT4gc3ViLnBheWxvYWQuaW5zdGFuY2VJZCA9PT0gaWQpKSB7XG4gICAgICAgICAgICAgICAgKDAsIGNvbXBvbmVudF8xLnNlbmRTZWxlY3RlZENvbXBvbmVudERhdGEpKGFwcFJlY29yZCwgaWQsIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBVcGRhdGUgdHJlZSAodGFncylcbiAgICAgICAgICAgIGlmICgoMCwgc3Vic2NyaXB0aW9uc18xLmlzU3Vic2NyaWJlZCkoc2hhcmVkX3V0aWxzXzEuQnJpZGdlU3Vic2NyaXB0aW9ucy5DT01QT05FTlRfVFJFRSwgc3ViID0+IHN1Yi5wYXlsb2FkLmluc3RhbmNlSWQgPT09IGlkKSkge1xuICAgICAgICAgICAgICAgICgwLCBjb21wb25lbnRfMS5zZW5kQ29tcG9uZW50VHJlZURhdGEpKGFwcFJlY29yZCwgaWQsIGFwcFJlY29yZC5jb21wb25lbnRGaWx0ZXIsIDAsIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChzaGFyZWRfdXRpbHNfMS5TaGFyZWREYXRhLmRlYnVnSW5mbykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5DT01QT05FTlRfQURERUQsIGFzeW5jIChhcHAsIHVpZCwgcGFyZW50VWlkLCBjb21wb25lbnQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gYXdhaXQgKDAsIGNvbXBvbmVudF8xLmdldENvbXBvbmVudElkKShhcHAsIHVpZCwgY29tcG9uZW50LCBjdHgpO1xuICAgICAgICAgICAgY29uc3QgYXBwUmVjb3JkID0gYXdhaXQgKDAsIGFwcF8xLmdldEFwcFJlY29yZCkoYXBwLCBjdHgpO1xuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQuX19WVUVfREVWVE9PTFNfVUlEX18gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuX19WVUVfREVWVE9PTFNfVUlEX18gPSBpZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFhcHBSZWNvcmQuaW5zdGFuY2VNYXAuaGFzKGlkKSkge1xuICAgICAgICAgICAgICAgICAgICBhcHBSZWNvcmQuaW5zdGFuY2VNYXAuc2V0KGlkLCBjb21wb25lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJlbnRVaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudEluc3RhbmNlcyA9IGF3YWl0IGFwcFJlY29yZC5iYWNrZW5kLmFwaS53YWxrQ29tcG9uZW50UGFyZW50cyhjb21wb25lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChwYXJlbnRJbnN0YW5jZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHR3byBwYXJlbnRzIGxldmVsIHRvIHVwZGF0ZSBgaGFzQ2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyICYmIGkgPCBwYXJlbnRJbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gYXdhaXQgKDAsIGNvbXBvbmVudF8xLmdldENvbXBvbmVudElkKShhcHAsIHBhcmVudFVpZCwgcGFyZW50SW5zdGFuY2VzW2ldLCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgwLCBzdWJzY3JpcHRpb25zXzEuaXNTdWJzY3JpYmVkKShzaGFyZWRfdXRpbHNfMS5CcmlkZ2VTdWJzY3JpcHRpb25zLkNPTVBPTkVOVF9UUkVFLCBzdWIgPT4gc3ViLnBheWxvYWQuaW5zdGFuY2VJZCA9PT0gcGFyZW50SWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIGNvbXBvbmVudF8xLnNlbmRDb21wb25lbnRUcmVlRGF0YSkoYXBwUmVjb3JkLCBwYXJlbnRJZCwgYXBwUmVjb3JkLmNvbXBvbmVudEZpbHRlciwgbnVsbCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjdHguY3VycmVudEluc3BlY3RlZENvbXBvbmVudElkID09PSBpZCkge1xuICAgICAgICAgICAgICAgICgwLCBjb21wb25lbnRfMS5zZW5kU2VsZWN0ZWRDb21wb25lbnREYXRhKShhcHBSZWNvcmQsIGlkLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuQ09NUE9ORU5UX1JFTU9WRUQsIGFzeW5jIChhcHAsIHVpZCwgcGFyZW50VWlkLCBjb21wb25lbnQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFwcFJlY29yZCA9IGF3YWl0ICgwLCBhcHBfMS5nZXRBcHBSZWNvcmQpKGFwcCwgY3R4KTtcbiAgICAgICAgICAgIGlmIChwYXJlbnRVaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudEluc3RhbmNlcyA9IGF3YWl0IGFwcFJlY29yZC5iYWNrZW5kLmFwaS53YWxrQ29tcG9uZW50UGFyZW50cyhjb21wb25lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChwYXJlbnRJbnN0YW5jZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gYXdhaXQgKDAsIGNvbXBvbmVudF8xLmdldENvbXBvbmVudElkKShhcHAsIHBhcmVudFVpZCwgcGFyZW50SW5zdGFuY2VzWzBdLCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKDAsIHN1YnNjcmlwdGlvbnNfMS5pc1N1YnNjcmliZWQpKHNoYXJlZF91dGlsc18xLkJyaWRnZVN1YnNjcmlwdGlvbnMuQ09NUE9ORU5UX1RSRUUsIHN1YiA9PiBzdWIucGF5bG9hZC5pbnN0YW5jZUlkID09PSBwYXJlbnRJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsIGNvbXBvbmVudF8xLnNlbmRDb21wb25lbnRUcmVlRGF0YSkoYXdhaXQgKDAsIGFwcF8xLmdldEFwcFJlY29yZCkoYXBwLCBjdHgpLCBwYXJlbnRJZCwgYXBwUmVjb3JkLmNvbXBvbmVudEZpbHRlciwgbnVsbCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoYXJlZF91dGlsc18xLlNoYXJlZERhdGEuZGVidWdJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpZCA9IGF3YWl0ICgwLCBjb21wb25lbnRfMS5nZXRDb21wb25lbnRJZCkoYXBwLCB1aWQsIGNvbXBvbmVudCwgY3R4KTtcbiAgICAgICAgICAgIGlmICgoMCwgc3Vic2NyaXB0aW9uc18xLmlzU3Vic2NyaWJlZCkoc2hhcmVkX3V0aWxzXzEuQnJpZGdlU3Vic2NyaXB0aW9ucy5TRUxFQ1RFRF9DT01QT05FTlRfREFUQSwgc3ViID0+IHN1Yi5wYXlsb2FkLmluc3RhbmNlSWQgPT09IGlkKSkge1xuICAgICAgICAgICAgICAgICgwLCBjb21wb25lbnRfMS5zZW5kRW1wdHlDb21wb25lbnREYXRhKShpZCwgY3R4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFwcFJlY29yZC5pbnN0YW5jZU1hcC5kZWxldGUoaWQpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gQ29tcG9uZW50IHBlcmZcbiAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5QRVJGT1JNQU5DRV9TVEFSVCwgYXN5bmMgKGFwcCwgdWlkLCB2bSwgdHlwZSwgdGltZSkgPT4ge1xuICAgICAgICBhd2FpdCAoMCwgcGVyZl8xLnBlcmZvcm1hbmNlTWFya1N0YXJ0KShhcHAsIHVpZCwgdm0sIHR5cGUsIHRpbWUsIGN0eCk7XG4gICAgfSk7XG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuUEVSRk9STUFOQ0VfRU5ELCBhc3luYyAoYXBwLCB1aWQsIHZtLCB0eXBlLCB0aW1lKSA9PiB7XG4gICAgICAgIGF3YWl0ICgwLCBwZXJmXzEucGVyZm9ybWFuY2VNYXJrRW5kKShhcHAsIHVpZCwgdm0sIHR5cGUsIHRpbWUsIGN0eCk7XG4gICAgfSk7XG4gICAgLy8gSGlnaGxpZ2h0ZXJcbiAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5DT01QT05FTlRfSElHSExJR0hULCBhc3luYyAoaW5zdGFuY2VJZCkgPT4ge1xuICAgICAgICBhd2FpdCAoMCwgaGlnaGxpZ2h0ZXJfMS5oaWdobGlnaHQpKGN0eC5jdXJyZW50QXBwUmVjb3JkLmluc3RhbmNlTWFwLmdldChpbnN0YW5jZUlkKSwgY3R4LmN1cnJlbnRBcHBSZWNvcmQuYmFja2VuZCwgY3R4KTtcbiAgICB9KTtcbiAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5DT01QT05FTlRfVU5ISUdITElHSFQsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgKDAsIGhpZ2hsaWdodGVyXzEudW5IaWdobGlnaHQpKCk7XG4gICAgfSk7XG4gICAgLy8gVGltZWxpbmVcbiAgICAoMCwgdGltZWxpbmVfMS5zZXR1cFRpbWVsaW5lKShjdHgpO1xuICAgIGdsb2JhbF9ob29rXzEuaG9vay5vbihzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLlRJTUVMSU5FX0xBWUVSX0FEREVELCBhc3luYyAob3B0aW9ucywgcGx1Z2luKSA9PiB7XG4gICAgICAgIGNvbnN0IGFwcFJlY29yZCA9IGF3YWl0ICgwLCBhcHBfMS5nZXRBcHBSZWNvcmQpKHBsdWdpbi5kZXNjcmlwdG9yLmFwcCwgY3R4KTtcbiAgICAgICAgY3R4LnRpbWVsaW5lTGF5ZXJzLnB1c2goe1xuICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgIGFwcFJlY29yZCxcbiAgICAgICAgICAgIHBsdWdpbixcbiAgICAgICAgICAgIGV2ZW50czogW10sXG4gICAgICAgIH0pO1xuICAgICAgICBjdHguYnJpZGdlLnNlbmQoc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0ZST05UX1RJTUVMSU5FX0xBWUVSX0FERCwge30pO1xuICAgIH0pO1xuICAgIGdsb2JhbF9ob29rXzEuaG9vay5vbihzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLlRJTUVMSU5FX0VWRU5UX0FEREVELCBhc3luYyAob3B0aW9ucywgcGx1Z2luKSA9PiB7XG4gICAgICAgIGF3YWl0ICgwLCB0aW1lbGluZV8xLmFkZFRpbWVsaW5lRXZlbnQpKG9wdGlvbnMsIHBsdWdpbi5kZXNjcmlwdG9yLmFwcCwgY3R4KTtcbiAgICB9KTtcbiAgICAvLyBDdXN0b20gaW5zcGVjdG9yc1xuICAgIGdsb2JhbF9ob29rXzEuaG9vay5vbihzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLkNVU1RPTV9JTlNQRUNUT1JfQURELCBhc3luYyAob3B0aW9ucywgcGx1Z2luKSA9PiB7XG4gICAgICAgIGNvbnN0IGFwcFJlY29yZCA9IGF3YWl0ICgwLCBhcHBfMS5nZXRBcHBSZWNvcmQpKHBsdWdpbi5kZXNjcmlwdG9yLmFwcCwgY3R4KTtcbiAgICAgICAgY3R4LmN1c3RvbUluc3BlY3RvcnMucHVzaCh7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgYXBwUmVjb3JkLFxuICAgICAgICAgICAgcGx1Z2luLFxuICAgICAgICAgICAgdHJlZUZpbHRlcjogJycsXG4gICAgICAgICAgICBzZWxlY3RlZE5vZGVJZDogbnVsbCxcbiAgICAgICAgfSk7XG4gICAgICAgIGN0eC5icmlkZ2Uuc2VuZChzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fRlJPTlRfQ1VTVE9NX0lOU1BFQ1RPUl9BREQsIHt9KTtcbiAgICB9KTtcbiAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5DVVNUT01fSU5TUEVDVE9SX1NFTkRfVFJFRSwgYXN5bmMgKGluc3BlY3RvcklkLCBwbHVnaW4pID0+IHtcbiAgICAgICAgY29uc3QgaW5zcGVjdG9yID0gKDAsIGluc3BlY3Rvcl8xLmdldEluc3BlY3RvcikoaW5zcGVjdG9ySWQsIHBsdWdpbi5kZXNjcmlwdG9yLmFwcCwgY3R4KTtcbiAgICAgICAgaWYgKGluc3BlY3Rvcikge1xuICAgICAgICAgICAgYXdhaXQgKDAsIGluc3BlY3Rvcl8xLnNlbmRJbnNwZWN0b3JUcmVlKShpbnNwZWN0b3IsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgSW5zcGVjdG9yICR7aW5zcGVjdG9ySWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuQ1VTVE9NX0lOU1BFQ1RPUl9TRU5EX1NUQVRFLCBhc3luYyAoaW5zcGVjdG9ySWQsIHBsdWdpbikgPT4ge1xuICAgICAgICBjb25zdCBpbnNwZWN0b3IgPSAoMCwgaW5zcGVjdG9yXzEuZ2V0SW5zcGVjdG9yKShpbnNwZWN0b3JJZCwgcGx1Z2luLmRlc2NyaXB0b3IuYXBwLCBjdHgpO1xuICAgICAgICBpZiAoaW5zcGVjdG9yKSB7XG4gICAgICAgICAgICBhd2FpdCAoMCwgaW5zcGVjdG9yXzEuc2VuZEluc3BlY3RvclN0YXRlKShpbnNwZWN0b3IsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgSW5zcGVjdG9yICR7aW5zcGVjdG9ySWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuQ1VTVE9NX0lOU1BFQ1RPUl9TRUxFQ1RfTk9ERSwgYXN5bmMgKGluc3BlY3RvcklkLCBub2RlSWQsIHBsdWdpbikgPT4ge1xuICAgICAgICBjb25zdCBpbnNwZWN0b3IgPSAoMCwgaW5zcGVjdG9yXzEuZ2V0SW5zcGVjdG9yKShpbnNwZWN0b3JJZCwgcGx1Z2luLmRlc2NyaXB0b3IuYXBwLCBjdHgpO1xuICAgICAgICBpZiAoaW5zcGVjdG9yKSB7XG4gICAgICAgICAgICBhd2FpdCAoMCwgaW5zcGVjdG9yXzEuc2VsZWN0SW5zcGVjdG9yTm9kZSkoaW5zcGVjdG9yLCBub2RlSWQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgSW5zcGVjdG9yICR7aW5zcGVjdG9ySWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gUGx1Z2luc1xuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0ICgwLCBwbHVnaW5fMS5hZGRQcmV2aW91c2x5UmVnaXN0ZXJlZFBsdWdpbnMpKGN0eCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGFkZGluZyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgcGx1Z2luczpgKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgKDAsIHBsdWdpbl8xLmFkZFF1ZXVlZFBsdWdpbnMpKGN0eCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGFkZGluZyBxdWV1ZWQgcGx1Z2luczpgKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9uKHNoYXJlZF91dGlsc18xLkhvb2tFdmVudHMuU0VUVVBfREVWVE9PTFNfUExVR0lOLCBhc3luYyAocGx1Z2luRGVzY3JpcHRvciwgc2V0dXBGbikgPT4ge1xuICAgICAgICBhd2FpdCAoMCwgcGx1Z2luXzEuYWRkUGx1Z2luKSh7IHBsdWdpbkRlc2NyaXB0b3IsIHNldHVwRm4gfSwgY3R4KTtcbiAgICB9KTtcbiAgICBzaGFyZWRfdXRpbHNfMS50YXJnZXQuX19WVUVfREVWVE9PTFNfUExVR0lOX0FQSV9BVkFJTEFCTEVfXyA9IHRydWU7XG4gICAgLy8gTGVnYWN5IGZsdXNoXG4gICAgY29uc3QgaGFuZGxlRmx1c2ggPSAoMCwgZGVib3VuY2VfMS5kZWZhdWx0KShhc3luYyAoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKChfYSA9IGN0eC5jdXJyZW50QXBwUmVjb3JkKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYmFja2VuZC5vcHRpb25zLmZlYXR1cmVzLmluY2x1ZGVzKGFwcF9iYWNrZW5kX2FwaV8xLkJ1aWx0aW5CYWNrZW5kRmVhdHVyZS5GTFVTSCkpIHtcbiAgICAgICAgICAgIGF3YWl0ICgwLCBjb21wb25lbnRfMS5zZW5kQ29tcG9uZW50VHJlZURhdGEpKGN0eC5jdXJyZW50QXBwUmVjb3JkLCAnX3Jvb3QnLCBjdHguY3VycmVudEFwcFJlY29yZC5jb21wb25lbnRGaWx0ZXIsIG51bGwsIGN0eCk7XG4gICAgICAgICAgICBpZiAoY3R4LmN1cnJlbnRJbnNwZWN0ZWRDb21wb25lbnRJZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0ICgwLCBjb21wb25lbnRfMS5zZW5kU2VsZWN0ZWRDb21wb25lbnREYXRhKShjdHguY3VycmVudEFwcFJlY29yZCwgY3R4LmN1cnJlbnRJbnNwZWN0ZWRDb21wb25lbnRJZCwgY3R4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIDUwMCk7XG4gICAgZ2xvYmFsX2hvb2tfMS5ob29rLm9mZihzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLkZMVVNIKTtcbiAgICBnbG9iYWxfaG9va18xLmhvb2sub24oc2hhcmVkX3V0aWxzXzEuSG9va0V2ZW50cy5GTFVTSCwgaGFuZGxlRmx1c2gpO1xuICAgIC8vIENvbm5lY3QgZG9uZVxuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0ICgwLCB0aW1lbGluZV9tYXJrZXJfMS5hZGRUaW1lbGluZU1hcmtlcikoe1xuICAgICAgICAgICAgaWQ6ICd2dWUtZGV2dG9vbHMtaW5pdC1iYWNrZW5kJyxcbiAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICBsYWJlbDogJ1Z1ZSBEZXZ0b29scyBjb25uZWN0ZWQnLFxuICAgICAgICAgICAgY29sb3I6IDB4NDFCODgzLFxuICAgICAgICAgICAgYWxsOiB0cnVlLFxuICAgICAgICB9LCBjdHgpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciB3aGlsZSBhZGRpbmcgZGV2dG9vbHMgY29ubmVjdGVkIHRpbWVsaW5lIG1hcmtlcjpgKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG59XG5mdW5jdGlvbiBjb25uZWN0QnJpZGdlKCkge1xuICAgIC8vIFN1YnNjcmlwdGlvbnNcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX1NVQlNDUklCRSwgKHsgdHlwZSwgcGF5bG9hZCB9KSA9PiB7XG4gICAgICAgICgwLCBzdWJzY3JpcHRpb25zXzEuc3Vic2NyaWJlKSh0eXBlLCBwYXlsb2FkKTtcbiAgICB9KTtcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX1VOU1VCU0NSSUJFLCAoeyB0eXBlLCBwYXlsb2FkIH0pID0+IHtcbiAgICAgICAgKDAsIHN1YnNjcmlwdGlvbnNfMS51bnN1YnNjcmliZSkodHlwZSwgcGF5bG9hZCk7XG4gICAgfSk7XG4gICAgLy8gVGFic1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfVEFCX1NXSVRDSCwgYXN5bmMgKHRhYikgPT4ge1xuICAgICAgICBjdHguY3VycmVudFRhYiA9IHRhYjtcbiAgICAgICAgYXdhaXQgKDAsIGhpZ2hsaWdodGVyXzEudW5IaWdobGlnaHQpKCk7XG4gICAgfSk7XG4gICAgLy8gQXBwc1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQVBQX0xJU1QsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgKDAsIGFwcF8xLnNlbmRBcHBzKShjdHgpO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQVBQX1NFTEVDVCwgYXN5bmMgKGlkKSA9PiB7XG4gICAgICAgIGlmIChpZCA9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCByZWNvcmQgPSBjdHguYXBwUmVjb3Jkcy5maW5kKHIgPT4gci5pZCA9PT0gaWQpO1xuICAgICAgICBpZiAocmVjb3JkKSB7XG4gICAgICAgICAgICBhd2FpdCAoMCwgYXBwXzEuc2VsZWN0QXBwKShyZWNvcmQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgQXBwIHdpdGggaWQgJHtpZH0gbm90IGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX1NDQU5fTEVHQUNZX0FQUFMsICgpID0+IHtcbiAgICAgICAgaWYgKGdsb2JhbF9ob29rXzEuaG9vay5WdWUpIHtcbiAgICAgICAgICAgICgwLCBhcHBfMS5fbGVnYWN5X2dldEFuZFJlZ2lzdGVyQXBwcykoY3R4KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vIENvbXBvbmVudHNcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX0NPTVBPTkVOVF9UUkVFLCBhc3luYyAoeyBpbnN0YW5jZUlkLCBmaWx0ZXIgfSkgPT4ge1xuICAgICAgICBjdHguY3VycmVudEFwcFJlY29yZC5jb21wb25lbnRGaWx0ZXIgPSBmaWx0ZXI7XG4gICAgICAgICgwLCBzdWJzY3JpcHRpb25zXzEuc3Vic2NyaWJlKShzaGFyZWRfdXRpbHNfMS5CcmlkZ2VTdWJzY3JpcHRpb25zLkNPTVBPTkVOVF9UUkVFLCB7IGluc3RhbmNlSWQgfSk7XG4gICAgICAgIGF3YWl0ICgwLCBjb21wb25lbnRfMS5zZW5kQ29tcG9uZW50VHJlZURhdGEpKGN0eC5jdXJyZW50QXBwUmVjb3JkLCBpbnN0YW5jZUlkLCBmaWx0ZXIsIG51bGwsIGN0eCk7XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DT01QT05FTlRfU0VMRUNURURfREFUQSwgYXN5bmMgKGluc3RhbmNlSWQpID0+IHtcbiAgICAgICAgYXdhaXQgKDAsIGNvbXBvbmVudF8xLnNlbmRTZWxlY3RlZENvbXBvbmVudERhdGEpKGN0eC5jdXJyZW50QXBwUmVjb3JkLCBpbnN0YW5jZUlkLCBjdHgpO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQ09NUE9ORU5UX0VESVRfU1RBVEUsIGFzeW5jICh7IGluc3RhbmNlSWQsIGRvdFBhdGgsIHR5cGUsIHZhbHVlLCBuZXdLZXksIHJlbW92ZSB9KSA9PiB7XG4gICAgICAgIGF3YWl0ICgwLCBjb21wb25lbnRfMS5lZGl0Q29tcG9uZW50U3RhdGUpKGluc3RhbmNlSWQsIGRvdFBhdGgsIHR5cGUsIHsgdmFsdWUsIG5ld0tleSwgcmVtb3ZlIH0sIGN0eCk7XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DT01QT05FTlRfSU5TUEVDVF9ET00sIGFzeW5jICh7IGluc3RhbmNlSWQgfSkgPT4ge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9ICgwLCBjb21wb25lbnRfMS5nZXRDb21wb25lbnRJbnN0YW5jZSkoY3R4LmN1cnJlbnRBcHBSZWNvcmQsIGluc3RhbmNlSWQsIGN0eCk7XG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgICAgY29uc3QgW2VsXSA9IGF3YWl0IGN0eC5jdXJyZW50QXBwUmVjb3JkLmJhY2tlbmQuYXBpLmdldENvbXBvbmVudFJvb3RFbGVtZW50cyhpbnN0YW5jZSk7XG4gICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgd2luZG93Ll9fVlVFX0RFVlRPT0xTX0lOU1BFQ1RfVEFSR0VUX18gPSBlbDtcbiAgICAgICAgICAgICAgICBjdHguYnJpZGdlLnNlbmQoc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0ZST05UX0NPTVBPTkVOVF9JTlNQRUNUX0RPTSwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX0NPTVBPTkVOVF9TQ1JPTExfVE8sIGFzeW5jICh7IGluc3RhbmNlSWQgfSkgPT4ge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9ICgwLCBjb21wb25lbnRfMS5nZXRDb21wb25lbnRJbnN0YW5jZSkoY3R4LmN1cnJlbnRBcHBSZWNvcmQsIGluc3RhbmNlSWQsIGN0eCk7XG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgICAgY29uc3QgW2VsXSA9IGF3YWl0IGN0eC5jdXJyZW50QXBwUmVjb3JkLmJhY2tlbmQuYXBpLmdldENvbXBvbmVudFJvb3RFbGVtZW50cyhpbnN0YW5jZSk7XG4gICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVsLnNjcm9sbEludG9WaWV3ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZTogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIG5vZGVzIHRoYXQgZG9uJ3QgaW1wbGVtZW50IHNjcm9sbEludG9WaWV3XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvdW5kcyA9IGF3YWl0IGN0eC5jdXJyZW50QXBwUmVjb3JkLmJhY2tlbmQuYXBpLmdldENvbXBvbmVudEJvdW5kcyhpbnN0YW5jZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUYXJnZXQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUYXJnZXQuc3R5bGUud2lkdGggPSBgJHtib3VuZHMud2lkdGh9cHhgO1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUYXJnZXQuc3R5bGUuaGVpZ2h0ID0gYCR7Ym91bmRzLmhlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFRhcmdldC5zdHlsZS50b3AgPSBgJHtib3VuZHMudG9wfXB4YDtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVGFyZ2V0LnN0eWxlLmxlZnQgPSBgJHtib3VuZHMubGVmdH1weGA7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2Nyb2xsVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVGFyZ2V0LnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZTogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2Nyb2xsVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICgwLCBoaWdobGlnaHRlcl8xLmhpZ2hsaWdodCkoaW5zdGFuY2UsIGN0eC5jdXJyZW50QXBwUmVjb3JkLmJhY2tlbmQsIGN0eCk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICgwLCBoaWdobGlnaHRlcl8xLnVuSGlnaGxpZ2h0KSgpO1xuICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DT01QT05FTlRfUkVOREVSX0NPREUsIGFzeW5jICh7IGluc3RhbmNlSWQgfSkgPT4ge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9ICgwLCBjb21wb25lbnRfMS5nZXRDb21wb25lbnRJbnN0YW5jZSkoY3R4LmN1cnJlbnRBcHBSZWNvcmQsIGluc3RhbmNlSWQsIGN0eCk7XG4gICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSBhd2FpdCBjdHguY3VycmVudEFwcFJlY29yZC5iYWNrZW5kLmFwaS5nZXRDb21wb25lbnRSZW5kZXJDb2RlKGluc3RhbmNlKTtcbiAgICAgICAgICAgIGN0eC5icmlkZ2Uuc2VuZChzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fRlJPTlRfQ09NUE9ORU5UX1JFTkRFUl9DT0RFLCB7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2VJZCxcbiAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX0NVU1RPTV9TVEFURV9BQ1RJT04sIGFzeW5jICh7IHZhbHVlLCBhY3Rpb25JbmRleCB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHJhd0FjdGlvbiA9IHZhbHVlLl9jdXN0b20uYWN0aW9uc1thY3Rpb25JbmRleF07XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9ICgwLCBzaGFyZWRfdXRpbHNfMS5yZXZpdmUpKHJhd0FjdGlvbiA9PT0gbnVsbCB8fCByYXdBY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJhd0FjdGlvbi5hY3Rpb24pO1xuICAgICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGFjdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBDb3VsZG4ndCByZXZpdmUgYWN0aW9uICR7YWN0aW9uSW5kZXh9IGZyb21gLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBIaWdobGlnaHRlclxuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQ09NUE9ORU5UX01PVVNFX09WRVIsIGFzeW5jIChpbnN0YW5jZUlkKSA9PiB7XG4gICAgICAgIGF3YWl0ICgwLCBoaWdobGlnaHRlcl8xLmhpZ2hsaWdodCkoY3R4LmN1cnJlbnRBcHBSZWNvcmQuaW5zdGFuY2VNYXAuZ2V0KGluc3RhbmNlSWQpLCBjdHguY3VycmVudEFwcFJlY29yZC5iYWNrZW5kLCBjdHgpO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQ09NUE9ORU5UX01PVVNFX09VVCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCAoMCwgaGlnaGxpZ2h0ZXJfMS51bkhpZ2hsaWdodCkoKTtcbiAgICB9KTtcbiAgICAvLyBDb21wb25lbnQgcGlja2VyXG4gICAgY29uc3QgY29tcG9uZW50UGlja2VyID0gbmV3IGNvbXBvbmVudF9waWNrXzEuZGVmYXVsdChjdHgpO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQ09NUE9ORU5UX1BJQ0ssICgpID0+IHtcbiAgICAgICAgY29tcG9uZW50UGlja2VyLnN0YXJ0U2VsZWN0aW5nKCk7XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DT01QT05FTlRfUElDS19DQU5DRUxFRCwgKCkgPT4ge1xuICAgICAgICBjb21wb25lbnRQaWNrZXIuc3RvcFNlbGVjdGluZygpO1xuICAgIH0pO1xuICAgIC8vIFRpbWVsaW5lXG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19USU1FTElORV9MQVlFUl9MSVNULCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0ICgwLCB0aW1lbGluZV8xLnNlbmRUaW1lbGluZUxheWVycykoY3R4KTtcbiAgICB9KTtcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX1RJTUVMSU5FX1NIT1dfU0NSRUVOU0hPVCwgYXN5bmMgKHsgc2NyZWVuc2hvdCB9KSA9PiB7XG4gICAgICAgIGF3YWl0ICgwLCB0aW1lbGluZV9zY3JlZW5zaG90XzEuc2hvd1NjcmVlbnNob3QpKHNjcmVlbnNob3QsIGN0eCk7XG4gICAgfSk7XG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19USU1FTElORV9DTEVBUiwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCAoMCwgdGltZWxpbmVfMS5jbGVhclRpbWVsaW5lKShjdHgpO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfVElNRUxJTkVfRVZFTlRfREFUQSwgYXN5bmMgKHsgaWQgfSkgPT4ge1xuICAgICAgICBhd2FpdCAoMCwgdGltZWxpbmVfMS5zZW5kVGltZWxpbmVFdmVudERhdGEpKGlkLCBjdHgpO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfVElNRUxJTkVfTEFZRVJfTE9BRF9FVkVOVFMsIGFzeW5jICh7IGFwcElkLCBsYXllcklkIH0pID0+IHtcbiAgICAgICAgYXdhaXQgKDAsIHRpbWVsaW5lXzEuc2VuZFRpbWVsaW5lTGF5ZXJFdmVudHMpKGFwcElkLCBsYXllcklkLCBjdHgpO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfVElNRUxJTkVfTE9BRF9NQVJLRVJTLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0ICgwLCB0aW1lbGluZV9tYXJrZXJfMS5zZW5kVGltZWxpbmVNYXJrZXJzKShjdHgpO1xuICAgIH0pO1xuICAgIC8vIEN1c3RvbSBpbnNwZWN0b3JzXG4gICAgY3R4LmJyaWRnZS5vbihzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fQkFDS19DVVNUT01fSU5TUEVDVE9SX0xJU1QsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgKDAsIGluc3BlY3Rvcl8xLnNlbmRDdXN0b21JbnNwZWN0b3JzKShjdHgpO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9UUkVFLCBhc3luYyAoeyBpbnNwZWN0b3JJZCwgYXBwSWQsIHRyZWVGaWx0ZXIgfSkgPT4ge1xuICAgICAgICBjb25zdCBpbnNwZWN0b3IgPSBhd2FpdCAoMCwgaW5zcGVjdG9yXzEuZ2V0SW5zcGVjdG9yV2l0aEFwcElkKShpbnNwZWN0b3JJZCwgYXBwSWQsIGN0eCk7XG4gICAgICAgIGlmIChpbnNwZWN0b3IpIHtcbiAgICAgICAgICAgIGluc3BlY3Rvci50cmVlRmlsdGVyID0gdHJlZUZpbHRlcjtcbiAgICAgICAgICAgICgwLCBpbnNwZWN0b3JfMS5zZW5kSW5zcGVjdG9yVHJlZSkoaW5zcGVjdG9yLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNoYXJlZF91dGlsc18xLlNoYXJlZERhdGEuZGVidWdJbmZvKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYEluc3BlY3RvciAke2luc3BlY3RvcklkfSBub3QgZm91bmRgKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9TVEFURSwgYXN5bmMgKHsgaW5zcGVjdG9ySWQsIGFwcElkLCBub2RlSWQgfSkgPT4ge1xuICAgICAgICBjb25zdCBpbnNwZWN0b3IgPSBhd2FpdCAoMCwgaW5zcGVjdG9yXzEuZ2V0SW5zcGVjdG9yV2l0aEFwcElkKShpbnNwZWN0b3JJZCwgYXBwSWQsIGN0eCk7XG4gICAgICAgIGlmIChpbnNwZWN0b3IpIHtcbiAgICAgICAgICAgIGluc3BlY3Rvci5zZWxlY3RlZE5vZGVJZCA9IG5vZGVJZDtcbiAgICAgICAgICAgICgwLCBpbnNwZWN0b3JfMS5zZW5kSW5zcGVjdG9yU3RhdGUpKGluc3BlY3RvciwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzaGFyZWRfdXRpbHNfMS5TaGFyZWREYXRhLmRlYnVnSW5mbykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBJbnNwZWN0b3IgJHtpbnNwZWN0b3JJZH0gbm90IGZvdW5kYCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjdHguYnJpZGdlLm9uKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19CQUNLX0NVU1RPTV9JTlNQRUNUT1JfRURJVF9TVEFURSwgYXN5bmMgKHsgaW5zcGVjdG9ySWQsIGFwcElkLCBub2RlSWQsIHBhdGgsIHR5cGUsIHBheWxvYWQgfSkgPT4ge1xuICAgICAgICBjb25zdCBpbnNwZWN0b3IgPSBhd2FpdCAoMCwgaW5zcGVjdG9yXzEuZ2V0SW5zcGVjdG9yV2l0aEFwcElkKShpbnNwZWN0b3JJZCwgYXBwSWQsIGN0eCk7XG4gICAgICAgIGlmIChpbnNwZWN0b3IpIHtcbiAgICAgICAgICAgIGF3YWl0ICgwLCBpbnNwZWN0b3JfMS5lZGl0SW5zcGVjdG9yU3RhdGUpKGluc3BlY3Rvciwgbm9kZUlkLCBwYXRoLCB0eXBlLCBwYXlsb2FkLCBjdHgpO1xuICAgICAgICAgICAgaW5zcGVjdG9yLnNlbGVjdGVkTm9kZUlkID0gbm9kZUlkO1xuICAgICAgICAgICAgYXdhaXQgKDAsIGluc3BlY3Rvcl8xLnNlbmRJbnNwZWN0b3JTdGF0ZSkoaW5zcGVjdG9yLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNoYXJlZF91dGlsc18xLlNoYXJlZERhdGEuZGVidWdJbmZvKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYEluc3BlY3RvciAke2luc3BlY3RvcklkfSBub3QgZm91bmRgKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9BQ1RJT04sIGFzeW5jICh7IGluc3BlY3RvcklkLCBhcHBJZCwgYWN0aW9uSW5kZXggfSkgPT4ge1xuICAgICAgICBjb25zdCBpbnNwZWN0b3IgPSBhd2FpdCAoMCwgaW5zcGVjdG9yXzEuZ2V0SW5zcGVjdG9yV2l0aEFwcElkKShpbnNwZWN0b3JJZCwgYXBwSWQsIGN0eCk7XG4gICAgICAgIGlmIChpbnNwZWN0b3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IGluc3BlY3Rvci5hY3Rpb25zW2FjdGlvbkluZGV4XTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgYWN0aW9uLmFjdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgSW5zcGVjdG9yICR7aW5zcGVjdG9ySWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gTWlzY1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfTE9HLCAocGF5bG9hZCkgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAocGF5bG9hZC5zZXJpYWxpemVkKSB7XG4gICAgICAgICAgICB2YWx1ZSA9ICgwLCBzaGFyZWRfdXRpbHNfMS5wYXJzZSkodmFsdWUsIHBheWxvYWQucmV2aXZlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwYXlsb2FkLnJldml2ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSAoMCwgc2hhcmVkX3V0aWxzXzEucmV2aXZlKSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZVtwYXlsb2FkLmxldmVsXSh2YWx1ZSk7XG4gICAgfSk7XG4gICAgLy8gUGx1Z2luc1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfREVWVE9PTFNfUExVR0lOX0xJU1QsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgKDAsIHBsdWdpbl8xLnNlbmRQbHVnaW5MaXN0KShjdHgpO1xuICAgIH0pO1xuICAgIGN0eC5icmlkZ2Uub24oc2hhcmVkX3V0aWxzXzEuQnJpZGdlRXZlbnRzLlRPX0JBQ0tfREVWVE9PTFNfUExVR0lOX1NFVFRJTkdfVVBEQVRFRCwgKHsgcGx1Z2luSWQsIGtleSwgbmV3VmFsdWUsIG9sZFZhbHVlIH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSAoMCwgc2hhcmVkX3V0aWxzXzEuZ2V0UGx1Z2luU2V0dGluZ3MpKHBsdWdpbklkKTtcbiAgICAgICAgY3R4Lmhvb2suZW1pdChzaGFyZWRfdXRpbHNfMS5Ib29rRXZlbnRzLlBMVUdJTl9TRVRUSU5HU19TRVQsIHBsdWdpbklkLCBzZXR0aW5ncyk7XG4gICAgICAgIGN0eC5jdXJyZW50QXBwUmVjb3JkLmJhY2tlbmQuYXBpLmNhbGxIb29rKFwic2V0UGx1Z2luU2V0dGluZ3NcIiAvKiBTRVRfUExVR0lOX1NFVFRJTkdTICovLCB7XG4gICAgICAgICAgICBhcHA6IGN0eC5jdXJyZW50QXBwUmVjb3JkLm9wdGlvbnMuYXBwLFxuICAgICAgICAgICAgcGx1Z2luSWQsXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBuZXdWYWx1ZSxcbiAgICAgICAgICAgIG9sZFZhbHVlLFxuICAgICAgICAgICAgc2V0dGluZ3MsXG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///6895\n");
|
|
159
159
|
|
|
160
160
|
/***/ }),
|
|
161
161
|
|
|
@@ -211,7 +211,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
211
211
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
212
212
|
|
|
213
213
|
"use strict";
|
|
214
|
-
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.sendTimelineMarkers = exports.addTimelineMarker = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nasync function addTimelineMarker(options, ctx) {\n var _a;\n\n if (!ctx.currentAppRecord) {\n options.all = true;\n }\n\n const marker = { ...options,\n appRecord: options.all ? null : ctx.currentAppRecord\n };\n ctx.timelineMarkers.push(marker);\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_TIMELINE_MARKER, {\n marker: await serializeMarker(marker),\n appId: (_a = ctx.currentAppRecord) === null || _a === void 0 ? void 0 : _a.id\n });\n}\n\nexports.addTimelineMarker = addTimelineMarker;\n\nasync function sendTimelineMarkers(ctx) {\n const markers = ctx.timelineMarkers.filter(marker => marker.all || marker.appRecord === ctx.currentAppRecord);\n const result = [];\n\n for (const marker of markers) {\n result.push(await serializeMarker(marker));\n }\n\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_TIMELINE_LOAD_MARKERS, {\n markers: result,\n appId: ctx.currentAppRecord.id\n });\n}\n\nexports.sendTimelineMarkers = sendTimelineMarkers;\n\nasync function serializeMarker(marker) {\n var _a;\n\n return {\n id: marker.id,\n appId: (_a = marker.appRecord) === null || _a === void 0 ? void 0 : _a.id,\n all: marker.all,\n time: marker.time,\n label: marker.label,\n color: marker.color\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
214
|
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.sendTimelineMarkers = exports.addTimelineMarker = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nasync function addTimelineMarker(options, ctx) {\n var _a;\n\n if (!ctx.currentAppRecord) {\n options.all = true;\n }\n\n const marker = { ...options,\n appRecord: options.all ? null : ctx.currentAppRecord\n };\n ctx.timelineMarkers.push(marker);\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_TIMELINE_MARKER, {\n marker: await serializeMarker(marker),\n appId: (_a = ctx.currentAppRecord) === null || _a === void 0 ? void 0 : _a.id\n });\n}\n\nexports.addTimelineMarker = addTimelineMarker;\n\nasync function sendTimelineMarkers(ctx) {\n if (!ctx.currentAppRecord) return;\n const markers = ctx.timelineMarkers.filter(marker => marker.all || marker.appRecord === ctx.currentAppRecord);\n const result = [];\n\n for (const marker of markers) {\n result.push(await serializeMarker(marker));\n }\n\n ctx.bridge.send(shared_utils_1.BridgeEvents.TO_FRONT_TIMELINE_LOAD_MARKERS, {\n markers: result,\n appId: ctx.currentAppRecord.id\n });\n}\n\nexports.sendTimelineMarkers = sendTimelineMarkers;\n\nasync function serializeMarker(marker) {\n var _a;\n\n return {\n id: marker.id,\n appId: (_a = marker.appRecord) === null || _a === void 0 ? void 0 : _a.id,\n all: marker.all,\n time: marker.time,\n label: marker.label,\n color: marker.color\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIwNjMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUdPLGVBQWUsaUJBQWYsQ0FBa0MsT0FBbEMsRUFBa0UsR0FBbEUsRUFBcUY7OztBQUMxRixNQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFULEVBQTJCO0FBQ3pCLFdBQU8sQ0FBQyxHQUFSLEdBQWMsSUFBZDtBQUNEOztBQUNELFFBQU0sTUFBTSxHQUFtQixFQUM3QixHQUFHLE9BRDBCO0FBRTdCLGFBQVMsRUFBRSxPQUFPLENBQUMsR0FBUixHQUFjLElBQWQsR0FBcUIsR0FBRyxDQUFDO0FBRlAsR0FBL0I7QUFJQSxLQUFHLENBQUMsZUFBSixDQUFvQixJQUFwQixDQUF5QixNQUF6QjtBQUNBLEtBQUcsQ0FBQyxNQUFKLENBQVcsSUFBWCxDQUFnQiw0QkFBYSx3QkFBN0IsRUFBdUQ7QUFDckQsVUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDLE1BQUQsQ0FEd0I7QUFFckQsU0FBSyxFQUFFLFNBQUcsQ0FBQyxnQkFBSixNQUFvQixJQUFwQixJQUFvQixhQUFwQixHQUFvQixNQUFwQixHQUFvQixHQUFFO0FBRndCLEdBQXZEO0FBSUQ7O0FBYkQ7O0FBZU8sZUFBZSxtQkFBZixDQUFvQyxHQUFwQyxFQUF1RDtBQUM1RCxNQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFULEVBQTJCO0FBQzNCLFFBQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxlQUFKLENBQW9CLE1BQXBCLENBQTJCLE1BQU0sSUFBSSxNQUFNLENBQUMsR0FBUCxJQUFjLE1BQU0sQ0FBQyxTQUFQLEtBQXFCLEdBQUcsQ0FBQyxnQkFBNUUsQ0FBaEI7QUFDQSxRQUFNLE1BQU0sR0FBRyxFQUFmOztBQUNBLE9BQUssTUFBTSxNQUFYLElBQXFCLE9BQXJCLEVBQThCO0FBQzVCLFVBQU0sQ0FBQyxJQUFQLENBQVksTUFBTSxlQUFlLENBQUMsTUFBRCxDQUFqQztBQUNEOztBQUNELEtBQUcsQ0FBQyxNQUFKLENBQVcsSUFBWCxDQUFnQiw0QkFBYSw4QkFBN0IsRUFBNkQ7QUFDM0QsV0FBTyxFQUFFLE1BRGtEO0FBRTNELFNBQUssRUFBRSxHQUFHLENBQUMsZ0JBQUosQ0FBcUI7QUFGK0IsR0FBN0Q7QUFJRDs7QUFYRDs7QUFhQSxlQUFlLGVBQWYsQ0FBZ0MsTUFBaEMsRUFBc0Q7OztBQUNwRCxTQUFPO0FBQ0wsTUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUROO0FBRUwsU0FBSyxFQUFFLFlBQU0sQ0FBQyxTQUFQLE1BQWdCLElBQWhCLElBQWdCLGFBQWhCLEdBQWdCLE1BQWhCLEdBQWdCLEdBQUUsRUFGcEI7QUFHTCxPQUFHLEVBQUUsTUFBTSxDQUFDLEdBSFA7QUFJTCxRQUFJLEVBQUUsTUFBTSxDQUFDLElBSlI7QUFLTCxTQUFLLEVBQUUsTUFBTSxDQUFDLEtBTFQ7QUFNTCxTQUFLLEVBQUUsTUFBTSxDQUFDO0FBTlQsR0FBUDtBQVFEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvdGltZWxpbmUtbWFya2VyLnRzPzQ0OGQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnNlbmRUaW1lbGluZU1hcmtlcnMgPSBleHBvcnRzLmFkZFRpbWVsaW5lTWFya2VyID0gdm9pZCAwO1xuY29uc3Qgc2hhcmVkX3V0aWxzXzEgPSByZXF1aXJlKFwiQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHNcIik7XG5hc3luYyBmdW5jdGlvbiBhZGRUaW1lbGluZU1hcmtlcihvcHRpb25zLCBjdHgpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKCFjdHguY3VycmVudEFwcFJlY29yZCkge1xuICAgICAgICBvcHRpb25zLmFsbCA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IG1hcmtlciA9IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgYXBwUmVjb3JkOiBvcHRpb25zLmFsbCA/IG51bGwgOiBjdHguY3VycmVudEFwcFJlY29yZCxcbiAgICB9O1xuICAgIGN0eC50aW1lbGluZU1hcmtlcnMucHVzaChtYXJrZXIpO1xuICAgIGN0eC5icmlkZ2Uuc2VuZChzaGFyZWRfdXRpbHNfMS5CcmlkZ2VFdmVudHMuVE9fRlJPTlRfVElNRUxJTkVfTUFSS0VSLCB7XG4gICAgICAgIG1hcmtlcjogYXdhaXQgc2VyaWFsaXplTWFya2VyKG1hcmtlciksXG4gICAgICAgIGFwcElkOiAoX2EgPSBjdHguY3VycmVudEFwcFJlY29yZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmlkLFxuICAgIH0pO1xufVxuZXhwb3J0cy5hZGRUaW1lbGluZU1hcmtlciA9IGFkZFRpbWVsaW5lTWFya2VyO1xuYXN5bmMgZnVuY3Rpb24gc2VuZFRpbWVsaW5lTWFya2VycyhjdHgpIHtcbiAgICBpZiAoIWN0eC5jdXJyZW50QXBwUmVjb3JkKVxuICAgICAgICByZXR1cm47XG4gICAgY29uc3QgbWFya2VycyA9IGN0eC50aW1lbGluZU1hcmtlcnMuZmlsdGVyKG1hcmtlciA9PiBtYXJrZXIuYWxsIHx8IG1hcmtlci5hcHBSZWNvcmQgPT09IGN0eC5jdXJyZW50QXBwUmVjb3JkKTtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IG1hcmtlciBvZiBtYXJrZXJzKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGF3YWl0IHNlcmlhbGl6ZU1hcmtlcihtYXJrZXIpKTtcbiAgICB9XG4gICAgY3R4LmJyaWRnZS5zZW5kKHNoYXJlZF91dGlsc18xLkJyaWRnZUV2ZW50cy5UT19GUk9OVF9USU1FTElORV9MT0FEX01BUktFUlMsIHtcbiAgICAgICAgbWFya2VyczogcmVzdWx0LFxuICAgICAgICBhcHBJZDogY3R4LmN1cnJlbnRBcHBSZWNvcmQuaWQsXG4gICAgfSk7XG59XG5leHBvcnRzLnNlbmRUaW1lbGluZU1hcmtlcnMgPSBzZW5kVGltZWxpbmVNYXJrZXJzO1xuYXN5bmMgZnVuY3Rpb24gc2VyaWFsaXplTWFya2VyKG1hcmtlcikge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogbWFya2VyLmlkLFxuICAgICAgICBhcHBJZDogKF9hID0gbWFya2VyLmFwcFJlY29yZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmlkLFxuICAgICAgICBhbGw6IG1hcmtlci5hbGwsXG4gICAgICAgIHRpbWU6IG1hcmtlci50aW1lLFxuICAgICAgICBsYWJlbDogbWFya2VyLmxhYmVsLFxuICAgICAgICBjb2xvcjogbWFya2VyLmNvbG9yLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aW1lbGluZS1tYXJrZXIuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///72063\n");
|
|
215
215
|
|
|
216
216
|
/***/ }),
|
|
217
217
|
|
|
@@ -219,7 +219,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
219
219
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
220
220
|
|
|
221
221
|
"use strict";
|
|
222
|
-
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.showScreenshot = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst queue_1 = __webpack_require__(49107);\n\nconst timeline_builtins_1 = __webpack_require__(78096);\n\nlet overlay;\nlet image;\nlet container;\nconst jobQueue = new queue_1.JobQueue();\n\nasync function showScreenshot(screenshot, ctx) {\n await jobQueue.queue(async () => {\n if (screenshot) {\n if (!container) {\n createElements();\n }\n\n image.src = screenshot.image;\n image.style.visibility = screenshot.image ? 'visible' : 'hidden';\n clearContent();\n const events = screenshot.events.map(id => ctx.timelineEventMap.get(id)).filter(Boolean).map(eventData => ({\n layer: timeline_builtins_1.builtinLayers.concat(ctx.timelineLayers).find(layer => layer.id === eventData.layerId),\n event: { ...eventData.event,\n layerId: eventData.layerId,\n renderMeta: {}\n }\n }));\n const renderContext = {\n screenshot,\n events: events.map(({\n event\n }) => event),\n index: 0\n };\n\n for (let i = 0; i < events.length; i++) {\n const {\n layer,\n event\n } = events[i];\n\n if (layer.screenshotOverlayRender) {\n renderContext.index = i;\n\n try {\n const result = await layer.screenshotOverlayRender(event, renderContext);\n\n if (result !== false) {\n if (typeof result === 'string') {\n container.innerHTML += result;\n } else {\n container.appendChild(result);\n }\n }\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n }\n }\n\n showElement();\n } else {\n hideElement();\n }\n });\n}\n\nexports.showScreenshot = showScreenshot;\n\nfunction createElements() {\n overlay = document.createElement('div');\n overlay.style.position = 'fixed';\n overlay.style.zIndex = '9999999999999';\n overlay.style.pointerEvents = 'none';\n overlay.style.left = '0';\n overlay.style.top = '0';\n overlay.style.width = '100vw';\n overlay.style.height = '100vh';\n overlay.style.backgroundColor = 'rgba(0,0,0,0.5)';\n overlay.style.overflow = 'hidden';\n const imageBox = document.createElement('div');\n imageBox.style.position = 'relative';\n overlay.appendChild(imageBox);\n image = document.createElement('img');\n imageBox.appendChild(image);\n container = document.createElement('div');\n container.style.position = 'absolute';\n container.style.left = '0';\n container.style.top = '0';\n imageBox.appendChild(container);\n const style = document.createElement('style');\n style.innerHTML = '.__vuedevtools_no-scroll { overflow: hidden; }';\n document.head.appendChild(style);\n}\n\nfunction showElement() {\n if (!overlay.parentNode) {\n document.body.appendChild(overlay);\n document.body.classList.add('__vuedevtools_no-scroll');\n }\n}\n\nfunction hideElement() {\n if (overlay && overlay.parentNode) {\n overlay.parentNode.removeChild(overlay);\n document.body.classList.remove('__vuedevtools_no-scroll');\n clearContent();\n }\n}\n\nfunction clearContent() {\n while (container.firstChild) {\n container.removeChild(container.lastChild);\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0EsWUFBUSxDQUFDLElBQVQsQ0FBYyxTQUFkLENBQXdCLEdBQXhCLENBQTRCLHlCQUE1QjtBQUNEO0FBQ0Y7O0FBRUQsU0FBUyxXQUFULEdBQW9CO0FBQ2xCLE1BQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUF2QixFQUFtQztBQUNqQyxXQUFPLENBQUMsVUFBUixDQUFtQixXQUFuQixDQUErQixPQUEvQjtBQUVBLFlBQVEsQ0FBQyxJQUFULENBQWMsU0FBZCxDQUF3QixNQUF4QixDQUErQix5QkFBL0I7QUFFQSxnQkFBWTtBQUNiO0FBQ0Y7O0FBRUQsU0FBUyxZQUFULEdBQXFCO0FBQ25CLFNBQU8sU0FBUyxDQUFDLFVBQWpCLEVBQTZCO0FBQzNCLGFBQVMsQ0FBQyxXQUFWLENBQXNCLFNBQVMsQ0FBQyxTQUFoQztBQUNEO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy90aW1lbGluZS1zY3JlZW5zaG90LnRzPzkxYmMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnNob3dTY3JlZW5zaG90ID0gdm9pZCAwO1xuY29uc3Qgc2hhcmVkX3V0aWxzXzEgPSByZXF1aXJlKFwiQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHNcIik7XG5jb25zdCBxdWV1ZV8xID0gcmVxdWlyZShcIi4vdXRpbC9xdWV1ZVwiKTtcbmNvbnN0IHRpbWVsaW5lX2J1aWx0aW5zXzEgPSByZXF1aXJlKFwiLi90aW1lbGluZS1idWlsdGluc1wiKTtcbmxldCBvdmVybGF5O1xubGV0IGltYWdlO1xubGV0IGNvbnRhaW5lcjtcbmNvbnN0IGpvYlF1ZXVlID0gbmV3IHF1ZXVlXzEuSm9iUXVldWUoKTtcbmFzeW5jIGZ1bmN0aW9uIHNob3dTY3JlZW5zaG90KHNjcmVlbnNob3QsIGN0eCkge1xuICAgIGF3YWl0IGpvYlF1ZXVlLnF1ZXVlKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKHNjcmVlbnNob3QpIHtcbiAgICAgICAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGltYWdlLnNyYyA9IHNjcmVlbnNob3QuaW1hZ2U7XG4gICAgICAgICAgICBpbWFnZS5zdHlsZS52aXNpYmlsaXR5ID0gc2NyZWVuc2hvdC5pbWFnZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nO1xuICAgICAgICAgICAgY2xlYXJDb250ZW50KCk7XG4gICAgICAgICAgICBjb25zdCBldmVudHMgPSBzY3JlZW5zaG90LmV2ZW50cy5tYXAoaWQgPT4gY3R4LnRpbWVsaW5lRXZlbnRNYXAuZ2V0KGlkKSkuZmlsdGVyKEJvb2xlYW4pLm1hcChldmVudERhdGEgPT4gKHtcbiAgICAgICAgICAgICAgICBsYXllcjogdGltZWxpbmVfYnVpbHRpbnNfMS5idWlsdGluTGF5ZXJzLmNvbmNhdChjdHgudGltZWxpbmVMYXllcnMpLmZpbmQobGF5ZXIgPT4gbGF5ZXIuaWQgPT09IGV2ZW50RGF0YS5sYXllcklkKSxcbiAgICAgICAgICAgICAgICBldmVudDoge1xuICAgICAgICAgICAgICAgICAgICAuLi5ldmVudERhdGEuZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgIGxheWVySWQ6IGV2ZW50RGF0YS5sYXllcklkLFxuICAgICAgICAgICAgICAgICAgICByZW5kZXJNZXRhOiB7fSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICBzY3JlZW5zaG90LFxuICAgICAgICAgICAgICAgIGV2ZW50czogZXZlbnRzLm1hcCgoeyBldmVudCB9KSA9PiBldmVudCksXG4gICAgICAgICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBldmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGxheWVyLCBldmVudCB9ID0gZXZlbnRzW2ldO1xuICAgICAgICAgICAgICAgIGlmIChsYXllci5zY3JlZW5zaG90T3ZlcmxheVJlbmRlcikge1xuICAgICAgICAgICAgICAgICAgICByZW5kZXJDb250ZXh0LmluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGxheWVyLnNjcmVlbnNob3RPdmVybGF5UmVuZGVyKGV2ZW50LCByZW5kZXJDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgKz0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hvd0VsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGhpZGVFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmV4cG9ydHMuc2hvd1NjcmVlbnNob3QgPSBzaG93U2NyZWVuc2hvdDtcbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRzKCkge1xuICAgIG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBvdmVybGF5LnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgICBvdmVybGF5LnN0eWxlLnpJbmRleCA9ICc5OTk5OTk5OTk5OTk5JztcbiAgICBvdmVybGF5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgb3ZlcmxheS5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgIG92ZXJsYXkuc3R5bGUudG9wID0gJzAnO1xuICAgIG92ZXJsYXkuc3R5bGUud2lkdGggPSAnMTAwdncnO1xuICAgIG92ZXJsYXkuc3R5bGUuaGVpZ2h0ID0gJzEwMHZoJztcbiAgICBvdmVybGF5LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdyZ2JhKDAsMCwwLDAuNSknO1xuICAgIG92ZXJsYXkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICBjb25zdCBpbWFnZUJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGltYWdlQm94LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICBvdmVybGF5LmFwcGVuZENoaWxkKGltYWdlQm94KTtcbiAgICBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgIGltYWdlQm94LmFwcGVuZENoaWxkKGltYWdlKTtcbiAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgIGNvbnRhaW5lci5zdHlsZS50b3AgPSAnMCc7XG4gICAgaW1hZ2VCb3guYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGUuaW5uZXJIVE1MID0gJy5fX3Z1ZWRldnRvb2xzX25vLXNjcm9sbCB7IG92ZXJmbG93OiBoaWRkZW47IH0nO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxuZnVuY3Rpb24gc2hvd0VsZW1lbnQoKSB7XG4gICAgaWYgKCFvdmVybGF5LnBhcmVudE5vZGUpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdfX3Z1ZWRldnRvb2xzX25vLXNjcm9sbCcpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGhpZGVFbGVtZW50KCkge1xuICAgIGlmIChvdmVybGF5ICYmIG92ZXJsYXkucGFyZW50Tm9kZSkge1xuICAgICAgICBvdmVybGF5LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob3ZlcmxheSk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnX192dWVkZXZ0b29sc19uby1zY3JvbGwnKTtcbiAgICAgICAgY2xlYXJDb250ZW50KCk7XG4gICAgfVxufVxuZnVuY3Rpb24gY2xlYXJDb250ZW50KCkge1xuICAgIHdoaWxlIChjb250YWluZXIuZmlyc3RDaGlsZCkge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGltZWxpbmUtc2NyZWVuc2hvdC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11354\n");
|
|
222
|
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.showScreenshot = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst queue_1 = __webpack_require__(49107);\n\nconst timeline_builtins_1 = __webpack_require__(78096);\n\nlet overlay;\nlet image;\nlet container;\nconst jobQueue = new queue_1.JobQueue();\n\nasync function showScreenshot(screenshot, ctx) {\n await jobQueue.queue('showScreenshot', async () => {\n if (screenshot) {\n if (!container) {\n createElements();\n }\n\n image.src = screenshot.image;\n image.style.visibility = screenshot.image ? 'visible' : 'hidden';\n clearContent();\n const events = screenshot.events.map(id => ctx.timelineEventMap.get(id)).filter(Boolean).map(eventData => ({\n layer: timeline_builtins_1.builtinLayers.concat(ctx.timelineLayers).find(layer => layer.id === eventData.layerId),\n event: { ...eventData.event,\n layerId: eventData.layerId,\n renderMeta: {}\n }\n }));\n const renderContext = {\n screenshot,\n events: events.map(({\n event\n }) => event),\n index: 0\n };\n\n for (let i = 0; i < events.length; i++) {\n const {\n layer,\n event\n } = events[i];\n\n if (layer.screenshotOverlayRender) {\n renderContext.index = i;\n\n try {\n const result = await layer.screenshotOverlayRender(event, renderContext);\n\n if (result !== false) {\n if (typeof result === 'string') {\n container.innerHTML += result;\n } else {\n container.appendChild(result);\n }\n }\n } catch (e) {\n if (shared_utils_1.SharedData.debugInfo) {\n console.error(e);\n }\n }\n }\n }\n\n showElement();\n } else {\n hideElement();\n }\n });\n}\n\nexports.showScreenshot = showScreenshot;\n\nfunction createElements() {\n overlay = document.createElement('div');\n overlay.style.position = 'fixed';\n overlay.style.zIndex = '9999999999999';\n overlay.style.pointerEvents = 'none';\n overlay.style.left = '0';\n overlay.style.top = '0';\n overlay.style.width = '100vw';\n overlay.style.height = '100vh';\n overlay.style.backgroundColor = 'rgba(0,0,0,0.5)';\n overlay.style.overflow = 'hidden';\n const imageBox = document.createElement('div');\n imageBox.style.position = 'relative';\n overlay.appendChild(imageBox);\n image = document.createElement('img');\n imageBox.appendChild(image);\n container = document.createElement('div');\n container.style.position = 'absolute';\n container.style.left = '0';\n container.style.top = '0';\n imageBox.appendChild(container);\n const style = document.createElement('style');\n style.innerHTML = '.__vuedevtools_no-scroll { overflow: hidden; }';\n document.head.appendChild(style);\n}\n\nfunction showElement() {\n if (!overlay.parentNode) {\n document.body.appendChild(overlay);\n document.body.classList.add('__vuedevtools_no-scroll');\n }\n}\n\nfunction hideElement() {\n if (overlay && overlay.parentNode) {\n overlay.parentNode.removeChild(overlay);\n document.body.classList.remove('__vuedevtools_no-scroll');\n clearContent();\n }\n}\n\nfunction clearContent() {\n while (container.firstChild) {\n container.removeChild(container.lastChild);\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTBCLE9BQTFCO0FBQ0EsWUFBUSxDQUFDLElBQVQsQ0FBYyxTQUFkLENBQXdCLEdBQXhCLENBQTRCLHlCQUE1QjtBQUNEO0FBQ0Y7O0FBRUQsU0FBUyxXQUFULEdBQW9CO0FBQ2xCLE1BQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUF2QixFQUFtQztBQUNqQyxXQUFPLENBQUMsVUFBUixDQUFtQixXQUFuQixDQUErQixPQUEvQjtBQUVBLFlBQVEsQ0FBQyxJQUFULENBQWMsU0FBZCxDQUF3QixNQUF4QixDQUErQix5QkFBL0I7QUFFQSxnQkFBWTtBQUNiO0FBQ0Y7O0FBRUQsU0FBUyxZQUFULEdBQXFCO0FBQ25CLFNBQU8sU0FBUyxDQUFDLFVBQWpCLEVBQTZCO0FBQzNCLGFBQVMsQ0FBQyxXQUFWLENBQXNCLFNBQVMsQ0FBQyxTQUFoQztBQUNEO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy90aW1lbGluZS1zY3JlZW5zaG90LnRzPzkxYmMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnNob3dTY3JlZW5zaG90ID0gdm9pZCAwO1xuY29uc3Qgc2hhcmVkX3V0aWxzXzEgPSByZXF1aXJlKFwiQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHNcIik7XG5jb25zdCBxdWV1ZV8xID0gcmVxdWlyZShcIi4vdXRpbC9xdWV1ZVwiKTtcbmNvbnN0IHRpbWVsaW5lX2J1aWx0aW5zXzEgPSByZXF1aXJlKFwiLi90aW1lbGluZS1idWlsdGluc1wiKTtcbmxldCBvdmVybGF5O1xubGV0IGltYWdlO1xubGV0IGNvbnRhaW5lcjtcbmNvbnN0IGpvYlF1ZXVlID0gbmV3IHF1ZXVlXzEuSm9iUXVldWUoKTtcbmFzeW5jIGZ1bmN0aW9uIHNob3dTY3JlZW5zaG90KHNjcmVlbnNob3QsIGN0eCkge1xuICAgIGF3YWl0IGpvYlF1ZXVlLnF1ZXVlKCdzaG93U2NyZWVuc2hvdCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKHNjcmVlbnNob3QpIHtcbiAgICAgICAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGltYWdlLnNyYyA9IHNjcmVlbnNob3QuaW1hZ2U7XG4gICAgICAgICAgICBpbWFnZS5zdHlsZS52aXNpYmlsaXR5ID0gc2NyZWVuc2hvdC5pbWFnZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nO1xuICAgICAgICAgICAgY2xlYXJDb250ZW50KCk7XG4gICAgICAgICAgICBjb25zdCBldmVudHMgPSBzY3JlZW5zaG90LmV2ZW50cy5tYXAoaWQgPT4gY3R4LnRpbWVsaW5lRXZlbnRNYXAuZ2V0KGlkKSkuZmlsdGVyKEJvb2xlYW4pLm1hcChldmVudERhdGEgPT4gKHtcbiAgICAgICAgICAgICAgICBsYXllcjogdGltZWxpbmVfYnVpbHRpbnNfMS5idWlsdGluTGF5ZXJzLmNvbmNhdChjdHgudGltZWxpbmVMYXllcnMpLmZpbmQobGF5ZXIgPT4gbGF5ZXIuaWQgPT09IGV2ZW50RGF0YS5sYXllcklkKSxcbiAgICAgICAgICAgICAgICBldmVudDoge1xuICAgICAgICAgICAgICAgICAgICAuLi5ldmVudERhdGEuZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgIGxheWVySWQ6IGV2ZW50RGF0YS5sYXllcklkLFxuICAgICAgICAgICAgICAgICAgICByZW5kZXJNZXRhOiB7fSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICBzY3JlZW5zaG90LFxuICAgICAgICAgICAgICAgIGV2ZW50czogZXZlbnRzLm1hcCgoeyBldmVudCB9KSA9PiBldmVudCksXG4gICAgICAgICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBldmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGxheWVyLCBldmVudCB9ID0gZXZlbnRzW2ldO1xuICAgICAgICAgICAgICAgIGlmIChsYXllci5zY3JlZW5zaG90T3ZlcmxheVJlbmRlcikge1xuICAgICAgICAgICAgICAgICAgICByZW5kZXJDb250ZXh0LmluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGxheWVyLnNjcmVlbnNob3RPdmVybGF5UmVuZGVyKGV2ZW50LCByZW5kZXJDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgKz0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hhcmVkX3V0aWxzXzEuU2hhcmVkRGF0YS5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hvd0VsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGhpZGVFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmV4cG9ydHMuc2hvd1NjcmVlbnNob3QgPSBzaG93U2NyZWVuc2hvdDtcbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRzKCkge1xuICAgIG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBvdmVybGF5LnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgICBvdmVybGF5LnN0eWxlLnpJbmRleCA9ICc5OTk5OTk5OTk5OTk5JztcbiAgICBvdmVybGF5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgb3ZlcmxheS5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgIG92ZXJsYXkuc3R5bGUudG9wID0gJzAnO1xuICAgIG92ZXJsYXkuc3R5bGUud2lkdGggPSAnMTAwdncnO1xuICAgIG92ZXJsYXkuc3R5bGUuaGVpZ2h0ID0gJzEwMHZoJztcbiAgICBvdmVybGF5LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdyZ2JhKDAsMCwwLDAuNSknO1xuICAgIG92ZXJsYXkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICBjb25zdCBpbWFnZUJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGltYWdlQm94LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICBvdmVybGF5LmFwcGVuZENoaWxkKGltYWdlQm94KTtcbiAgICBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgIGltYWdlQm94LmFwcGVuZENoaWxkKGltYWdlKTtcbiAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgIGNvbnRhaW5lci5zdHlsZS50b3AgPSAnMCc7XG4gICAgaW1hZ2VCb3guYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGUuaW5uZXJIVE1MID0gJy5fX3Z1ZWRldnRvb2xzX25vLXNjcm9sbCB7IG92ZXJmbG93OiBoaWRkZW47IH0nO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxuZnVuY3Rpb24gc2hvd0VsZW1lbnQoKSB7XG4gICAgaWYgKCFvdmVybGF5LnBhcmVudE5vZGUpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdfX3Z1ZWRldnRvb2xzX25vLXNjcm9sbCcpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGhpZGVFbGVtZW50KCkge1xuICAgIGlmIChvdmVybGF5ICYmIG92ZXJsYXkucGFyZW50Tm9kZSkge1xuICAgICAgICBvdmVybGF5LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob3ZlcmxheSk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnX192dWVkZXZ0b29sc19uby1zY3JvbGwnKTtcbiAgICAgICAgY2xlYXJDb250ZW50KCk7XG4gICAgfVxufVxuZnVuY3Rpb24gY2xlYXJDb250ZW50KCkge1xuICAgIHdoaWxlIChjb250YWluZXIuZmlyc3RDaGlsZCkge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGltZWxpbmUtc2NyZWVuc2hvdC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11354\n");
|
|
223
223
|
|
|
224
224
|
/***/ }),
|
|
225
225
|
|
|
@@ -243,7 +243,7 @@ eval("var __webpack_unused_export__;\n\n\n__webpack_unused_export__ = ({\n valu
|
|
|
243
243
|
/***/ ((__unused_webpack_module, exports) => {
|
|
244
244
|
|
|
245
245
|
"use strict";
|
|
246
|
-
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.JobQueue = void 0;\n\nclass JobQueue {\n constructor() {\n this.jobs = [];\n }\n\n queue(
|
|
246
|
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.JobQueue = void 0;\n\nclass JobQueue {\n constructor() {\n this.jobs = [];\n }\n\n queue(id, fn) {\n const job = {\n id,\n fn\n };\n return new Promise(resolve => {\n const onDone = () => {\n this.currentJob = null;\n const nextJob = this.jobs.shift();\n\n if (nextJob) {\n nextJob.fn();\n }\n\n resolve();\n };\n\n const run = () => {\n this.currentJob = job;\n return job.fn().then(onDone).catch(e => {\n console.error(`Job ${job.id} failed:`);\n console.error(e);\n });\n };\n\n if (this.currentJob) {\n this.jobs.push({\n id: job.id,\n fn: () => run()\n });\n } else {\n run();\n }\n });\n }\n\n}\n\nexports.JobQueue = JobQueue;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNDkxMDcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUtBLE1BQWEsUUFBYixDQUFxQjtBQUFyQjtBQUNFLGdCQUFjLEVBQWQ7QUFxQ0Q7O0FBbENDLE9BQUssQ0FBRSxFQUFGLEVBQWMsRUFBZCxFQUEyQjtBQUM5QixVQUFNLEdBQUcsR0FBUTtBQUNmLFFBRGU7QUFFZjtBQUZlLEtBQWpCO0FBS0EsV0FBTyxJQUFJLE9BQUosQ0FBa0IsT0FBTyxJQUFHO0FBQ2pDLFlBQU0sTUFBTSxHQUFHLE1BQUs7QUFDbEIsYUFBSyxVQUFMLEdBQWtCLElBQWxCO0FBQ0EsY0FBTSxPQUFPLEdBQUcsS0FBSyxJQUFMLENBQVUsS0FBVixFQUFoQjs7QUFDQSxZQUFJLE9BQUosRUFBYTtBQUNYLGlCQUFPLENBQUMsRUFBUjtBQUNEOztBQUNELGVBQU87QUFDUixPQVBEOztBQVNBLFlBQU0sR0FBRyxHQUFHLE1BQUs7QUFDZixhQUFLLFVBQUwsR0FBa0IsR0FBbEI7QUFDQSxlQUFPLEdBQUcsQ0FBQyxFQUFKLEdBQVMsSUFBVCxDQUFjLE1BQWQsRUFBc0IsS0FBdEIsQ0FBNEIsQ0FBQyxJQUFHO0FBQ3JDLGlCQUFPLENBQUMsS0FBUixDQUFjLE9BQU8sR0FBRyxDQUFDLEVBQUUsVUFBM0I7QUFDQSxpQkFBTyxDQUFDLEtBQVIsQ0FBYyxDQUFkO0FBQ0QsU0FITSxDQUFQO0FBSUQsT0FORDs7QUFRQSxVQUFJLEtBQUssVUFBVCxFQUFxQjtBQUNuQixhQUFLLElBQUwsQ0FBVSxJQUFWLENBQWU7QUFDYixZQUFFLEVBQUUsR0FBRyxDQUFDLEVBREs7QUFFYixZQUFFLEVBQUUsTUFBTSxHQUFHO0FBRkEsU0FBZjtBQUlELE9BTEQsTUFLTztBQUNMLFdBQUc7QUFDSjtBQUNGLEtBMUJNLENBQVA7QUEyQkQ7O0FBckNrQjs7QUFBckIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uLy4uL3NyYy91dGlsL3F1ZXVlLnRzPzBiNzciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkpvYlF1ZXVlID0gdm9pZCAwO1xuY2xhc3MgSm9iUXVldWUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmpvYnMgPSBbXTtcbiAgICB9XG4gICAgcXVldWUoaWQsIGZuKSB7XG4gICAgICAgIGNvbnN0IGpvYiA9IHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgZm4sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9uRG9uZSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRKb2IgPSBudWxsO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRKb2IgPSB0aGlzLmpvYnMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dEpvYikge1xuICAgICAgICAgICAgICAgICAgICBuZXh0Sm9iLmZuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBydW4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Sm9iID0gam9iO1xuICAgICAgICAgICAgICAgIHJldHVybiBqb2IuZm4oKS50aGVuKG9uRG9uZSkuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEpvYiAke2pvYi5pZH0gZmFpbGVkOmApO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRKb2IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmpvYnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBqb2IuaWQsXG4gICAgICAgICAgICAgICAgICAgIGZuOiAoKSA9PiBydW4oKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnRzLkpvYlF1ZXVlID0gSm9iUXVldWU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1xdWV1ZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///49107\n");
|
|
247
247
|
|
|
248
248
|
/***/ }),
|
|
249
249
|
|
|
@@ -283,7 +283,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
283
283
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
284
284
|
|
|
285
285
|
"use strict";
|
|
286
|
-
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getComponentParents = exports.walkTree = exports.functionalVnodeMap = exports.instanceMap = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst el_1 = __webpack_require__(66351);\n\nconst util_1 = __webpack_require__(95136);\n\nlet appRecord;\nlet api;\nconst consoleBoundInstances = Array(5);\nlet filter = '';\nconst functionalIds = new Map(); // Dedupe instances\n// Some instances may be both on a component and on a child abstract/functional component\n\nconst captureIds = new Map();\n\nasync function walkTree(instance, pFilter, api, ctx) {\n initCtx(api, ctx);\n filter = pFilter;\n functionalIds.clear();\n captureIds.clear();\n const result = flatten(await findQualifiedChildren(instance));\n return result;\n}\n\nexports.walkTree = walkTree;\n\nfunction getComponentParents(instance, api, ctx) {\n initCtx(api, ctx);\n const captureIds = new Map();\n\n const captureId = vm => {\n const id = (0, util_1.getUniqueId)(vm);\n if (captureIds.has(id)) return;\n captureIds.set(id, undefined);\n\n if (vm.__VUE_DEVTOOLS_FUNCTIONAL_LEGACY__) {\n markFunctional(id, vm.vnode);\n } else {\n mark(vm);\n }\n };\n\n const parents = [];\n captureId(instance);\n let parent = instance;\n\n while (parent = parent.$parent) {\n captureId(parent);\n parents.push(parent);\n }\n\n return parents;\n}\n\nexports.getComponentParents = getComponentParents;\n\nfunction initCtx(_api, ctx) {\n appRecord = ctx.currentAppRecord;\n api = _api;\n\n if (!appRecord.meta.instanceMap) {\n appRecord.meta.instanceMap = new Map();\n }\n\n exports.instanceMap = appRecord.meta.instanceMap;\n\n if (!appRecord.meta.functionalVnodeMap) {\n appRecord.meta.functionalVnodeMap = new Map();\n }\n\n exports.functionalVnodeMap = appRecord.meta.functionalVnodeMap;\n}\n/**\n * Iterate through an array of instances and flatten it into\n * an array of qualified instances. This is a depth-first\n * traversal - e.g. if an instance is not matched, we will\n * recursively go deeper until a qualified child is found.\n */\n\n\nfunction findQualifiedChildrenFromList(instances) {\n instances = instances.filter(child => !(0, util_1.isBeingDestroyed)(child));\n return Promise.all(!filter ? instances.map(capture) : Array.prototype.concat.apply([], instances.map(findQualifiedChildren)));\n}\n/**\n * Find qualified children from a single instance.\n * If the instance itself is qualified, just return itself.\n * This is ok because [].concat works in both cases.\n */\n\n\nasync function findQualifiedChildren(instance) {\n if (isQualified(instance)) {\n return [await capture(instance)];\n } else {\n let children = await findQualifiedChildrenFromList(instance.$children); // Find functional components in recursively in non-functional vnodes.\n\n if (instance._vnode && instance._vnode.children) {\n const list = await Promise.all(flatten(instance._vnode.children.filter(child => !child.componentInstance).map(captureChild))); // Filter qualified children.\n\n const additionalChildren = list.filter(instance => isQualified(instance));\n children = children.concat(additionalChildren);\n }\n\n return children;\n }\n}\n/**\n * Get children from a component instance.\n */\n\n\nfunction getInternalInstanceChildren(instance) {\n if (instance.$children) {\n return instance.$children;\n }\n\n return [];\n}\n/**\n * Check if an instance is qualified.\n */\n\n\nfunction isQualified(instance) {\n const name = (0, shared_utils_1.classify)((0, util_1.getInstanceName)(instance)).toLowerCase();\n return name.indexOf(filter) > -1;\n}\n\nfunction flatten(items) {\n const r = items.reduce((acc, item) => {\n if (Array.isArray(item)) {\n let children = [];\n\n for (const i of item) {\n if (Array.isArray(i)) {\n children = children.concat(flatten(i));\n } else {\n children.push(i);\n }\n }\n\n acc.push(...children);\n } else if (item) {\n acc.push(item);\n }\n\n return acc;\n }, []);\n return r;\n}\n\nfunction captureChild(child) {\n if (child.fnContext && !child.componentInstance) {\n return capture(child);\n } else if (child.componentInstance) {\n if (!(0, util_1.isBeingDestroyed)(child.componentInstance)) return capture(child.componentInstance);\n } else if (child.children) {\n return Promise.all(flatten(child.children.map(captureChild)));\n }\n}\n/**\n * Capture the meta information of an instance. (recursive)\n */\n\n\nasync function capture(instance, index, list) {\n var _a, _b, _c, _d, _e, _f;\n\n if (instance.__VUE_DEVTOOLS_FUNCTIONAL_LEGACY__) {\n instance = instance.vnode;\n }\n\n if (instance.$options && instance.$options.abstract && instance._vnode && instance._vnode.componentInstance) {\n instance = instance._vnode.componentInstance;\n }\n\n if ((_b = (_a = instance.$options) === null || _a === void 0 ? void 0 : _a.devtools) === null || _b === void 0 ? void 0 : _b.hide) return; // Functional component.\n\n if (instance.fnContext && !instance.componentInstance) {\n const contextUid = instance.fnContext.__VUE_DEVTOOLS_UID__;\n let id = functionalIds.get(contextUid);\n\n if (id == null) {\n id = 0;\n } else {\n id++;\n }\n\n functionalIds.set(contextUid, id);\n const functionalId = contextUid + ':functional:' + id;\n markFunctional(functionalId, instance);\n const childrenPromise = instance.children ? instance.children.map(child => child.fnContext ? captureChild(child) : child.componentInstance ? capture(child.componentInstance) : undefined) // router-view has both fnContext and componentInstance on vnode.\n : instance.componentInstance ? [capture(instance.componentInstance)] : []; // await all childrenCapture to-be resolved\n\n const children = (await Promise.all(childrenPromise)).filter(Boolean);\n const treeNode = {\n uid: functionalId,\n id: functionalId,\n tags: [{\n label: 'functional',\n textColor: 0x555555,\n backgroundColor: 0xeeeeee\n }],\n name: (0, util_1.getInstanceName)(instance),\n renderKey: (0, util_1.getRenderKey)(instance.key),\n children,\n hasChildren: !!children.length,\n inactive: false,\n isFragment: false // TODO: Check what is it for.\n\n };\n return api.visitComponentTree(instance, treeNode, filter, (_c = appRecord === null || appRecord === void 0 ? void 0 : appRecord.options) === null || _c === void 0 ? void 0 : _c.app);\n } // instance._uid is not reliable in devtools as there\n // may be 2 roots with same _uid which causes unexpected\n // behaviour\n\n\n instance.__VUE_DEVTOOLS_UID__ = (0, util_1.getUniqueId)(instance); // Dedupe\n\n if (captureIds.has(instance.__VUE_DEVTOOLS_UID__)) {\n return;\n } else {\n captureIds.set(instance.__VUE_DEVTOOLS_UID__, undefined);\n }\n\n mark(instance);\n const name = (0, util_1.getInstanceName)(instance);\n const children = (await Promise.all((await getInternalInstanceChildren(instance)).filter(child => !(0, util_1.isBeingDestroyed)(child)).map(capture))).filter(Boolean);\n const ret = {\n uid: instance._uid,\n id: instance.__VUE_DEVTOOLS_UID__,\n name,\n renderKey: (0, util_1.getRenderKey)(instance.$vnode ? instance.$vnode.key : null),\n inactive: !!instance._inactive,\n isFragment: !!instance._isFragment,\n children,\n hasChildren: !!children.length,\n tags: [],\n meta: {}\n };\n\n if (instance._vnode && instance._vnode.children) {\n const vnodeChildren = await Promise.all(flatten(instance._vnode.children.map(captureChild)));\n ret.children = ret.children.concat(flatten(vnodeChildren).filter(Boolean));\n ret.hasChildren = !!ret.children.length;\n } // ensure correct ordering\n\n\n const rootElements = (0, el_1.getRootElementsFromComponentInstance)(instance);\n const firstElement = rootElements[0];\n\n if (firstElement === null || firstElement === void 0 ? void 0 : firstElement.parentElement) {\n const parentInstance = instance.$parent;\n const parentRootElements = parentInstance ? (0, el_1.getRootElementsFromComponentInstance)(parentInstance) : [];\n let el = firstElement;\n const indexList = [];\n\n do {\n indexList.push(Array.from(el.parentElement.childNodes).indexOf(el));\n el = el.parentElement;\n } while (el.parentElement && parentRootElements.length && !parentRootElements.includes(el));\n\n ret.domOrder = indexList.reverse();\n } else {\n ret.domOrder = [-1];\n } // check if instance is available in console\n\n\n const consoleId = consoleBoundInstances.indexOf(instance.__VUE_DEVTOOLS_UID__);\n ret.consoleId = consoleId > -1 ? '$vm' + consoleId : null; // check router view\n\n const isRouterView2 = (_e = (_d = instance.$vnode) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.routerView;\n\n if (instance._routerView || isRouterView2) {\n ret.isRouterView = true;\n\n if (!instance._inactive && instance.$route) {\n const matched = instance.$route.matched;\n const depth = isRouterView2 ? instance.$vnode.data.routerViewDepth : instance._routerView.depth;\n ret.meta.matchedRouteSegment = matched && matched[depth] && (isRouterView2 ? matched[depth].path : matched[depth].handler.path);\n }\n\n ret.tags.push({\n label: `router-view${ret.meta.matchedRouteSegment ? `: ${ret.meta.matchedRouteSegment}` : ''}`,\n textColor: 0x000000,\n backgroundColor: 0xff8344\n });\n }\n\n return api.visitComponentTree(instance, ret, filter, (_f = appRecord === null || appRecord === void 0 ? void 0 : appRecord.options) === null || _f === void 0 ? void 0 : _f.app);\n}\n/**\n * Mark an instance as captured and store it in the instance map.\n *\n * @param {Vue} instance\n */\n\n\nfunction mark(instance) {\n const refId = instance.__VUE_DEVTOOLS_UID__;\n\n if (!exports.instanceMap.has(refId)) {\n exports.instanceMap.set(refId, instance);\n appRecord.instanceMap.set(refId, instance);\n instance.$on('hook:beforeDestroy', function () {\n exports.instanceMap.delete(refId);\n });\n }\n}\n\nfunction markFunctional(id, vnode) {\n const refId = vnode.fnContext.__VUE_DEVTOOLS_UID__;\n\n if (!exports.functionalVnodeMap.has(refId)) {\n exports.functionalVnodeMap.set(refId, {});\n vnode.fnContext.$on('hook:beforeDestroy', function () {\n exports.functionalVnodeMap.delete(refId);\n });\n }\n\n exports.functionalVnodeMap.get(refId)[id] = vnode;\n appRecord.instanceMap.set(id, {\n __VUE_DEVTOOLS_UID__: id,\n __VUE_DEVTOOLS_FUNCTIONAL_LEGACY__: true,\n vnode\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQW9CLG9CQUFwQixFQUEwQztBQUN4QyxpQ0FBbUIsTUFBbkIsQ0FBMEIsS0FBMUI7QUFDRCxLQUZEO0FBR0Q7O0FBRUQsNkJBQW1CLEdBQW5CLENBQXVCLEtBQXZCLEVBQThCLEVBQTlCLElBQW9DLEtBQXBDO0FBRUEsV0FBUyxDQUFDLFdBQVYsQ0FBc0IsR0FBdEIsQ0FBMEIsRUFBMUIsRUFBOEI7QUFDNUIsd0JBQW9CLEVBQUUsRUFETTtBQUU1QixzQ0FBa0MsRUFBRSxJQUZSO0FBRzVCO0FBSDRCLEdBQTlCO0FBS0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uLy4uL3NyYy9jb21wb25lbnRzL3RyZWUudHM/NDA3MyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZ2V0Q29tcG9uZW50UGFyZW50cyA9IGV4cG9ydHMud2Fsa1RyZWUgPSBleHBvcnRzLmZ1bmN0aW9uYWxWbm9kZU1hcCA9IGV4cG9ydHMuaW5zdGFuY2VNYXAgPSB2b2lkIDA7XG5jb25zdCBzaGFyZWRfdXRpbHNfMSA9IHJlcXVpcmUoXCJAdnVlLWRldnRvb2xzL3NoYXJlZC11dGlsc1wiKTtcbmNvbnN0IGVsXzEgPSByZXF1aXJlKFwiLi9lbFwiKTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5sZXQgYXBwUmVjb3JkO1xubGV0IGFwaTtcbmNvbnN0IGNvbnNvbGVCb3VuZEluc3RhbmNlcyA9IEFycmF5KDUpO1xubGV0IGZpbHRlciA9ICcnO1xuY29uc3QgZnVuY3Rpb25hbElkcyA9IG5ldyBNYXAoKTtcbi8vIERlZHVwZSBpbnN0YW5jZXNcbi8vIFNvbWUgaW5zdGFuY2VzIG1heSBiZSBib3RoIG9uIGEgY29tcG9uZW50IGFuZCBvbiBhIGNoaWxkIGFic3RyYWN0L2Z1bmN0aW9uYWwgY29tcG9uZW50XG5jb25zdCBjYXB0dXJlSWRzID0gbmV3IE1hcCgpO1xuYXN5bmMgZnVuY3Rpb24gd2Fsa1RyZWUoaW5zdGFuY2UsIHBGaWx0ZXIsIGFwaSwgY3R4KSB7XG4gICAgaW5pdEN0eChhcGksIGN0eCk7XG4gICAgZmlsdGVyID0gcEZpbHRlcjtcbiAgICBmdW5jdGlvbmFsSWRzLmNsZWFyKCk7XG4gICAgY2FwdHVyZUlkcy5jbGVhcigpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW4oYXdhaXQgZmluZFF1YWxpZmllZENoaWxkcmVuKGluc3RhbmNlKSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydHMud2Fsa1RyZWUgPSB3YWxrVHJlZTtcbmZ1bmN0aW9uIGdldENvbXBvbmVudFBhcmVudHMoaW5zdGFuY2UsIGFwaSwgY3R4KSB7XG4gICAgaW5pdEN0eChhcGksIGN0eCk7XG4gICAgY29uc3QgY2FwdHVyZUlkcyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBjYXB0dXJlSWQgPSB2bSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gKDAsIHV0aWxfMS5nZXRVbmlxdWVJZCkodm0pO1xuICAgICAgICBpZiAoY2FwdHVyZUlkcy5oYXMoaWQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXB0dXJlSWRzLnNldChpZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgaWYgKHZtLl9fVlVFX0RFVlRPT0xTX0ZVTkNUSU9OQUxfTEVHQUNZX18pIHtcbiAgICAgICAgICAgIG1hcmtGdW5jdGlvbmFsKGlkLCB2bS52bm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtYXJrKHZtKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgcGFyZW50cyA9IFtdO1xuICAgIGNhcHR1cmVJZChpbnN0YW5jZSk7XG4gICAgbGV0IHBhcmVudCA9IGluc3RhbmNlO1xuICAgIHdoaWxlICgocGFyZW50ID0gcGFyZW50LiRwYXJlbnQpKSB7XG4gICAgICAgIGNhcHR1cmVJZChwYXJlbnQpO1xuICAgICAgICBwYXJlbnRzLnB1c2gocGFyZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHM7XG59XG5leHBvcnRzLmdldENvbXBvbmVudFBhcmVudHMgPSBnZXRDb21wb25lbnRQYXJlbnRzO1xuZnVuY3Rpb24gaW5pdEN0eChfYXBpLCBjdHgpIHtcbiAgICBhcHBSZWNvcmQgPSBjdHguY3VycmVudEFwcFJlY29yZDtcbiAgICBhcGkgPSBfYXBpO1xuICAgIGlmICghYXBwUmVjb3JkLm1ldGEuaW5zdGFuY2VNYXApIHtcbiAgICAgICAgYXBwUmVjb3JkLm1ldGEuaW5zdGFuY2VNYXAgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGV4cG9ydHMuaW5zdGFuY2VNYXAgPSBhcHBSZWNvcmQubWV0YS5pbnN0YW5jZU1hcDtcbiAgICBpZiAoIWFwcFJlY29yZC5tZXRhLmZ1bmN0aW9uYWxWbm9kZU1hcCkge1xuICAgICAgICBhcHBSZWNvcmQubWV0YS5mdW5jdGlvbmFsVm5vZGVNYXAgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGV4cG9ydHMuZnVuY3Rpb25hbFZub2RlTWFwID0gYXBwUmVjb3JkLm1ldGEuZnVuY3Rpb25hbFZub2RlTWFwO1xufVxuLyoqXG4gKiBJdGVyYXRlIHRocm91Z2ggYW4gYXJyYXkgb2YgaW5zdGFuY2VzIGFuZCBmbGF0dGVuIGl0IGludG9cbiAqIGFuIGFycmF5IG9mIHF1YWxpZmllZCBpbnN0YW5jZXMuIFRoaXMgaXMgYSBkZXB0aC1maXJzdFxuICogdHJhdmVyc2FsIC0gZS5nLiBpZiBhbiBpbnN0YW5jZSBpcyBub3QgbWF0Y2hlZCwgd2Ugd2lsbFxuICogcmVjdXJzaXZlbHkgZ28gZGVlcGVyIHVudGlsIGEgcXVhbGlmaWVkIGNoaWxkIGlzIGZvdW5kLlxuICovXG5mdW5jdGlvbiBmaW5kUXVhbGlmaWVkQ2hpbGRyZW5Gcm9tTGlzdChpbnN0YW5jZXMpIHtcbiAgICBpbnN0YW5jZXMgPSBpbnN0YW5jZXNcbiAgICAgICAgLmZpbHRlcihjaGlsZCA9PiAhKDAsIHV0aWxfMS5pc0JlaW5nRGVzdHJveWVkKShjaGlsZCkpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbCghZmlsdGVyXG4gICAgICAgID8gaW5zdGFuY2VzLm1hcChjYXB0dXJlKVxuICAgICAgICA6IEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGluc3RhbmNlcy5tYXAoZmluZFF1YWxpZmllZENoaWxkcmVuKSkpO1xufVxuLyoqXG4gKiBGaW5kIHF1YWxpZmllZCBjaGlsZHJlbiBmcm9tIGEgc2luZ2xlIGluc3RhbmNlLlxuICogSWYgdGhlIGluc3RhbmNlIGl0c2VsZiBpcyBxdWFsaWZpZWQsIGp1c3QgcmV0dXJuIGl0c2VsZi5cbiAqIFRoaXMgaXMgb2sgYmVjYXVzZSBbXS5jb25jYXQgd29ya3MgaW4gYm90aCBjYXNlcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZmluZFF1YWxpZmllZENoaWxkcmVuKGluc3RhbmNlKSB7XG4gICAgaWYgKGlzUXVhbGlmaWVkKGluc3RhbmNlKSkge1xuICAgICAgICByZXR1cm4gW2F3YWl0IGNhcHR1cmUoaW5zdGFuY2UpXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxldCBjaGlsZHJlbiA9IGF3YWl0IGZpbmRRdWFsaWZpZWRDaGlsZHJlbkZyb21MaXN0KGluc3RhbmNlLiRjaGlsZHJlbik7XG4gICAgICAgIC8vIEZpbmQgZnVuY3Rpb25hbCBjb21wb25lbnRzIGluIHJlY3Vyc2l2ZWx5IGluIG5vbi1mdW5jdGlvbmFsIHZub2Rlcy5cbiAgICAgICAgaWYgKGluc3RhbmNlLl92bm9kZSAmJiBpbnN0YW5jZS5fdm5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBhd2FpdCBQcm9taXNlLmFsbChmbGF0dGVuKGluc3RhbmNlLl92bm9kZS5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gIWNoaWxkLmNvbXBvbmVudEluc3RhbmNlKS5tYXAoY2FwdHVyZUNoaWxkKSkpO1xuICAgICAgICAgICAgLy8gRmlsdGVyIHF1YWxpZmllZCBjaGlsZHJlbi5cbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDaGlsZHJlbiA9IGxpc3QuZmlsdGVyKGluc3RhbmNlID0+IGlzUXVhbGlmaWVkKGluc3RhbmNlKSk7XG4gICAgICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdChhZGRpdGlvbmFsQ2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG59XG4vKipcbiAqIEdldCBjaGlsZHJlbiBmcm9tIGEgY29tcG9uZW50IGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBnZXRJbnRlcm5hbEluc3RhbmNlQ2hpbGRyZW4oaW5zdGFuY2UpIHtcbiAgICBpZiAoaW5zdGFuY2UuJGNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS4kY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiBbXTtcbn1cbi8qKlxuICogQ2hlY2sgaWYgYW4gaW5zdGFuY2UgaXMgcXVhbGlmaWVkLlxuICovXG5mdW5jdGlvbiBpc1F1YWxpZmllZChpbnN0YW5jZSkge1xuICAgIGNvbnN0IG5hbWUgPSAoMCwgc2hhcmVkX3V0aWxzXzEuY2xhc3NpZnkpKCgwLCB1dGlsXzEuZ2V0SW5zdGFuY2VOYW1lKShpbnN0YW5jZSkpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIG5hbWUuaW5kZXhPZihmaWx0ZXIpID4gLTE7XG59XG5mdW5jdGlvbiBmbGF0dGVuKGl0ZW1zKSB7XG4gICAgY29uc3QgciA9IGl0ZW1zLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaSBvZiBpdGVtKSB7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5jb25jYXQoZmxhdHRlbihpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjYy5wdXNoKC4uLmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpdGVtKSB7XG4gICAgICAgICAgICBhY2MucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gcjtcbn1cbmZ1bmN0aW9uIGNhcHR1cmVDaGlsZChjaGlsZCkge1xuICAgIGlmIChjaGlsZC5mbkNvbnRleHQgJiYgIWNoaWxkLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlKGNoaWxkKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2hpbGQuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgICAgaWYgKCEoMCwgdXRpbF8xLmlzQmVpbmdEZXN0cm95ZWQpKGNoaWxkLmNvbXBvbmVudEluc3RhbmNlKSlcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlKGNoaWxkLmNvbXBvbmVudEluc3RhbmNlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2hpbGQuY2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGZsYXR0ZW4oY2hpbGQuY2hpbGRyZW4ubWFwKGNhcHR1cmVDaGlsZCkpKTtcbiAgICB9XG59XG4vKipcbiAqIENhcHR1cmUgdGhlIG1ldGEgaW5mb3JtYXRpb24gb2YgYW4gaW5zdGFuY2UuIChyZWN1cnNpdmUpXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNhcHR1cmUoaW5zdGFuY2UsIGluZGV4LCBsaXN0KSB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2Y7XG4gICAgaWYgKGluc3RhbmNlLl9fVlVFX0RFVlRPT0xTX0ZVTkNUSU9OQUxfTEVHQUNZX18pIHtcbiAgICAgICAgaW5zdGFuY2UgPSBpbnN0YW5jZS52bm9kZTtcbiAgICB9XG4gICAgaWYgKGluc3RhbmNlLiRvcHRpb25zICYmIGluc3RhbmNlLiRvcHRpb25zLmFic3RyYWN0ICYmIGluc3RhbmNlLl92bm9kZSAmJiBpbnN0YW5jZS5fdm5vZGUuY29tcG9uZW50SW5zdGFuY2UpIHtcbiAgICAgICAgaW5zdGFuY2UgPSBpbnN0YW5jZS5fdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgfVxuICAgIGlmICgoX2IgPSAoX2EgPSBpbnN0YW5jZS4kb3B0aW9ucykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRldnRvb2xzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuaGlkZSlcbiAgICAgICAgcmV0dXJuO1xuICAgIC8vIEZ1bmN0aW9uYWwgY29tcG9uZW50LlxuICAgIGlmIChpbnN0YW5jZS5mbkNvbnRleHQgJiYgIWluc3RhbmNlLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHRVaWQgPSBpbnN0YW5jZS5mbkNvbnRleHQuX19WVUVfREVWVE9PTFNfVUlEX187XG4gICAgICAgIGxldCBpZCA9IGZ1bmN0aW9uYWxJZHMuZ2V0KGNvbnRleHRVaWQpO1xuICAgICAgICBpZiAoaWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgaWQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWQrKztcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbmFsSWRzLnNldChjb250ZXh0VWlkLCBpZCk7XG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uYWxJZCA9IGNvbnRleHRVaWQgKyAnOmZ1bmN0aW9uYWw6JyArIGlkO1xuICAgICAgICBtYXJrRnVuY3Rpb25hbChmdW5jdGlvbmFsSWQsIGluc3RhbmNlKTtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5Qcm9taXNlID0gKGluc3RhbmNlLmNoaWxkcmVuXG4gICAgICAgICAgICA/IGluc3RhbmNlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBjaGlsZC5mbkNvbnRleHRcbiAgICAgICAgICAgICAgICA/IGNhcHR1cmVDaGlsZChjaGlsZClcbiAgICAgICAgICAgICAgICA6IGNoaWxkLmNvbXBvbmVudEluc3RhbmNlXG4gICAgICAgICAgICAgICAgICAgID8gY2FwdHVyZShjaGlsZC5jb21wb25lbnRJbnN0YW5jZSlcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpXG4gICAgICAgICAgICAvLyByb3V0ZXItdmlldyBoYXMgYm90aCBmbkNvbnRleHQgYW5kIGNvbXBvbmVudEluc3RhbmNlIG9uIHZub2RlLlxuICAgICAgICAgICAgOiBpbnN0YW5jZS5jb21wb25lbnRJbnN0YW5jZSA/IFtjYXB0dXJlKGluc3RhbmNlLmNvbXBvbmVudEluc3RhbmNlKV0gOiBbXSk7XG4gICAgICAgIC8vIGF3YWl0IGFsbCBjaGlsZHJlbkNhcHR1cmUgdG8tYmUgcmVzb2x2ZWRcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSAoYXdhaXQgUHJvbWlzZS5hbGwoY2hpbGRyZW5Qcm9taXNlKSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICBjb25zdCB0cmVlTm9kZSA9IHtcbiAgICAgICAgICAgIHVpZDogZnVuY3Rpb25hbElkLFxuICAgICAgICAgICAgaWQ6IGZ1bmN0aW9uYWxJZCxcbiAgICAgICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnZnVuY3Rpb25hbCcsXG4gICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcjogMHg1NTU1NTUsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogMHhlZWVlZWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBuYW1lOiAoMCwgdXRpbF8xLmdldEluc3RhbmNlTmFtZSkoaW5zdGFuY2UpLFxuICAgICAgICAgICAgcmVuZGVyS2V5OiAoMCwgdXRpbF8xLmdldFJlbmRlcktleSkoaW5zdGFuY2Uua2V5KSxcbiAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgaGFzQ2hpbGRyZW46ICEhY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICAgICAgaW5hY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgaXNGcmFnbWVudDogZmFsc2UsIC8vIFRPRE86IENoZWNrIHdoYXQgaXMgaXQgZm9yLlxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gYXBpLnZpc2l0Q29tcG9uZW50VHJlZShpbnN0YW5jZSwgdHJlZU5vZGUsIGZpbHRlciwgKF9jID0gYXBwUmVjb3JkID09PSBudWxsIHx8IGFwcFJlY29yZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXBwUmVjb3JkLm9wdGlvbnMpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5hcHApO1xuICAgIH1cbiAgICAvLyBpbnN0YW5jZS5fdWlkIGlzIG5vdCByZWxpYWJsZSBpbiBkZXZ0b29scyBhcyB0aGVyZVxuICAgIC8vIG1heSBiZSAyIHJvb3RzIHdpdGggc2FtZSBfdWlkIHdoaWNoIGNhdXNlcyB1bmV4cGVjdGVkXG4gICAgLy8gYmVoYXZpb3VyXG4gICAgaW5zdGFuY2UuX19WVUVfREVWVE9PTFNfVUlEX18gPSAoMCwgdXRpbF8xLmdldFVuaXF1ZUlkKShpbnN0YW5jZSk7XG4gICAgLy8gRGVkdXBlXG4gICAgaWYgKGNhcHR1cmVJZHMuaGFzKGluc3RhbmNlLl9fVlVFX0RFVlRPT0xTX1VJRF9fKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjYXB0dXJlSWRzLnNldChpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19VSURfXywgdW5kZWZpbmVkKTtcbiAgICB9XG4gICAgbWFyayhpbnN0YW5jZSk7XG4gICAgY29uc3QgbmFtZSA9ICgwLCB1dGlsXzEuZ2V0SW5zdGFuY2VOYW1lKShpbnN0YW5jZSk7XG4gICAgY29uc3QgY2hpbGRyZW4gPSAoYXdhaXQgUHJvbWlzZS5hbGwoKGF3YWl0IGdldEludGVybmFsSW5zdGFuY2VDaGlsZHJlbihpbnN0YW5jZSkpXG4gICAgICAgIC5maWx0ZXIoY2hpbGQgPT4gISgwLCB1dGlsXzEuaXNCZWluZ0Rlc3Ryb3llZCkoY2hpbGQpKVxuICAgICAgICAubWFwKGNhcHR1cmUpKSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGNvbnN0IHJldCA9IHtcbiAgICAgICAgdWlkOiBpbnN0YW5jZS5fdWlkLFxuICAgICAgICBpZDogaW5zdGFuY2UuX19WVUVfREVWVE9PTFNfVUlEX18sXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHJlbmRlcktleTogKDAsIHV0aWxfMS5nZXRSZW5kZXJLZXkpKGluc3RhbmNlLiR2bm9kZSA/IGluc3RhbmNlLiR2bm9kZS5rZXkgOiBudWxsKSxcbiAgICAgICAgaW5hY3RpdmU6ICEhaW5zdGFuY2UuX2luYWN0aXZlLFxuICAgICAgICBpc0ZyYWdtZW50OiAhIWluc3RhbmNlLl9pc0ZyYWdtZW50LFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgaGFzQ2hpbGRyZW46ICEhY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICB0YWdzOiBbXSxcbiAgICAgICAgbWV0YToge30sXG4gICAgfTtcbiAgICBpZiAoaW5zdGFuY2UuX3Zub2RlICYmIGluc3RhbmNlLl92bm9kZS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCB2bm9kZUNoaWxkcmVuID0gYXdhaXQgUHJvbWlzZS5hbGwoZmxhdHRlbihpbnN0YW5jZS5fdm5vZGUuY2hpbGRyZW4ubWFwKGNhcHR1cmVDaGlsZCkpKTtcbiAgICAgICAgcmV0LmNoaWxkcmVuID0gcmV0LmNoaWxkcmVuLmNvbmNhdChmbGF0dGVuKHZub2RlQ2hpbGRyZW4pLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgIHJldC5oYXNDaGlsZHJlbiA9ICEhcmV0LmNoaWxkcmVuLmxlbmd0aDtcbiAgICB9XG4gICAgLy8gZW5zdXJlIGNvcnJlY3Qgb3JkZXJpbmdcbiAgICBjb25zdCByb290RWxlbWVudHMgPSAoMCwgZWxfMS5nZXRSb290RWxlbWVudHNGcm9tQ29tcG9uZW50SW5zdGFuY2UpKGluc3RhbmNlKTtcbiAgICBjb25zdCBmaXJzdEVsZW1lbnQgPSByb290RWxlbWVudHNbMF07XG4gICAgaWYgKGZpcnN0RWxlbWVudCA9PT0gbnVsbCB8fCBmaXJzdEVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpcnN0RWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHBhcmVudEluc3RhbmNlID0gaW5zdGFuY2UuJHBhcmVudDtcbiAgICAgICAgY29uc3QgcGFyZW50Um9vdEVsZW1lbnRzID0gcGFyZW50SW5zdGFuY2UgPyAoMCwgZWxfMS5nZXRSb290RWxlbWVudHNGcm9tQ29tcG9uZW50SW5zdGFuY2UpKHBhcmVudEluc3RhbmNlKSA6IFtdO1xuICAgICAgICBsZXQgZWwgPSBmaXJzdEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGluZGV4TGlzdCA9IFtdO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBpbmRleExpc3QucHVzaChBcnJheS5mcm9tKGVsLnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcykuaW5kZXhPZihlbCkpO1xuICAgICAgICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xuICAgICAgICB9IHdoaWxlIChlbC5wYXJlbnRFbGVtZW50ICYmIHBhcmVudFJvb3RFbGVtZW50cy5sZW5ndGggJiYgIXBhcmVudFJvb3RFbGVtZW50cy5pbmNsdWRlcyhlbCkpO1xuICAgICAgICByZXQuZG9tT3JkZXIgPSBpbmRleExpc3QucmV2ZXJzZSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0LmRvbU9yZGVyID0gWy0xXTtcbiAgICB9XG4gICAgLy8gY2hlY2sgaWYgaW5zdGFuY2UgaXMgYXZhaWxhYmxlIGluIGNvbnNvbGVcbiAgICBjb25zdCBjb25zb2xlSWQgPSBjb25zb2xlQm91bmRJbnN0YW5jZXMuaW5kZXhPZihpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19VSURfXyk7XG4gICAgcmV0LmNvbnNvbGVJZCA9IGNvbnNvbGVJZCA+IC0xID8gJyR2bScgKyBjb25zb2xlSWQgOiBudWxsO1xuICAgIC8vIGNoZWNrIHJvdXRlciB2aWV3XG4gICAgY29uc3QgaXNSb3V0ZXJWaWV3MiA9IChfZSA9IChfZCA9IGluc3RhbmNlLiR2bm9kZSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmRhdGEpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5yb3V0ZXJWaWV3O1xuICAgIGlmIChpbnN0YW5jZS5fcm91dGVyVmlldyB8fCBpc1JvdXRlclZpZXcyKSB7XG4gICAgICAgIHJldC5pc1JvdXRlclZpZXcgPSB0cnVlO1xuICAgICAgICBpZiAoIWluc3RhbmNlLl9pbmFjdGl2ZSAmJiBpbnN0YW5jZS4kcm91dGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZWQgPSBpbnN0YW5jZS4kcm91dGUubWF0Y2hlZDtcbiAgICAgICAgICAgIGNvbnN0IGRlcHRoID0gaXNSb3V0ZXJWaWV3MlxuICAgICAgICAgICAgICAgID8gaW5zdGFuY2UuJHZub2RlLmRhdGEucm91dGVyVmlld0RlcHRoXG4gICAgICAgICAgICAgICAgOiBpbnN0YW5jZS5fcm91dGVyVmlldy5kZXB0aDtcbiAgICAgICAgICAgIHJldC5tZXRhLm1hdGNoZWRSb3V0ZVNlZ21lbnQgPVxuICAgICAgICAgICAgICAgIG1hdGNoZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZFtkZXB0aF0gJiZcbiAgICAgICAgICAgICAgICAgICAgKGlzUm91dGVyVmlldzIgPyBtYXRjaGVkW2RlcHRoXS5wYXRoIDogbWF0Y2hlZFtkZXB0aF0uaGFuZGxlci5wYXRoKTtcbiAgICAgICAgfVxuICAgICAgICByZXQudGFncy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiBgcm91dGVyLXZpZXcke3JldC5tZXRhLm1hdGNoZWRSb3V0ZVNlZ21lbnQgPyBgOiAke3JldC5tZXRhLm1hdGNoZWRSb3V0ZVNlZ21lbnR9YCA6ICcnfWAsXG4gICAgICAgICAgICB0ZXh0Q29sb3I6IDB4MDAwMDAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAweGZmODM0NCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhcGkudmlzaXRDb21wb25lbnRUcmVlKGluc3RhbmNlLCByZXQsIGZpbHRlciwgKF9mID0gYXBwUmVjb3JkID09PSBudWxsIHx8IGFwcFJlY29yZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXBwUmVjb3JkLm9wdGlvbnMpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5hcHApO1xufVxuLyoqXG4gKiBNYXJrIGFuIGluc3RhbmNlIGFzIGNhcHR1cmVkIGFuZCBzdG9yZSBpdCBpbiB0aGUgaW5zdGFuY2UgbWFwLlxuICpcbiAqIEBwYXJhbSB7VnVlfSBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBtYXJrKGluc3RhbmNlKSB7XG4gICAgY29uc3QgcmVmSWQgPSBpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19VSURfXztcbiAgICBpZiAoIWV4cG9ydHMuaW5zdGFuY2VNYXAuaGFzKHJlZklkKSkge1xuICAgICAgICBleHBvcnRzLmluc3RhbmNlTWFwLnNldChyZWZJZCwgaW5zdGFuY2UpO1xuICAgICAgICBhcHBSZWNvcmQuaW5zdGFuY2VNYXAuc2V0KHJlZklkLCBpbnN0YW5jZSk7XG4gICAgICAgIGluc3RhbmNlLiRvbignaG9vazpiZWZvcmVEZXN0cm95JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZXhwb3J0cy5pbnN0YW5jZU1hcC5kZWxldGUocmVmSWQpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBtYXJrRnVuY3Rpb25hbChpZCwgdm5vZGUpIHtcbiAgICBjb25zdCByZWZJZCA9IHZub2RlLmZuQ29udGV4dC5fX1ZVRV9ERVZUT09MU19VSURfXztcbiAgICBpZiAoIWV4cG9ydHMuZnVuY3Rpb25hbFZub2RlTWFwLmhhcyhyZWZJZCkpIHtcbiAgICAgICAgZXhwb3J0cy5mdW5jdGlvbmFsVm5vZGVNYXAuc2V0KHJlZklkLCB7fSk7XG4gICAgICAgIHZub2RlLmZuQ29udGV4dC4kb24oJ2hvb2s6YmVmb3JlRGVzdHJveScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGV4cG9ydHMuZnVuY3Rpb25hbFZub2RlTWFwLmRlbGV0ZShyZWZJZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBleHBvcnRzLmZ1bmN0aW9uYWxWbm9kZU1hcC5nZXQocmVmSWQpW2lkXSA9IHZub2RlO1xuICAgIGFwcFJlY29yZC5pbnN0YW5jZU1hcC5zZXQoaWQsIHtcbiAgICAgICAgX19WVUVfREVWVE9PTFNfVUlEX186IGlkLFxuICAgICAgICBfX1ZVRV9ERVZUT09MU19GVU5DVElPTkFMX0xFR0FDWV9fOiB0cnVlLFxuICAgICAgICB2bm9kZSxcbiAgICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRyZWUuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///18059\n");
|
|
286
|
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getComponentParents = exports.walkTree = exports.functionalVnodeMap = exports.instanceMap = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst el_1 = __webpack_require__(66351);\n\nconst util_1 = __webpack_require__(95136);\n\nlet appRecord;\nlet api;\nconst consoleBoundInstances = Array(5);\nlet filter = '';\nconst functionalIds = new Map(); // Dedupe instances\n// Some instances may be both on a component and on a child abstract/functional component\n\nconst captureIds = new Map();\n\nasync function walkTree(instance, pFilter, api, ctx) {\n initCtx(api, ctx);\n filter = pFilter;\n functionalIds.clear();\n captureIds.clear();\n const result = flatten(await findQualifiedChildren(instance));\n return result;\n}\n\nexports.walkTree = walkTree;\n\nfunction getComponentParents(instance, api, ctx) {\n initCtx(api, ctx);\n const captureIds = new Map();\n\n const captureId = vm => {\n const id = (0, util_1.getUniqueId)(vm);\n if (captureIds.has(id)) return;\n captureIds.set(id, undefined);\n\n if (vm.__VUE_DEVTOOLS_FUNCTIONAL_LEGACY__) {\n markFunctional(id, vm.vnode);\n } else {\n mark(vm);\n }\n };\n\n const parents = [];\n captureId(instance);\n let parent = instance;\n\n while (parent = parent.$parent) {\n captureId(parent);\n parents.push(parent);\n }\n\n return parents;\n}\n\nexports.getComponentParents = getComponentParents;\n\nfunction initCtx(_api, ctx) {\n appRecord = ctx.currentAppRecord;\n api = _api;\n\n if (!appRecord.meta) {\n appRecord.meta = {};\n }\n\n if (!appRecord.meta.instanceMap) {\n appRecord.meta.instanceMap = new Map();\n }\n\n exports.instanceMap = appRecord.meta.instanceMap;\n\n if (!appRecord.meta.functionalVnodeMap) {\n appRecord.meta.functionalVnodeMap = new Map();\n }\n\n exports.functionalVnodeMap = appRecord.meta.functionalVnodeMap;\n}\n/**\n * Iterate through an array of instances and flatten it into\n * an array of qualified instances. This is a depth-first\n * traversal - e.g. if an instance is not matched, we will\n * recursively go deeper until a qualified child is found.\n */\n\n\nfunction findQualifiedChildrenFromList(instances) {\n instances = instances.filter(child => !(0, util_1.isBeingDestroyed)(child));\n return Promise.all(!filter ? instances.map(capture) : Array.prototype.concat.apply([], instances.map(findQualifiedChildren)));\n}\n/**\n * Find qualified children from a single instance.\n * If the instance itself is qualified, just return itself.\n * This is ok because [].concat works in both cases.\n */\n\n\nasync function findQualifiedChildren(instance) {\n if (isQualified(instance)) {\n return [await capture(instance)];\n } else {\n let children = await findQualifiedChildrenFromList(instance.$children); // Find functional components in recursively in non-functional vnodes.\n\n if (instance._vnode && instance._vnode.children) {\n const list = await Promise.all(flatten(instance._vnode.children.filter(child => !child.componentInstance).map(captureChild))); // Filter qualified children.\n\n const additionalChildren = list.filter(instance => isQualified(instance));\n children = children.concat(additionalChildren);\n }\n\n return children;\n }\n}\n/**\n * Get children from a component instance.\n */\n\n\nfunction getInternalInstanceChildren(instance) {\n if (instance.$children) {\n return instance.$children;\n }\n\n return [];\n}\n/**\n * Check if an instance is qualified.\n */\n\n\nfunction isQualified(instance) {\n const name = (0, util_1.getInstanceName)(instance);\n return (0, shared_utils_1.classify)(name).toLowerCase().indexOf(filter) > -1 || (0, shared_utils_1.kebabize)(name).toLowerCase().indexOf(filter) > -1;\n}\n\nfunction flatten(items) {\n const r = items.reduce((acc, item) => {\n if (Array.isArray(item)) {\n let children = [];\n\n for (const i of item) {\n if (Array.isArray(i)) {\n children = children.concat(flatten(i));\n } else {\n children.push(i);\n }\n }\n\n acc.push(...children);\n } else if (item) {\n acc.push(item);\n }\n\n return acc;\n }, []);\n return r;\n}\n\nfunction captureChild(child) {\n if (child.fnContext && !child.componentInstance) {\n return capture(child);\n } else if (child.componentInstance) {\n if (!(0, util_1.isBeingDestroyed)(child.componentInstance)) return capture(child.componentInstance);\n } else if (child.children) {\n return Promise.all(flatten(child.children.map(captureChild)));\n }\n}\n/**\n * Capture the meta information of an instance. (recursive)\n */\n\n\nasync function capture(instance, index, list) {\n var _a, _b, _c, _d, _e, _f;\n\n if (instance.__VUE_DEVTOOLS_FUNCTIONAL_LEGACY__) {\n instance = instance.vnode;\n }\n\n if (instance.$options && instance.$options.abstract && instance._vnode && instance._vnode.componentInstance) {\n instance = instance._vnode.componentInstance;\n }\n\n if ((_b = (_a = instance.$options) === null || _a === void 0 ? void 0 : _a.devtools) === null || _b === void 0 ? void 0 : _b.hide) return; // Functional component.\n\n if (instance.fnContext && !instance.componentInstance) {\n const contextUid = instance.fnContext.__VUE_DEVTOOLS_UID__;\n let id = functionalIds.get(contextUid);\n\n if (id == null) {\n id = 0;\n } else {\n id++;\n }\n\n functionalIds.set(contextUid, id);\n const functionalId = contextUid + ':functional:' + id;\n markFunctional(functionalId, instance);\n const childrenPromise = instance.children ? instance.children.map(child => child.fnContext ? captureChild(child) : child.componentInstance ? capture(child.componentInstance) : undefined) // router-view has both fnContext and componentInstance on vnode.\n : instance.componentInstance ? [capture(instance.componentInstance)] : []; // await all childrenCapture to-be resolved\n\n const children = (await Promise.all(childrenPromise)).filter(Boolean);\n const treeNode = {\n uid: functionalId,\n id: functionalId,\n tags: [{\n label: 'functional',\n textColor: 0x555555,\n backgroundColor: 0xeeeeee\n }],\n name: (0, util_1.getInstanceName)(instance),\n renderKey: (0, util_1.getRenderKey)(instance.key),\n children,\n hasChildren: !!children.length,\n inactive: false,\n isFragment: false // TODO: Check what is it for.\n\n };\n return api.visitComponentTree(instance, treeNode, filter, (_c = appRecord === null || appRecord === void 0 ? void 0 : appRecord.options) === null || _c === void 0 ? void 0 : _c.app);\n } // instance._uid is not reliable in devtools as there\n // may be 2 roots with same _uid which causes unexpected\n // behaviour\n\n\n instance.__VUE_DEVTOOLS_UID__ = (0, util_1.getUniqueId)(instance, appRecord); // Dedupe\n\n if (captureIds.has(instance.__VUE_DEVTOOLS_UID__)) {\n return;\n } else {\n captureIds.set(instance.__VUE_DEVTOOLS_UID__, undefined);\n }\n\n mark(instance);\n const name = (0, util_1.getInstanceName)(instance);\n const children = (await Promise.all((await getInternalInstanceChildren(instance)).filter(child => !(0, util_1.isBeingDestroyed)(child)).map(capture))).filter(Boolean);\n const ret = {\n uid: instance._uid,\n id: instance.__VUE_DEVTOOLS_UID__,\n name,\n renderKey: (0, util_1.getRenderKey)(instance.$vnode ? instance.$vnode.key : null),\n inactive: !!instance._inactive,\n isFragment: !!instance._isFragment,\n children,\n hasChildren: !!children.length,\n tags: [],\n meta: {}\n };\n\n if (instance._vnode && instance._vnode.children) {\n const vnodeChildren = await Promise.all(flatten(instance._vnode.children.map(captureChild)));\n ret.children = ret.children.concat(flatten(vnodeChildren).filter(Boolean));\n ret.hasChildren = !!ret.children.length;\n } // ensure correct ordering\n\n\n const rootElements = (0, el_1.getRootElementsFromComponentInstance)(instance);\n const firstElement = rootElements[0];\n\n if (firstElement === null || firstElement === void 0 ? void 0 : firstElement.parentElement) {\n const parentInstance = instance.$parent;\n const parentRootElements = parentInstance ? (0, el_1.getRootElementsFromComponentInstance)(parentInstance) : [];\n let el = firstElement;\n const indexList = [];\n\n do {\n indexList.push(Array.from(el.parentElement.childNodes).indexOf(el));\n el = el.parentElement;\n } while (el.parentElement && parentRootElements.length && !parentRootElements.includes(el));\n\n ret.domOrder = indexList.reverse();\n } else {\n ret.domOrder = [-1];\n } // check if instance is available in console\n\n\n const consoleId = consoleBoundInstances.indexOf(instance.__VUE_DEVTOOLS_UID__);\n ret.consoleId = consoleId > -1 ? '$vm' + consoleId : null; // check router view\n\n const isRouterView2 = (_e = (_d = instance.$vnode) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.routerView;\n\n if (instance._routerView || isRouterView2) {\n ret.isRouterView = true;\n\n if (!instance._inactive && instance.$route) {\n const matched = instance.$route.matched;\n const depth = isRouterView2 ? instance.$vnode.data.routerViewDepth : instance._routerView.depth;\n ret.meta.matchedRouteSegment = matched && matched[depth] && (isRouterView2 ? matched[depth].path : matched[depth].handler.path);\n }\n\n ret.tags.push({\n label: `router-view${ret.meta.matchedRouteSegment ? `: ${ret.meta.matchedRouteSegment}` : ''}`,\n textColor: 0x000000,\n backgroundColor: 0xff8344\n });\n }\n\n return api.visitComponentTree(instance, ret, filter, (_f = appRecord === null || appRecord === void 0 ? void 0 : appRecord.options) === null || _f === void 0 ? void 0 : _f.app);\n}\n/**\n * Mark an instance as captured and store it in the instance map.\n *\n * @param {Vue} instance\n */\n\n\nfunction mark(instance) {\n const refId = instance.__VUE_DEVTOOLS_UID__;\n\n if (!exports.instanceMap.has(refId)) {\n exports.instanceMap.set(refId, instance);\n appRecord.instanceMap.set(refId, instance);\n instance.$on('hook:beforeDestroy', function () {\n exports.instanceMap.delete(refId);\n });\n }\n}\n\nfunction markFunctional(id, vnode) {\n const refId = vnode.fnContext.__VUE_DEVTOOLS_UID__;\n\n if (!exports.functionalVnodeMap.has(refId)) {\n exports.functionalVnodeMap.set(refId, {});\n vnode.fnContext.$on('hook:beforeDestroy', function () {\n exports.functionalVnodeMap.delete(refId);\n });\n }\n\n exports.functionalVnodeMap.get(refId)[id] = vnode;\n appRecord.instanceMap.set(id, {\n __VUE_DEVTOOLS_UID__: id,\n __VUE_DEVTOOLS_FUNCTIONAL_LEGACY__: true,\n vnode\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SyxDQUFDLFNBQU4sQ0FBZ0Isb0JBQTlCOztBQUNBLE1BQUksQ0FBQywyQkFBbUIsR0FBbkIsQ0FBdUIsS0FBdkIsQ0FBTCxFQUFvQztBQUNsQywrQkFBbUIsR0FBbkIsQ0FBdUIsS0FBdkIsRUFBOEIsRUFBOUI7QUFDQSxTQUFLLENBQUMsU0FBTixDQUFnQixHQUFoQixDQUFvQixvQkFBcEIsRUFBMEM7QUFDeEMsaUNBQW1CLE1BQW5CLENBQTBCLEtBQTFCO0FBQ0QsS0FGRDtBQUdEOztBQUVELDZCQUFtQixHQUFuQixDQUF1QixLQUF2QixFQUE4QixFQUE5QixJQUFvQyxLQUFwQztBQUVBLFdBQVMsQ0FBQyxXQUFWLENBQXNCLEdBQXRCLENBQTBCLEVBQTFCLEVBQThCO0FBQzVCLHdCQUFvQixFQUFFLEVBRE07QUFFNUIsc0NBQWtDLEVBQUUsSUFGUjtBQUc1QjtBQUg0QixHQUE5QjtBQUtEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi8uLi9zcmMvY29tcG9uZW50cy90cmVlLnRzPzQwNzMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmdldENvbXBvbmVudFBhcmVudHMgPSBleHBvcnRzLndhbGtUcmVlID0gZXhwb3J0cy5mdW5jdGlvbmFsVm5vZGVNYXAgPSBleHBvcnRzLmluc3RhbmNlTWFwID0gdm9pZCAwO1xuY29uc3Qgc2hhcmVkX3V0aWxzXzEgPSByZXF1aXJlKFwiQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHNcIik7XG5jb25zdCBlbF8xID0gcmVxdWlyZShcIi4vZWxcIik7XG5jb25zdCB1dGlsXzEgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xubGV0IGFwcFJlY29yZDtcbmxldCBhcGk7XG5jb25zdCBjb25zb2xlQm91bmRJbnN0YW5jZXMgPSBBcnJheSg1KTtcbmxldCBmaWx0ZXIgPSAnJztcbmNvbnN0IGZ1bmN0aW9uYWxJZHMgPSBuZXcgTWFwKCk7XG4vLyBEZWR1cGUgaW5zdGFuY2VzXG4vLyBTb21lIGluc3RhbmNlcyBtYXkgYmUgYm90aCBvbiBhIGNvbXBvbmVudCBhbmQgb24gYSBjaGlsZCBhYnN0cmFjdC9mdW5jdGlvbmFsIGNvbXBvbmVudFxuY29uc3QgY2FwdHVyZUlkcyA9IG5ldyBNYXAoKTtcbmFzeW5jIGZ1bmN0aW9uIHdhbGtUcmVlKGluc3RhbmNlLCBwRmlsdGVyLCBhcGksIGN0eCkge1xuICAgIGluaXRDdHgoYXBpLCBjdHgpO1xuICAgIGZpbHRlciA9IHBGaWx0ZXI7XG4gICAgZnVuY3Rpb25hbElkcy5jbGVhcigpO1xuICAgIGNhcHR1cmVJZHMuY2xlYXIoKTtcbiAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuKGF3YWl0IGZpbmRRdWFsaWZpZWRDaGlsZHJlbihpbnN0YW5jZSkpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLndhbGtUcmVlID0gd2Fsa1RyZWU7XG5mdW5jdGlvbiBnZXRDb21wb25lbnRQYXJlbnRzKGluc3RhbmNlLCBhcGksIGN0eCkge1xuICAgIGluaXRDdHgoYXBpLCBjdHgpO1xuICAgIGNvbnN0IGNhcHR1cmVJZHMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgY2FwdHVyZUlkID0gdm0gPT4ge1xuICAgICAgICBjb25zdCBpZCA9ICgwLCB1dGlsXzEuZ2V0VW5pcXVlSWQpKHZtKTtcbiAgICAgICAgaWYgKGNhcHR1cmVJZHMuaGFzKGlkKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FwdHVyZUlkcy5zZXQoaWQsIHVuZGVmaW5lZCk7XG4gICAgICAgIGlmICh2bS5fX1ZVRV9ERVZUT09MU19GVU5DVElPTkFMX0xFR0FDWV9fKSB7XG4gICAgICAgICAgICBtYXJrRnVuY3Rpb25hbChpZCwgdm0udm5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWFyayh2bSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHBhcmVudHMgPSBbXTtcbiAgICBjYXB0dXJlSWQoaW5zdGFuY2UpO1xuICAgIGxldCBwYXJlbnQgPSBpbnN0YW5jZTtcbiAgICB3aGlsZSAoKHBhcmVudCA9IHBhcmVudC4kcGFyZW50KSkge1xuICAgICAgICBjYXB0dXJlSWQocGFyZW50KTtcbiAgICAgICAgcGFyZW50cy5wdXNoKHBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRzO1xufVxuZXhwb3J0cy5nZXRDb21wb25lbnRQYXJlbnRzID0gZ2V0Q29tcG9uZW50UGFyZW50cztcbmZ1bmN0aW9uIGluaXRDdHgoX2FwaSwgY3R4KSB7XG4gICAgYXBwUmVjb3JkID0gY3R4LmN1cnJlbnRBcHBSZWNvcmQ7XG4gICAgYXBpID0gX2FwaTtcbiAgICBpZiAoIWFwcFJlY29yZC5tZXRhKSB7XG4gICAgICAgIGFwcFJlY29yZC5tZXRhID0ge307XG4gICAgfVxuICAgIGlmICghYXBwUmVjb3JkLm1ldGEuaW5zdGFuY2VNYXApIHtcbiAgICAgICAgYXBwUmVjb3JkLm1ldGEuaW5zdGFuY2VNYXAgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGV4cG9ydHMuaW5zdGFuY2VNYXAgPSBhcHBSZWNvcmQubWV0YS5pbnN0YW5jZU1hcDtcbiAgICBpZiAoIWFwcFJlY29yZC5tZXRhLmZ1bmN0aW9uYWxWbm9kZU1hcCkge1xuICAgICAgICBhcHBSZWNvcmQubWV0YS5mdW5jdGlvbmFsVm5vZGVNYXAgPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGV4cG9ydHMuZnVuY3Rpb25hbFZub2RlTWFwID0gYXBwUmVjb3JkLm1ldGEuZnVuY3Rpb25hbFZub2RlTWFwO1xufVxuLyoqXG4gKiBJdGVyYXRlIHRocm91Z2ggYW4gYXJyYXkgb2YgaW5zdGFuY2VzIGFuZCBmbGF0dGVuIGl0IGludG9cbiAqIGFuIGFycmF5IG9mIHF1YWxpZmllZCBpbnN0YW5jZXMuIFRoaXMgaXMgYSBkZXB0aC1maXJzdFxuICogdHJhdmVyc2FsIC0gZS5nLiBpZiBhbiBpbnN0YW5jZSBpcyBub3QgbWF0Y2hlZCwgd2Ugd2lsbFxuICogcmVjdXJzaXZlbHkgZ28gZGVlcGVyIHVudGlsIGEgcXVhbGlmaWVkIGNoaWxkIGlzIGZvdW5kLlxuICovXG5mdW5jdGlvbiBmaW5kUXVhbGlmaWVkQ2hpbGRyZW5Gcm9tTGlzdChpbnN0YW5jZXMpIHtcbiAgICBpbnN0YW5jZXMgPSBpbnN0YW5jZXNcbiAgICAgICAgLmZpbHRlcihjaGlsZCA9PiAhKDAsIHV0aWxfMS5pc0JlaW5nRGVzdHJveWVkKShjaGlsZCkpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbCghZmlsdGVyXG4gICAgICAgID8gaW5zdGFuY2VzLm1hcChjYXB0dXJlKVxuICAgICAgICA6IEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGluc3RhbmNlcy5tYXAoZmluZFF1YWxpZmllZENoaWxkcmVuKSkpO1xufVxuLyoqXG4gKiBGaW5kIHF1YWxpZmllZCBjaGlsZHJlbiBmcm9tIGEgc2luZ2xlIGluc3RhbmNlLlxuICogSWYgdGhlIGluc3RhbmNlIGl0c2VsZiBpcyBxdWFsaWZpZWQsIGp1c3QgcmV0dXJuIGl0c2VsZi5cbiAqIFRoaXMgaXMgb2sgYmVjYXVzZSBbXS5jb25jYXQgd29ya3MgaW4gYm90aCBjYXNlcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZmluZFF1YWxpZmllZENoaWxkcmVuKGluc3RhbmNlKSB7XG4gICAgaWYgKGlzUXVhbGlmaWVkKGluc3RhbmNlKSkge1xuICAgICAgICByZXR1cm4gW2F3YWl0IGNhcHR1cmUoaW5zdGFuY2UpXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxldCBjaGlsZHJlbiA9IGF3YWl0IGZpbmRRdWFsaWZpZWRDaGlsZHJlbkZyb21MaXN0KGluc3RhbmNlLiRjaGlsZHJlbik7XG4gICAgICAgIC8vIEZpbmQgZnVuY3Rpb25hbCBjb21wb25lbnRzIGluIHJlY3Vyc2l2ZWx5IGluIG5vbi1mdW5jdGlvbmFsIHZub2Rlcy5cbiAgICAgICAgaWYgKGluc3RhbmNlLl92bm9kZSAmJiBpbnN0YW5jZS5fdm5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBhd2FpdCBQcm9taXNlLmFsbChmbGF0dGVuKGluc3RhbmNlLl92bm9kZS5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gIWNoaWxkLmNvbXBvbmVudEluc3RhbmNlKS5tYXAoY2FwdHVyZUNoaWxkKSkpO1xuICAgICAgICAgICAgLy8gRmlsdGVyIHF1YWxpZmllZCBjaGlsZHJlbi5cbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDaGlsZHJlbiA9IGxpc3QuZmlsdGVyKGluc3RhbmNlID0+IGlzUXVhbGlmaWVkKGluc3RhbmNlKSk7XG4gICAgICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdChhZGRpdGlvbmFsQ2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG59XG4vKipcbiAqIEdldCBjaGlsZHJlbiBmcm9tIGEgY29tcG9uZW50IGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBnZXRJbnRlcm5hbEluc3RhbmNlQ2hpbGRyZW4oaW5zdGFuY2UpIHtcbiAgICBpZiAoaW5zdGFuY2UuJGNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS4kY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiBbXTtcbn1cbi8qKlxuICogQ2hlY2sgaWYgYW4gaW5zdGFuY2UgaXMgcXVhbGlmaWVkLlxuICovXG5mdW5jdGlvbiBpc1F1YWxpZmllZChpbnN0YW5jZSkge1xuICAgIGNvbnN0IG5hbWUgPSAoMCwgdXRpbF8xLmdldEluc3RhbmNlTmFtZSkoaW5zdGFuY2UpO1xuICAgIHJldHVybiAoMCwgc2hhcmVkX3V0aWxzXzEuY2xhc3NpZnkpKG5hbWUpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXIpID4gLTEgfHxcbiAgICAgICAgKDAsIHNoYXJlZF91dGlsc18xLmtlYmFiaXplKShuYW1lKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyKSA+IC0xO1xufVxuZnVuY3Rpb24gZmxhdHRlbihpdGVtcykge1xuICAgIGNvbnN0IHIgPSBpdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaXRlbSkge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uY29uY2F0KGZsYXR0ZW4oaSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY2MucHVzaCguLi5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXRlbSkge1xuICAgICAgICAgICAgYWNjLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIHI7XG59XG5mdW5jdGlvbiBjYXB0dXJlQ2hpbGQoY2hpbGQpIHtcbiAgICBpZiAoY2hpbGQuZm5Db250ZXh0ICYmICFjaGlsZC5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgICByZXR1cm4gY2FwdHVyZShjaGlsZCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNoaWxkLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICAgIGlmICghKDAsIHV0aWxfMS5pc0JlaW5nRGVzdHJveWVkKShjaGlsZC5jb21wb25lbnRJbnN0YW5jZSkpXG4gICAgICAgICAgICByZXR1cm4gY2FwdHVyZShjaGlsZC5jb21wb25lbnRJbnN0YW5jZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNoaWxkLmNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChmbGF0dGVuKGNoaWxkLmNoaWxkcmVuLm1hcChjYXB0dXJlQ2hpbGQpKSk7XG4gICAgfVxufVxuLyoqXG4gKiBDYXB0dXJlIHRoZSBtZXRhIGluZm9ybWF0aW9uIG9mIGFuIGluc3RhbmNlLiAocmVjdXJzaXZlKVxuICovXG5hc3luYyBmdW5jdGlvbiBjYXB0dXJlKGluc3RhbmNlLCBpbmRleCwgbGlzdCkge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgIGlmIChpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19GVU5DVElPTkFMX0xFR0FDWV9fKSB7XG4gICAgICAgIGluc3RhbmNlID0gaW5zdGFuY2Uudm5vZGU7XG4gICAgfVxuICAgIGlmIChpbnN0YW5jZS4kb3B0aW9ucyAmJiBpbnN0YW5jZS4kb3B0aW9ucy5hYnN0cmFjdCAmJiBpbnN0YW5jZS5fdm5vZGUgJiYgaW5zdGFuY2UuX3Zub2RlLmNvbXBvbmVudEluc3RhbmNlKSB7XG4gICAgICAgIGluc3RhbmNlID0gaW5zdGFuY2UuX3Zub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIH1cbiAgICBpZiAoKF9iID0gKF9hID0gaW5zdGFuY2UuJG9wdGlvbnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZXZ0b29scykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmhpZGUpXG4gICAgICAgIHJldHVybjtcbiAgICAvLyBGdW5jdGlvbmFsIGNvbXBvbmVudC5cbiAgICBpZiAoaW5zdGFuY2UuZm5Db250ZXh0ICYmICFpbnN0YW5jZS5jb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgICBjb25zdCBjb250ZXh0VWlkID0gaW5zdGFuY2UuZm5Db250ZXh0Ll9fVlVFX0RFVlRPT0xTX1VJRF9fO1xuICAgICAgICBsZXQgaWQgPSBmdW5jdGlvbmFsSWRzLmdldChjb250ZXh0VWlkKTtcbiAgICAgICAgaWYgKGlkID09IG51bGwpIHtcbiAgICAgICAgICAgIGlkID0gMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlkKys7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb25hbElkcy5zZXQoY29udGV4dFVpZCwgaWQpO1xuICAgICAgICBjb25zdCBmdW5jdGlvbmFsSWQgPSBjb250ZXh0VWlkICsgJzpmdW5jdGlvbmFsOicgKyBpZDtcbiAgICAgICAgbWFya0Z1bmN0aW9uYWwoZnVuY3Rpb25hbElkLCBpbnN0YW5jZSk7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuUHJvbWlzZSA9IChpbnN0YW5jZS5jaGlsZHJlblxuICAgICAgICAgICAgPyBpbnN0YW5jZS5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gY2hpbGQuZm5Db250ZXh0XG4gICAgICAgICAgICAgICAgPyBjYXB0dXJlQ2hpbGQoY2hpbGQpXG4gICAgICAgICAgICAgICAgOiBjaGlsZC5jb21wb25lbnRJbnN0YW5jZVxuICAgICAgICAgICAgICAgICAgICA/IGNhcHR1cmUoY2hpbGQuY29tcG9uZW50SW5zdGFuY2UpXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKVxuICAgICAgICAgICAgLy8gcm91dGVyLXZpZXcgaGFzIGJvdGggZm5Db250ZXh0IGFuZCBjb21wb25lbnRJbnN0YW5jZSBvbiB2bm9kZS5cbiAgICAgICAgICAgIDogaW5zdGFuY2UuY29tcG9uZW50SW5zdGFuY2UgPyBbY2FwdHVyZShpbnN0YW5jZS5jb21wb25lbnRJbnN0YW5jZSldIDogW10pO1xuICAgICAgICAvLyBhd2FpdCBhbGwgY2hpbGRyZW5DYXB0dXJlIHRvLWJlIHJlc29sdmVkXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gKGF3YWl0IFByb21pc2UuYWxsKGNoaWxkcmVuUHJvbWlzZSkpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgY29uc3QgdHJlZU5vZGUgPSB7XG4gICAgICAgICAgICB1aWQ6IGZ1bmN0aW9uYWxJZCxcbiAgICAgICAgICAgIGlkOiBmdW5jdGlvbmFsSWQsXG4gICAgICAgICAgICB0YWdzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2Z1bmN0aW9uYWwnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6IDB4NTU1NTU1LFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IDB4ZWVlZWVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbmFtZTogKDAsIHV0aWxfMS5nZXRJbnN0YW5jZU5hbWUpKGluc3RhbmNlKSxcbiAgICAgICAgICAgIHJlbmRlcktleTogKDAsIHV0aWxfMS5nZXRSZW5kZXJLZXkpKGluc3RhbmNlLmtleSksXG4gICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgIGhhc0NoaWxkcmVuOiAhIWNoaWxkcmVuLmxlbmd0aCxcbiAgICAgICAgICAgIGluYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRnJhZ21lbnQ6IGZhbHNlLCAvLyBUT0RPOiBDaGVjayB3aGF0IGlzIGl0IGZvci5cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGFwaS52aXNpdENvbXBvbmVudFRyZWUoaW5zdGFuY2UsIHRyZWVOb2RlLCBmaWx0ZXIsIChfYyA9IGFwcFJlY29yZCA9PT0gbnVsbCB8fCBhcHBSZWNvcmQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFwcFJlY29yZC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuYXBwKTtcbiAgICB9XG4gICAgLy8gaW5zdGFuY2UuX3VpZCBpcyBub3QgcmVsaWFibGUgaW4gZGV2dG9vbHMgYXMgdGhlcmVcbiAgICAvLyBtYXkgYmUgMiByb290cyB3aXRoIHNhbWUgX3VpZCB3aGljaCBjYXVzZXMgdW5leHBlY3RlZFxuICAgIC8vIGJlaGF2aW91clxuICAgIGluc3RhbmNlLl9fVlVFX0RFVlRPT0xTX1VJRF9fID0gKDAsIHV0aWxfMS5nZXRVbmlxdWVJZCkoaW5zdGFuY2UsIGFwcFJlY29yZCk7XG4gICAgLy8gRGVkdXBlXG4gICAgaWYgKGNhcHR1cmVJZHMuaGFzKGluc3RhbmNlLl9fVlVFX0RFVlRPT0xTX1VJRF9fKSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjYXB0dXJlSWRzLnNldChpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19VSURfXywgdW5kZWZpbmVkKTtcbiAgICB9XG4gICAgbWFyayhpbnN0YW5jZSk7XG4gICAgY29uc3QgbmFtZSA9ICgwLCB1dGlsXzEuZ2V0SW5zdGFuY2VOYW1lKShpbnN0YW5jZSk7XG4gICAgY29uc3QgY2hpbGRyZW4gPSAoYXdhaXQgUHJvbWlzZS5hbGwoKGF3YWl0IGdldEludGVybmFsSW5zdGFuY2VDaGlsZHJlbihpbnN0YW5jZSkpXG4gICAgICAgIC5maWx0ZXIoY2hpbGQgPT4gISgwLCB1dGlsXzEuaXNCZWluZ0Rlc3Ryb3llZCkoY2hpbGQpKVxuICAgICAgICAubWFwKGNhcHR1cmUpKSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGNvbnN0IHJldCA9IHtcbiAgICAgICAgdWlkOiBpbnN0YW5jZS5fdWlkLFxuICAgICAgICBpZDogaW5zdGFuY2UuX19WVUVfREVWVE9PTFNfVUlEX18sXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHJlbmRlcktleTogKDAsIHV0aWxfMS5nZXRSZW5kZXJLZXkpKGluc3RhbmNlLiR2bm9kZSA/IGluc3RhbmNlLiR2bm9kZS5rZXkgOiBudWxsKSxcbiAgICAgICAgaW5hY3RpdmU6ICEhaW5zdGFuY2UuX2luYWN0aXZlLFxuICAgICAgICBpc0ZyYWdtZW50OiAhIWluc3RhbmNlLl9pc0ZyYWdtZW50LFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgaGFzQ2hpbGRyZW46ICEhY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICB0YWdzOiBbXSxcbiAgICAgICAgbWV0YToge30sXG4gICAgfTtcbiAgICBpZiAoaW5zdGFuY2UuX3Zub2RlICYmIGluc3RhbmNlLl92bm9kZS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCB2bm9kZUNoaWxkcmVuID0gYXdhaXQgUHJvbWlzZS5hbGwoZmxhdHRlbihpbnN0YW5jZS5fdm5vZGUuY2hpbGRyZW4ubWFwKGNhcHR1cmVDaGlsZCkpKTtcbiAgICAgICAgcmV0LmNoaWxkcmVuID0gcmV0LmNoaWxkcmVuLmNvbmNhdChmbGF0dGVuKHZub2RlQ2hpbGRyZW4pLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgIHJldC5oYXNDaGlsZHJlbiA9ICEhcmV0LmNoaWxkcmVuLmxlbmd0aDtcbiAgICB9XG4gICAgLy8gZW5zdXJlIGNvcnJlY3Qgb3JkZXJpbmdcbiAgICBjb25zdCByb290RWxlbWVudHMgPSAoMCwgZWxfMS5nZXRSb290RWxlbWVudHNGcm9tQ29tcG9uZW50SW5zdGFuY2UpKGluc3RhbmNlKTtcbiAgICBjb25zdCBmaXJzdEVsZW1lbnQgPSByb290RWxlbWVudHNbMF07XG4gICAgaWYgKGZpcnN0RWxlbWVudCA9PT0gbnVsbCB8fCBmaXJzdEVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpcnN0RWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHBhcmVudEluc3RhbmNlID0gaW5zdGFuY2UuJHBhcmVudDtcbiAgICAgICAgY29uc3QgcGFyZW50Um9vdEVsZW1lbnRzID0gcGFyZW50SW5zdGFuY2UgPyAoMCwgZWxfMS5nZXRSb290RWxlbWVudHNGcm9tQ29tcG9uZW50SW5zdGFuY2UpKHBhcmVudEluc3RhbmNlKSA6IFtdO1xuICAgICAgICBsZXQgZWwgPSBmaXJzdEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGluZGV4TGlzdCA9IFtdO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBpbmRleExpc3QucHVzaChBcnJheS5mcm9tKGVsLnBhcmVudEVsZW1lbnQuY2hpbGROb2RlcykuaW5kZXhPZihlbCkpO1xuICAgICAgICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xuICAgICAgICB9IHdoaWxlIChlbC5wYXJlbnRFbGVtZW50ICYmIHBhcmVudFJvb3RFbGVtZW50cy5sZW5ndGggJiYgIXBhcmVudFJvb3RFbGVtZW50cy5pbmNsdWRlcyhlbCkpO1xuICAgICAgICByZXQuZG9tT3JkZXIgPSBpbmRleExpc3QucmV2ZXJzZSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0LmRvbU9yZGVyID0gWy0xXTtcbiAgICB9XG4gICAgLy8gY2hlY2sgaWYgaW5zdGFuY2UgaXMgYXZhaWxhYmxlIGluIGNvbnNvbGVcbiAgICBjb25zdCBjb25zb2xlSWQgPSBjb25zb2xlQm91bmRJbnN0YW5jZXMuaW5kZXhPZihpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19VSURfXyk7XG4gICAgcmV0LmNvbnNvbGVJZCA9IGNvbnNvbGVJZCA+IC0xID8gJyR2bScgKyBjb25zb2xlSWQgOiBudWxsO1xuICAgIC8vIGNoZWNrIHJvdXRlciB2aWV3XG4gICAgY29uc3QgaXNSb3V0ZXJWaWV3MiA9IChfZSA9IChfZCA9IGluc3RhbmNlLiR2bm9kZSkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmRhdGEpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5yb3V0ZXJWaWV3O1xuICAgIGlmIChpbnN0YW5jZS5fcm91dGVyVmlldyB8fCBpc1JvdXRlclZpZXcyKSB7XG4gICAgICAgIHJldC5pc1JvdXRlclZpZXcgPSB0cnVlO1xuICAgICAgICBpZiAoIWluc3RhbmNlLl9pbmFjdGl2ZSAmJiBpbnN0YW5jZS4kcm91dGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZWQgPSBpbnN0YW5jZS4kcm91dGUubWF0Y2hlZDtcbiAgICAgICAgICAgIGNvbnN0IGRlcHRoID0gaXNSb3V0ZXJWaWV3MlxuICAgICAgICAgICAgICAgID8gaW5zdGFuY2UuJHZub2RlLmRhdGEucm91dGVyVmlld0RlcHRoXG4gICAgICAgICAgICAgICAgOiBpbnN0YW5jZS5fcm91dGVyVmlldy5kZXB0aDtcbiAgICAgICAgICAgIHJldC5tZXRhLm1hdGNoZWRSb3V0ZVNlZ21lbnQgPVxuICAgICAgICAgICAgICAgIG1hdGNoZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZFtkZXB0aF0gJiZcbiAgICAgICAgICAgICAgICAgICAgKGlzUm91dGVyVmlldzIgPyBtYXRjaGVkW2RlcHRoXS5wYXRoIDogbWF0Y2hlZFtkZXB0aF0uaGFuZGxlci5wYXRoKTtcbiAgICAgICAgfVxuICAgICAgICByZXQudGFncy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiBgcm91dGVyLXZpZXcke3JldC5tZXRhLm1hdGNoZWRSb3V0ZVNlZ21lbnQgPyBgOiAke3JldC5tZXRhLm1hdGNoZWRSb3V0ZVNlZ21lbnR9YCA6ICcnfWAsXG4gICAgICAgICAgICB0ZXh0Q29sb3I6IDB4MDAwMDAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAweGZmODM0NCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhcGkudmlzaXRDb21wb25lbnRUcmVlKGluc3RhbmNlLCByZXQsIGZpbHRlciwgKF9mID0gYXBwUmVjb3JkID09PSBudWxsIHx8IGFwcFJlY29yZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXBwUmVjb3JkLm9wdGlvbnMpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5hcHApO1xufVxuLyoqXG4gKiBNYXJrIGFuIGluc3RhbmNlIGFzIGNhcHR1cmVkIGFuZCBzdG9yZSBpdCBpbiB0aGUgaW5zdGFuY2UgbWFwLlxuICpcbiAqIEBwYXJhbSB7VnVlfSBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBtYXJrKGluc3RhbmNlKSB7XG4gICAgY29uc3QgcmVmSWQgPSBpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19VSURfXztcbiAgICBpZiAoIWV4cG9ydHMuaW5zdGFuY2VNYXAuaGFzKHJlZklkKSkge1xuICAgICAgICBleHBvcnRzLmluc3RhbmNlTWFwLnNldChyZWZJZCwgaW5zdGFuY2UpO1xuICAgICAgICBhcHBSZWNvcmQuaW5zdGFuY2VNYXAuc2V0KHJlZklkLCBpbnN0YW5jZSk7XG4gICAgICAgIGluc3RhbmNlLiRvbignaG9vazpiZWZvcmVEZXN0cm95JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZXhwb3J0cy5pbnN0YW5jZU1hcC5kZWxldGUocmVmSWQpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBtYXJrRnVuY3Rpb25hbChpZCwgdm5vZGUpIHtcbiAgICBjb25zdCByZWZJZCA9IHZub2RlLmZuQ29udGV4dC5fX1ZVRV9ERVZUT09MU19VSURfXztcbiAgICBpZiAoIWV4cG9ydHMuZnVuY3Rpb25hbFZub2RlTWFwLmhhcyhyZWZJZCkpIHtcbiAgICAgICAgZXhwb3J0cy5mdW5jdGlvbmFsVm5vZGVNYXAuc2V0KHJlZklkLCB7fSk7XG4gICAgICAgIHZub2RlLmZuQ29udGV4dC4kb24oJ2hvb2s6YmVmb3JlRGVzdHJveScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGV4cG9ydHMuZnVuY3Rpb25hbFZub2RlTWFwLmRlbGV0ZShyZWZJZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBleHBvcnRzLmZ1bmN0aW9uYWxWbm9kZU1hcC5nZXQocmVmSWQpW2lkXSA9IHZub2RlO1xuICAgIGFwcFJlY29yZC5pbnN0YW5jZU1hcC5zZXQoaWQsIHtcbiAgICAgICAgX19WVUVfREVWVE9PTFNfVUlEX186IGlkLFxuICAgICAgICBfX1ZVRV9ERVZUT09MU19GVU5DVElPTkFMX0xFR0FDWV9fOiB0cnVlLFxuICAgICAgICB2bm9kZSxcbiAgICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRyZWUuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///18059\n");
|
|
287
287
|
|
|
288
288
|
/***/ }),
|
|
289
289
|
|
|
@@ -291,7 +291,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
291
291
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
292
292
|
|
|
293
293
|
"use strict";
|
|
294
|
-
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getUniqueId = exports.getRenderKey = exports.getInstanceName = exports.isBeingDestroyed = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nfunction isBeingDestroyed(instance) {\n return instance._isBeingDestroyed;\n}\n\nexports.isBeingDestroyed = isBeingDestroyed;\n/**\n * Get the appropriate display name for an instance.\n */\n\nfunction getInstanceName(instance) {\n const name = (0, shared_utils_1.getComponentName)(instance.$options || instance.fnOptions || {});\n if (name) return name;\n return instance.$root === instance ? 'Root' : 'Anonymous Component';\n}\n\nexports.getInstanceName = getInstanceName;\n\nfunction getRenderKey(value) {\n if (value == null) return;\n const type = typeof value;\n\n if (type === 'number') {\n return value.toString();\n } else if (type === 'string') {\n return `'${value}'`;\n } else if (Array.isArray(value)) {\n return 'Array';\n } else {\n return 'Object';\n }\n}\n\nexports.getRenderKey = getRenderKey;\n/**\n * Returns a devtools unique id for instance.\n */\n\nfunction getUniqueId(instance) {\n if (instance.__VUE_DEVTOOLS_UID__ != null) return instance.__VUE_DEVTOOLS_UID__;\n
|
|
294
|
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getUniqueId = exports.getRenderKey = exports.getInstanceName = exports.isBeingDestroyed = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nfunction isBeingDestroyed(instance) {\n return instance._isBeingDestroyed;\n}\n\nexports.isBeingDestroyed = isBeingDestroyed;\n/**\n * Get the appropriate display name for an instance.\n */\n\nfunction getInstanceName(instance) {\n const name = (0, shared_utils_1.getComponentName)(instance.$options || instance.fnOptions || {});\n if (name) return name;\n return instance.$root === instance ? 'Root' : 'Anonymous Component';\n}\n\nexports.getInstanceName = getInstanceName;\n\nfunction getRenderKey(value) {\n if (value == null) return;\n const type = typeof value;\n\n if (type === 'number') {\n return value.toString();\n } else if (type === 'string') {\n return `'${value}'`;\n } else if (Array.isArray(value)) {\n return 'Array';\n } else {\n return 'Object';\n }\n}\n\nexports.getRenderKey = getRenderKey;\n/**\n * Returns a devtools unique id for instance.\n */\n\nfunction getUniqueId(instance, appRecord) {\n if (instance.__VUE_DEVTOOLS_UID__ != null) return instance.__VUE_DEVTOOLS_UID__;\n let rootVueId = instance.$root.__VUE_DEVTOOLS_APP_RECORD_ID__;\n\n if (!rootVueId && appRecord) {\n rootVueId = appRecord.id;\n }\n\n if (!rootVueId) {\n console.error('No app record id found for instance', instance);\n }\n\n return `${rootVueId}:${instance._uid}`;\n}\n\nexports.getUniqueId = getUniqueId;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTUxMzYuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUdBLFNBQWdCLGdCQUFoQixDQUFrQyxRQUFsQyxFQUEwQztBQUN4QyxTQUFPLFFBQVEsQ0FBQyxpQkFBaEI7QUFDRDs7QUFGRDtBQUlBOztBQUVHOztBQUNILFNBQWdCLGVBQWhCLENBQWlDLFFBQWpDLEVBQXlDO0FBQ3ZDLFFBQU0sSUFBSSxHQUFHLHFDQUFpQixRQUFRLENBQUMsUUFBVCxJQUFxQixRQUFRLENBQUMsU0FBOUIsSUFBMkMsRUFBNUQsQ0FBYjtBQUNBLE1BQUksSUFBSixFQUFVLE9BQU8sSUFBUDtBQUNWLFNBQU8sUUFBUSxDQUFDLEtBQVQsS0FBbUIsUUFBbkIsR0FDSCxNQURHLEdBRUgscUJBRko7QUFHRDs7QUFORDs7QUFRQSxTQUFnQixZQUFoQixDQUE4QixLQUE5QixFQUFtQztBQUNqQyxNQUFJLEtBQUssSUFBSSxJQUFiLEVBQW1CO0FBQ25CLFFBQU0sSUFBSSxHQUFHLE9BQU8sS0FBcEI7O0FBQ0EsTUFBSSxJQUFJLEtBQUssUUFBYixFQUF1QjtBQUNyQixXQUFPLEtBQUssQ0FBQyxRQUFOLEVBQVA7QUFDRCxHQUZELE1BRU8sSUFBSSxJQUFJLEtBQUssUUFBYixFQUF1QjtBQUM1QixXQUFPLElBQUksS0FBSyxHQUFoQjtBQUNELEdBRk0sTUFFQSxJQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsS0FBZCxDQUFKLEVBQTBCO0FBQy9CLFdBQU8sT0FBUDtBQUNELEdBRk0sTUFFQTtBQUNMLFdBQU8sUUFBUDtBQUNEO0FBQ0Y7O0FBWkQ7QUFjQTs7QUFFRzs7QUFDSCxTQUFnQixXQUFoQixDQUE2QixRQUE3QixFQUF1QyxTQUF2QyxFQUE0RDtBQUMxRCxNQUFJLFFBQVEsQ0FBQyxvQkFBVCxJQUFpQyxJQUFyQyxFQUEyQyxPQUFPLFFBQVEsQ0FBQyxvQkFBaEI7QUFDM0MsTUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQVQsQ0FBZSw4QkFBL0I7O0FBQ0EsTUFBSSxDQUFDLFNBQUQsSUFBYyxTQUFsQixFQUE2QjtBQUMzQixhQUFTLEdBQUcsU0FBUyxDQUFDLEVBQXRCO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDLFNBQUwsRUFBZ0I7QUFDZCxXQUFPLENBQUMsS0FBUixDQUFjLHFDQUFkLEVBQXFELFFBQXJEO0FBQ0Q7O0FBQ0QsU0FBTyxHQUFHLFNBQVMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFwQztBQUNEOztBQVZEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi8uLi9zcmMvY29tcG9uZW50cy91dGlsLnRzP2U4NjYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmdldFVuaXF1ZUlkID0gZXhwb3J0cy5nZXRSZW5kZXJLZXkgPSBleHBvcnRzLmdldEluc3RhbmNlTmFtZSA9IGV4cG9ydHMuaXNCZWluZ0Rlc3Ryb3llZCA9IHZvaWQgMDtcbmNvbnN0IHNoYXJlZF91dGlsc18xID0gcmVxdWlyZShcIkB2dWUtZGV2dG9vbHMvc2hhcmVkLXV0aWxzXCIpO1xuZnVuY3Rpb24gaXNCZWluZ0Rlc3Ryb3llZChpbnN0YW5jZSkge1xuICAgIHJldHVybiBpbnN0YW5jZS5faXNCZWluZ0Rlc3Ryb3llZDtcbn1cbmV4cG9ydHMuaXNCZWluZ0Rlc3Ryb3llZCA9IGlzQmVpbmdEZXN0cm95ZWQ7XG4vKipcbiAqIEdldCB0aGUgYXBwcm9wcmlhdGUgZGlzcGxheSBuYW1lIGZvciBhbiBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gZ2V0SW5zdGFuY2VOYW1lKGluc3RhbmNlKSB7XG4gICAgY29uc3QgbmFtZSA9ICgwLCBzaGFyZWRfdXRpbHNfMS5nZXRDb21wb25lbnROYW1lKShpbnN0YW5jZS4kb3B0aW9ucyB8fCBpbnN0YW5jZS5mbk9wdGlvbnMgfHwge30pO1xuICAgIGlmIChuYW1lKVxuICAgICAgICByZXR1cm4gbmFtZTtcbiAgICByZXR1cm4gaW5zdGFuY2UuJHJvb3QgPT09IGluc3RhbmNlXG4gICAgICAgID8gJ1Jvb3QnXG4gICAgICAgIDogJ0Fub255bW91cyBDb21wb25lbnQnO1xufVxuZXhwb3J0cy5nZXRJbnN0YW5jZU5hbWUgPSBnZXRJbnN0YW5jZU5hbWU7XG5mdW5jdGlvbiBnZXRSZW5kZXJLZXkodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbClcbiAgICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYCcke3ZhbHVlfSdgO1xuICAgIH1cbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gJ0FycmF5JztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAnT2JqZWN0JztcbiAgICB9XG59XG5leHBvcnRzLmdldFJlbmRlcktleSA9IGdldFJlbmRlcktleTtcbi8qKlxuICogUmV0dXJucyBhIGRldnRvb2xzIHVuaXF1ZSBpZCBmb3IgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGdldFVuaXF1ZUlkKGluc3RhbmNlLCBhcHBSZWNvcmQpIHtcbiAgICBpZiAoaW5zdGFuY2UuX19WVUVfREVWVE9PTFNfVUlEX18gIT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLl9fVlVFX0RFVlRPT0xTX1VJRF9fO1xuICAgIGxldCByb290VnVlSWQgPSBpbnN0YW5jZS4kcm9vdC5fX1ZVRV9ERVZUT09MU19BUFBfUkVDT1JEX0lEX187XG4gICAgaWYgKCFyb290VnVlSWQgJiYgYXBwUmVjb3JkKSB7XG4gICAgICAgIHJvb3RWdWVJZCA9IGFwcFJlY29yZC5pZDtcbiAgICB9XG4gICAgaWYgKCFyb290VnVlSWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gYXBwIHJlY29yZCBpZCBmb3VuZCBmb3IgaW5zdGFuY2UnLCBpbnN0YW5jZSk7XG4gICAgfVxuICAgIHJldHVybiBgJHtyb290VnVlSWR9OiR7aW5zdGFuY2UuX3VpZH1gO1xufVxuZXhwb3J0cy5nZXRVbmlxdWVJZCA9IGdldFVuaXF1ZUlkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///95136\n");
|
|
295
295
|
|
|
296
296
|
/***/ }),
|
|
297
297
|
|
|
@@ -315,7 +315,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
315
315
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
316
316
|
|
|
317
317
|
"use strict";
|
|
318
|
-
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.setupPlugin = void 0;\n\nconst devtools_api_1 = __webpack_require__(72039);\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst clone_deep_1 = __importDefault(__webpack_require__(96206));\n\nlet actionId = 0;\n\nfunction setupPlugin(api, app, Vue) {\n const ROUTER_INSPECTOR_ID = 'vue2-router-inspector';\n const ROUTER_CHANGES_LAYER_ID = 'vue2-router-changes';\n const VUEX_INSPECTOR_ID = 'vue2-vuex-inspector';\n const VUEX_MUTATIONS_ID = 'vue2-vuex-mutations';\n const VUEX_ACTIONS_ID = 'vue2-vuex-actions';\n (0, devtools_api_1.setupDevtoolsPlugin)({\n app,\n id: 'org.vuejs.vue2-internal',\n label: 'Vue 2',\n homepage: 'https://vuejs.org/',\n logo: 'https://vuejs.org/images/icons/favicon-96x96.png'\n }, api => {\n var _a;\n\n const hook = shared_utils_1.target.__VUE_DEVTOOLS_GLOBAL_HOOK__; // Vue Router\n\n if (app.$router) {\n const router = app.$router; // Inspector\n\n api.addInspector({\n id: ROUTER_INSPECTOR_ID,\n label: 'Routes',\n icon: 'book',\n treeFilterPlaceholder: 'Search routes'\n });\n api.on.getInspectorTree(payload => {\n if (payload.inspectorId === ROUTER_INSPECTOR_ID) {\n payload.rootNodes = router.options.routes.map(route => formatRouteNode(router, route, '', payload.filter)).filter(Boolean);\n }\n });\n api.on.getInspectorState(payload => {\n if (payload.inspectorId === ROUTER_INSPECTOR_ID) {\n const route = router.matcher.getRoutes().find(r => getPathId(r) === payload.nodeId);\n\n if (route) {\n payload.state = {\n options: formatRouteData(route)\n };\n }\n }\n }); // Timeline\n\n api.addTimelineLayer({\n id: ROUTER_CHANGES_LAYER_ID,\n label: 'Router Navigations',\n color: 0x40a8c4\n });\n router.afterEach((to, from) => {\n api.addTimelineEvent({\n layerId: ROUTER_CHANGES_LAYER_ID,\n event: {\n time: Date.now(),\n title: to.path,\n data: {\n from,\n to\n }\n }\n });\n api.sendInspectorTree(ROUTER_INSPECTOR_ID);\n });\n } // Vuex\n\n\n if (app.$store) {\n const store = app.$store;\n api.addInspector({\n id: VUEX_INSPECTOR_ID,\n label: 'Vuex',\n icon: 'storage',\n treeFilterPlaceholder: 'Filter stores...'\n });\n api.on.getInspectorTree(payload => {\n if (payload.inspectorId === VUEX_INSPECTOR_ID) {\n if (payload.filter) {\n const nodes = [];\n flattenStoreForInspectorTree(nodes, store._modules.root, payload.filter, '');\n payload.rootNodes = nodes;\n } else {\n payload.rootNodes = [formatStoreForInspectorTree(store._modules.root, '')];\n }\n }\n });\n api.on.getInspectorState(payload => {\n if (payload.inspectorId === VUEX_INSPECTOR_ID) {\n const modulePath = payload.nodeId;\n const module = getStoreModule(store._modules, modulePath); // Access the getters prop to init getters cache (which is lazy)\n // eslint-disable-next-line no-unused-expressions\n\n module.context.getters;\n payload.state = formatStoreForInspectorState(module, store._makeLocalGettersCache, modulePath);\n }\n });\n api.on.editInspectorState(payload => {\n if (payload.inspectorId === VUEX_INSPECTOR_ID) {\n let path = payload.path;\n\n if (payload.nodeId !== 'root') {\n path = [...payload.nodeId.substring(0, payload.nodeId.length - 1).split('/'), ...path];\n }\n\n store._committing = true;\n payload.set(store._vm.$data.$$state, path);\n store._committing = false;\n }\n });\n api.addTimelineLayer({\n id: VUEX_MUTATIONS_ID,\n label: 'Vuex Mutations',\n color: LIME_500\n });\n api.addTimelineLayer({\n id: VUEX_ACTIONS_ID,\n label: 'Vuex Actions',\n color: LIME_500\n });\n hook.on('vuex:mutation', (mutation, state) => {\n api.sendInspectorState(VUEX_INSPECTOR_ID);\n const data = {};\n\n if (mutation.payload) {\n data.payload = mutation.payload;\n }\n\n data.state = (0, clone_deep_1.default)(state);\n api.addTimelineEvent({\n layerId: VUEX_MUTATIONS_ID,\n event: {\n time: Date.now(),\n title: mutation.type,\n data\n }\n });\n });\n (_a = store.subscribeAction) === null || _a === void 0 ? void 0 : _a.call(store, {\n before: (action, state) => {\n const data = {};\n\n if (action.payload) {\n data.payload = action.payload;\n }\n\n action._id = actionId++;\n action._time = Date.now();\n data.state = state;\n api.addTimelineEvent({\n layerId: VUEX_ACTIONS_ID,\n event: {\n time: action._time,\n title: action.type,\n groupId: action._id,\n subtitle: 'start',\n data\n }\n });\n },\n after: (action, state) => {\n const data = {};\n\n const duration = Date.now() - action._time;\n\n data.duration = {\n _custom: {\n type: 'duration',\n display: `${duration}ms`,\n tooltip: 'Action duration',\n value: duration\n }\n };\n\n if (action.payload) {\n data.payload = action.payload;\n }\n\n data.state = state;\n api.addTimelineEvent({\n layerId: VUEX_ACTIONS_ID,\n event: {\n time: Date.now(),\n title: action.type,\n groupId: action._id,\n subtitle: 'end',\n data\n }\n });\n }\n }, {\n prepend: true\n }); // Inspect getters on mutations\n\n api.on.inspectTimelineEvent(payload => {\n if (payload.layerId === VUEX_MUTATIONS_ID) {\n const getterKeys = Object.keys(store.getters);\n\n if (getterKeys.length) {\n const vm = new Vue({\n data: {\n $$state: payload.data.state\n },\n computed: store._vm.$options.computed\n });\n const originalVm = store._vm;\n store._vm = vm;\n const tree = transformPathsToObjectTree(store.getters);\n payload.data.getters = (0, clone_deep_1.default)(tree);\n store._vm = originalVm;\n vm.$destroy();\n }\n }\n });\n }\n });\n}\n\nexports.setupPlugin = setupPlugin;\n/**\n * Extracted from tailwind palette\n */\n\nconst BLUE_600 = 0x2563eb;\nconst LIME_500 = 0x84cc16;\nconst CYAN_400 = 0x22d3ee;\nconst ORANGE_400 = 0xfb923c;\nconst WHITE = 0xffffff;\nconst DARK = 0x666666;\n\nfunction formatRouteNode(router, route, parentPath, filter) {\n var _a, _b;\n\n const node = {\n id: parentPath + route.path,\n label: route.path,\n children: (_a = route.children) === null || _a === void 0 ? void 0 : _a.map(child => formatRouteNode(router, child, route.path, filter)).filter(Boolean),\n tags: []\n };\n if (filter && !node.id.includes(filter) && !((_b = node.children) === null || _b === void 0 ? void 0 : _b.length)) return null;\n\n if (route.name != null) {\n node.tags.push({\n label: String(route.name),\n textColor: 0,\n backgroundColor: CYAN_400\n });\n }\n\n if (route.alias != null) {\n node.tags.push({\n label: 'alias',\n textColor: 0,\n backgroundColor: ORANGE_400\n });\n }\n\n const currentPath = router.currentRoute.matched.reduce((p, m) => p + m.path, '');\n\n if (node.id === currentPath) {\n node.tags.push({\n label: 'active',\n textColor: WHITE,\n backgroundColor: BLUE_600\n });\n }\n\n if (route.redirect) {\n node.tags.push({\n label: 'redirect: ' + (typeof route.redirect === 'string' ? route.redirect : 'Object'),\n textColor: WHITE,\n backgroundColor: DARK\n });\n }\n\n return node;\n}\n\nfunction formatRouteData(route) {\n const data = [];\n data.push({\n key: 'path',\n value: route.path\n });\n\n if (route.redirect) {\n data.push({\n key: 'redirect',\n value: route.redirect\n });\n }\n\n if (route.alias) {\n data.push({\n key: 'alias',\n value: route.alias\n });\n }\n\n if (route.props) {\n data.push({\n key: 'props',\n value: route.props\n });\n }\n\n if (route.name && route.name != null) {\n data.push({\n key: 'name',\n value: route.name\n });\n }\n\n if (route.component) {\n const component = {}; // if (route.component.__file) {\n // component.file = route.component.__file\n // }\n\n if (route.component.template) {\n component.template = route.component.template;\n }\n\n if (route.component.props) {\n component.props = route.component.props;\n }\n\n if (!(0, shared_utils_1.isEmptyObject)(component)) {\n data.push({\n key: 'component',\n value: component\n });\n }\n }\n\n return data;\n}\n\nfunction getPathId(routeMatcher) {\n let path = routeMatcher.path;\n\n if (routeMatcher.parent) {\n path = getPathId(routeMatcher.parent) + path;\n }\n\n return path;\n}\n\nconst TAG_NAMESPACED = {\n label: 'namespaced',\n textColor: WHITE,\n backgroundColor: DARK\n};\n\nfunction formatStoreForInspectorTree(module, path) {\n return {\n id: path || 'root',\n // all modules end with a `/`, we want the last segment only\n // cart/ -> cart\n // nested/cart/ -> cart\n label: extractNameFromPath(path),\n tags: module.namespaced ? [TAG_NAMESPACED] : [],\n children: Object.keys(module._children).map(moduleName => formatStoreForInspectorTree(module._children[moduleName], path + moduleName + '/'))\n };\n}\n\nfunction flattenStoreForInspectorTree(result, module, filter, path) {\n if (path.includes(filter)) {\n result.push({\n id: path || 'root',\n label: path.endsWith('/') ? path.slice(0, path.length - 1) : path || 'Root',\n tags: module.namespaced ? [TAG_NAMESPACED] : []\n });\n }\n\n Object.keys(module._children).forEach(moduleName => {\n flattenStoreForInspectorTree(result, module._children[moduleName], filter, path + moduleName + '/');\n });\n}\n\nfunction extractNameFromPath(path) {\n return path && path !== 'root' ? path.split('/').slice(-2, -1)[0] : 'Root';\n}\n\nfunction formatStoreForInspectorState(module, getters, path) {\n getters = !module.namespaced || path === 'root' ? module.context.getters : getters[path];\n const gettersKeys = Object.keys(getters);\n const storeState = {\n state: Object.keys(module.state).map(key => ({\n key,\n editable: true,\n value: module.state[key]\n }))\n };\n\n if (gettersKeys.length) {\n const tree = transformPathsToObjectTree(getters);\n storeState.getters = Object.keys(tree).map(key => ({\n key: key.endsWith('/') ? extractNameFromPath(key) : key,\n editable: false,\n value: canThrow(() => tree[key])\n }));\n }\n\n return storeState;\n}\n\nfunction transformPathsToObjectTree(getters) {\n const result = {};\n Object.keys(getters).forEach(key => {\n const path = key.split('/');\n\n if (path.length > 1) {\n let target = result;\n const leafKey = path.pop();\n\n for (const p of path) {\n if (!target[p]) {\n target[p] = {\n _custom: {\n value: {},\n display: p,\n tooltip: 'Module',\n abstract: true\n }\n };\n }\n\n target = target[p]._custom.value;\n }\n\n target[leafKey] = canThrow(() => getters[key]);\n } else {\n result[key] = canThrow(() => getters[key]);\n }\n });\n return result;\n}\n\nfunction getStoreModule(moduleMap, path) {\n const names = path.split('/').filter(n => n);\n return names.reduce((module, moduleName, i) => {\n const child = module[moduleName];\n\n if (!child) {\n throw new Error(`Missing module \"${moduleName}\" for path \"${path}\".`);\n }\n\n return i === names.length - 1 ? child : child._children;\n }, path === 'root' ? moduleMap : moduleMap.root._children);\n}\n\nfunction canThrow(cb) {\n try {\n return cb();\n } catch (e) {\n return e;\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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bkIsRUFBZ0M7QUFDOUIsTUFBSTtBQUNGLFdBQU8sRUFBRSxFQUFUO0FBQ0QsR0FGRCxDQUVFLE9BQU8sQ0FBUCxFQUFVO0FBQ1YsV0FBTyxDQUFQO0FBQ0Q7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL3BsdWdpbi50cz8wY2NhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5zZXR1cFBsdWdpbiA9IHZvaWQgMDtcbmNvbnN0IGRldnRvb2xzX2FwaV8xID0gcmVxdWlyZShcIkB2dWUvZGV2dG9vbHMtYXBpXCIpO1xuY29uc3Qgc2hhcmVkX3V0aWxzXzEgPSByZXF1aXJlKFwiQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHNcIik7XG5jb25zdCBjbG9uZV9kZWVwXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImNsb25lLWRlZXBcIikpO1xubGV0IGFjdGlvbklkID0gMDtcbmZ1bmN0aW9uIHNldHVwUGx1Z2luKGFwaSwgYXBwLCBWdWUpIHtcbiAgICBjb25zdCBST1VURVJfSU5TUEVDVE9SX0lEID0gJ3Z1ZTItcm91dGVyLWluc3BlY3Rvcic7XG4gICAgY29uc3QgUk9VVEVSX0NIQU5HRVNfTEFZRVJfSUQgPSAndnVlMi1yb3V0ZXItY2hhbmdlcyc7XG4gICAgY29uc3QgVlVFWF9JTlNQRUNUT1JfSUQgPSAndnVlMi12dWV4LWluc3BlY3Rvcic7XG4gICAgY29uc3QgVlVFWF9NVVRBVElPTlNfSUQgPSAndnVlMi12dWV4LW11dGF0aW9ucyc7XG4gICAgY29uc3QgVlVFWF9BQ1RJT05TX0lEID0gJ3Z1ZTItdnVleC1hY3Rpb25zJztcbiAgICAoMCwgZGV2dG9vbHNfYXBpXzEuc2V0dXBEZXZ0b29sc1BsdWdpbikoe1xuICAgICAgICBhcHAsXG4gICAgICAgIGlkOiAnb3JnLnZ1ZWpzLnZ1ZTItaW50ZXJuYWwnLFxuICAgICAgICBsYWJlbDogJ1Z1ZSAyJyxcbiAgICAgICAgaG9tZXBhZ2U6ICdodHRwczovL3Z1ZWpzLm9yZy8nLFxuICAgICAgICBsb2dvOiAnaHR0cHM6Ly92dWVqcy5vcmcvaW1hZ2VzL2ljb25zL2Zhdmljb24tOTZ4OTYucG5nJyxcbiAgICB9LCBhcGkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGhvb2sgPSBzaGFyZWRfdXRpbHNfMS50YXJnZXQuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztcbiAgICAgICAgLy8gVnVlIFJvdXRlclxuICAgICAgICBpZiAoYXBwLiRyb3V0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlciA9IGFwcC4kcm91dGVyO1xuICAgICAgICAgICAgLy8gSW5zcGVjdG9yXG4gICAgICAgICAgICBhcGkuYWRkSW5zcGVjdG9yKHtcbiAgICAgICAgICAgICAgICBpZDogUk9VVEVSX0lOU1BFQ1RPUl9JRCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1JvdXRlcycsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2Jvb2snLFxuICAgICAgICAgICAgICAgIHRyZWVGaWx0ZXJQbGFjZWhvbGRlcjogJ1NlYXJjaCByb3V0ZXMnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhcGkub24uZ2V0SW5zcGVjdG9yVHJlZShwYXlsb2FkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gUk9VVEVSX0lOU1BFQ1RPUl9JRCkge1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnJvb3ROb2RlcyA9IHJvdXRlci5vcHRpb25zLnJvdXRlcy5tYXAocm91dGUgPT4gZm9ybWF0Um91dGVOb2RlKHJvdXRlciwgcm91dGUsICcnLCBwYXlsb2FkLmZpbHRlcikpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFwaS5vbi5nZXRJbnNwZWN0b3JTdGF0ZShwYXlsb2FkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gUk9VVEVSX0lOU1BFQ1RPUl9JRCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0ZSA9IHJvdXRlci5tYXRjaGVyLmdldFJvdXRlcygpLmZpbmQociA9PiBnZXRQYXRoSWQocikgPT09IHBheWxvYWQubm9kZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvdXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGZvcm1hdFJvdXRlRGF0YShyb3V0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBUaW1lbGluZVxuICAgICAgICAgICAgYXBpLmFkZFRpbWVsaW5lTGF5ZXIoe1xuICAgICAgICAgICAgICAgIGlkOiBST1VURVJfQ0hBTkdFU19MQVlFUl9JRCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1JvdXRlciBOYXZpZ2F0aW9ucycsXG4gICAgICAgICAgICAgICAgY29sb3I6IDB4NDBhOGM0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByb3V0ZXIuYWZ0ZXJFYWNoKCh0bywgZnJvbSkgPT4ge1xuICAgICAgICAgICAgICAgIGFwaS5hZGRUaW1lbGluZUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXJJZDogUk9VVEVSX0NIQU5HRVNfTEFZRVJfSUQsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRvLnBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYXBpLnNlbmRJbnNwZWN0b3JUcmVlKFJPVVRFUl9JTlNQRUNUT1JfSUQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVnVleFxuICAgICAgICBpZiAoYXBwLiRzdG9yZSkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmUgPSBhcHAuJHN0b3JlO1xuICAgICAgICAgICAgYXBpLmFkZEluc3BlY3Rvcih7XG4gICAgICAgICAgICAgICAgaWQ6IFZVRVhfSU5TUEVDVE9SX0lELFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVnVleCcsXG4gICAgICAgICAgICAgICAgaWNvbjogJ3N0b3JhZ2UnLFxuICAgICAgICAgICAgICAgIHRyZWVGaWx0ZXJQbGFjZWhvbGRlcjogJ0ZpbHRlciBzdG9yZXMuLi4nLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhcGkub24uZ2V0SW5zcGVjdG9yVHJlZSgocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLmluc3BlY3RvcklkID09PSBWVUVYX0lOU1BFQ1RPUl9JRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5maWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGF0dGVuU3RvcmVGb3JJbnNwZWN0b3JUcmVlKG5vZGVzLCBzdG9yZS5fbW9kdWxlcy5yb290LCBwYXlsb2FkLmZpbHRlciwgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5yb290Tm9kZXMgPSBub2RlcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQucm9vdE5vZGVzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yVHJlZShzdG9yZS5fbW9kdWxlcy5yb290LCAnJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhcGkub24uZ2V0SW5zcGVjdG9yU3RhdGUoKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gVlVFWF9JTlNQRUNUT1JfSUQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlUGF0aCA9IHBheWxvYWQubm9kZUlkO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2R1bGUgPSBnZXRTdG9yZU1vZHVsZShzdG9yZS5fbW9kdWxlcywgbW9kdWxlUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFjY2VzcyB0aGUgZ2V0dGVycyBwcm9wIHRvIGluaXQgZ2V0dGVycyBjYWNoZSAod2hpY2ggaXMgbGF6eSlcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGUuY29udGV4dC5nZXR0ZXJzO1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnN0YXRlID0gZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JTdGF0ZShtb2R1bGUsIHN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGUsIG1vZHVsZVBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXBpLm9uLmVkaXRJbnNwZWN0b3JTdGF0ZSgocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLmluc3BlY3RvcklkID09PSBWVUVYX0lOU1BFQ1RPUl9JRCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IHBheWxvYWQucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBheWxvYWQubm9kZUlkICE9PSAncm9vdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGF5bG9hZC5ub2RlSWQuc3Vic3RyaW5nKDAsIHBheWxvYWQubm9kZUlkLmxlbmd0aCAtIDEpLnNwbGl0KCcvJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuX2NvbW1pdHRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnNldChzdG9yZS5fdm0uJGRhdGEuJCRzdGF0ZSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLl9jb21taXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhcGkuYWRkVGltZWxpbmVMYXllcih7XG4gICAgICAgICAgICAgICAgaWQ6IFZVRVhfTVVUQVRJT05TX0lELFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVnVleCBNdXRhdGlvbnMnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBMSU1FXzUwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXBpLmFkZFRpbWVsaW5lTGF5ZXIoe1xuICAgICAgICAgICAgICAgIGlkOiBWVUVYX0FDVElPTlNfSUQsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdWdWV4IEFjdGlvbnMnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBMSU1FXzUwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaG9vay5vbigndnVleDptdXRhdGlvbicsIChtdXRhdGlvbiwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBhcGkuc2VuZEluc3BlY3RvclN0YXRlKFZVRVhfSU5TUEVDVE9SX0lEKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge307XG4gICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLnBheWxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5wYXlsb2FkID0gbXV0YXRpb24ucGF5bG9hZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGF0YS5zdGF0ZSA9ICgwLCBjbG9uZV9kZWVwXzEuZGVmYXVsdCkoc3RhdGUpO1xuICAgICAgICAgICAgICAgIGFwaS5hZGRUaW1lbGluZUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXJJZDogVlVFWF9NVVRBVElPTlNfSUQsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG11dGF0aW9uLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAoX2EgPSBzdG9yZS5zdWJzY3JpYmVBY3Rpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgYmVmb3JlOiAoYWN0aW9uLCBzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge307XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24ucGF5bG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wYXlsb2FkID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLl9pZCA9IGFjdGlvbklkKys7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbi5fdGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYXBpLmFkZFRpbWVsaW5lRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJJZDogVlVFWF9BQ1RJT05TX0lELFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lOiBhY3Rpb24uX3RpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFjdGlvbi50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwSWQ6IGFjdGlvbi5faWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWZ0ZXI6IChhY3Rpb24sIHN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gYWN0aW9uLl90aW1lO1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2N1c3RvbToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkdXJhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYCR7ZHVyYXRpb259bXNgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdBY3Rpb24gZHVyYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBkdXJhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24ucGF5bG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wYXlsb2FkID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS5zdGF0ZSA9IHN0YXRlO1xuICAgICAgICAgICAgICAgICAgICBhcGkuYWRkVGltZWxpbmVFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXllcklkOiBWVUVYX0FDVElPTlNfSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFjdGlvbi50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwSWQ6IGFjdGlvbi5faWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSwgeyBwcmVwZW5kOiB0cnVlIH0pO1xuICAgICAgICAgICAgLy8gSW5zcGVjdCBnZXR0ZXJzIG9uIG11dGF0aW9uc1xuICAgICAgICAgICAgYXBpLm9uLmluc3BlY3RUaW1lbGluZUV2ZW50KHBheWxvYWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLmxheWVySWQgPT09IFZVRVhfTVVUQVRJT05TX0lEKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdldHRlcktleXMgPSBPYmplY3Qua2V5cyhzdG9yZS5nZXR0ZXJzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldHRlcktleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2bSA9IG5ldyBWdWUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCRzdGF0ZTogcGF5bG9hZC5kYXRhLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQ6IHN0b3JlLl92bS4kb3B0aW9ucy5jb21wdXRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxWbSA9IHN0b3JlLl92bTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLl92bSA9IHZtO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJlZSA9IHRyYW5zZm9ybVBhdGhzVG9PYmplY3RUcmVlKHN0b3JlLmdldHRlcnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5kYXRhLmdldHRlcnMgPSAoMCwgY2xvbmVfZGVlcF8xLmRlZmF1bHQpKHRyZWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUuX3ZtID0gb3JpZ2luYWxWbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZtLiRkZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZXhwb3J0cy5zZXR1cFBsdWdpbiA9IHNldHVwUGx1Z2luO1xuLyoqXG4gKiBFeHRyYWN0ZWQgZnJvbSB0YWlsd2luZCBwYWxldHRlXG4gKi9cbmNvbnN0IEJMVUVfNjAwID0gMHgyNTYzZWI7XG5jb25zdCBMSU1FXzUwMCA9IDB4ODRjYzE2O1xuY29uc3QgQ1lBTl80MDAgPSAweDIyZDNlZTtcbmNvbnN0IE9SQU5HRV80MDAgPSAweGZiOTIzYztcbmNvbnN0IFdISVRFID0gMHhmZmZmZmY7XG5jb25zdCBEQVJLID0gMHg2NjY2NjY7XG5mdW5jdGlvbiBmb3JtYXRSb3V0ZU5vZGUocm91dGVyLCByb3V0ZSwgcGFyZW50UGF0aCwgZmlsdGVyKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCBub2RlID0ge1xuICAgICAgICBpZDogcGFyZW50UGF0aCArIHJvdXRlLnBhdGgsXG4gICAgICAgIGxhYmVsOiByb3V0ZS5wYXRoLFxuICAgICAgICBjaGlsZHJlbjogKF9hID0gcm91dGUuY2hpbGRyZW4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5tYXAoY2hpbGQgPT4gZm9ybWF0Um91dGVOb2RlKHJvdXRlciwgY2hpbGQsIHJvdXRlLnBhdGgsIGZpbHRlcikpLmZpbHRlcihCb29sZWFuKSxcbiAgICAgICAgdGFnczogW10sXG4gICAgfTtcbiAgICBpZiAoZmlsdGVyICYmICFub2RlLmlkLmluY2x1ZGVzKGZpbHRlcikgJiYgISgoX2IgPSBub2RlLmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgaWYgKHJvdXRlLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICBub2RlLnRhZ3MucHVzaCh7XG4gICAgICAgICAgICBsYWJlbDogU3RyaW5nKHJvdXRlLm5hbWUpLFxuICAgICAgICAgICAgdGV4dENvbG9yOiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBDWUFOXzQwMCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChyb3V0ZS5hbGlhcyAhPSBudWxsKSB7XG4gICAgICAgIG5vZGUudGFncy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiAnYWxpYXMnLFxuICAgICAgICAgICAgdGV4dENvbG9yOiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBPUkFOR0VfNDAwLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudFBhdGggPSByb3V0ZXIuY3VycmVudFJvdXRlLm1hdGNoZWQucmVkdWNlKChwLCBtKSA9PiBwICsgbS5wYXRoLCAnJyk7XG4gICAgaWYgKG5vZGUuaWQgPT09IGN1cnJlbnRQYXRoKSB7XG4gICAgICAgIG5vZGUudGFncy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiAnYWN0aXZlJyxcbiAgICAgICAgICAgIHRleHRDb2xvcjogV0hJVEUsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IEJMVUVfNjAwLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHJvdXRlLnJlZGlyZWN0KSB7XG4gICAgICAgIG5vZGUudGFncy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiAncmVkaXJlY3Q6ICcgK1xuICAgICAgICAgICAgICAgICh0eXBlb2Ygcm91dGUucmVkaXJlY3QgPT09ICdzdHJpbmcnID8gcm91dGUucmVkaXJlY3QgOiAnT2JqZWN0JyksXG4gICAgICAgICAgICB0ZXh0Q29sb3I6IFdISVRFLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBEQVJLLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG59XG5mdW5jdGlvbiBmb3JtYXRSb3V0ZURhdGEocm91dGUpIHtcbiAgICBjb25zdCBkYXRhID0gW107XG4gICAgZGF0YS5wdXNoKHsga2V5OiAncGF0aCcsIHZhbHVlOiByb3V0ZS5wYXRoIH0pO1xuICAgIGlmIChyb3V0ZS5yZWRpcmVjdCkge1xuICAgICAgICBkYXRhLnB1c2goeyBrZXk6ICdyZWRpcmVjdCcsIHZhbHVlOiByb3V0ZS5yZWRpcmVjdCB9KTtcbiAgICB9XG4gICAgaWYgKHJvdXRlLmFsaWFzKSB7XG4gICAgICAgIGRhdGEucHVzaCh7IGtleTogJ2FsaWFzJywgdmFsdWU6IHJvdXRlLmFsaWFzIH0pO1xuICAgIH1cbiAgICBpZiAocm91dGUucHJvcHMpIHtcbiAgICAgICAgZGF0YS5wdXNoKHsga2V5OiAncHJvcHMnLCB2YWx1ZTogcm91dGUucHJvcHMgfSk7XG4gICAgfVxuICAgIGlmIChyb3V0ZS5uYW1lICYmIHJvdXRlLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICBkYXRhLnB1c2goeyBrZXk6ICduYW1lJywgdmFsdWU6IHJvdXRlLm5hbWUgfSk7XG4gICAgfVxuICAgIGlmIChyb3V0ZS5jb21wb25lbnQpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0ge307XG4gICAgICAgIC8vIGlmIChyb3V0ZS5jb21wb25lbnQuX19maWxlKSB7XG4gICAgICAgIC8vICAgY29tcG9uZW50LmZpbGUgPSByb3V0ZS5jb21wb25lbnQuX19maWxlXG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKHJvdXRlLmNvbXBvbmVudC50ZW1wbGF0ZSkge1xuICAgICAgICAgICAgY29tcG9uZW50LnRlbXBsYXRlID0gcm91dGUuY29tcG9uZW50LnRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyb3V0ZS5jb21wb25lbnQucHJvcHMpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyA9IHJvdXRlLmNvbXBvbmVudC5wcm9wcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoISgwLCBzaGFyZWRfdXRpbHNfMS5pc0VtcHR5T2JqZWN0KShjb21wb25lbnQpKSB7XG4gICAgICAgICAgICBkYXRhLnB1c2goeyBrZXk6ICdjb21wb25lbnQnLCB2YWx1ZTogY29tcG9uZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xufVxuZnVuY3Rpb24gZ2V0UGF0aElkKHJvdXRlTWF0Y2hlcikge1xuICAgIGxldCBwYXRoID0gcm91dGVNYXRjaGVyLnBhdGg7XG4gICAgaWYgKHJvdXRlTWF0Y2hlci5wYXJlbnQpIHtcbiAgICAgICAgcGF0aCA9IGdldFBhdGhJZChyb3V0ZU1hdGNoZXIucGFyZW50KSArIHBhdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xufVxuY29uc3QgVEFHX05BTUVTUEFDRUQgPSB7XG4gICAgbGFiZWw6ICduYW1lc3BhY2VkJyxcbiAgICB0ZXh0Q29sb3I6IFdISVRFLFxuICAgIGJhY2tncm91bmRDb2xvcjogREFSSyxcbn07XG5mdW5jdGlvbiBmb3JtYXRTdG9yZUZvckluc3BlY3RvclRyZWUobW9kdWxlLCBwYXRoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHBhdGggfHwgJ3Jvb3QnLFxuICAgICAgICAvLyBhbGwgbW9kdWxlcyBlbmQgd2l0aCBhIGAvYCwgd2Ugd2FudCB0aGUgbGFzdCBzZWdtZW50IG9ubHlcbiAgICAgICAgLy8gY2FydC8gLT4gY2FydFxuICAgICAgICAvLyBuZXN0ZWQvY2FydC8gLT4gY2FydFxuICAgICAgICBsYWJlbDogZXh0cmFjdE5hbWVGcm9tUGF0aChwYXRoKSxcbiAgICAgICAgdGFnczogbW9kdWxlLm5hbWVzcGFjZWQgPyBbVEFHX05BTUVTUEFDRURdIDogW10sXG4gICAgICAgIGNoaWxkcmVuOiBPYmplY3Qua2V5cyhtb2R1bGUuX2NoaWxkcmVuKS5tYXAoKG1vZHVsZU5hbWUpID0+IGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yVHJlZShtb2R1bGUuX2NoaWxkcmVuW21vZHVsZU5hbWVdLCBwYXRoICsgbW9kdWxlTmFtZSArICcvJykpLFxuICAgIH07XG59XG5mdW5jdGlvbiBmbGF0dGVuU3RvcmVGb3JJbnNwZWN0b3JUcmVlKHJlc3VsdCwgbW9kdWxlLCBmaWx0ZXIsIHBhdGgpIHtcbiAgICBpZiAocGF0aC5pbmNsdWRlcyhmaWx0ZXIpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgIGlkOiBwYXRoIHx8ICdyb290JyxcbiAgICAgICAgICAgIGxhYmVsOiBwYXRoLmVuZHNXaXRoKCcvJykgPyBwYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoIC0gMSkgOiBwYXRoIHx8ICdSb290JyxcbiAgICAgICAgICAgIHRhZ3M6IG1vZHVsZS5uYW1lc3BhY2VkID8gW1RBR19OQU1FU1BBQ0VEXSA6IFtdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgT2JqZWN0LmtleXMobW9kdWxlLl9jaGlsZHJlbikuZm9yRWFjaChtb2R1bGVOYW1lID0+IHtcbiAgICAgICAgZmxhdHRlblN0b3JlRm9ySW5zcGVjdG9yVHJlZShyZXN1bHQsIG1vZHVsZS5fY2hpbGRyZW5bbW9kdWxlTmFtZV0sIGZpbHRlciwgcGF0aCArIG1vZHVsZU5hbWUgKyAnLycpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZXh0cmFjdE5hbWVGcm9tUGF0aChwYXRoKSB7XG4gICAgcmV0dXJuIHBhdGggJiYgcGF0aCAhPT0gJ3Jvb3QnID8gcGF0aC5zcGxpdCgnLycpLnNsaWNlKC0yLCAtMSlbMF0gOiAnUm9vdCc7XG59XG5mdW5jdGlvbiBmb3JtYXRTdG9yZUZvckluc3BlY3RvclN0YXRlKG1vZHVsZSwgZ2V0dGVycywgcGF0aCkge1xuICAgIGdldHRlcnMgPSAhbW9kdWxlLm5hbWVzcGFjZWQgfHwgcGF0aCA9PT0gJ3Jvb3QnID8gbW9kdWxlLmNvbnRleHQuZ2V0dGVycyA6IGdldHRlcnNbcGF0aF07XG4gICAgY29uc3QgZ2V0dGVyc0tleXMgPSBPYmplY3Qua2V5cyhnZXR0ZXJzKTtcbiAgICBjb25zdCBzdG9yZVN0YXRlID0ge1xuICAgICAgICBzdGF0ZTogT2JqZWN0LmtleXMobW9kdWxlLnN0YXRlKS5tYXAoKGtleSkgPT4gKHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG1vZHVsZS5zdGF0ZVtrZXldLFxuICAgICAgICB9KSksXG4gICAgfTtcbiAgICBpZiAoZ2V0dGVyc0tleXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHRyZWUgPSB0cmFuc2Zvcm1QYXRoc1RvT2JqZWN0VHJlZShnZXR0ZXJzKTtcbiAgICAgICAgc3RvcmVTdGF0ZS5nZXR0ZXJzID0gT2JqZWN0LmtleXModHJlZSkubWFwKChrZXkpID0+ICh7XG4gICAgICAgICAgICBrZXk6IGtleS5lbmRzV2l0aCgnLycpID8gZXh0cmFjdE5hbWVGcm9tUGF0aChrZXkpIDoga2V5LFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWU6IGNhblRocm93KCgpID0+IHRyZWVba2V5XSksXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0b3JlU3RhdGU7XG59XG5mdW5jdGlvbiB0cmFuc2Zvcm1QYXRoc1RvT2JqZWN0VHJlZShnZXR0ZXJzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgT2JqZWN0LmtleXMoZ2V0dGVycykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBwYXRoID0ga2V5LnNwbGl0KCcvJyk7XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxldCB0YXJnZXQgPSByZXN1bHQ7XG4gICAgICAgICAgICBjb25zdCBsZWFmS2V5ID0gcGF0aC5wb3AoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXRbcF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W3BdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2N1c3RvbToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdNb2R1bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3RyYWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0W3BdLl9jdXN0b20udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRbbGVhZktleV0gPSBjYW5UaHJvdygoKSA9PiBnZXR0ZXJzW2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBjYW5UaHJvdygoKSA9PiBnZXR0ZXJzW2tleV0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldFN0b3JlTW9kdWxlKG1vZHVsZU1hcCwgcGF0aCkge1xuICAgIGNvbnN0IG5hbWVzID0gcGF0aC5zcGxpdCgnLycpLmZpbHRlcigobikgPT4gbik7XG4gICAgcmV0dXJuIG5hbWVzLnJlZHVjZSgobW9kdWxlLCBtb2R1bGVOYW1lLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gbW9kdWxlW21vZHVsZU5hbWVdO1xuICAgICAgICBpZiAoIWNoaWxkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgbW9kdWxlIFwiJHttb2R1bGVOYW1lfVwiIGZvciBwYXRoIFwiJHtwYXRofVwiLmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpID09PSBuYW1lcy5sZW5ndGggLSAxID8gY2hpbGQgOiBjaGlsZC5fY2hpbGRyZW47XG4gICAgfSwgcGF0aCA9PT0gJ3Jvb3QnID8gbW9kdWxlTWFwIDogbW9kdWxlTWFwLnJvb3QuX2NoaWxkcmVuKTtcbn1cbmZ1bmN0aW9uIGNhblRocm93KGNiKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGNiKCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBlO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBsdWdpbi5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7725\n");
|
|
318
|
+
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.setupPlugin = void 0;\n\nconst devtools_api_1 = __webpack_require__(72039);\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst clone_deep_1 = __importDefault(__webpack_require__(96206));\n\nlet actionId = 0;\n\nfunction setupPlugin(api, app, Vue) {\n const ROUTER_INSPECTOR_ID = 'vue2-router-inspector';\n const ROUTER_CHANGES_LAYER_ID = 'vue2-router-changes';\n const VUEX_INSPECTOR_ID = 'vue2-vuex-inspector';\n const VUEX_MUTATIONS_ID = 'vue2-vuex-mutations';\n const VUEX_ACTIONS_ID = 'vue2-vuex-actions';\n (0, devtools_api_1.setupDevtoolsPlugin)({\n app,\n id: 'org.vuejs.vue2-internal',\n label: 'Vue 2',\n homepage: 'https://vuejs.org/',\n logo: 'https://vuejs.org/images/icons/favicon-96x96.png',\n settings: {\n legacyActions: {\n label: 'Legacy Actions',\n description: 'Enable this for Vuex < 3.1.0',\n type: 'boolean',\n defaultValue: false\n }\n }\n }, api => {\n var _a;\n\n const hook = shared_utils_1.target.__VUE_DEVTOOLS_GLOBAL_HOOK__; // Vue Router\n\n if (app.$router) {\n const router = app.$router; // Inspector\n\n api.addInspector({\n id: ROUTER_INSPECTOR_ID,\n label: 'Routes',\n icon: 'book',\n treeFilterPlaceholder: 'Search routes'\n });\n api.on.getInspectorTree(payload => {\n if (payload.inspectorId === ROUTER_INSPECTOR_ID) {\n if (router.options.routes) {\n payload.rootNodes = router.options.routes.map(route => formatRouteNode(router, route, '', payload.filter)).filter(Boolean);\n } else {\n console.warn(`[Vue Devtools] No routes found in router`, router.options);\n }\n }\n });\n api.on.getInspectorState(payload => {\n if (payload.inspectorId === ROUTER_INSPECTOR_ID) {\n const route = router.matcher.getRoutes().find(r => getPathId(r) === payload.nodeId);\n\n if (route) {\n payload.state = {\n options: formatRouteData(route)\n };\n }\n }\n }); // Timeline\n\n api.addTimelineLayer({\n id: ROUTER_CHANGES_LAYER_ID,\n label: 'Router Navigations',\n color: 0x40a8c4\n });\n router.afterEach((to, from) => {\n api.addTimelineEvent({\n layerId: ROUTER_CHANGES_LAYER_ID,\n event: {\n time: Date.now(),\n title: to.path,\n data: {\n from,\n to\n }\n }\n });\n api.sendInspectorTree(ROUTER_INSPECTOR_ID);\n });\n } // Vuex\n\n\n if (app.$store) {\n const store = app.$store;\n api.addInspector({\n id: VUEX_INSPECTOR_ID,\n label: 'Vuex',\n icon: 'storage',\n treeFilterPlaceholder: 'Filter stores...'\n });\n api.on.getInspectorTree(payload => {\n if (payload.inspectorId === VUEX_INSPECTOR_ID) {\n if (payload.filter) {\n const nodes = [];\n flattenStoreForInspectorTree(nodes, store._modules.root, payload.filter, '');\n payload.rootNodes = nodes;\n } else {\n payload.rootNodes = [formatStoreForInspectorTree(store._modules.root, 'Root', '')];\n }\n }\n });\n api.on.getInspectorState(payload => {\n if (payload.inspectorId === VUEX_INSPECTOR_ID) {\n const modulePath = payload.nodeId;\n const module = getStoreModule(store._modules, modulePath); // Access the getters prop to init getters cache (which is lazy)\n // eslint-disable-next-line no-unused-expressions\n\n module.context.getters;\n payload.state = formatStoreForInspectorState(module, store._makeLocalGettersCache, modulePath);\n }\n });\n api.on.editInspectorState(payload => {\n if (payload.inspectorId === VUEX_INSPECTOR_ID) {\n let path = payload.path;\n\n if (payload.nodeId !== VUEX_ROOT_PATH) {\n path = [...payload.nodeId.substring(0, payload.nodeId.length - 1).split('/'), ...path];\n }\n\n store._committing = true;\n payload.set(store._vm.$data.$$state, path);\n store._committing = false;\n }\n });\n api.addTimelineLayer({\n id: VUEX_MUTATIONS_ID,\n label: 'Vuex Mutations',\n color: LIME_500\n });\n api.addTimelineLayer({\n id: VUEX_ACTIONS_ID,\n label: 'Vuex Actions',\n color: LIME_500\n });\n hook.on('vuex:mutation', (mutation, state) => {\n api.sendInspectorState(VUEX_INSPECTOR_ID);\n const data = {};\n\n if (mutation.payload) {\n data.payload = mutation.payload;\n }\n\n data.state = (0, clone_deep_1.default)(state);\n api.addTimelineEvent({\n layerId: VUEX_MUTATIONS_ID,\n event: {\n time: Date.now(),\n title: mutation.type,\n data\n }\n });\n });\n\n function legacySingleActionSub(action, state) {\n const data = {};\n\n if (action.payload) {\n data.payload = action.payload;\n }\n\n data.state = state;\n api.addTimelineEvent({\n layerId: VUEX_ACTIONS_ID,\n event: {\n time: Date.now(),\n title: action.type,\n data\n }\n });\n }\n\n (_a = store.subscribeAction) === null || _a === void 0 ? void 0 : _a.call(store, api.getSettings().legacyActions ? legacySingleActionSub : {\n before: (action, state) => {\n const data = {};\n\n if (action.payload) {\n data.payload = action.payload;\n }\n\n action._id = actionId++;\n action._time = Date.now();\n data.state = state;\n api.addTimelineEvent({\n layerId: VUEX_ACTIONS_ID,\n event: {\n time: action._time,\n title: action.type,\n groupId: action._id,\n subtitle: 'start',\n data\n }\n });\n },\n after: (action, state) => {\n const data = {};\n\n const duration = Date.now() - action._time;\n\n data.duration = {\n _custom: {\n type: 'duration',\n display: `${duration}ms`,\n tooltip: 'Action duration',\n value: duration\n }\n };\n\n if (action.payload) {\n data.payload = action.payload;\n }\n\n data.state = state;\n api.addTimelineEvent({\n layerId: VUEX_ACTIONS_ID,\n event: {\n time: Date.now(),\n title: action.type,\n groupId: action._id,\n subtitle: 'end',\n data\n }\n });\n }\n }, {\n prepend: true\n }); // Inspect getters on mutations\n\n api.on.inspectTimelineEvent(payload => {\n if (payload.layerId === VUEX_MUTATIONS_ID) {\n const getterKeys = Object.keys(store.getters);\n\n if (getterKeys.length) {\n const vm = new Vue({\n data: {\n $$state: payload.data.state\n },\n computed: store._vm.$options.computed\n });\n const originalVm = store._vm;\n store._vm = vm;\n const tree = transformPathsToObjectTree(store.getters);\n payload.data.getters = (0, clone_deep_1.default)(tree);\n store._vm = originalVm;\n vm.$destroy();\n }\n }\n });\n }\n });\n}\n\nexports.setupPlugin = setupPlugin;\n/**\n * Extracted from tailwind palette\n */\n\nconst BLUE_600 = 0x2563eb;\nconst LIME_500 = 0x84cc16;\nconst CYAN_400 = 0x22d3ee;\nconst ORANGE_400 = 0xfb923c;\nconst WHITE = 0xffffff;\nconst DARK = 0x666666;\n\nfunction formatRouteNode(router, route, parentPath, filter) {\n var _a, _b;\n\n const node = {\n id: parentPath + route.path,\n label: route.path,\n children: (_a = route.children) === null || _a === void 0 ? void 0 : _a.map(child => formatRouteNode(router, child, route.path, filter)).filter(Boolean),\n tags: []\n };\n if (filter && !node.id.includes(filter) && !((_b = node.children) === null || _b === void 0 ? void 0 : _b.length)) return null;\n\n if (route.name != null) {\n node.tags.push({\n label: String(route.name),\n textColor: 0,\n backgroundColor: CYAN_400\n });\n }\n\n if (route.alias != null) {\n node.tags.push({\n label: 'alias',\n textColor: 0,\n backgroundColor: ORANGE_400\n });\n }\n\n const currentPath = router.currentRoute.matched.reduce((p, m) => p + m.path, '');\n\n if (node.id === currentPath) {\n node.tags.push({\n label: 'active',\n textColor: WHITE,\n backgroundColor: BLUE_600\n });\n }\n\n if (route.redirect) {\n node.tags.push({\n label: 'redirect: ' + (typeof route.redirect === 'string' ? route.redirect : 'Object'),\n textColor: WHITE,\n backgroundColor: DARK\n });\n }\n\n return node;\n}\n\nfunction formatRouteData(route) {\n const data = [];\n data.push({\n key: 'path',\n value: route.path\n });\n\n if (route.redirect) {\n data.push({\n key: 'redirect',\n value: route.redirect\n });\n }\n\n if (route.alias) {\n data.push({\n key: 'alias',\n value: route.alias\n });\n }\n\n if (route.props) {\n data.push({\n key: 'props',\n value: route.props\n });\n }\n\n if (route.name && route.name != null) {\n data.push({\n key: 'name',\n value: route.name\n });\n }\n\n if (route.component) {\n const component = {}; // if (route.component.__file) {\n // component.file = route.component.__file\n // }\n\n if (route.component.template) {\n component.template = route.component.template;\n }\n\n if (route.component.props) {\n component.props = route.component.props;\n }\n\n if (!(0, shared_utils_1.isEmptyObject)(component)) {\n data.push({\n key: 'component',\n value: component\n });\n }\n }\n\n return data;\n}\n\nfunction getPathId(routeMatcher) {\n let path = routeMatcher.path;\n\n if (routeMatcher.parent) {\n path = getPathId(routeMatcher.parent) + path;\n }\n\n return path;\n}\n\nconst TAG_NAMESPACED = {\n label: 'namespaced',\n textColor: WHITE,\n backgroundColor: DARK\n};\nconst VUEX_ROOT_PATH = '__vdt_root';\nconst VUEX_MODULE_PATH_SEPARATOR = '[vdt]';\nconst VUEX_MODULE_PATH_SEPARATOR_REG = /\\[vdt\\]/g;\n\nfunction formatStoreForInspectorTree(module, moduleName, path) {\n var _a;\n\n return {\n id: path || VUEX_ROOT_PATH,\n // all modules end with a `/`, we want the last segment only\n // cart/ -> cart\n // nested/cart/ -> cart\n label: moduleName,\n tags: module.namespaced ? [TAG_NAMESPACED] : [],\n children: Object.keys((_a = module._children) !== null && _a !== void 0 ? _a : {}).map(key => formatStoreForInspectorTree(module._children[key], key, `${path}${key}${VUEX_MODULE_PATH_SEPARATOR}`))\n };\n}\n\nfunction flattenStoreForInspectorTree(result, module, filter, path) {\n if (path.includes(filter)) {\n result.push({\n id: path || VUEX_ROOT_PATH,\n label: path.endsWith(VUEX_MODULE_PATH_SEPARATOR) ? path.slice(0, path.length - 1) : path || 'Root',\n tags: module.namespaced ? [TAG_NAMESPACED] : []\n });\n }\n\n Object.keys(module._children).forEach(moduleName => {\n flattenStoreForInspectorTree(result, module._children[moduleName], filter, path + moduleName + VUEX_MODULE_PATH_SEPARATOR);\n });\n}\n\nfunction extractNameFromPath(path) {\n return path && path !== VUEX_ROOT_PATH ? path.split(VUEX_MODULE_PATH_SEPARATOR).slice(-2, -1)[0] : 'Root';\n}\n\nfunction formatStoreForInspectorState(module, getters, path) {\n var _a, _b;\n\n const storeState = {\n state: Object.keys((_a = module.context.state) !== null && _a !== void 0 ? _a : {}).map(key => ({\n key,\n editable: true,\n value: module.context.state[key]\n }))\n };\n const pathWithSlashes = path.replace(VUEX_MODULE_PATH_SEPARATOR_REG, '/');\n getters = !module.namespaced || path === VUEX_ROOT_PATH ? module.context.getters : getters[pathWithSlashes];\n let gettersKeys = Object.keys(getters);\n const shouldPickGetters = !module.namespaced && path !== VUEX_ROOT_PATH;\n\n if (shouldPickGetters) {\n // Only pick the getters defined in the non-namespaced module\n const definedGettersKeys = Object.keys((_b = module._rawModule.getters) !== null && _b !== void 0 ? _b : {});\n gettersKeys = gettersKeys.filter(key => definedGettersKeys.includes(key));\n }\n\n if (gettersKeys.length) {\n let moduleGetters;\n\n if (shouldPickGetters) {\n // Only pick the getters defined in the non-namespaced module\n moduleGetters = {};\n\n for (const key of gettersKeys) {\n moduleGetters[key] = canThrow(() => getters[key]);\n }\n } else {\n moduleGetters = getters;\n }\n\n const tree = transformPathsToObjectTree(moduleGetters);\n storeState.getters = Object.keys(tree).map(key => ({\n key: key.endsWith('/') ? extractNameFromPath(key) : key,\n editable: false,\n value: canThrow(() => tree[key])\n }));\n }\n\n return storeState;\n}\n\nfunction transformPathsToObjectTree(getters) {\n const result = {};\n Object.keys(getters).forEach(key => {\n const path = key.split('/');\n\n if (path.length > 1) {\n let target = result;\n const leafKey = path.pop();\n\n for (const p of path) {\n if (!target[p]) {\n target[p] = {\n _custom: {\n value: {},\n display: p,\n tooltip: 'Module',\n abstract: true\n }\n };\n }\n\n target = target[p]._custom.value;\n }\n\n target[leafKey] = canThrow(() => getters[key]);\n } else {\n result[key] = canThrow(() => getters[key]);\n }\n });\n return result;\n}\n\nfunction getStoreModule(moduleMap, path) {\n const names = path.split(VUEX_MODULE_PATH_SEPARATOR).filter(n => n);\n return names.reduce((module, moduleName, i) => {\n const child = module[moduleName === VUEX_ROOT_PATH ? 'root' : moduleName];\n\n if (!child) {\n throw new Error(`Missing module \"${moduleName}\" for path \"${path}\".`);\n }\n\n return i === names.length - 1 ? child : child._children;\n }, path === VUEX_ROOT_PATH ? moduleMap : moduleMap.root._children);\n}\n\nfunction canThrow(cb) {\n try {\n return cb();\n } catch (e) {\n return e;\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUF0QjtBQUNEO0FBQ0YsR0F0QkQ7QUF1QkEsU0FBTyxNQUFQO0FBQ0Q7O0FBRUQsU0FBUyxjQUFULENBQXlCLFNBQXpCLEVBQW9DLElBQXBDLEVBQXdDO0FBQ3RDLFFBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFMLENBQVcsMEJBQVgsRUFBdUMsTUFBdkMsQ0FBK0MsQ0FBRCxJQUFPLENBQXJELENBQWQ7QUFDQSxTQUFPLEtBQUssQ0FBQyxNQUFOLENBQ0wsQ0FBQyxNQUFELEVBQVMsVUFBVCxFQUFxQixDQUFyQixLQUEwQjtBQUN4QixVQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxLQUFLLGNBQWYsR0FBZ0MsTUFBaEMsR0FBeUMsVUFBMUMsQ0FBcEI7O0FBQ0EsUUFBSSxDQUFDLEtBQUwsRUFBWTtBQUNWLFlBQU0sSUFBSSxLQUFKLENBQVUsbUJBQW1CLFVBQVUsZUFBZSxJQUFJLElBQTFELENBQU47QUFDRDs7QUFDRCxXQUFPLENBQUMsS0FBSyxLQUFLLENBQUMsTUFBTixHQUFlLENBQXJCLEdBQXlCLEtBQXpCLEdBQWlDLEtBQUssQ0FBQyxTQUE5QztBQUNELEdBUEksRUFRTCxJQUFJLEtBQUssY0FBVCxHQUEwQixTQUExQixHQUFzQyxTQUFTLENBQUMsSUFBVixDQUFlLFNBUmhELENBQVA7QUFVRDs7QUFFRCxTQUFTLFFBQVQsQ0FBbUIsRUFBbkIsRUFBZ0M7QUFDOUIsTUFBSTtBQUNGLFdBQU8sRUFBRSxFQUFUO0FBQ0QsR0FGRCxDQUVFLE9BQU8sQ0FBUCxFQUFVO0FBQ1YsV0FBTyxDQUFQO0FBQ0Q7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL3BsdWdpbi50cz8wY2NhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5zZXR1cFBsdWdpbiA9IHZvaWQgMDtcbmNvbnN0IGRldnRvb2xzX2FwaV8xID0gcmVxdWlyZShcIkB2dWUvZGV2dG9vbHMtYXBpXCIpO1xuY29uc3Qgc2hhcmVkX3V0aWxzXzEgPSByZXF1aXJlKFwiQHZ1ZS1kZXZ0b29scy9zaGFyZWQtdXRpbHNcIik7XG5jb25zdCBjbG9uZV9kZWVwXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImNsb25lLWRlZXBcIikpO1xubGV0IGFjdGlvbklkID0gMDtcbmZ1bmN0aW9uIHNldHVwUGx1Z2luKGFwaSwgYXBwLCBWdWUpIHtcbiAgICBjb25zdCBST1VURVJfSU5TUEVDVE9SX0lEID0gJ3Z1ZTItcm91dGVyLWluc3BlY3Rvcic7XG4gICAgY29uc3QgUk9VVEVSX0NIQU5HRVNfTEFZRVJfSUQgPSAndnVlMi1yb3V0ZXItY2hhbmdlcyc7XG4gICAgY29uc3QgVlVFWF9JTlNQRUNUT1JfSUQgPSAndnVlMi12dWV4LWluc3BlY3Rvcic7XG4gICAgY29uc3QgVlVFWF9NVVRBVElPTlNfSUQgPSAndnVlMi12dWV4LW11dGF0aW9ucyc7XG4gICAgY29uc3QgVlVFWF9BQ1RJT05TX0lEID0gJ3Z1ZTItdnVleC1hY3Rpb25zJztcbiAgICAoMCwgZGV2dG9vbHNfYXBpXzEuc2V0dXBEZXZ0b29sc1BsdWdpbikoe1xuICAgICAgICBhcHAsXG4gICAgICAgIGlkOiAnb3JnLnZ1ZWpzLnZ1ZTItaW50ZXJuYWwnLFxuICAgICAgICBsYWJlbDogJ1Z1ZSAyJyxcbiAgICAgICAgaG9tZXBhZ2U6ICdodHRwczovL3Z1ZWpzLm9yZy8nLFxuICAgICAgICBsb2dvOiAnaHR0cHM6Ly92dWVqcy5vcmcvaW1hZ2VzL2ljb25zL2Zhdmljb24tOTZ4OTYucG5nJyxcbiAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgIGxlZ2FjeUFjdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0xlZ2FjeSBBY3Rpb25zJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0VuYWJsZSB0aGlzIGZvciBWdWV4IDwgMy4xLjAnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9LCBhcGkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGhvb2sgPSBzaGFyZWRfdXRpbHNfMS50YXJnZXQuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztcbiAgICAgICAgLy8gVnVlIFJvdXRlclxuICAgICAgICBpZiAoYXBwLiRyb3V0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlciA9IGFwcC4kcm91dGVyO1xuICAgICAgICAgICAgLy8gSW5zcGVjdG9yXG4gICAgICAgICAgICBhcGkuYWRkSW5zcGVjdG9yKHtcbiAgICAgICAgICAgICAgICBpZDogUk9VVEVSX0lOU1BFQ1RPUl9JRCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1JvdXRlcycsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2Jvb2snLFxuICAgICAgICAgICAgICAgIHRyZWVGaWx0ZXJQbGFjZWhvbGRlcjogJ1NlYXJjaCByb3V0ZXMnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhcGkub24uZ2V0SW5zcGVjdG9yVHJlZShwYXlsb2FkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gUk9VVEVSX0lOU1BFQ1RPUl9JRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocm91dGVyLm9wdGlvbnMucm91dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnJvb3ROb2RlcyA9IHJvdXRlci5vcHRpb25zLnJvdXRlcy5tYXAocm91dGUgPT4gZm9ybWF0Um91dGVOb2RlKHJvdXRlciwgcm91dGUsICcnLCBwYXlsb2FkLmZpbHRlcikpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgW1Z1ZSBEZXZ0b29sc10gTm8gcm91dGVzIGZvdW5kIGluIHJvdXRlcmAsIHJvdXRlci5vcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXBpLm9uLmdldEluc3BlY3RvclN0YXRlKHBheWxvYWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLmluc3BlY3RvcklkID09PSBST1VURVJfSU5TUEVDVE9SX0lEKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gcm91dGVyLm1hdGNoZXIuZ2V0Um91dGVzKCkuZmluZChyID0+IGdldFBhdGhJZChyKSA9PT0gcGF5bG9hZC5ub2RlSWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQuc3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogZm9ybWF0Um91dGVEYXRhKHJvdXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIFRpbWVsaW5lXG4gICAgICAgICAgICBhcGkuYWRkVGltZWxpbmVMYXllcih7XG4gICAgICAgICAgICAgICAgaWQ6IFJPVVRFUl9DSEFOR0VTX0xBWUVSX0lELFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnUm91dGVyIE5hdmlnYXRpb25zJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogMHg0MGE4YzQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJvdXRlci5hZnRlckVhY2goKHRvLCBmcm9tKSA9PiB7XG4gICAgICAgICAgICAgICAgYXBpLmFkZFRpbWVsaW5lRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICBsYXllcklkOiBST1VURVJfQ0hBTkdFU19MQVlFUl9JRCxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdG8ucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBhcGkuc2VuZEluc3BlY3RvclRyZWUoUk9VVEVSX0lOU1BFQ1RPUl9JRCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBWdWV4XG4gICAgICAgIGlmIChhcHAuJHN0b3JlKSB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZSA9IGFwcC4kc3RvcmU7XG4gICAgICAgICAgICBhcGkuYWRkSW5zcGVjdG9yKHtcbiAgICAgICAgICAgICAgICBpZDogVlVFWF9JTlNQRUNUT1JfSUQsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdWdWV4JyxcbiAgICAgICAgICAgICAgICBpY29uOiAnc3RvcmFnZScsXG4gICAgICAgICAgICAgICAgdHJlZUZpbHRlclBsYWNlaG9sZGVyOiAnRmlsdGVyIHN0b3Jlcy4uLicsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFwaS5vbi5nZXRJbnNwZWN0b3JUcmVlKChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWQuaW5zcGVjdG9ySWQgPT09IFZVRVhfSU5TUEVDVE9SX0lEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLmZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYXR0ZW5TdG9yZUZvckluc3BlY3RvclRyZWUobm9kZXMsIHN0b3JlLl9tb2R1bGVzLnJvb3QsIHBheWxvYWQuZmlsdGVyLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnJvb3ROb2RlcyA9IG5vZGVzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5yb290Tm9kZXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0U3RvcmVGb3JJbnNwZWN0b3JUcmVlKHN0b3JlLl9tb2R1bGVzLnJvb3QsICdSb290JywgJycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXBpLm9uLmdldEluc3BlY3RvclN0YXRlKChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWQuaW5zcGVjdG9ySWQgPT09IFZVRVhfSU5TUEVDVE9SX0lEKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZHVsZVBhdGggPSBwYXlsb2FkLm5vZGVJZDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlID0gZ2V0U3RvcmVNb2R1bGUoc3RvcmUuX21vZHVsZXMsIG1vZHVsZVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBBY2Nlc3MgdGhlIGdldHRlcnMgcHJvcCB0byBpbml0IGdldHRlcnMgY2FjaGUgKHdoaWNoIGlzIGxhenkpXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlLmNvbnRleHQuZ2V0dGVycztcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5zdGF0ZSA9IGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yU3RhdGUobW9kdWxlLCBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlLCBtb2R1bGVQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFwaS5vbi5lZGl0SW5zcGVjdG9yU3RhdGUoKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5pbnNwZWN0b3JJZCA9PT0gVlVFWF9JTlNQRUNUT1JfSUQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhdGggPSBwYXlsb2FkLnBhdGg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLm5vZGVJZCAhPT0gVlVFWF9ST09UX1BBVEgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGF5bG9hZC5ub2RlSWQuc3Vic3RyaW5nKDAsIHBheWxvYWQubm9kZUlkLmxlbmd0aCAtIDEpLnNwbGl0KCcvJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RvcmUuX2NvbW1pdHRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLnNldChzdG9yZS5fdm0uJGRhdGEuJCRzdGF0ZSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlLl9jb21taXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhcGkuYWRkVGltZWxpbmVMYXllcih7XG4gICAgICAgICAgICAgICAgaWQ6IFZVRVhfTVVUQVRJT05TX0lELFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVnVleCBNdXRhdGlvbnMnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBMSU1FXzUwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXBpLmFkZFRpbWVsaW5lTGF5ZXIoe1xuICAgICAgICAgICAgICAgIGlkOiBWVUVYX0FDVElPTlNfSUQsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdWdWV4IEFjdGlvbnMnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBMSU1FXzUwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaG9vay5vbigndnVleDptdXRhdGlvbicsIChtdXRhdGlvbiwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBhcGkuc2VuZEluc3BlY3RvclN0YXRlKFZVRVhfSU5TUEVDVE9SX0lEKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge307XG4gICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLnBheWxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5wYXlsb2FkID0gbXV0YXRpb24ucGF5bG9hZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGF0YS5zdGF0ZSA9ICgwLCBjbG9uZV9kZWVwXzEuZGVmYXVsdCkoc3RhdGUpO1xuICAgICAgICAgICAgICAgIGFwaS5hZGRUaW1lbGluZUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXJJZDogVlVFWF9NVVRBVElPTlNfSUQsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG11dGF0aW9uLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmdW5jdGlvbiBsZWdhY3lTaW5nbGVBY3Rpb25TdWIoYWN0aW9uLCBzdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLnBheWxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5wYXlsb2FkID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGEuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgICAgICAgICBhcGkuYWRkVGltZWxpbmVFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIGxheWVySWQ6IFZVRVhfQUNUSU9OU19JRCxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IERhdGUubm93KCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYWN0aW9uLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKF9hID0gc3RvcmUuc3Vic2NyaWJlQWN0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzdG9yZSwgYXBpLmdldFNldHRpbmdzKCkubGVnYWN5QWN0aW9uc1xuICAgICAgICAgICAgICAgID8gbGVnYWN5U2luZ2xlQWN0aW9uU3ViXG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgIGJlZm9yZTogKGFjdGlvbiwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24ucGF5bG9hZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucGF5bG9hZCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLl9pZCA9IGFjdGlvbklkKys7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uX3RpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdGF0ZSA9IHN0YXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBpLmFkZFRpbWVsaW5lRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVySWQ6IFZVRVhfQUNUSU9OU19JRCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lOiBhY3Rpb24uX3RpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhY3Rpb24udHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZDogYWN0aW9uLl9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhZnRlcjogKGFjdGlvbiwgc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIGFjdGlvbi5fdGltZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2N1c3RvbToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZHVyYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBgJHtkdXJhdGlvbn1tc2AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdBY3Rpb24gZHVyYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZHVyYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLnBheWxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnBheWxvYWQgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwaS5hZGRUaW1lbGluZUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcklkOiBWVUVYX0FDVElPTlNfSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZTogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFjdGlvbi50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cElkOiBhY3Rpb24uX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sIHsgcHJlcGVuZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIC8vIEluc3BlY3QgZ2V0dGVycyBvbiBtdXRhdGlvbnNcbiAgICAgICAgICAgIGFwaS5vbi5pbnNwZWN0VGltZWxpbmVFdmVudChwYXlsb2FkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZC5sYXllcklkID09PSBWVUVYX01VVEFUSU9OU19JRCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBnZXR0ZXJLZXlzID0gT2JqZWN0LmtleXMoc3RvcmUuZ2V0dGVycyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXR0ZXJLZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm0gPSBuZXcgVnVlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkc3RhdGU6IHBheWxvYWQuZGF0YS5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkOiBzdG9yZS5fdm0uJG9wdGlvbnMuY29tcHV0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVm0gPSBzdG9yZS5fdm07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZS5fdm0gPSB2bTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyZWUgPSB0cmFuc2Zvcm1QYXRoc1RvT2JqZWN0VHJlZShzdG9yZS5nZXR0ZXJzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQuZGF0YS5nZXR0ZXJzID0gKDAsIGNsb25lX2RlZXBfMS5kZWZhdWx0KSh0cmVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlLl92bSA9IG9yaWdpbmFsVm07XG4gICAgICAgICAgICAgICAgICAgICAgICB2bS4kZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmV4cG9ydHMuc2V0dXBQbHVnaW4gPSBzZXR1cFBsdWdpbjtcbi8qKlxuICogRXh0cmFjdGVkIGZyb20gdGFpbHdpbmQgcGFsZXR0ZVxuICovXG5jb25zdCBCTFVFXzYwMCA9IDB4MjU2M2ViO1xuY29uc3QgTElNRV81MDAgPSAweDg0Y2MxNjtcbmNvbnN0IENZQU5fNDAwID0gMHgyMmQzZWU7XG5jb25zdCBPUkFOR0VfNDAwID0gMHhmYjkyM2M7XG5jb25zdCBXSElURSA9IDB4ZmZmZmZmO1xuY29uc3QgREFSSyA9IDB4NjY2NjY2O1xuZnVuY3Rpb24gZm9ybWF0Um91dGVOb2RlKHJvdXRlciwgcm91dGUsIHBhcmVudFBhdGgsIGZpbHRlcikge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3Qgbm9kZSA9IHtcbiAgICAgICAgaWQ6IHBhcmVudFBhdGggKyByb3V0ZS5wYXRoLFxuICAgICAgICBsYWJlbDogcm91dGUucGF0aCxcbiAgICAgICAgY2hpbGRyZW46IChfYSA9IHJvdXRlLmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWFwKGNoaWxkID0+IGZvcm1hdFJvdXRlTm9kZShyb3V0ZXIsIGNoaWxkLCByb3V0ZS5wYXRoLCBmaWx0ZXIpKS5maWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIHRhZ3M6IFtdLFxuICAgIH07XG4gICAgaWYgKGZpbHRlciAmJiAhbm9kZS5pZC5pbmNsdWRlcyhmaWx0ZXIpICYmICEoKF9iID0gbm9kZS5jaGlsZHJlbikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGlmIChyb3V0ZS5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgbm9kZS50YWdzLnB1c2goe1xuICAgICAgICAgICAgbGFiZWw6IFN0cmluZyhyb3V0ZS5uYW1lKSxcbiAgICAgICAgICAgIHRleHRDb2xvcjogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogQ1lBTl80MDAsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAocm91dGUuYWxpYXMgIT0gbnVsbCkge1xuICAgICAgICBub2RlLnRhZ3MucHVzaCh7XG4gICAgICAgICAgICBsYWJlbDogJ2FsaWFzJyxcbiAgICAgICAgICAgIHRleHRDb2xvcjogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogT1JBTkdFXzQwMCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gcm91dGVyLmN1cnJlbnRSb3V0ZS5tYXRjaGVkLnJlZHVjZSgocCwgbSkgPT4gcCArIG0ucGF0aCwgJycpO1xuICAgIGlmIChub2RlLmlkID09PSBjdXJyZW50UGF0aCkge1xuICAgICAgICBub2RlLnRhZ3MucHVzaCh7XG4gICAgICAgICAgICBsYWJlbDogJ2FjdGl2ZScsXG4gICAgICAgICAgICB0ZXh0Q29sb3I6IFdISVRFLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBCTFVFXzYwMCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChyb3V0ZS5yZWRpcmVjdCkge1xuICAgICAgICBub2RlLnRhZ3MucHVzaCh7XG4gICAgICAgICAgICBsYWJlbDogJ3JlZGlyZWN0OiAnICtcbiAgICAgICAgICAgICAgICAodHlwZW9mIHJvdXRlLnJlZGlyZWN0ID09PSAnc3RyaW5nJyA/IHJvdXRlLnJlZGlyZWN0IDogJ09iamVjdCcpLFxuICAgICAgICAgICAgdGV4dENvbG9yOiBXSElURSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogREFSSyxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xufVxuZnVuY3Rpb24gZm9ybWF0Um91dGVEYXRhKHJvdXRlKSB7XG4gICAgY29uc3QgZGF0YSA9IFtdO1xuICAgIGRhdGEucHVzaCh7IGtleTogJ3BhdGgnLCB2YWx1ZTogcm91dGUucGF0aCB9KTtcbiAgICBpZiAocm91dGUucmVkaXJlY3QpIHtcbiAgICAgICAgZGF0YS5wdXNoKHsga2V5OiAncmVkaXJlY3QnLCB2YWx1ZTogcm91dGUucmVkaXJlY3QgfSk7XG4gICAgfVxuICAgIGlmIChyb3V0ZS5hbGlhcykge1xuICAgICAgICBkYXRhLnB1c2goeyBrZXk6ICdhbGlhcycsIHZhbHVlOiByb3V0ZS5hbGlhcyB9KTtcbiAgICB9XG4gICAgaWYgKHJvdXRlLnByb3BzKSB7XG4gICAgICAgIGRhdGEucHVzaCh7IGtleTogJ3Byb3BzJywgdmFsdWU6IHJvdXRlLnByb3BzIH0pO1xuICAgIH1cbiAgICBpZiAocm91dGUubmFtZSAmJiByb3V0ZS5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgZGF0YS5wdXNoKHsga2V5OiAnbmFtZScsIHZhbHVlOiByb3V0ZS5uYW1lIH0pO1xuICAgIH1cbiAgICBpZiAocm91dGUuY29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHt9O1xuICAgICAgICAvLyBpZiAocm91dGUuY29tcG9uZW50Ll9fZmlsZSkge1xuICAgICAgICAvLyAgIGNvbXBvbmVudC5maWxlID0gcm91dGUuY29tcG9uZW50Ll9fZmlsZVxuICAgICAgICAvLyB9XG4gICAgICAgIGlmIChyb3V0ZS5jb21wb25lbnQudGVtcGxhdGUpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC50ZW1wbGF0ZSA9IHJvdXRlLmNvbXBvbmVudC50ZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm91dGUuY29tcG9uZW50LnByb3BzKSB7XG4gICAgICAgICAgICBjb21wb25lbnQucHJvcHMgPSByb3V0ZS5jb21wb25lbnQucHJvcHM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoMCwgc2hhcmVkX3V0aWxzXzEuaXNFbXB0eU9iamVjdCkoY29tcG9uZW50KSkge1xuICAgICAgICAgICAgZGF0YS5wdXNoKHsga2V5OiAnY29tcG9uZW50JywgdmFsdWU6IGNvbXBvbmVudCB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbn1cbmZ1bmN0aW9uIGdldFBhdGhJZChyb3V0ZU1hdGNoZXIpIHtcbiAgICBsZXQgcGF0aCA9IHJvdXRlTWF0Y2hlci5wYXRoO1xuICAgIGlmIChyb3V0ZU1hdGNoZXIucGFyZW50KSB7XG4gICAgICAgIHBhdGggPSBnZXRQYXRoSWQocm91dGVNYXRjaGVyLnBhcmVudCkgKyBwYXRoO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbn1cbmNvbnN0IFRBR19OQU1FU1BBQ0VEID0ge1xuICAgIGxhYmVsOiAnbmFtZXNwYWNlZCcsXG4gICAgdGV4dENvbG9yOiBXSElURSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IERBUkssXG59O1xuY29uc3QgVlVFWF9ST09UX1BBVEggPSAnX192ZHRfcm9vdCc7XG5jb25zdCBWVUVYX01PRFVMRV9QQVRIX1NFUEFSQVRPUiA9ICdbdmR0XSc7XG5jb25zdCBWVUVYX01PRFVMRV9QQVRIX1NFUEFSQVRPUl9SRUcgPSAvXFxbdmR0XFxdL2c7XG5mdW5jdGlvbiBmb3JtYXRTdG9yZUZvckluc3BlY3RvclRyZWUobW9kdWxlLCBtb2R1bGVOYW1lLCBwYXRoKSB7XG4gICAgdmFyIF9hO1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwYXRoIHx8IFZVRVhfUk9PVF9QQVRILFxuICAgICAgICAvLyBhbGwgbW9kdWxlcyBlbmQgd2l0aCBhIGAvYCwgd2Ugd2FudCB0aGUgbGFzdCBzZWdtZW50IG9ubHlcbiAgICAgICAgLy8gY2FydC8gLT4gY2FydFxuICAgICAgICAvLyBuZXN0ZWQvY2FydC8gLT4gY2FydFxuICAgICAgICBsYWJlbDogbW9kdWxlTmFtZSxcbiAgICAgICAgdGFnczogbW9kdWxlLm5hbWVzcGFjZWQgPyBbVEFHX05BTUVTUEFDRURdIDogW10sXG4gICAgICAgIGNoaWxkcmVuOiBPYmplY3Qua2V5cygoX2EgPSBtb2R1bGUuX2NoaWxkcmVuKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fSkubWFwKChrZXkpID0+IGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yVHJlZShtb2R1bGUuX2NoaWxkcmVuW2tleV0sIGtleSwgYCR7cGF0aH0ke2tleX0ke1ZVRVhfTU9EVUxFX1BBVEhfU0VQQVJBVE9SfWApKSxcbiAgICB9O1xufVxuZnVuY3Rpb24gZmxhdHRlblN0b3JlRm9ySW5zcGVjdG9yVHJlZShyZXN1bHQsIG1vZHVsZSwgZmlsdGVyLCBwYXRoKSB7XG4gICAgaWYgKHBhdGguaW5jbHVkZXMoZmlsdGVyKSkge1xuICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICBpZDogcGF0aCB8fCBWVUVYX1JPT1RfUEFUSCxcbiAgICAgICAgICAgIGxhYmVsOiBwYXRoLmVuZHNXaXRoKFZVRVhfTU9EVUxFX1BBVEhfU0VQQVJBVE9SKSA/IHBhdGguc2xpY2UoMCwgcGF0aC5sZW5ndGggLSAxKSA6IHBhdGggfHwgJ1Jvb3QnLFxuICAgICAgICAgICAgdGFnczogbW9kdWxlLm5hbWVzcGFjZWQgPyBbVEFHX05BTUVTUEFDRURdIDogW10sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyhtb2R1bGUuX2NoaWxkcmVuKS5mb3JFYWNoKG1vZHVsZU5hbWUgPT4ge1xuICAgICAgICBmbGF0dGVuU3RvcmVGb3JJbnNwZWN0b3JUcmVlKHJlc3VsdCwgbW9kdWxlLl9jaGlsZHJlblttb2R1bGVOYW1lXSwgZmlsdGVyLCBwYXRoICsgbW9kdWxlTmFtZSArIFZVRVhfTU9EVUxFX1BBVEhfU0VQQVJBVE9SKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGV4dHJhY3ROYW1lRnJvbVBhdGgocGF0aCkge1xuICAgIHJldHVybiBwYXRoICYmIHBhdGggIT09IFZVRVhfUk9PVF9QQVRIID8gcGF0aC5zcGxpdChWVUVYX01PRFVMRV9QQVRIX1NFUEFSQVRPUikuc2xpY2UoLTIsIC0xKVswXSA6ICdSb290Jztcbn1cbmZ1bmN0aW9uIGZvcm1hdFN0b3JlRm9ySW5zcGVjdG9yU3RhdGUobW9kdWxlLCBnZXR0ZXJzLCBwYXRoKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCBzdG9yZVN0YXRlID0ge1xuICAgICAgICBzdGF0ZTogT2JqZWN0LmtleXMoKF9hID0gbW9kdWxlLmNvbnRleHQuc3RhdGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9KS5tYXAoKGtleSkgPT4gKHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG1vZHVsZS5jb250ZXh0LnN0YXRlW2tleV0sXG4gICAgICAgIH0pKSxcbiAgICB9O1xuICAgIGNvbnN0IHBhdGhXaXRoU2xhc2hlcyA9IHBhdGgucmVwbGFjZShWVUVYX01PRFVMRV9QQVRIX1NFUEFSQVRPUl9SRUcsICcvJyk7XG4gICAgZ2V0dGVycyA9ICFtb2R1bGUubmFtZXNwYWNlZCB8fCBwYXRoID09PSBWVUVYX1JPT1RfUEFUSCA/IG1vZHVsZS5jb250ZXh0LmdldHRlcnMgOiBnZXR0ZXJzW3BhdGhXaXRoU2xhc2hlc107XG4gICAgbGV0IGdldHRlcnNLZXlzID0gT2JqZWN0LmtleXMoZ2V0dGVycyk7XG4gICAgY29uc3Qgc2hvdWxkUGlja0dldHRlcnMgPSAhbW9kdWxlLm5hbWVzcGFjZWQgJiYgcGF0aCAhPT0gVlVFWF9ST09UX1BBVEg7XG4gICAgaWYgKHNob3VsZFBpY2tHZXR0ZXJzKSB7XG4gICAgICAgIC8vIE9ubHkgcGljayB0aGUgZ2V0dGVycyBkZWZpbmVkIGluIHRoZSBub24tbmFtZXNwYWNlZCBtb2R1bGVcbiAgICAgICAgY29uc3QgZGVmaW5lZEdldHRlcnNLZXlzID0gT2JqZWN0LmtleXMoKF9iID0gbW9kdWxlLl9yYXdNb2R1bGUuZ2V0dGVycykgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDoge30pO1xuICAgICAgICBnZXR0ZXJzS2V5cyA9IGdldHRlcnNLZXlzLmZpbHRlcihrZXkgPT4gZGVmaW5lZEdldHRlcnNLZXlzLmluY2x1ZGVzKGtleSkpO1xuICAgIH1cbiAgICBpZiAoZ2V0dGVyc0tleXMubGVuZ3RoKSB7XG4gICAgICAgIGxldCBtb2R1bGVHZXR0ZXJzO1xuICAgICAgICBpZiAoc2hvdWxkUGlja0dldHRlcnMpIHtcbiAgICAgICAgICAgIC8vIE9ubHkgcGljayB0aGUgZ2V0dGVycyBkZWZpbmVkIGluIHRoZSBub24tbmFtZXNwYWNlZCBtb2R1bGVcbiAgICAgICAgICAgIG1vZHVsZUdldHRlcnMgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGdldHRlcnNLZXlzKSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlR2V0dGVyc1trZXldID0gY2FuVGhyb3coKCkgPT4gZ2V0dGVyc1trZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1vZHVsZUdldHRlcnMgPSBnZXR0ZXJzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRyZWUgPSB0cmFuc2Zvcm1QYXRoc1RvT2JqZWN0VHJlZShtb2R1bGVHZXR0ZXJzKTtcbiAgICAgICAgc3RvcmVTdGF0ZS5nZXR0ZXJzID0gT2JqZWN0LmtleXModHJlZSkubWFwKChrZXkpID0+ICh7XG4gICAgICAgICAgICBrZXk6IGtleS5lbmRzV2l0aCgnLycpID8gZXh0cmFjdE5hbWVGcm9tUGF0aChrZXkpIDoga2V5LFxuICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWU6IGNhblRocm93KCgpID0+IHRyZWVba2V5XSksXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0b3JlU3RhdGU7XG59XG5mdW5jdGlvbiB0cmFuc2Zvcm1QYXRoc1RvT2JqZWN0VHJlZShnZXR0ZXJzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgT2JqZWN0LmtleXMoZ2V0dGVycykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBwYXRoID0ga2V5LnNwbGl0KCcvJyk7XG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxldCB0YXJnZXQgPSByZXN1bHQ7XG4gICAgICAgICAgICBjb25zdCBsZWFmS2V5ID0gcGF0aC5wb3AoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXRbcF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W3BdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2N1c3RvbToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdNb2R1bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3RyYWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0W3BdLl9jdXN0b20udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRbbGVhZktleV0gPSBjYW5UaHJvdygoKSA9PiBnZXR0ZXJzW2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBjYW5UaHJvdygoKSA9PiBnZXR0ZXJzW2tleV0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldFN0b3JlTW9kdWxlKG1vZHVsZU1hcCwgcGF0aCkge1xuICAgIGNvbnN0IG5hbWVzID0gcGF0aC5zcGxpdChWVUVYX01PRFVMRV9QQVRIX1NFUEFSQVRPUikuZmlsdGVyKChuKSA9PiBuKTtcbiAgICByZXR1cm4gbmFtZXMucmVkdWNlKChtb2R1bGUsIG1vZHVsZU5hbWUsIGkpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBtb2R1bGVbbW9kdWxlTmFtZSA9PT0gVlVFWF9ST09UX1BBVEggPyAncm9vdCcgOiBtb2R1bGVOYW1lXTtcbiAgICAgICAgaWYgKCFjaGlsZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIG1vZHVsZSBcIiR7bW9kdWxlTmFtZX1cIiBmb3IgcGF0aCBcIiR7cGF0aH1cIi5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaSA9PT0gbmFtZXMubGVuZ3RoIC0gMSA/IGNoaWxkIDogY2hpbGQuX2NoaWxkcmVuO1xuICAgIH0sIHBhdGggPT09IFZVRVhfUk9PVF9QQVRIID8gbW9kdWxlTWFwIDogbW9kdWxlTWFwLnJvb3QuX2NoaWxkcmVuKTtcbn1cbmZ1bmN0aW9uIGNhblRocm93KGNiKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGNiKCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBlO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBsdWdpbi5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7725\n");
|
|
319
319
|
|
|
320
320
|
/***/ }),
|
|
321
321
|
|
|
@@ -339,7 +339,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
339
339
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
340
340
|
|
|
341
341
|
"use strict";
|
|
342
|
-
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.ComponentFilter = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst util_1 = __webpack_require__(33756);\n\nclass ComponentFilter {\n constructor(filter) {\n this.filter = filter || '';\n }\n /**\n * Check if an instance is qualified.\n *\n * @param {Vue|Vnode} instance\n * @return {Boolean}\n */\n\n\n isQualified(instance) {\n const name = (0,
|
|
342
|
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.ComponentFilter = void 0;\n\nconst shared_utils_1 = __webpack_require__(27146);\n\nconst util_1 = __webpack_require__(33756);\n\nclass ComponentFilter {\n constructor(filter) {\n this.filter = filter || '';\n }\n /**\n * Check if an instance is qualified.\n *\n * @param {Vue|Vnode} instance\n * @return {Boolean}\n */\n\n\n isQualified(instance) {\n const name = (0, util_1.getInstanceName)(instance);\n return (0, shared_utils_1.classify)(name).toLowerCase().indexOf(this.filter) > -1 || (0, shared_utils_1.kebabize)(name).toLowerCase().indexOf(this.filter) > -1;\n }\n\n}\n\nexports.ComponentFilter = ComponentFilter;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzIzOTYuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQWEsZUFBYixDQUE0QjtBQUcxQixjQUFhLE1BQWIsRUFBMkI7QUFDekIsU0FBSyxNQUFMLEdBQWMsTUFBTSxJQUFJLEVBQXhCO0FBQ0Q7QUFFRDs7Ozs7QUFLRzs7O0FBQ0gsYUFBVyxDQUFFLFFBQUYsRUFBVTtBQUNuQixVQUFNLElBQUksR0FBRyw0QkFBZ0IsUUFBaEIsQ0FBYjtBQUNBLFdBQU8sNkJBQVMsSUFBVCxFQUFlLFdBQWYsR0FBNkIsT0FBN0IsQ0FBcUMsS0FBSyxNQUExQyxJQUFvRCxDQUFDLENBQXJELElBQ0wsNkJBQVMsSUFBVCxFQUFlLFdBQWYsR0FBNkIsT0FBN0IsQ0FBcUMsS0FBSyxNQUExQyxJQUFvRCxDQUFDLENBRHZEO0FBRUQ7O0FBakJ5Qjs7QUFBNUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpbHRlci50cz9lMGQ4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Db21wb25lbnRGaWx0ZXIgPSB2b2lkIDA7XG5jb25zdCBzaGFyZWRfdXRpbHNfMSA9IHJlcXVpcmUoXCJAdnVlLWRldnRvb2xzL3NoYXJlZC11dGlsc1wiKTtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jbGFzcyBDb21wb25lbnRGaWx0ZXIge1xuICAgIGNvbnN0cnVjdG9yKGZpbHRlcikge1xuICAgICAgICB0aGlzLmZpbHRlciA9IGZpbHRlciB8fCAnJztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYW4gaW5zdGFuY2UgaXMgcXVhbGlmaWVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtWdWV8Vm5vZGV9IGluc3RhbmNlXG4gICAgICogQHJldHVybiB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBpc1F1YWxpZmllZChpbnN0YW5jZSkge1xuICAgICAgICBjb25zdCBuYW1lID0gKDAsIHV0aWxfMS5nZXRJbnN0YW5jZU5hbWUpKGluc3RhbmNlKTtcbiAgICAgICAgcmV0dXJuICgwLCBzaGFyZWRfdXRpbHNfMS5jbGFzc2lmeSkobmFtZSkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuZmlsdGVyKSA+IC0xIHx8XG4gICAgICAgICAgICAoMCwgc2hhcmVkX3V0aWxzXzEua2ViYWJpemUpKG5hbWUpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLmZpbHRlcikgPiAtMTtcbiAgICB9XG59XG5leHBvcnRzLkNvbXBvbmVudEZpbHRlciA9IENvbXBvbmVudEZpbHRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZpbHRlci5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///72396\n");
|
|
343
343
|
|
|
344
344
|
/***/ }),
|
|
345
345
|
|
|
@@ -347,7 +347,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
347
347
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
348
348
|
|
|
349
349
|
"use strict";
|
|
350
|
-
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.ComponentWalker = void 0;\n\nconst util_1 = __webpack_require__(33756);\n\nconst filter_1 = __webpack_require__(72396);\n\nconst el_1 = __webpack_require__(88722);\n\nclass ComponentWalker {\n constructor(maxDepth, filter, api, ctx) {\n this.ctx = ctx;\n this.api = api;\n this.maxDepth = maxDepth;\n this.componentFilter = new filter_1.ComponentFilter(filter);\n }\n\n getComponentTree(instance) {\n this.captureIds = new Map();\n return this.findQualifiedChildren(instance, 0);\n }\n\n getComponentParents(instance) {\n this.captureIds = new Map();\n const parents = [];\n this.captureId(instance);\n let parent = instance;\n\n while (parent = parent.parent) {\n this.captureId(parent);\n parents.push(parent);\n }\n\n return parents;\n }\n /**\n * Find qualified children from a single instance.\n * If the instance itself is qualified, just return itself.\n * This is ok because [].concat works in both cases.\n *\n * @param {Vue|Vnode} instance\n * @return {Vue|Array}\n */\n\n\n async findQualifiedChildren(instance, depth) {\n var _a;\n\n if (this.componentFilter.isQualified(instance) && !((_a = instance.type.devtools) === null || _a === void 0 ? void 0 : _a.hide)) {\n return [await this.capture(instance, null, depth)];\n } else if (instance.subTree) {\n // TODO functional components\n return this.findQualifiedChildrenFromList(this.getInternalInstanceChildren(instance.subTree), depth);\n } else {\n return [];\n }\n }\n /**\n * Iterate through an array of instances and flatten it into\n * an array of qualified instances. This is a depth-first\n * traversal - e.g. if an instance is not matched, we will\n * recursively go deeper until a qualified child is found.\n *\n * @param {Array} instances\n * @return {Array}\n */\n\n\n async findQualifiedChildrenFromList(instances, depth) {\n instances = instances.filter(child => {\n var _a;\n\n return !(0, util_1.isBeingDestroyed)(child) && !((_a = child.type.devtools) === null || _a === void 0 ? void 0 : _a.hide);\n });\n\n if (!this.componentFilter.filter) {\n return Promise.all(instances.map((child, index, list) => this.capture(child, list, depth)));\n } else {\n return Array.prototype.concat.apply([], await Promise.all(instances.map(i => this.findQualifiedChildren(i, depth))));\n }\n }\n /**\n * Get children from a component instance.\n */\n\n\n getInternalInstanceChildren(subTree, suspense = null) {\n const list = [];\n\n if (subTree.component) {\n !suspense ? list.push(subTree.component) : list.push({ ...subTree.component,\n suspense\n });\n } else if (subTree.suspense) {\n const suspenseKey = !subTree.suspense.isInFallback ? 'suspense default' : 'suspense fallback';\n list.push(...this.getInternalInstanceChildren(subTree.suspense.activeBranch, { ...subTree.suspense,\n suspenseKey\n }));\n } else if (Array.isArray(subTree.children)) {\n subTree.children.forEach(childSubTree => {\n if (childSubTree.component) {\n !suspense ? list.push(childSubTree.component) : list.push({ ...childSubTree.component,\n suspense\n });\n } else {\n list.push(...this.getInternalInstanceChildren(childSubTree, suspense));\n }\n });\n }\n\n return list.filter(child => {\n var _a;\n\n return !(0, util_1.isBeingDestroyed)(child) && !((_a = child.type.devtools) === null || _a === void 0 ? void 0 : _a.hide);\n });\n }\n\n captureId(instance) {\n if (!instance) return null; // instance.uid is not reliable in devtools as there\n // may be 2 roots with same uid which causes unexpected\n // behaviour\n\n const id = instance.__VUE_DEVTOOLS_UID__ != null ? instance.__VUE_DEVTOOLS_UID__ : (0, util_1.getUniqueComponentId)(instance, this.ctx);\n instance.__VUE_DEVTOOLS_UID__ = id; // Dedupe\n\n if (this.captureIds.has(id)) {\n return;\n } else {\n this.captureIds.set(id, undefined);\n }\n\n this.mark(instance);\n return id;\n }\n /**\n * Capture the meta information of an instance. (recursive)\n *\n * @param {Vue} instance\n * @return {Object}\n */\n\n\n async capture(instance, list, depth) {\n var _a;\n\n const id = this.captureId(instance);\n const name = (0, util_1.getInstanceName)(instance);\n const children = this.getInternalInstanceChildren(instance.subTree).filter(child => !(0, util_1.isBeingDestroyed)(child));\n const parents = this.getComponentParents(instance) || [];\n const inactive = !!instance.isDeactivated || parents.some(parent => parent.isDeactivated);\n const treeNode = {\n uid: instance.uid,\n id,\n name,\n renderKey: (0, util_1.getRenderKey)(instance.vnode ? instance.vnode.key : null),\n inactive,\n hasChildren: !!children.length,\n children: [],\n isFragment: (0, util_1.isFragment)(instance),\n tags: []\n }; // capture children\n\n if (depth < this.maxDepth || instance.type.__isKeepAlive || parents.some(parent => parent.type.__isKeepAlive)) {\n treeNode.children = await Promise.all(children.map((child, index, list) => this.capture(child, list, depth + 1)).filter(Boolean));\n } // keep-alive\n\n\n if (instance.type.__isKeepAlive && instance.__v_cache) {\n const cachedComponents = Array.from(instance.__v_cache.values()).map(vnode => vnode.component).filter(Boolean);\n const childrenIds = children.map(child => child.__VUE_DEVTOOLS_UID__);\n\n for (const cachedChild of cachedComponents) {\n if (!childrenIds.includes(cachedChild.__VUE_DEVTOOLS_UID__)) {\n const node = await this.capture({ ...cachedChild,\n isDeactivated: true\n }, null, depth + 1);\n\n if (node) {\n treeNode.children.push(node);\n }\n }\n }\n } // ensure correct ordering\n\n\n const rootElements = (0, el_1.getRootElementsFromComponentInstance)(instance);\n const firstElement = rootElements[0];\n\n if (firstElement === null || firstElement === void 0 ? void 0 : firstElement.parentElement) {\n const parentInstance = instance.parent;\n const parentRootElements = parentInstance ? (0, el_1.getRootElementsFromComponentInstance)(parentInstance) : [];\n let el = firstElement;\n const indexList = [];\n\n do {\n indexList.push(Array.from(el.parentElement.childNodes).indexOf(el));\n el = el.parentElement;\n } while (el.parentElement && parentRootElements.length && !parentRootElements.includes(el));\n\n treeNode.domOrder = indexList.reverse();\n } else {\n treeNode.domOrder = [-1];\n }\n\n if ((_a = instance.suspense) === null || _a === void 0 ? void 0 : _a.suspenseKey) {\n treeNode.tags.push({\n label: instance.suspense.suspenseKey,\n backgroundColor: 0xe492e4,\n textColor: 0xffffff\n }); // update instanceMap\n\n this.mark(instance, true);\n }\n\n return this.api.visitComponentTree(instance, treeNode, this.componentFilter.filter, this.ctx.currentAppRecord.options.app);\n }\n /**\n * Mark an instance as captured and store it in the instance map.\n *\n * @param {Vue} instance\n */\n\n\n mark(instance, force = false) {\n const instanceMap = this.ctx.currentAppRecord.instanceMap;\n\n if (force || !instanceMap.has(instance.__VUE_DEVTOOLS_UID__)) {\n instanceMap.set(instance.__VUE_DEVTOOLS_UID__, instance);\n }\n }\n\n}\n\nexports.ComponentWalker = ComponentWalker;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LG9CQUF6QixFQUErQyxRQUEvQztBQUNEO0FBQ0Y7O0FBN015Qjs7QUFBNUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uLy4uL3NyYy9jb21wb25lbnRzL3RyZWUudHM/NDA3MyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQ29tcG9uZW50V2Fsa2VyID0gdm9pZCAwO1xuY29uc3QgdXRpbF8xID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcbmNvbnN0IGZpbHRlcl8xID0gcmVxdWlyZShcIi4vZmlsdGVyXCIpO1xuY29uc3QgZWxfMSA9IHJlcXVpcmUoXCIuL2VsXCIpO1xuY2xhc3MgQ29tcG9uZW50V2Fsa2VyIHtcbiAgICBjb25zdHJ1Y3RvcihtYXhEZXB0aCwgZmlsdGVyLCBhcGksIGN0eCkge1xuICAgICAgICB0aGlzLmN0eCA9IGN0eDtcbiAgICAgICAgdGhpcy5hcGkgPSBhcGk7XG4gICAgICAgIHRoaXMubWF4RGVwdGggPSBtYXhEZXB0aDtcbiAgICAgICAgdGhpcy5jb21wb25lbnRGaWx0ZXIgPSBuZXcgZmlsdGVyXzEuQ29tcG9uZW50RmlsdGVyKGZpbHRlcik7XG4gICAgfVxuICAgIGdldENvbXBvbmVudFRyZWUoaW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy5jYXB0dXJlSWRzID0gbmV3IE1hcCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kUXVhbGlmaWVkQ2hpbGRyZW4oaW5zdGFuY2UsIDApO1xuICAgIH1cbiAgICBnZXRDb21wb25lbnRQYXJlbnRzKGluc3RhbmNlKSB7XG4gICAgICAgIHRoaXMuY2FwdHVyZUlkcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgcGFyZW50cyA9IFtdO1xuICAgICAgICB0aGlzLmNhcHR1cmVJZChpbnN0YW5jZSk7XG4gICAgICAgIGxldCBwYXJlbnQgPSBpbnN0YW5jZTtcbiAgICAgICAgd2hpbGUgKChwYXJlbnQgPSBwYXJlbnQucGFyZW50KSkge1xuICAgICAgICAgICAgdGhpcy5jYXB0dXJlSWQocGFyZW50KTtcbiAgICAgICAgICAgIHBhcmVudHMucHVzaChwYXJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJlbnRzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGaW5kIHF1YWxpZmllZCBjaGlsZHJlbiBmcm9tIGEgc2luZ2xlIGluc3RhbmNlLlxuICAgICAqIElmIHRoZSBpbnN0YW5jZSBpdHNlbGYgaXMgcXVhbGlmaWVkLCBqdXN0IHJldHVybiBpdHNlbGYuXG4gICAgICogVGhpcyBpcyBvayBiZWNhdXNlIFtdLmNvbmNhdCB3b3JrcyBpbiBib3RoIGNhc2VzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtWdWV8Vm5vZGV9IGluc3RhbmNlXG4gICAgICogQHJldHVybiB7VnVlfEFycmF5fVxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRRdWFsaWZpZWRDaGlsZHJlbihpbnN0YW5jZSwgZGVwdGgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRGaWx0ZXIuaXNRdWFsaWZpZWQoaW5zdGFuY2UpICYmICEoKF9hID0gaW5zdGFuY2UudHlwZS5kZXZ0b29scykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmhpZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gW2F3YWl0IHRoaXMuY2FwdHVyZShpbnN0YW5jZSwgbnVsbCwgZGVwdGgpXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpbnN0YW5jZS5zdWJUcmVlKSB7XG4gICAgICAgICAgICAvLyBUT0RPIGZ1bmN0aW9uYWwgY29tcG9uZW50c1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZFF1YWxpZmllZENoaWxkcmVuRnJvbUxpc3QodGhpcy5nZXRJbnRlcm5hbEluc3RhbmNlQ2hpbGRyZW4oaW5zdGFuY2Uuc3ViVHJlZSksIGRlcHRoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlIHRocm91Z2ggYW4gYXJyYXkgb2YgaW5zdGFuY2VzIGFuZCBmbGF0dGVuIGl0IGludG9cbiAgICAgKiBhbiBhcnJheSBvZiBxdWFsaWZpZWQgaW5zdGFuY2VzLiBUaGlzIGlzIGEgZGVwdGgtZmlyc3RcbiAgICAgKiB0cmF2ZXJzYWwgLSBlLmcuIGlmIGFuIGluc3RhbmNlIGlzIG5vdCBtYXRjaGVkLCB3ZSB3aWxsXG4gICAgICogcmVjdXJzaXZlbHkgZ28gZGVlcGVyIHVudGlsIGEgcXVhbGlmaWVkIGNoaWxkIGlzIGZvdW5kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBcnJheX0gaW5zdGFuY2VzXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgYXN5bmMgZmluZFF1YWxpZmllZENoaWxkcmVuRnJvbUxpc3QoaW5zdGFuY2VzLCBkZXB0aCkge1xuICAgICAgICBpbnN0YW5jZXMgPSBpbnN0YW5jZXNcbiAgICAgICAgICAgIC5maWx0ZXIoY2hpbGQgPT4geyB2YXIgX2E7IHJldHVybiAhKDAsIHV0aWxfMS5pc0JlaW5nRGVzdHJveWVkKShjaGlsZCkgJiYgISgoX2EgPSBjaGlsZC50eXBlLmRldnRvb2xzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaGlkZSk7IH0pO1xuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50RmlsdGVyLmZpbHRlcikge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGluc3RhbmNlcy5tYXAoKGNoaWxkLCBpbmRleCwgbGlzdCkgPT4gdGhpcy5jYXB0dXJlKGNoaWxkLCBsaXN0LCBkZXB0aCkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBhd2FpdCBQcm9taXNlLmFsbChpbnN0YW5jZXMubWFwKGkgPT4gdGhpcy5maW5kUXVhbGlmaWVkQ2hpbGRyZW4oaSwgZGVwdGgpKSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCBjaGlsZHJlbiBmcm9tIGEgY29tcG9uZW50IGluc3RhbmNlLlxuICAgICAqL1xuICAgIGdldEludGVybmFsSW5zdGFuY2VDaGlsZHJlbihzdWJUcmVlLCBzdXNwZW5zZSA9IG51bGwpIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IFtdO1xuICAgICAgICBpZiAoc3ViVHJlZS5jb21wb25lbnQpIHtcbiAgICAgICAgICAgICFzdXNwZW5zZSA/IGxpc3QucHVzaChzdWJUcmVlLmNvbXBvbmVudCkgOiBsaXN0LnB1c2goeyAuLi5zdWJUcmVlLmNvbXBvbmVudCwgc3VzcGVuc2UgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3ViVHJlZS5zdXNwZW5zZSkge1xuICAgICAgICAgICAgY29uc3Qgc3VzcGVuc2VLZXkgPSAhc3ViVHJlZS5zdXNwZW5zZS5pc0luRmFsbGJhY2sgPyAnc3VzcGVuc2UgZGVmYXVsdCcgOiAnc3VzcGVuc2UgZmFsbGJhY2snO1xuICAgICAgICAgICAgbGlzdC5wdXNoKC4uLnRoaXMuZ2V0SW50ZXJuYWxJbnN0YW5jZUNoaWxkcmVuKHN1YlRyZWUuc3VzcGVuc2UuYWN0aXZlQnJhbmNoLCB7IC4uLnN1YlRyZWUuc3VzcGVuc2UsIHN1c3BlbnNlS2V5IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHN1YlRyZWUuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICBzdWJUcmVlLmNoaWxkcmVuLmZvckVhY2goY2hpbGRTdWJUcmVlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRTdWJUcmVlLmNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAhc3VzcGVuc2UgPyBsaXN0LnB1c2goY2hpbGRTdWJUcmVlLmNvbXBvbmVudCkgOiBsaXN0LnB1c2goeyAuLi5jaGlsZFN1YlRyZWUuY29tcG9uZW50LCBzdXNwZW5zZSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3QucHVzaCguLi50aGlzLmdldEludGVybmFsSW5zdGFuY2VDaGlsZHJlbihjaGlsZFN1YlRyZWUsIHN1c3BlbnNlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3QuZmlsdGVyKGNoaWxkID0+IHsgdmFyIF9hOyByZXR1cm4gISgwLCB1dGlsXzEuaXNCZWluZ0Rlc3Ryb3llZCkoY2hpbGQpICYmICEoKF9hID0gY2hpbGQudHlwZS5kZXZ0b29scykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmhpZGUpOyB9KTtcbiAgICB9XG4gICAgY2FwdHVyZUlkKGluc3RhbmNlKSB7XG4gICAgICAgIGlmICghaW5zdGFuY2UpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgLy8gaW5zdGFuY2UudWlkIGlzIG5vdCByZWxpYWJsZSBpbiBkZXZ0b29scyBhcyB0aGVyZVxuICAgICAgICAvLyBtYXkgYmUgMiByb290cyB3aXRoIHNhbWUgdWlkIHdoaWNoIGNhdXNlcyB1bmV4cGVjdGVkXG4gICAgICAgIC8vIGJlaGF2aW91clxuICAgICAgICBjb25zdCBpZCA9IGluc3RhbmNlLl9fVlVFX0RFVlRPT0xTX1VJRF9fICE9IG51bGwgPyBpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19VSURfXyA6ICgwLCB1dGlsXzEuZ2V0VW5pcXVlQ29tcG9uZW50SWQpKGluc3RhbmNlLCB0aGlzLmN0eCk7XG4gICAgICAgIGluc3RhbmNlLl9fVlVFX0RFVlRPT0xTX1VJRF9fID0gaWQ7XG4gICAgICAgIC8vIERlZHVwZVxuICAgICAgICBpZiAodGhpcy5jYXB0dXJlSWRzLmhhcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FwdHVyZUlkcy5zZXQoaWQsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tYXJrKGluc3RhbmNlKTtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYXB0dXJlIHRoZSBtZXRhIGluZm9ybWF0aW9uIG9mIGFuIGluc3RhbmNlLiAocmVjdXJzaXZlKVxuICAgICAqXG4gICAgICogQHBhcmFtIHtWdWV9IGluc3RhbmNlXG4gICAgICogQHJldHVybiB7T2JqZWN0fVxuICAgICAqL1xuICAgIGFzeW5jIGNhcHR1cmUoaW5zdGFuY2UsIGxpc3QsIGRlcHRoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmNhcHR1cmVJZChpbnN0YW5jZSk7XG4gICAgICAgIGNvbnN0IG5hbWUgPSAoMCwgdXRpbF8xLmdldEluc3RhbmNlTmFtZSkoaW5zdGFuY2UpO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0SW50ZXJuYWxJbnN0YW5jZUNoaWxkcmVuKGluc3RhbmNlLnN1YlRyZWUpXG4gICAgICAgICAgICAuZmlsdGVyKGNoaWxkID0+ICEoMCwgdXRpbF8xLmlzQmVpbmdEZXN0cm95ZWQpKGNoaWxkKSk7XG4gICAgICAgIGNvbnN0IHBhcmVudHMgPSB0aGlzLmdldENvbXBvbmVudFBhcmVudHMoaW5zdGFuY2UpIHx8IFtdO1xuICAgICAgICBjb25zdCBpbmFjdGl2ZSA9ICEhaW5zdGFuY2UuaXNEZWFjdGl2YXRlZCB8fCBwYXJlbnRzLnNvbWUocGFyZW50ID0+IHBhcmVudC5pc0RlYWN0aXZhdGVkKTtcbiAgICAgICAgY29uc3QgdHJlZU5vZGUgPSB7XG4gICAgICAgICAgICB1aWQ6IGluc3RhbmNlLnVpZCxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHJlbmRlcktleTogKDAsIHV0aWxfMS5nZXRSZW5kZXJLZXkpKGluc3RhbmNlLnZub2RlID8gaW5zdGFuY2Uudm5vZGUua2V5IDogbnVsbCksXG4gICAgICAgICAgICBpbmFjdGl2ZSxcbiAgICAgICAgICAgIGhhc0NoaWxkcmVuOiAhIWNoaWxkcmVuLmxlbmd0aCxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgIGlzRnJhZ21lbnQ6ICgwLCB1dGlsXzEuaXNGcmFnbWVudCkoaW5zdGFuY2UpLFxuICAgICAgICAgICAgdGFnczogW10sXG4gICAgICAgIH07XG4gICAgICAgIC8vIGNhcHR1cmUgY2hpbGRyZW5cbiAgICAgICAgaWYgKGRlcHRoIDwgdGhpcy5tYXhEZXB0aCB8fCBpbnN0YW5jZS50eXBlLl9faXNLZWVwQWxpdmUgfHwgcGFyZW50cy5zb21lKHBhcmVudCA9PiBwYXJlbnQudHlwZS5fX2lzS2VlcEFsaXZlKSkge1xuICAgICAgICAgICAgdHJlZU5vZGUuY2hpbGRyZW4gPSBhd2FpdCBQcm9taXNlLmFsbChjaGlsZHJlblxuICAgICAgICAgICAgICAgIC5tYXAoKGNoaWxkLCBpbmRleCwgbGlzdCkgPT4gdGhpcy5jYXB0dXJlKGNoaWxkLCBsaXN0LCBkZXB0aCArIDEpKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGtlZXAtYWxpdmVcbiAgICAgICAgaWYgKGluc3RhbmNlLnR5cGUuX19pc0tlZXBBbGl2ZSAmJiBpbnN0YW5jZS5fX3ZfY2FjaGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZENvbXBvbmVudHMgPSBBcnJheS5mcm9tKGluc3RhbmNlLl9fdl9jYWNoZS52YWx1ZXMoKSkubWFwKCh2bm9kZSkgPT4gdm5vZGUuY29tcG9uZW50KS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbklkcyA9IGNoaWxkcmVuLm1hcChjaGlsZCA9PiBjaGlsZC5fX1ZVRV9ERVZUT09MU19VSURfXyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhY2hlZENoaWxkIG9mIGNhY2hlZENvbXBvbmVudHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNoaWxkcmVuSWRzLmluY2x1ZGVzKGNhY2hlZENoaWxkLl9fVlVFX0RFVlRPT0xTX1VJRF9fKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gYXdhaXQgdGhpcy5jYXB0dXJlKHsgLi4uY2FjaGVkQ2hpbGQsIGlzRGVhY3RpdmF0ZWQ6IHRydWUgfSwgbnVsbCwgZGVwdGggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVOb2RlLmNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZW5zdXJlIGNvcnJlY3Qgb3JkZXJpbmdcbiAgICAgICAgY29uc3Qgcm9vdEVsZW1lbnRzID0gKDAsIGVsXzEuZ2V0Um9vdEVsZW1lbnRzRnJvbUNvbXBvbmVudEluc3RhbmNlKShpbnN0YW5jZSk7XG4gICAgICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IHJvb3RFbGVtZW50c1swXTtcbiAgICAgICAgaWYgKGZpcnN0RWxlbWVudCA9PT0gbnVsbCB8fCBmaXJzdEVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpcnN0RWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRJbnN0YW5jZSA9IGluc3RhbmNlLnBhcmVudDtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFJvb3RFbGVtZW50cyA9IHBhcmVudEluc3RhbmNlID8gKDAsIGVsXzEuZ2V0Um9vdEVsZW1lbnRzRnJvbUNvbXBvbmVudEluc3RhbmNlKShwYXJlbnRJbnN0YW5jZSkgOiBbXTtcbiAgICAgICAgICAgIGxldCBlbCA9IGZpcnN0RWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4TGlzdCA9IFtdO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGluZGV4TGlzdC5wdXNoKEFycmF5LmZyb20oZWwucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzKS5pbmRleE9mKGVsKSk7XG4gICAgICAgICAgICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgfSB3aGlsZSAoZWwucGFyZW50RWxlbWVudCAmJiBwYXJlbnRSb290RWxlbWVudHMubGVuZ3RoICYmICFwYXJlbnRSb290RWxlbWVudHMuaW5jbHVkZXMoZWwpKTtcbiAgICAgICAgICAgIHRyZWVOb2RlLmRvbU9yZGVyID0gaW5kZXhMaXN0LnJldmVyc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRyZWVOb2RlLmRvbU9yZGVyID0gWy0xXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKF9hID0gaW5zdGFuY2Uuc3VzcGVuc2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdXNwZW5zZUtleSkge1xuICAgICAgICAgICAgdHJlZU5vZGUudGFncy5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogaW5zdGFuY2Uuc3VzcGVuc2Uuc3VzcGVuc2VLZXksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAweGU0OTJlNCxcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6IDB4ZmZmZmZmLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyB1cGRhdGUgaW5zdGFuY2VNYXBcbiAgICAgICAgICAgIHRoaXMubWFyayhpbnN0YW5jZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnZpc2l0Q29tcG9uZW50VHJlZShpbnN0YW5jZSwgdHJlZU5vZGUsIHRoaXMuY29tcG9uZW50RmlsdGVyLmZpbHRlciwgdGhpcy5jdHguY3VycmVudEFwcFJlY29yZC5vcHRpb25zLmFwcCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1hcmsgYW4gaW5zdGFuY2UgYXMgY2FwdHVyZWQgYW5kIHN0b3JlIGl0IGluIHRoZSBpbnN0YW5jZSBtYXAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1Z1ZX0gaW5zdGFuY2VcbiAgICAgKi9cbiAgICBtYXJrKGluc3RhbmNlLCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGluc3RhbmNlTWFwID0gdGhpcy5jdHguY3VycmVudEFwcFJlY29yZC5pbnN0YW5jZU1hcDtcbiAgICAgICAgaWYgKGZvcmNlIHx8ICFpbnN0YW5jZU1hcC5oYXMoaW5zdGFuY2UuX19WVUVfREVWVE9PTFNfVUlEX18pKSB7XG4gICAgICAgICAgICBpbnN0YW5jZU1hcC5zZXQoaW5zdGFuY2UuX19WVUVfREVWVE9PTFNfVUlEX18sIGluc3RhbmNlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuQ29tcG9uZW50V2Fsa2VyID0gQ29tcG9uZW50V2Fsa2VyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHJlZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///89399\n");
|
|
350
|
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.ComponentWalker = void 0;\n\nconst util_1 = __webpack_require__(33756);\n\nconst filter_1 = __webpack_require__(72396);\n\nconst el_1 = __webpack_require__(88722);\n\nclass ComponentWalker {\n constructor(maxDepth, filter, api, ctx) {\n this.ctx = ctx;\n this.api = api;\n this.maxDepth = maxDepth;\n this.componentFilter = new filter_1.ComponentFilter(filter);\n }\n\n getComponentTree(instance) {\n this.captureIds = new Map();\n return this.findQualifiedChildren(instance, 0);\n }\n\n getComponentParents(instance) {\n this.captureIds = new Map();\n const parents = [];\n this.captureId(instance);\n let parent = instance;\n\n while (parent = parent.parent) {\n this.captureId(parent);\n parents.push(parent);\n }\n\n return parents;\n }\n /**\n * Find qualified children from a single instance.\n * If the instance itself is qualified, just return itself.\n * This is ok because [].concat works in both cases.\n *\n * @param {Vue|Vnode} instance\n * @return {Vue|Array}\n */\n\n\n async findQualifiedChildren(instance, depth) {\n var _a;\n\n if (this.componentFilter.isQualified(instance) && !((_a = instance.type.devtools) === null || _a === void 0 ? void 0 : _a.hide)) {\n return [await this.capture(instance, null, depth)];\n } else if (instance.subTree) {\n // TODO functional components\n return this.findQualifiedChildrenFromList(this.getInternalInstanceChildren(instance.subTree), depth);\n } else {\n return [];\n }\n }\n /**\n * Iterate through an array of instances and flatten it into\n * an array of qualified instances. This is a depth-first\n * traversal - e.g. if an instance is not matched, we will\n * recursively go deeper until a qualified child is found.\n *\n * @param {Array} instances\n * @return {Array}\n */\n\n\n async findQualifiedChildrenFromList(instances, depth) {\n instances = instances.filter(child => {\n var _a;\n\n return !(0, util_1.isBeingDestroyed)(child) && !((_a = child.type.devtools) === null || _a === void 0 ? void 0 : _a.hide);\n });\n\n if (!this.componentFilter.filter) {\n return Promise.all(instances.map((child, index, list) => this.capture(child, list, depth)));\n } else {\n return Array.prototype.concat.apply([], await Promise.all(instances.map(i => this.findQualifiedChildren(i, depth))));\n }\n }\n /**\n * Get children from a component instance.\n */\n\n\n getInternalInstanceChildren(subTree, suspense = null) {\n const list = [];\n\n if (subTree.component) {\n !suspense ? list.push(subTree.component) : list.push({ ...subTree.component,\n suspense\n });\n } else if (subTree.suspense) {\n const suspenseKey = !subTree.suspense.isInFallback ? 'suspense default' : 'suspense fallback';\n list.push(...this.getInternalInstanceChildren(subTree.suspense.activeBranch, { ...subTree.suspense,\n suspenseKey\n }));\n } else if (Array.isArray(subTree.children)) {\n subTree.children.forEach(childSubTree => {\n if (childSubTree.component) {\n !suspense ? list.push(childSubTree.component) : list.push({ ...childSubTree.component,\n suspense\n });\n } else {\n list.push(...this.getInternalInstanceChildren(childSubTree, suspense));\n }\n });\n }\n\n return list.filter(child => {\n var _a;\n\n return !(0, util_1.isBeingDestroyed)(child) && !((_a = child.type.devtools) === null || _a === void 0 ? void 0 : _a.hide);\n });\n }\n\n captureId(instance) {\n if (!instance) return null; // instance.uid is not reliable in devtools as there\n // may be 2 roots with same uid which causes unexpected\n // behaviour\n\n const id = instance.__VUE_DEVTOOLS_UID__ != null ? instance.__VUE_DEVTOOLS_UID__ : (0, util_1.getUniqueComponentId)(instance, this.ctx);\n instance.__VUE_DEVTOOLS_UID__ = id; // Dedupe\n\n if (this.captureIds.has(id)) {\n return;\n } else {\n this.captureIds.set(id, undefined);\n }\n\n this.mark(instance);\n return id;\n }\n /**\n * Capture the meta information of an instance. (recursive)\n *\n * @param {Vue} instance\n * @return {Object}\n */\n\n\n async capture(instance, list, depth) {\n var _a;\n\n const id = this.captureId(instance);\n const name = (0, util_1.getInstanceName)(instance);\n const children = this.getInternalInstanceChildren(instance.subTree).filter(child => !(0, util_1.isBeingDestroyed)(child));\n const parents = this.getComponentParents(instance) || [];\n const inactive = !!instance.isDeactivated || parents.some(parent => parent.isDeactivated);\n const treeNode = {\n uid: instance.uid,\n id,\n name,\n renderKey: (0, util_1.getRenderKey)(instance.vnode ? instance.vnode.key : null),\n inactive,\n hasChildren: !!children.length,\n children: [],\n isFragment: (0, util_1.isFragment)(instance),\n tags: typeof instance.type !== 'function' ? [] : [{\n label: 'functional',\n textColor: 0x555555,\n backgroundColor: 0xeeeeee\n }]\n }; // capture children\n\n if (depth < this.maxDepth || instance.type.__isKeepAlive || parents.some(parent => parent.type.__isKeepAlive)) {\n treeNode.children = await Promise.all(children.map((child, index, list) => this.capture(child, list, depth + 1)).filter(Boolean));\n } // keep-alive\n\n\n if (instance.type.__isKeepAlive && instance.__v_cache) {\n const cachedComponents = Array.from(instance.__v_cache.values()).map(vnode => vnode.component).filter(Boolean);\n const childrenIds = children.map(child => child.__VUE_DEVTOOLS_UID__);\n\n for (const cachedChild of cachedComponents) {\n if (!childrenIds.includes(cachedChild.__VUE_DEVTOOLS_UID__)) {\n const node = await this.capture({ ...cachedChild,\n isDeactivated: true\n }, null, depth + 1);\n\n if (node) {\n treeNode.children.push(node);\n }\n }\n }\n } // ensure correct ordering\n\n\n const rootElements = (0, el_1.getRootElementsFromComponentInstance)(instance);\n const firstElement = rootElements[0];\n\n if (firstElement === null || firstElement === void 0 ? void 0 : firstElement.parentElement) {\n const parentInstance = instance.parent;\n const parentRootElements = parentInstance ? (0, el_1.getRootElementsFromComponentInstance)(parentInstance) : [];\n let el = firstElement;\n const indexList = [];\n\n do {\n indexList.push(Array.from(el.parentElement.childNodes).indexOf(el));\n el = el.parentElement;\n } while (el.parentElement && parentRootElements.length && !parentRootElements.includes(el));\n\n treeNode.domOrder = indexList.reverse();\n } else {\n treeNode.domOrder = [-1];\n }\n\n if ((_a = instance.suspense) === null || _a === void 0 ? void 0 : _a.suspenseKey) {\n treeNode.tags.push({\n label: instance.suspense.suspenseKey,\n backgroundColor: 0xe492e4,\n textColor: 0xffffff\n }); // update instanceMap\n\n this.mark(instance, true);\n }\n\n return this.api.visitComponentTree(instance, treeNode, this.componentFilter.filter, this.ctx.currentAppRecord.options.app);\n }\n /**\n * Mark an instance as captured and store it in the instance map.\n *\n * @param {Vue} instance\n */\n\n\n mark(instance, force = false) {\n const instanceMap = this.ctx.currentAppRecord.instanceMap;\n\n if (force || !instanceMap.has(instance.__VUE_DEVTOOLS_UID__)) {\n instanceMap.set(instance.__VUE_DEVTOOLS_UID__, instance);\n }\n }\n\n}\n\nexports.ComponentWalker = ComponentWalker;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODkzOTkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUdBOztBQUVBLE1BQWEsZUFBYixDQUE0QjtBQVMxQixjQUFhLFFBQWIsRUFBK0IsTUFBL0IsRUFBK0MsR0FBL0MsRUFBaUUsR0FBakUsRUFBb0Y7QUFDbEYsU0FBSyxHQUFMLEdBQVcsR0FBWDtBQUNBLFNBQUssR0FBTCxHQUFXLEdBQVg7QUFDQSxTQUFLLFFBQUwsR0FBZ0IsUUFBaEI7QUFDQSxTQUFLLGVBQUwsR0FBdUIsSUFBSSx3QkFBSixDQUFvQixNQUFwQixDQUF2QjtBQUNEOztBQUVELGtCQUFnQixDQUFFLFFBQUYsRUFBZTtBQUM3QixTQUFLLFVBQUwsR0FBa0IsSUFBSSxHQUFKLEVBQWxCO0FBQ0EsV0FBTyxLQUFLLHFCQUFMLENBQTJCLFFBQTNCLEVBQXFDLENBQXJDLENBQVA7QUFDRDs7QUFFRCxxQkFBbUIsQ0FBRSxRQUFGLEVBQWU7QUFDaEMsU0FBSyxVQUFMLEdBQWtCLElBQUksR0FBSixFQUFsQjtBQUNBLFVBQU0sT0FBTyxHQUFHLEVBQWhCO0FBQ0EsU0FBSyxTQUFMLENBQWUsUUFBZjtBQUNBLFFBQUksTUFBTSxHQUFHLFFBQWI7O0FBQ0EsV0FBUSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQXhCLEVBQWlDO0FBQy9CLFdBQUssU0FBTCxDQUFlLE1BQWY7QUFDQSxhQUFPLENBQUMsSUFBUixDQUFhLE1BQWI7QUFDRDs7QUFDRCxXQUFPLE9BQVA7QUFDRDtBQUVEOzs7Ozs7O0FBT0c7OztBQUNnQyxRQUFyQixxQkFBcUIsQ0FBRSxRQUFGLEVBQWlCLEtBQWpCLEVBQThCOzs7QUFDL0QsUUFBSSxLQUFLLGVBQUwsQ0FBcUIsV0FBckIsQ0FBaUMsUUFBakMsS0FBOEMsRUFBQyxjQUFRLENBQUMsSUFBVCxDQUFjLFFBQWQsTUFBc0IsSUFBdEIsSUFBc0IsYUFBdEIsR0FBc0IsTUFBdEIsR0FBc0IsR0FBRSxJQUF6QixDQUFsRCxFQUFpRjtBQUMvRSxhQUFPLENBQUMsTUFBTSxLQUFLLE9BQUwsQ0FBYSxRQUFiLEVBQXVCLElBQXZCLEVBQTZCLEtBQTdCLENBQVAsQ0FBUDtBQUNELEtBRkQsTUFFTyxJQUFJLFFBQVEsQ0FBQyxPQUFiLEVBQXNCO0FBQzNCO0FBQ0EsYUFBTyxLQUFLLDZCQUFMLENBQW1DLEtBQUssMkJBQUwsQ0FBaUMsUUFBUSxDQUFDLE9BQTFDLENBQW5DLEVBQXVGLEtBQXZGLENBQVA7QUFDRCxLQUhNLE1BR0E7QUFDTCxhQUFPLEVBQVA7QUFDRDtBQUNGO0FBRUQ7Ozs7Ozs7O0FBUUc7OztBQUN3QyxRQUE3Qiw2QkFBNkIsQ0FBRSxTQUFGLEVBQWEsS0FBYixFQUEwQjtBQUNuRSxhQUFTLEdBQUcsU0FBUyxDQUNsQixNQURTLENBQ0YsS0FBSyxJQUFHO0FBQUE7O0FBQUMsY0FBQyw2QkFBaUIsS0FBakIsQ0FBRCxJQUE0QixFQUFDLFdBQUssQ0FBQyxJQUFOLENBQVcsUUFBWCxNQUFtQixJQUFuQixJQUFtQixhQUFuQixHQUFtQixNQUFuQixHQUFtQixHQUFFLElBQXRCLENBQTVCO0FBQXNELEtBRDdELENBQVo7O0FBRUEsUUFBSSxDQUFDLEtBQUssZUFBTCxDQUFxQixNQUExQixFQUFrQztBQUNoQyxhQUFPLE9BQU8sQ0FBQyxHQUFSLENBQVksU0FBUyxDQUFDLEdBQVYsQ0FBYyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsSUFBZixLQUF3QixLQUFLLE9BQUwsQ0FBYSxLQUFiLEVBQW9CLElBQXBCLEVBQTBCLEtBQTFCLENBQXRDLENBQVosQ0FBUDtBQUNELEtBRkQsTUFFTztBQUNMLGFBQU8sS0FBSyxDQUFDLFNBQU4sQ0FBZ0IsTUFBaEIsQ0FBdUIsS0FBdkIsQ0FBNkIsRUFBN0IsRUFBaUMsTUFBTSxPQUFPLENBQUMsR0FBUixDQUFZLFNBQVMsQ0FBQyxHQUFWLENBQWMsQ0FBQyxJQUFJLEtBQUsscUJBQUwsQ0FBMkIsQ0FBM0IsRUFBOEIsS0FBOUIsQ0FBbkIsQ0FBWixDQUF2QyxDQUFQO0FBQ0Q7QUFDRjtBQUVEOztBQUVHOzs7QUFDSyw2QkFBMkIsQ0FBRSxPQUFGLEVBQVcsUUFBUSxHQUFHLElBQXRCLEVBQTBCO0FBQzNELFVBQU0sSUFBSSxHQUFHLEVBQWI7O0FBQ0EsUUFBSSxPQUFPLENBQUMsU0FBWixFQUF1QjtBQUNyQixPQUFDLFFBQUQsR0FBWSxJQUFJLENBQUMsSUFBTCxDQUFVLE9BQU8sQ0FBQyxTQUFsQixDQUFaLEdBQTJDLElBQUksQ0FBQyxJQUFMLENBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFiO0FBQXdCO0FBQXhCLE9BQVYsQ0FBM0M7QUFDRCxLQUZELE1BRU8sSUFBSSxPQUFPLENBQUMsUUFBWixFQUFzQjtBQUMzQixZQUFNLFdBQVcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFSLENBQWlCLFlBQWxCLEdBQWlDLGtCQUFqQyxHQUFzRCxtQkFBMUU7QUFDQSxVQUFJLENBQUMsSUFBTCxDQUFVLEdBQUcsS0FBSywyQkFBTCxDQUFpQyxPQUFPLENBQUMsUUFBUixDQUFpQixZQUFsRCxFQUFnRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQWI7QUFBdUI7QUFBdkIsT0FBaEUsQ0FBYjtBQUNELEtBSE0sTUFHQSxJQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsT0FBTyxDQUFDLFFBQXRCLENBQUosRUFBcUM7QUFDMUMsYUFBTyxDQUFDLFFBQVIsQ0FBaUIsT0FBakIsQ0FBeUIsWUFBWSxJQUFHO0FBQ3RDLFlBQUksWUFBWSxDQUFDLFNBQWpCLEVBQTRCO0FBQzFCLFdBQUMsUUFBRCxHQUFZLElBQUksQ0FBQyxJQUFMLENBQVUsWUFBWSxDQUFDLFNBQXZCLENBQVosR0FBZ0QsSUFBSSxDQUFDLElBQUwsQ0FBVSxFQUFFLEdBQUcsWUFBWSxDQUFDLFNBQWxCO0FBQTZCO0FBQTdCLFdBQVYsQ0FBaEQ7QUFDRCxTQUZELE1BRU87QUFDTCxjQUFJLENBQUMsSUFBTCxDQUFVLEdBQUcsS0FBSywyQkFBTCxDQUFpQyxZQUFqQyxFQUErQyxRQUEvQyxDQUFiO0FBQ0Q7QUFDRixPQU5EO0FBT0Q7O0FBQ0QsV0FBTyxJQUFJLENBQUMsTUFBTCxDQUFZLEtBQUssSUFBRztBQUFBOztBQUFDLGNBQUMsNkJBQWlCLEtBQWpCLENBQUQsSUFBNEIsRUFBQyxXQUFLLENBQUMsSUFBTixDQUFXLFFBQVgsTUFBbUIsSUFBbkIsSUFBbUIsYUFBbkIsR0FBbUIsTUFBbkIsR0FBbUIsR0FBRSxJQUF0QixDQUE1QjtBQUFzRCxLQUEzRSxDQUFQO0FBQ0Q7O0FBRU8sV0FBUyxDQUFFLFFBQUYsRUFBVTtBQUN6QixRQUFJLENBQUMsUUFBTCxFQUFlLE9BQU8sSUFBUCxDQURVLENBR3pCO0FBQ0E7QUFDQTs7QUFDQSxVQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsb0JBQVQsSUFBaUMsSUFBakMsR0FBd0MsUUFBUSxDQUFDLG9CQUFqRCxHQUF3RSxpQ0FBcUIsUUFBckIsRUFBK0IsS0FBSyxHQUFwQyxDQUFuRjtBQUNBLFlBQVEsQ0FBQyxvQkFBVCxHQUFnQyxFQUFoQyxDQVB5QixDQVN6Qjs7QUFDQSxRQUFJLEtBQUssVUFBTCxDQUFnQixHQUFoQixDQUFvQixFQUFwQixDQUFKLEVBQTZCO0FBQzNCO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsV0FBSyxVQUFMLENBQWdCLEdBQWhCLENBQW9CLEVBQXBCLEVBQXdCLFNBQXhCO0FBQ0Q7O0FBRUQsU0FBSyxJQUFMLENBQVUsUUFBVjtBQUVBLFdBQU8sRUFBUDtBQUNEO0FBRUQ7Ozs7O0FBS0c7OztBQUNrQixRQUFQLE9BQU8sQ0FBRSxRQUFGLEVBQWlCLElBQWpCLEVBQThCLEtBQTlCLEVBQTJDOzs7QUFDOUQsVUFBTSxFQUFFLEdBQUcsS0FBSyxTQUFMLENBQWUsUUFBZixDQUFYO0FBRUEsVUFBTSxJQUFJLEdBQUcsNEJBQWdCLFFBQWhCLENBQWI7QUFFQSxVQUFNLFFBQVEsR0FBRyxLQUFLLDJCQUFMLENBQWlDLFFBQVEsQ0FBQyxPQUExQyxFQUNkLE1BRGMsQ0FDUCxLQUFLLElBQUksQ0FBQyw2QkFBaUIsS0FBakIsQ0FESCxDQUFqQjtBQUdBLFVBQU0sT0FBTyxHQUFHLEtBQUssbUJBQUwsQ0FBeUIsUUFBekIsS0FBc0MsRUFBdEQ7QUFFQSxVQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQVgsSUFBNEIsT0FBTyxDQUFDLElBQVIsQ0FBYSxNQUFNLElBQUksTUFBTSxDQUFDLGFBQTlCLENBQTdDO0FBRUEsVUFBTSxRQUFRLEdBQXNCO0FBQ2xDLFNBQUcsRUFBRSxRQUFRLENBQUMsR0FEb0I7QUFFbEMsUUFGa0M7QUFHbEMsVUFIa0M7QUFJbEMsZUFBUyxFQUFFLHlCQUFhLFFBQVEsQ0FBQyxLQUFULEdBQWlCLFFBQVEsQ0FBQyxLQUFULENBQWUsR0FBaEMsR0FBc0MsSUFBbkQsQ0FKdUI7QUFLbEMsY0FMa0M7QUFNbEMsaUJBQVcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BTlU7QUFPbEMsY0FBUSxFQUFFLEVBUHdCO0FBUWxDLGdCQUFVLEVBQUUsdUJBQVcsUUFBWCxDQVJzQjtBQVNsQyxVQUFJLEVBQUUsT0FBTyxRQUFRLENBQUMsSUFBaEIsS0FBeUIsVUFBekIsR0FDRixFQURFLEdBRUYsQ0FDRTtBQUNFLGFBQUssRUFBRSxZQURUO0FBRUUsaUJBQVMsRUFBRSxRQUZiO0FBR0UsdUJBQWUsRUFBRTtBQUhuQixPQURGO0FBWDhCLEtBQXBDLENBWjhELENBZ0M5RDs7QUFDQSxRQUFJLEtBQUssR0FBRyxLQUFLLFFBQWIsSUFBeUIsUUFBUSxDQUFDLElBQVQsQ0FBYyxhQUF2QyxJQUF3RCxPQUFPLENBQUMsSUFBUixDQUFhLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBUCxDQUFZLGFBQW5DLENBQTVELEVBQStHO0FBQzdHLGNBQVEsQ0FBQyxRQUFULEdBQW9CLE1BQU0sT0FBTyxDQUFDLEdBQVIsQ0FBWSxRQUFRLENBQzNDLEdBRG1DLENBQy9CLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxJQUFmLEtBQXdCLEtBQUssT0FBTCxDQUFhLEtBQWIsRUFBb0IsSUFBcEIsRUFBMEIsS0FBSyxHQUFHLENBQWxDLENBRE8sRUFFbkMsTUFGbUMsQ0FFNUIsT0FGNEIsQ0FBWixDQUExQjtBQUdELEtBckM2RCxDQXVDOUQ7OztBQUNBLFFBQUksUUFBUSxDQUFDLElBQVQsQ0FBYyxhQUFkLElBQStCLFFBQVEsQ0FBQyxTQUE1QyxFQUF1RDtBQUNyRCxZQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxJQUFOLENBQVcsUUFBUSxDQUFDLFNBQVQsQ0FBbUIsTUFBbkIsRUFBWCxFQUF3QyxHQUF4QyxDQUE2QyxLQUFELElBQWdCLEtBQUssQ0FBQyxTQUFsRSxFQUE2RSxNQUE3RSxDQUFvRixPQUFwRixDQUF6QjtBQUNBLFlBQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFULENBQWEsS0FBSyxJQUFJLEtBQUssQ0FBQyxvQkFBNUIsQ0FBcEI7O0FBQ0EsV0FBSyxNQUFNLFdBQVgsSUFBMEIsZ0JBQTFCLEVBQTRDO0FBQzFDLFlBQUksQ0FBQyxXQUFXLENBQUMsUUFBWixDQUFxQixXQUFXLENBQUMsb0JBQWpDLENBQUwsRUFBNkQ7QUFDM0QsZ0JBQU0sSUFBSSxHQUFHLE1BQU0sS0FBSyxPQUFMLENBQWEsRUFBRSxHQUFHLFdBQUw7QUFBa0IseUJBQWEsRUFBRTtBQUFqQyxXQUFiLEVBQXNELElBQXRELEVBQTRELEtBQUssR0FBRyxDQUFwRSxDQUFuQjs7QUFDQSxjQUFJLElBQUosRUFBVTtBQUNSLG9CQUFRLENBQUMsUUFBVCxDQUFrQixJQUFsQixDQUF1QixJQUF2QjtBQUNEO0FBQ0Y7QUFDRjtBQUNGLEtBbkQ2RCxDQXFEOUQ7OztBQUNBLFVBQU0sWUFBWSxHQUFHLCtDQUFxQyxRQUFyQyxDQUFyQjtBQUNBLFVBQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxDQUFELENBQWpDOztBQUNBLFFBQUksWUFBWSxTQUFaLGdCQUFZLFdBQVosR0FBWSxNQUFaLGVBQVksQ0FBRSxhQUFsQixFQUFpQztBQUMvQixZQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBaEM7QUFDQSxZQUFNLGtCQUFrQixHQUFHLGNBQWMsR0FBRywrQ0FBcUMsY0FBckMsQ0FBSCxHQUEwRCxFQUFuRztBQUNBLFVBQUksRUFBRSxHQUFHLFlBQVQ7QUFDQSxZQUFNLFNBQVMsR0FBRyxFQUFsQjs7QUFDQSxTQUFHO0FBQ0QsaUJBQVMsQ0FBQyxJQUFWLENBQWUsS0FBSyxDQUFDLElBQU4sQ0FBVyxFQUFFLENBQUMsYUFBSCxDQUFpQixVQUE1QixFQUF3QyxPQUF4QyxDQUFnRCxFQUFoRCxDQUFmO0FBQ0EsVUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFSO0FBQ0QsT0FIRCxRQUdTLEVBQUUsQ0FBQyxhQUFILElBQW9CLGtCQUFrQixDQUFDLE1BQXZDLElBQWlELENBQUMsa0JBQWtCLENBQUMsUUFBbkIsQ0FBNEIsRUFBNUIsQ0FIM0Q7O0FBSUEsY0FBUSxDQUFDLFFBQVQsR0FBb0IsU0FBUyxDQUFDLE9BQVYsRUFBcEI7QUFDRCxLQVZELE1BVU87QUFDTCxjQUFRLENBQUMsUUFBVCxHQUFvQixDQUFDLENBQUMsQ0FBRixDQUFwQjtBQUNEOztBQUVELFFBQUksY0FBUSxDQUFDLFFBQVQsTUFBaUIsSUFBakIsSUFBaUIsYUFBakIsR0FBaUIsTUFBakIsR0FBaUIsR0FBRSxXQUF2QixFQUFvQztBQUNsQyxjQUFRLENBQUMsSUFBVCxDQUFjLElBQWQsQ0FBbUI7QUFDakIsYUFBSyxFQUFFLFFBQVEsQ0FBQyxRQUFULENBQWtCLFdBRFI7QUFFakIsdUJBQWUsRUFBRSxRQUZBO0FBR2pCLGlCQUFTLEVBQUU7QUFITSxPQUFuQixFQURrQyxDQU1sQzs7QUFDQSxXQUFLLElBQUwsQ0FBVSxRQUFWLEVBQW9CLElBQXBCO0FBQ0Q7O0FBRUQsV0FBTyxLQUFLLEdBQUwsQ0FBUyxrQkFBVCxDQUE0QixRQUE1QixFQUFzQyxRQUF0QyxFQUFnRCxLQUFLLGVBQUwsQ0FBcUIsTUFBckUsRUFBNkUsS0FBSyxHQUFMLENBQVMsZ0JBQVQsQ0FBMEIsT0FBMUIsQ0FBa0MsR0FBL0csQ0FBUDtBQUNEO0FBRUQ7Ozs7QUFJRzs7O0FBQ0ssTUFBSSxDQUFFLFFBQUYsRUFBWSxLQUFLLEdBQUcsS0FBcEIsRUFBeUI7QUFDbkMsVUFBTSxXQUFXLEdBQUcsS0FBSyxHQUFMLENBQVMsZ0JBQVQsQ0FBMEIsV0FBOUM7O0FBQ0EsUUFBSSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBWixDQUFnQixRQUFRLENBQUMsb0JBQXpCLENBQWQsRUFBOEQ7QUFDNUQsaUJBQVcsQ0FBQyxHQUFaLENBQWdCLFFBQVEsQ0FBQyxvQkFBekIsRUFBK0MsUUFBL0M7QUFDRDtBQUNGOztBQXJOeUI7O0FBQTVCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi8uLi9zcmMvY29tcG9uZW50cy90cmVlLnRzPzQwNzMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNvbXBvbmVudFdhbGtlciA9IHZvaWQgMDtcbmNvbnN0IHV0aWxfMSA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5jb25zdCBmaWx0ZXJfMSA9IHJlcXVpcmUoXCIuL2ZpbHRlclwiKTtcbmNvbnN0IGVsXzEgPSByZXF1aXJlKFwiLi9lbFwiKTtcbmNsYXNzIENvbXBvbmVudFdhbGtlciB7XG4gICAgY29uc3RydWN0b3IobWF4RGVwdGgsIGZpbHRlciwgYXBpLCBjdHgpIHtcbiAgICAgICAgdGhpcy5jdHggPSBjdHg7XG4gICAgICAgIHRoaXMuYXBpID0gYXBpO1xuICAgICAgICB0aGlzLm1heERlcHRoID0gbWF4RGVwdGg7XG4gICAgICAgIHRoaXMuY29tcG9uZW50RmlsdGVyID0gbmV3IGZpbHRlcl8xLkNvbXBvbmVudEZpbHRlcihmaWx0ZXIpO1xuICAgIH1cbiAgICBnZXRDb21wb25lbnRUcmVlKGluc3RhbmNlKSB7XG4gICAgICAgIHRoaXMuY2FwdHVyZUlkcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZFF1YWxpZmllZENoaWxkcmVuKGluc3RhbmNlLCAwKTtcbiAgICB9XG4gICAgZ2V0Q29tcG9uZW50UGFyZW50cyhpbnN0YW5jZSkge1xuICAgICAgICB0aGlzLmNhcHR1cmVJZHMgPSBuZXcgTWFwKCk7XG4gICAgICAgIGNvbnN0IHBhcmVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5jYXB0dXJlSWQoaW5zdGFuY2UpO1xuICAgICAgICBsZXQgcGFyZW50ID0gaW5zdGFuY2U7XG4gICAgICAgIHdoaWxlICgocGFyZW50ID0gcGFyZW50LnBhcmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2FwdHVyZUlkKHBhcmVudCk7XG4gICAgICAgICAgICBwYXJlbnRzLnB1c2gocGFyZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyZW50cztcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZCBxdWFsaWZpZWQgY2hpbGRyZW4gZnJvbSBhIHNpbmdsZSBpbnN0YW5jZS5cbiAgICAgKiBJZiB0aGUgaW5zdGFuY2UgaXRzZWxmIGlzIHF1YWxpZmllZCwganVzdCByZXR1cm4gaXRzZWxmLlxuICAgICAqIFRoaXMgaXMgb2sgYmVjYXVzZSBbXS5jb25jYXQgd29ya3MgaW4gYm90aCBjYXNlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VnVlfFZub2RlfSBpbnN0YW5jZVxuICAgICAqIEByZXR1cm4ge1Z1ZXxBcnJheX1cbiAgICAgKi9cbiAgICBhc3luYyBmaW5kUXVhbGlmaWVkQ2hpbGRyZW4oaW5zdGFuY2UsIGRlcHRoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50RmlsdGVyLmlzUXVhbGlmaWVkKGluc3RhbmNlKSAmJiAhKChfYSA9IGluc3RhbmNlLnR5cGUuZGV2dG9vbHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5oaWRlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFthd2FpdCB0aGlzLmNhcHR1cmUoaW5zdGFuY2UsIG51bGwsIGRlcHRoKV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaW5zdGFuY2Uuc3ViVHJlZSkge1xuICAgICAgICAgICAgLy8gVE9ETyBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRRdWFsaWZpZWRDaGlsZHJlbkZyb21MaXN0KHRoaXMuZ2V0SW50ZXJuYWxJbnN0YW5jZUNoaWxkcmVuKGluc3RhbmNlLnN1YlRyZWUpLCBkZXB0aCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogSXRlcmF0ZSB0aHJvdWdoIGFuIGFycmF5IG9mIGluc3RhbmNlcyBhbmQgZmxhdHRlbiBpdCBpbnRvXG4gICAgICogYW4gYXJyYXkgb2YgcXVhbGlmaWVkIGluc3RhbmNlcy4gVGhpcyBpcyBhIGRlcHRoLWZpcnN0XG4gICAgICogdHJhdmVyc2FsIC0gZS5nLiBpZiBhbiBpbnN0YW5jZSBpcyBub3QgbWF0Y2hlZCwgd2Ugd2lsbFxuICAgICAqIHJlY3Vyc2l2ZWx5IGdvIGRlZXBlciB1bnRpbCBhIHF1YWxpZmllZCBjaGlsZCBpcyBmb3VuZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGluc3RhbmNlc1xuICAgICAqIEByZXR1cm4ge0FycmF5fVxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRRdWFsaWZpZWRDaGlsZHJlbkZyb21MaXN0KGluc3RhbmNlcywgZGVwdGgpIHtcbiAgICAgICAgaW5zdGFuY2VzID0gaW5zdGFuY2VzXG4gICAgICAgICAgICAuZmlsdGVyKGNoaWxkID0+IHsgdmFyIF9hOyByZXR1cm4gISgwLCB1dGlsXzEuaXNCZWluZ0Rlc3Ryb3llZCkoY2hpbGQpICYmICEoKF9hID0gY2hpbGQudHlwZS5kZXZ0b29scykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmhpZGUpOyB9KTtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudEZpbHRlci5maWx0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChpbnN0YW5jZXMubWFwKChjaGlsZCwgaW5kZXgsIGxpc3QpID0+IHRoaXMuY2FwdHVyZShjaGlsZCwgbGlzdCwgZGVwdGgpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXdhaXQgUHJvbWlzZS5hbGwoaW5zdGFuY2VzLm1hcChpID0+IHRoaXMuZmluZFF1YWxpZmllZENoaWxkcmVuKGksIGRlcHRoKSkpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgY2hpbGRyZW4gZnJvbSBhIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBnZXRJbnRlcm5hbEluc3RhbmNlQ2hpbGRyZW4oc3ViVHJlZSwgc3VzcGVuc2UgPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBbXTtcbiAgICAgICAgaWYgKHN1YlRyZWUuY29tcG9uZW50KSB7XG4gICAgICAgICAgICAhc3VzcGVuc2UgPyBsaXN0LnB1c2goc3ViVHJlZS5jb21wb25lbnQpIDogbGlzdC5wdXNoKHsgLi4uc3ViVHJlZS5jb21wb25lbnQsIHN1c3BlbnNlIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN1YlRyZWUuc3VzcGVuc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1c3BlbnNlS2V5ID0gIXN1YlRyZWUuc3VzcGVuc2UuaXNJbkZhbGxiYWNrID8gJ3N1c3BlbnNlIGRlZmF1bHQnIDogJ3N1c3BlbnNlIGZhbGxiYWNrJztcbiAgICAgICAgICAgIGxpc3QucHVzaCguLi50aGlzLmdldEludGVybmFsSW5zdGFuY2VDaGlsZHJlbihzdWJUcmVlLnN1c3BlbnNlLmFjdGl2ZUJyYW5jaCwgeyAuLi5zdWJUcmVlLnN1c3BlbnNlLCBzdXNwZW5zZUtleSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzdWJUcmVlLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgc3ViVHJlZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkU3ViVHJlZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkU3ViVHJlZS5jb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgIXN1c3BlbnNlID8gbGlzdC5wdXNoKGNoaWxkU3ViVHJlZS5jb21wb25lbnQpIDogbGlzdC5wdXNoKHsgLi4uY2hpbGRTdWJUcmVlLmNvbXBvbmVudCwgc3VzcGVuc2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2goLi4udGhpcy5nZXRJbnRlcm5hbEluc3RhbmNlQ2hpbGRyZW4oY2hpbGRTdWJUcmVlLCBzdXNwZW5zZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaXN0LmZpbHRlcihjaGlsZCA9PiB7IHZhciBfYTsgcmV0dXJuICEoMCwgdXRpbF8xLmlzQmVpbmdEZXN0cm95ZWQpKGNoaWxkKSAmJiAhKChfYSA9IGNoaWxkLnR5cGUuZGV2dG9vbHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5oaWRlKTsgfSk7XG4gICAgfVxuICAgIGNhcHR1cmVJZChpbnN0YW5jZSkge1xuICAgICAgICBpZiAoIWluc3RhbmNlKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIC8vIGluc3RhbmNlLnVpZCBpcyBub3QgcmVsaWFibGUgaW4gZGV2dG9vbHMgYXMgdGhlcmVcbiAgICAgICAgLy8gbWF5IGJlIDIgcm9vdHMgd2l0aCBzYW1lIHVpZCB3aGljaCBjYXVzZXMgdW5leHBlY3RlZFxuICAgICAgICAvLyBiZWhhdmlvdXJcbiAgICAgICAgY29uc3QgaWQgPSBpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19VSURfXyAhPSBudWxsID8gaW5zdGFuY2UuX19WVUVfREVWVE9PTFNfVUlEX18gOiAoMCwgdXRpbF8xLmdldFVuaXF1ZUNvbXBvbmVudElkKShpbnN0YW5jZSwgdGhpcy5jdHgpO1xuICAgICAgICBpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19VSURfXyA9IGlkO1xuICAgICAgICAvLyBEZWR1cGVcbiAgICAgICAgaWYgKHRoaXMuY2FwdHVyZUlkcy5oYXMoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhcHR1cmVJZHMuc2V0KGlkLCB1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWFyayhpbnN0YW5jZSk7XG4gICAgICAgIHJldHVybiBpZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FwdHVyZSB0aGUgbWV0YSBpbmZvcm1hdGlvbiBvZiBhbiBpbnN0YW5jZS4gKHJlY3Vyc2l2ZSlcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VnVlfSBpbnN0YW5jZVxuICAgICAqIEByZXR1cm4ge09iamVjdH1cbiAgICAgKi9cbiAgICBhc3luYyBjYXB0dXJlKGluc3RhbmNlLCBsaXN0LCBkZXB0aCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5jYXB0dXJlSWQoaW5zdGFuY2UpO1xuICAgICAgICBjb25zdCBuYW1lID0gKDAsIHV0aWxfMS5nZXRJbnN0YW5jZU5hbWUpKGluc3RhbmNlKTtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmdldEludGVybmFsSW5zdGFuY2VDaGlsZHJlbihpbnN0YW5jZS5zdWJUcmVlKVxuICAgICAgICAgICAgLmZpbHRlcihjaGlsZCA9PiAhKDAsIHV0aWxfMS5pc0JlaW5nRGVzdHJveWVkKShjaGlsZCkpO1xuICAgICAgICBjb25zdCBwYXJlbnRzID0gdGhpcy5nZXRDb21wb25lbnRQYXJlbnRzKGluc3RhbmNlKSB8fCBbXTtcbiAgICAgICAgY29uc3QgaW5hY3RpdmUgPSAhIWluc3RhbmNlLmlzRGVhY3RpdmF0ZWQgfHwgcGFyZW50cy5zb21lKHBhcmVudCA9PiBwYXJlbnQuaXNEZWFjdGl2YXRlZCk7XG4gICAgICAgIGNvbnN0IHRyZWVOb2RlID0ge1xuICAgICAgICAgICAgdWlkOiBpbnN0YW5jZS51aWQsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICByZW5kZXJLZXk6ICgwLCB1dGlsXzEuZ2V0UmVuZGVyS2V5KShpbnN0YW5jZS52bm9kZSA/IGluc3RhbmNlLnZub2RlLmtleSA6IG51bGwpLFxuICAgICAgICAgICAgaW5hY3RpdmUsXG4gICAgICAgICAgICBoYXNDaGlsZHJlbjogISFjaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICBpc0ZyYWdtZW50OiAoMCwgdXRpbF8xLmlzRnJhZ21lbnQpKGluc3RhbmNlKSxcbiAgICAgICAgICAgIHRhZ3M6IHR5cGVvZiBpbnN0YW5jZS50eXBlICE9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2Z1bmN0aW9uYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yOiAweDU1NTU1NSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogMHhlZWVlZWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgICAgLy8gY2FwdHVyZSBjaGlsZHJlblxuICAgICAgICBpZiAoZGVwdGggPCB0aGlzLm1heERlcHRoIHx8IGluc3RhbmNlLnR5cGUuX19pc0tlZXBBbGl2ZSB8fCBwYXJlbnRzLnNvbWUocGFyZW50ID0+IHBhcmVudC50eXBlLl9faXNLZWVwQWxpdmUpKSB7XG4gICAgICAgICAgICB0cmVlTm9kZS5jaGlsZHJlbiA9IGF3YWl0IFByb21pc2UuYWxsKGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgLm1hcCgoY2hpbGQsIGluZGV4LCBsaXN0KSA9PiB0aGlzLmNhcHR1cmUoY2hpbGQsIGxpc3QsIGRlcHRoICsgMSkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8ga2VlcC1hbGl2ZVxuICAgICAgICBpZiAoaW5zdGFuY2UudHlwZS5fX2lzS2VlcEFsaXZlICYmIGluc3RhbmNlLl9fdl9jYWNoZSkge1xuICAgICAgICAgICAgY29uc3QgY2FjaGVkQ29tcG9uZW50cyA9IEFycmF5LmZyb20oaW5zdGFuY2UuX192X2NhY2hlLnZhbHVlcygpKS5tYXAoKHZub2RlKSA9PiB2bm9kZS5jb21wb25lbnQpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuSWRzID0gY2hpbGRyZW4ubWFwKGNoaWxkID0+IGNoaWxkLl9fVlVFX0RFVlRPT0xTX1VJRF9fKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FjaGVkQ2hpbGQgb2YgY2FjaGVkQ29tcG9uZW50cykge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGRyZW5JZHMuaW5jbHVkZXMoY2FjaGVkQ2hpbGQuX19WVUVfREVWVE9PTFNfVUlEX18pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBhd2FpdCB0aGlzLmNhcHR1cmUoeyAuLi5jYWNoZWRDaGlsZCwgaXNEZWFjdGl2YXRlZDogdHJ1ZSB9LCBudWxsLCBkZXB0aCArIDEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJlZU5vZGUuY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBlbnN1cmUgY29ycmVjdCBvcmRlcmluZ1xuICAgICAgICBjb25zdCByb290RWxlbWVudHMgPSAoMCwgZWxfMS5nZXRSb290RWxlbWVudHNGcm9tQ29tcG9uZW50SW5zdGFuY2UpKGluc3RhbmNlKTtcbiAgICAgICAgY29uc3QgZmlyc3RFbGVtZW50ID0gcm9vdEVsZW1lbnRzWzBdO1xuICAgICAgICBpZiAoZmlyc3RFbGVtZW50ID09PSBudWxsIHx8IGZpcnN0RWxlbWVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmlyc3RFbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEluc3RhbmNlID0gaW5zdGFuY2UucGFyZW50O1xuICAgICAgICAgICAgY29uc3QgcGFyZW50Um9vdEVsZW1lbnRzID0gcGFyZW50SW5zdGFuY2UgPyAoMCwgZWxfMS5nZXRSb290RWxlbWVudHNGcm9tQ29tcG9uZW50SW5zdGFuY2UpKHBhcmVudEluc3RhbmNlKSA6IFtdO1xuICAgICAgICAgICAgbGV0IGVsID0gZmlyc3RFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgaW5kZXhMaXN0ID0gW107XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgaW5kZXhMaXN0LnB1c2goQXJyYXkuZnJvbShlbC5wYXJlbnRFbGVtZW50LmNoaWxkTm9kZXMpLmluZGV4T2YoZWwpKTtcbiAgICAgICAgICAgICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICB9IHdoaWxlIChlbC5wYXJlbnRFbGVtZW50ICYmIHBhcmVudFJvb3RFbGVtZW50cy5sZW5ndGggJiYgIXBhcmVudFJvb3RFbGVtZW50cy5pbmNsdWRlcyhlbCkpO1xuICAgICAgICAgICAgdHJlZU5vZGUuZG9tT3JkZXIgPSBpbmRleExpc3QucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHJlZU5vZGUuZG9tT3JkZXIgPSBbLTFdO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoX2EgPSBpbnN0YW5jZS5zdXNwZW5zZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1c3BlbnNlS2V5KSB7XG4gICAgICAgICAgICB0cmVlTm9kZS50YWdzLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBpbnN0YW5jZS5zdXNwZW5zZS5zdXNwZW5zZUtleSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IDB4ZTQ5MmU0LFxuICAgICAgICAgICAgICAgIHRleHRDb2xvcjogMHhmZmZmZmYsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBpbnN0YW5jZU1hcFxuICAgICAgICAgICAgdGhpcy5tYXJrKGluc3RhbmNlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hcGkudmlzaXRDb21wb25lbnRUcmVlKGluc3RhbmNlLCB0cmVlTm9kZSwgdGhpcy5jb21wb25lbnRGaWx0ZXIuZmlsdGVyLCB0aGlzLmN0eC5jdXJyZW50QXBwUmVjb3JkLm9wdGlvbnMuYXBwKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTWFyayBhbiBpbnN0YW5jZSBhcyBjYXB0dXJlZCBhbmQgc3RvcmUgaXQgaW4gdGhlIGluc3RhbmNlIG1hcC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VnVlfSBpbnN0YW5jZVxuICAgICAqL1xuICAgIG1hcmsoaW5zdGFuY2UsIGZvcmNlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2VNYXAgPSB0aGlzLmN0eC5jdXJyZW50QXBwUmVjb3JkLmluc3RhbmNlTWFwO1xuICAgICAgICBpZiAoZm9yY2UgfHwgIWluc3RhbmNlTWFwLmhhcyhpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19VSURfXykpIHtcbiAgICAgICAgICAgIGluc3RhbmNlTWFwLnNldChpbnN0YW5jZS5fX1ZVRV9ERVZUT09MU19VSURfXywgaW5zdGFuY2UpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Db21wb25lbnRXYWxrZXIgPSBDb21wb25lbnRXYWxrZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10cmVlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///89399\n");
|
|
351
351
|
|
|
352
352
|
/***/ }),
|
|
353
353
|
|
|
@@ -387,7 +387,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
387
387
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
388
388
|
|
|
389
389
|
"use strict";
|
|
390
|
-
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Bridge = void 0;\n\nconst events_1 = __webpack_require__(22699);\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 this._time = null;\n }\n\n send(event, payload) {\n if (Array.isArray(payload)) {\n const lastIndex = payload.length - 1;\n payload.forEach((chunk, index) => {\n this._send({\n event,\n _chunk: chunk,\n last: index === lastIndex\n });\n });\n\n this._flush();\n } else if (this._time === null) {\n this._send([{\n event,\n payload\n }]);\n\n this._time = Date.now();\n } else {\n this._batchingQueue.push({\n event,\n payload\n });\n\n const now = Date.now();\n\n if (now - this._time > BATCH_DURATION) {\n this._flush();\n } else {\n this._timer = setTimeout(() => this._flush(), BATCH_DURATION);\n }\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._batchingQueue = [];\n this._time = null;\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 requestAnimationFrame(() => this._nextSend());\n }\n\n}\n\nexports.Bridge = Bridge;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUwsR0FBdUIsRUFBdkI7QUFDRDtBQUNGLEtBTk0sTUFNQSxJQUFJLE9BQU8sQ0FBQyxLQUFaLEVBQW1CO0FBQ3hCLFdBQUssSUFBTCxDQUFVLE9BQU8sQ0FBQyxLQUFsQixFQUF5QixPQUFPLENBQUMsT0FBakM7QUFDRDtBQUNGLEdBcEZxQyxDQXNGdEM7OztBQUNBLE9BQUssQ0FBRSxRQUFGLEVBQVU7QUFDYixTQUFLLGFBQUwsQ0FBbUIsSUFBbkIsQ0FBd0IsUUFBeEI7O0FBQ0EsU0FBSyxTQUFMO0FBQ0Q7O0FBRUQsV0FBUztBQUNQLFFBQUksQ0FBQyxLQUFLLGFBQUwsQ0FBbUIsTUFBcEIsSUFBOEIsS0FBSyxRQUF2QyxFQUFpRDtBQUNqRCxTQUFLLFFBQUwsR0FBZ0IsSUFBaEI7O0FBQ0EsVUFBTSxRQUFRLEdBQUcsS0FBSyxhQUFMLENBQW1CLEtBQW5CLEVBQWpCOztBQUNBLFFBQUk7QUFDRixXQUFLLElBQUwsQ0FBVSxJQUFWLENBQWUsUUFBZjtBQUNELEtBRkQsQ0FFRSxPQUFPLEdBQVAsRUFBWTtBQUNaLFVBQUksR0FBRyxDQUFDLE9BQUosS0FBZ0IsaURBQXBCLEVBQXVFO0FBQ3JFLGFBQUssYUFBTCxDQUFtQixNQUFuQixDQUEwQixDQUExQixFQUE2QixDQUE3QixFQUFnQyxRQUFRLENBQUMsR0FBVCxDQUFhLE9BQU8sSUFBSSxDQUFDLE9BQUQsQ0FBeEIsQ0FBaEM7QUFDRDtBQUNGOztBQUNELFNBQUssUUFBTCxHQUFnQixLQUFoQjtBQUNBLHlCQUFxQixDQUFDLE1BQU0sS0FBSyxTQUFMLEVBQVAsQ0FBckI7QUFDRDs7QUF6R3FDOztBQUF4QyIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL2JyaWRnZS50cz9lZDlkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5CcmlkZ2UgPSB2b2lkIDA7XG5jb25zdCBldmVudHNfMSA9IHJlcXVpcmUoXCJldmVudHNcIik7XG5jb25zdCBCQVRDSF9EVVJBVElPTiA9IDEwMDtcbmNsYXNzIEJyaWRnZSBleHRlbmRzIGV2ZW50c18xLkV2ZW50RW1pdHRlciB7XG4gICAgY29uc3RydWN0b3Iod2FsbCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnNldE1heExpc3RlbmVycyhJbmZpbml0eSk7XG4gICAgICAgIHRoaXMud2FsbCA9IHdhbGw7XG4gICAgICAgIHdhbGwubGlzdGVuKG1lc3NhZ2VzID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2VzKSkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmZvckVhY2gobWVzc2FnZSA9PiB0aGlzLl9lbWl0KG1lc3NhZ2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQobWVzc2FnZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fYmF0Y2hpbmdRdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLl9zZW5kaW5nUXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5fcmVjZWl2aW5nUXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5fc2VuZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLl90aW1lID0gbnVsbDtcbiAgICB9XG4gICAgc2VuZChldmVudCwgcGF5bG9hZCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkKSkge1xuICAgICAgICAgICAgY29uc3QgbGFzdEluZGV4ID0gcGF5bG9hZC5sZW5ndGggLSAxO1xuICAgICAgICAgICAgcGF5bG9hZC5mb3JFYWNoKChjaHVuaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZW5kKHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgICAgIF9jaHVuazogY2h1bmssXG4gICAgICAgICAgICAgICAgICAgIGxhc3Q6IGluZGV4ID09PSBsYXN0SW5kZXgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5fdGltZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fc2VuZChbeyBldmVudCwgcGF5bG9hZCB9XSk7XG4gICAgICAgICAgICB0aGlzLl90aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2JhdGNoaW5nUXVldWUucHVzaCh7XG4gICAgICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGlmIChub3cgLSB0aGlzLl90aW1lID4gQkFUQ0hfRFVSQVRJT04pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mbHVzaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX2ZsdXNoKCksIEJBVENIX0RVUkFUSU9OKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBMb2cgYSBtZXNzYWdlIHRvIHRoZSBkZXZ0b29scyBiYWNrZ3JvdW5kIHBhZ2UuXG4gICAgICovXG4gICAgbG9nKG1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy5zZW5kKCdsb2cnLCBtZXNzYWdlKTtcbiAgICB9XG4gICAgX2ZsdXNoKCkge1xuICAgICAgICBpZiAodGhpcy5fYmF0Y2hpbmdRdWV1ZS5sZW5ndGgpXG4gICAgICAgICAgICB0aGlzLl9zZW5kKHRoaXMuX2JhdGNoaW5nUXVldWUpO1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xuICAgICAgICB0aGlzLl9iYXRjaGluZ1F1ZXVlID0gW107XG4gICAgICAgIHRoaXMuX3RpbWUgPSBudWxsO1xuICAgIH1cbiAgICAvLyBAVE9ETyB0eXBlc1xuICAgIF9lbWl0KG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5lbWl0KG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UuX2NodW5rKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWNlaXZpbmdRdWV1ZS5wdXNoKG1lc3NhZ2UuX2NodW5rKTtcbiAgICAgICAgICAgIGlmIChtZXNzYWdlLmxhc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXQobWVzc2FnZS5ldmVudCwgdGhpcy5fcmVjZWl2aW5nUXVldWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlY2VpdmluZ1F1ZXVlID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5ldmVudCkge1xuICAgICAgICAgICAgdGhpcy5lbWl0KG1lc3NhZ2UuZXZlbnQsIG1lc3NhZ2UucGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQFRPRE8gdHlwZXNcbiAgICBfc2VuZChtZXNzYWdlcykge1xuICAgICAgICB0aGlzLl9zZW5kaW5nUXVldWUucHVzaChtZXNzYWdlcyk7XG4gICAgICAgIHRoaXMuX25leHRTZW5kKCk7XG4gICAgfVxuICAgIF9uZXh0U2VuZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9zZW5kaW5nUXVldWUubGVuZ3RoIHx8IHRoaXMuX3NlbmRpbmcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuX3NlbmRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMuX3NlbmRpbmdRdWV1ZS5zaGlmdCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy53YWxsLnNlbmQobWVzc2FnZXMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZSA9PT0gJ01lc3NhZ2UgbGVuZ3RoIGV4Y2VlZGVkIG1heGltdW0gYWxsb3dlZCBsZW5ndGguJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbmRpbmdRdWV1ZS5zcGxpY2UoMCwgMCwgbWVzc2FnZXMubWFwKG1lc3NhZ2UgPT4gW21lc3NhZ2VdKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VuZGluZyA9IGZhbHNlO1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5fbmV4dFNlbmQoKSk7XG4gICAgfVxufVxuZXhwb3J0cy5CcmlkZ2UgPSBCcmlkZ2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1icmlkZ2UuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///47294\n");
|
|
390
|
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Bridge = void 0;\n\nconst events_1 = __webpack_require__(22699);\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 this._time = null;\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 if (Array.isArray(payload)) {\n const lastIndex = payload.length - 1;\n payload.forEach((chunk, index) => {\n this._send({\n event,\n _chunk: chunk,\n last: index === lastIndex\n });\n });\n\n this._flush();\n } else if (this._time === null) {\n this._send([{\n event,\n payload\n }]);\n\n this._time = Date.now();\n } else {\n this._batchingQueue.push({\n event,\n payload\n });\n\n const now = Date.now();\n\n if (now - this._time > BATCH_DURATION) {\n this._flush();\n } else {\n this._timer = setTimeout(() => this._flush(), BATCH_DURATION);\n }\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._batchingQueue = [];\n this._time = null;\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 requestAnimationFrame(() => this._nextSend());\n }\n\n}\n\nexports.Bridge = Bridge;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QWEsT0FBTyxJQUFJLENBQUMsT0FBRCxDQUF4QixDQUFoQztBQUNEO0FBQ0Y7O0FBQ0QsU0FBSyxRQUFMLEdBQWdCLEtBQWhCO0FBQ0EseUJBQXFCLENBQUMsTUFBTSxLQUFLLFNBQUwsRUFBUCxDQUFyQjtBQUNEOztBQXJIcUM7O0FBQXhDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvYnJpZGdlLnRzP2VkOWQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkJyaWRnZSA9IHZvaWQgMDtcbmNvbnN0IGV2ZW50c18xID0gcmVxdWlyZShcImV2ZW50c1wiKTtcbmNvbnN0IEJBVENIX0RVUkFUSU9OID0gMTAwO1xuY2xhc3MgQnJpZGdlIGV4dGVuZHMgZXZlbnRzXzEuRXZlbnRFbWl0dGVyIHtcbiAgICBjb25zdHJ1Y3Rvcih3YWxsKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKEluZmluaXR5KTtcbiAgICAgICAgdGhpcy53YWxsID0gd2FsbDtcbiAgICAgICAgd2FsbC5saXN0ZW4obWVzc2FnZXMgPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWVzc2FnZXMpKSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZXMuZm9yRWFjaChtZXNzYWdlID0+IHRoaXMuX2VtaXQobWVzc2FnZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdChtZXNzYWdlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9iYXRjaGluZ1F1ZXVlID0gW107XG4gICAgICAgIHRoaXMuX3NlbmRpbmdRdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLl9yZWNlaXZpbmdRdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLl9zZW5kaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3RpbWUgPSBudWxsO1xuICAgIH1cbiAgICBvbihldmVudCwgbGlzdGVuZXIpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZExpc3RlbmVyID0gYXN5bmMgKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgbGlzdGVuZXIoLi4uYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtCcmlkZ2VdIEVycm9yIGluIGxpc3RlbmVyIGZvciBldmVudCAke2V2ZW50LnRvU3RyaW5nKCl9IHdpdGggYXJnczpgLCBhcmdzKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gc3VwZXIub24oZXZlbnQsIHdyYXBwZWRMaXN0ZW5lcik7XG4gICAgfVxuICAgIHNlbmQoZXZlbnQsIHBheWxvYWQpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RJbmRleCA9IHBheWxvYWQubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIHBheWxvYWQuZm9yRWFjaCgoY2h1bmssIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VuZCh7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICBfY2h1bms6IGNodW5rLFxuICAgICAgICAgICAgICAgICAgICBsYXN0OiBpbmRleCA9PT0gbGFzdEluZGV4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuX3RpbWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbmQoW3sgZXZlbnQsIHBheWxvYWQgfV0pO1xuICAgICAgICAgICAgdGhpcy5fdGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9iYXRjaGluZ1F1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgICAgICBpZiAobm93IC0gdGhpcy5fdGltZSA+IEJBVENIX0RVUkFUSU9OKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmx1c2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLl9mbHVzaCgpLCBCQVRDSF9EVVJBVElPTik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogTG9nIGEgbWVzc2FnZSB0byB0aGUgZGV2dG9vbHMgYmFja2dyb3VuZCBwYWdlLlxuICAgICAqL1xuICAgIGxvZyhtZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuc2VuZCgnbG9nJywgbWVzc2FnZSk7XG4gICAgfVxuICAgIF9mbHVzaCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2JhdGNoaW5nUXVldWUubGVuZ3RoKVxuICAgICAgICAgICAgdGhpcy5fc2VuZCh0aGlzLl9iYXRjaGluZ1F1ZXVlKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcbiAgICAgICAgdGhpcy5fYmF0Y2hpbmdRdWV1ZSA9IFtdO1xuICAgICAgICB0aGlzLl90aW1lID0gbnVsbDtcbiAgICB9XG4gICAgLy8gQFRPRE8gdHlwZXNcbiAgICBfZW1pdChtZXNzYWdlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdChtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXNzYWdlLl9jaHVuaykge1xuICAgICAgICAgICAgdGhpcy5fcmVjZWl2aW5nUXVldWUucHVzaChtZXNzYWdlLl9jaHVuayk7XG4gICAgICAgICAgICBpZiAobWVzc2FnZS5sYXN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0KG1lc3NhZ2UuZXZlbnQsIHRoaXMuX3JlY2VpdmluZ1F1ZXVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWNlaXZpbmdRdWV1ZSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UuZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdChtZXNzYWdlLmV2ZW50LCBtZXNzYWdlLnBheWxvYWQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEBUT0RPIHR5cGVzXG4gICAgX3NlbmQobWVzc2FnZXMpIHtcbiAgICAgICAgdGhpcy5fc2VuZGluZ1F1ZXVlLnB1c2gobWVzc2FnZXMpO1xuICAgICAgICB0aGlzLl9uZXh0U2VuZCgpO1xuICAgIH1cbiAgICBfbmV4dFNlbmQoKSB7XG4gICAgICAgIGlmICghdGhpcy5fc2VuZGluZ1F1ZXVlLmxlbmd0aCB8fCB0aGlzLl9zZW5kaW5nKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLl9zZW5kaW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSB0aGlzLl9zZW5kaW5nUXVldWUuc2hpZnQoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMud2FsbC5zZW5kKG1lc3NhZ2VzKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgPT09ICdNZXNzYWdlIGxlbmd0aCBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoLicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZW5kaW5nUXVldWUuc3BsaWNlKDAsIDAsIG1lc3NhZ2VzLm1hcChtZXNzYWdlID0+IFttZXNzYWdlXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMuX25leHRTZW5kKCkpO1xuICAgIH1cbn1cbmV4cG9ydHMuQnJpZGdlID0gQnJpZGdlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnJpZGdlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///47294\n");
|
|
391
391
|
|
|
392
392
|
/***/ }),
|
|
393
393
|
|
|
@@ -395,7 +395,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
395
395
|
/***/ ((__unused_webpack_module, exports) => {
|
|
396
396
|
|
|
397
397
|
"use strict";
|
|
398
|
-
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\"; // 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\"; // 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\"; // 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_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})(HookEvents = exports.HookEvents || (exports.HookEvents = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzk0MTAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBWSxXQUFaOztBQUFBLFdBQVksV0FBWixFQUF1QjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNELENBTEQsRUFBWSxXQUFXLEdBQVgsOENBQVcsRUFBWCxDQUFaOztBQU9BLElBQVksWUFBWjs7QUFBQSxXQUFZLFlBQVosRUFBd0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBOztBQUNBO0FBQ0E7O0FBQ0E7QUFDQSx3Q0Fac0IsQ0FjdEI7O0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQXRCc0IsQ0F3QnRCOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkVBNUNzQixDQThDdEI7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBM0RzQixDQTZEdEI7O0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0dBakVzQixDQW1FdEI7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkZBN0VzQixDQStFdEI7O0FBQ0E7QUFDRCxDQWpGRCxFQUFZLFlBQVksR0FBWixnREFBWSxFQUFaLENBQVo7O0FBbUZBLElBQVksbUJBQVo7O0FBQUEsV0FBWSxtQkFBWixFQUErQjtBQUM3QjtBQUNBO0FBQ0QsQ0FIRCxFQUFZLG1CQUFtQixHQUFuQiw4REFBbUIsRUFBbkIsQ0FBWjs7QUFLQSxJQUFZLFVBQVo7O0FBQUEsV0FBWSxVQUFaLEVBQXNCO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFRzs7QUFDSDtBQUNELENBekJELEVBQVksVUFBVSxHQUFWLDRDQUFVLEVBQVYsQ0FBWiIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL2NvbnN0cy50cz9kOTE4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Ib29rRXZlbnRzID0gZXhwb3J0cy5CcmlkZ2VTdWJzY3JpcHRpb25zID0gZXhwb3J0cy5CcmlkZ2VFdmVudHMgPSBleHBvcnRzLkJ1aWx0aW5UYWJzID0gdm9pZCAwO1xudmFyIEJ1aWx0aW5UYWJzO1xuKGZ1bmN0aW9uIChCdWlsdGluVGFicykge1xuICAgIEJ1aWx0aW5UYWJzW1wiQ09NUE9ORU5UU1wiXSA9IFwiY29tcG9uZW50c1wiO1xuICAgIEJ1aWx0aW5UYWJzW1wiVElNRUxJTkVcIl0gPSBcInRpbWVsaW5lXCI7XG4gICAgQnVpbHRpblRhYnNbXCJQTFVHSU5TXCJdID0gXCJwbHVnaW5zXCI7XG4gICAgQnVpbHRpblRhYnNbXCJTRVRUSU5HU1wiXSA9IFwic2V0dGluZ3NcIjtcbn0pKEJ1aWx0aW5UYWJzID0gZXhwb3J0cy5CdWlsdGluVGFicyB8fCAoZXhwb3J0cy5CdWlsdGluVGFicyA9IHt9KSk7XG52YXIgQnJpZGdlRXZlbnRzO1xuKGZ1bmN0aW9uIChCcmlkZ2VFdmVudHMpIHtcbiAgICAvLyBNaXNjXG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19TVUJTQ1JJQkVcIl0gPSBcImI6c3Vic2NyaWJlXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19VTlNVQlNDUklCRVwiXSA9IFwiYjp1bnN1YnNjcmliZVwiO1xuICAgIC8qKiBCYWNrZW5kIGlzIHJlYWR5ICovXG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfUkVBRFlcIl0gPSBcImY6cmVhZHlcIjtcbiAgICAvKiogRGlzcGxheXMgdGhlIFwiZGV0ZWN0ZWQgVnVlXCIgY29uc29sZSBsb2cgKi9cbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0xPR19ERVRFQ1RFRF9WVUVcIl0gPSBcImI6bG9nLWRldGVjdGVkLXZ1ZVwiO1xuICAgIC8qKiBGb3JjZSByZWZyZXNoICovXG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19SRUZSRVNIXCJdID0gXCJiOnJlZnJlc2hcIjtcbiAgICAvKiogVGFiIHdhcyBzd2l0Y2hlZCAqL1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfVEFCX1NXSVRDSFwiXSA9IFwiYjp0YWI6c3dpdGNoXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19MT0dcIl0gPSBcImI6bG9nXCI7XG4gICAgLy8gQXBwc1xuICAgIC8qKiBBcHAgd2FzIHJlZ2lzdGVyZWQgKi9cbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9BUFBfQUREXCJdID0gXCJmOmFwcDphZGRcIjtcbiAgICAvKiogR2V0IGFwcCBsaXN0ICovXG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19BUFBfTElTVFwiXSA9IFwiYjphcHA6bGlzdFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0FQUF9MSVNUXCJdID0gXCJmOmFwcDpsaXN0XCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfQVBQX1JFTU9WRVwiXSA9IFwiZjphcHA6cmVtb3ZlXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19BUFBfU0VMRUNUXCJdID0gXCJiOmFwcDpzZWxlY3RcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9BUFBfU0VMRUNURURcIl0gPSBcImY6YXBwOnNlbGVjdGVkXCI7XG4gICAgLy8gQ29tcG9uZW50c1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX1RSRUVcIl0gPSBcImI6Y29tcG9uZW50OnRyZWVcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9DT01QT05FTlRfVFJFRVwiXSA9IFwiZjpjb21wb25lbnQ6dHJlZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX1NFTEVDVEVEX0RBVEFcIl0gPSBcImI6Y29tcG9uZW50OnNlbGVjdGVkLWRhdGFcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9DT01QT05FTlRfU0VMRUNURURfREFUQVwiXSA9IFwiZjpjb21wb25lbnQ6c2VsZWN0ZWQtZGF0YVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX0VYUEFORFwiXSA9IFwiYjpjb21wb25lbnQ6ZXhwYW5kXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfQ09NUE9ORU5UX0VYUEFORFwiXSA9IFwiZjpjb21wb25lbnQ6ZXhwYW5kXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19DT01QT05FTlRfU0NST0xMX1RPXCJdID0gXCJiOmNvbXBvbmVudDpzY3JvbGwtdG9cIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0NPTVBPTkVOVF9GSUxURVJcIl0gPSBcImI6Y29tcG9uZW50OmZpbHRlclwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX01PVVNFX09WRVJcIl0gPSBcImI6Y29tcG9uZW50Om1vdXNlLW92ZXJcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0NPTVBPTkVOVF9NT1VTRV9PVVRcIl0gPSBcImI6Y29tcG9uZW50Om1vdXNlLW91dFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX0NPTlRFWFRfTUVOVV9UQVJHRVRcIl0gPSBcImI6Y29tcG9uZW50OmNvbnRleHQtbWVudS10YXJnZXRcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0NPTVBPTkVOVF9FRElUX1NUQVRFXCJdID0gXCJiOmNvbXBvbmVudDplZGl0LXN0YXRlXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19DT01QT05FTlRfUElDS1wiXSA9IFwiYjpjb21wb25lbnQ6cGlja1wiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NPTVBPTkVOVF9QSUNLXCJdID0gXCJmOmNvbXBvbmVudDpwaWNrXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19DT01QT05FTlRfUElDS19DQU5DRUxFRFwiXSA9IFwiYjpjb21wb25lbnQ6cGljay1jYW5jZWxlZFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NPTVBPTkVOVF9QSUNLX0NBTkNFTEVEXCJdID0gXCJmOmNvbXBvbmVudDpwaWNrLWNhbmNlbGVkXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19DT01QT05FTlRfSU5TUEVDVF9ET01cIl0gPSBcImI6Y29tcG9uZW50Omluc3BlY3QtZG9tXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfQ09NUE9ORU5UX0lOU1BFQ1RfRE9NXCJdID0gXCJmOmNvbXBvbmVudDppbnNwZWN0LWRvbVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX1JFTkRFUl9DT0RFXCJdID0gXCJiOmNvbXBvbmVudDpyZW5kZXItY29kZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NPTVBPTkVOVF9SRU5ERVJfQ09ERVwiXSA9IFwiZjpjb21wb25lbnQ6cmVuZGVyLWNvZGVcIjtcbiAgICAvLyBUaW1lbGluZVxuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX1RJTUVMSU5FX0VWRU5UXCJdID0gXCJmOnRpbWVsaW5lOmV2ZW50XCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19USU1FTElORV9MQVlFUl9MSVNUXCJdID0gXCJiOnRpbWVsaW5lOmxheWVyLWxpc3RcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9USU1FTElORV9MQVlFUl9MSVNUXCJdID0gXCJmOnRpbWVsaW5lOmxheWVyLWxpc3RcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9USU1FTElORV9MQVlFUl9BRERcIl0gPSBcImY6dGltZWxpbmU6bGF5ZXItYWRkXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19USU1FTElORV9TSE9XX1NDUkVFTlNIT1RcIl0gPSBcImI6dGltZWxpbmU6c2hvdy1zY3JlZW5zaG90XCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19USU1FTElORV9DTEVBUlwiXSA9IFwiYjp0aW1lbGluZTpjbGVhclwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfVElNRUxJTkVfRVZFTlRfREFUQVwiXSA9IFwiYjp0aW1lbGluZTpldmVudC1kYXRhXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfVElNRUxJTkVfRVZFTlRfREFUQVwiXSA9IFwiZjp0aW1lbGluZTpldmVudC1kYXRhXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19USU1FTElORV9MQVlFUl9MT0FEX0VWRU5UU1wiXSA9IFwiYjp0aW1lbGluZTpsYXllci1sb2FkLWV2ZW50c1wiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX1RJTUVMSU5FX0xBWUVSX0xPQURfRVZFTlRTXCJdID0gXCJmOnRpbWVsaW5lOmxheWVyLWxvYWQtZXZlbnRzXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19USU1FTElORV9MT0FEX01BUktFUlNcIl0gPSBcImI6dGltZWxpbmU6bG9hZC1tYXJrZXJzXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfVElNRUxJTkVfTE9BRF9NQVJLRVJTXCJdID0gXCJmOnRpbWVsaW5lOmxvYWQtbWFya2Vyc1wiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX1RJTUVMSU5FX01BUktFUlwiXSA9IFwiZjp0aW1lbGluZTptYXJrZXJcIjtcbiAgICAvLyBQbHVnaW5zXG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19ERVZUT09MU19QTFVHSU5fTElTVFwiXSA9IFwiYjpkZXZ0b29scy1wbHVnaW46bGlzdFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0RFVlRPT0xTX1BMVUdJTl9MSVNUXCJdID0gXCJmOmRldnRvb2xzLXBsdWdpbjpsaXN0XCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfREVWVE9PTFNfUExVR0lOX0FERFwiXSA9IFwiZjpkZXZ0b29scy1wbHVnaW46YWRkXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19ERVZUT09MU19QTFVHSU5fU0VUVElOR19VUERBVEVEXCJdID0gXCJiOmRldnRvb2xzLXBsdWdpbjpzZXR0aW5nLXVwZGF0ZWRcIjtcbiAgICAvLyBDdXN0b20gaW5zcGVjdG9yc1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9MSVNUXCJdID0gXCJiOmN1c3RvbS1pbnNwZWN0b3I6bGlzdFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NVU1RPTV9JTlNQRUNUT1JfTElTVFwiXSA9IFwiZjpjdXN0b20taW5zcGVjdG9yOmxpc3RcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9DVVNUT01fSU5TUEVDVE9SX0FERFwiXSA9IFwiZjpjdXN0b20taW5zcGVjdG9yOmFkZFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9UUkVFXCJdID0gXCJiOmN1c3RvbS1pbnNwZWN0b3I6dHJlZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NVU1RPTV9JTlNQRUNUT1JfVFJFRVwiXSA9IFwiZjpjdXN0b20taW5zcGVjdG9yOnRyZWVcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0NVU1RPTV9JTlNQRUNUT1JfU1RBVEVcIl0gPSBcImI6Y3VzdG9tLWluc3BlY3RvcjpzdGF0ZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NVU1RPTV9JTlNQRUNUT1JfU1RBVEVcIl0gPSBcImY6Y3VzdG9tLWluc3BlY3RvcjpzdGF0ZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9FRElUX1NUQVRFXCJdID0gXCJiOmN1c3RvbS1pbnNwZWN0b3I6ZWRpdC1zdGF0ZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9BQ1RJT05cIl0gPSBcImI6Y3VzdG9tLWluc3BlY3RvcjphY3Rpb25cIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9DVVNUT01fSU5TUEVDVE9SX1NFTEVDVF9OT0RFXCJdID0gXCJmOmN1c3RvbS1pbnNwZWN0b3I6c2VsZWN0LW5vZGVcIjtcbiAgICAvLyBDdXN0b20gc3RhdGVcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0NVU1RPTV9TVEFURV9BQ1RJT05cIl0gPSBcImI6Y3VzdG9tLXN0YXRlOmFjdGlvblwiO1xufSkoQnJpZGdlRXZlbnRzID0gZXhwb3J0cy5CcmlkZ2VFdmVudHMgfHwgKGV4cG9ydHMuQnJpZGdlRXZlbnRzID0ge30pKTtcbnZhciBCcmlkZ2VTdWJzY3JpcHRpb25zO1xuKGZ1bmN0aW9uIChCcmlkZ2VTdWJzY3JpcHRpb25zKSB7XG4gICAgQnJpZGdlU3Vic2NyaXB0aW9uc1tcIlNFTEVDVEVEX0NPTVBPTkVOVF9EQVRBXCJdID0gXCJjb21wb25lbnQ6c2VsZWN0ZWQtZGF0YVwiO1xuICAgIEJyaWRnZVN1YnNjcmlwdGlvbnNbXCJDT01QT05FTlRfVFJFRVwiXSA9IFwiY29tcG9uZW50OnRyZWVcIjtcbn0pKEJyaWRnZVN1YnNjcmlwdGlvbnMgPSBleHBvcnRzLkJyaWRnZVN1YnNjcmlwdGlvbnMgfHwgKGV4cG9ydHMuQnJpZGdlU3Vic2NyaXB0aW9ucyA9IHt9KSk7XG52YXIgSG9va0V2ZW50cztcbihmdW5jdGlvbiAoSG9va0V2ZW50cykge1xuICAgIEhvb2tFdmVudHNbXCJJTklUXCJdID0gXCJpbml0XCI7XG4gICAgSG9va0V2ZW50c1tcIkFQUF9JTklUXCJdID0gXCJhcHA6aW5pdFwiO1xuICAgIEhvb2tFdmVudHNbXCJBUFBfQUREXCJdID0gXCJhcHA6YWRkXCI7XG4gICAgSG9va0V2ZW50c1tcIkFQUF9VTk1PVU5UXCJdID0gXCJhcHA6dW5tb3VudFwiO1xuICAgIEhvb2tFdmVudHNbXCJDT01QT05FTlRfVVBEQVRFRFwiXSA9IFwiY29tcG9uZW50OnVwZGF0ZWRcIjtcbiAgICBIb29rRXZlbnRzW1wiQ09NUE9ORU5UX0FEREVEXCJdID0gXCJjb21wb25lbnQ6YWRkZWRcIjtcbiAgICBIb29rRXZlbnRzW1wiQ09NUE9ORU5UX1JFTU9WRURcIl0gPSBcImNvbXBvbmVudDpyZW1vdmVkXCI7XG4gICAgSG9va0V2ZW50c1tcIkNPTVBPTkVOVF9FTUlUXCJdID0gXCJjb21wb25lbnQ6ZW1pdFwiO1xuICAgIEhvb2tFdmVudHNbXCJDT01QT05FTlRfSElHSExJR0hUXCJdID0gXCJjb21wb25lbnQ6aGlnaGxpZ2h0XCI7XG4gICAgSG9va0V2ZW50c1tcIkNPTVBPTkVOVF9VTkhJR0hMSUdIVFwiXSA9IFwiY29tcG9uZW50OnVuaGlnaGxpZ2h0XCI7XG4gICAgSG9va0V2ZW50c1tcIlNFVFVQX0RFVlRPT0xTX1BMVUdJTlwiXSA9IFwiZGV2dG9vbHMtcGx1Z2luOnNldHVwXCI7XG4gICAgSG9va0V2ZW50c1tcIlRJTUVMSU5FX0xBWUVSX0FEREVEXCJdID0gXCJ0aW1lbGluZTpsYXllci1hZGRlZFwiO1xuICAgIEhvb2tFdmVudHNbXCJUSU1FTElORV9FVkVOVF9BRERFRFwiXSA9IFwidGltZWxpbmU6ZXZlbnQtYWRkZWRcIjtcbiAgICBIb29rRXZlbnRzW1wiQ1VTVE9NX0lOU1BFQ1RPUl9BRERcIl0gPSBcImN1c3RvbS1pbnNwZWN0b3I6YWRkXCI7XG4gICAgSG9va0V2ZW50c1tcIkNVU1RPTV9JTlNQRUNUT1JfU0VORF9UUkVFXCJdID0gXCJjdXN0b20taW5zcGVjdG9yOnNlbmQtdHJlZVwiO1xuICAgIEhvb2tFdmVudHNbXCJDVVNUT01fSU5TUEVDVE9SX1NFTkRfU1RBVEVcIl0gPSBcImN1c3RvbS1pbnNwZWN0b3I6c2VuZC1zdGF0ZVwiO1xuICAgIEhvb2tFdmVudHNbXCJDVVNUT01fSU5TUEVDVE9SX1NFTEVDVF9OT0RFXCJdID0gXCJjdXN0b20taW5zcGVjdG9yOnNlbGVjdC1ub2RlXCI7XG4gICAgSG9va0V2ZW50c1tcIlBFUkZPUk1BTkNFX1NUQVJUXCJdID0gXCJwZXJmOnN0YXJ0XCI7XG4gICAgSG9va0V2ZW50c1tcIlBFUkZPUk1BTkNFX0VORFwiXSA9IFwicGVyZjplbmRcIjtcbiAgICBIb29rRXZlbnRzW1wiUExVR0lOX1NFVFRJTkdTX1NFVFwiXSA9IFwicGx1Z2luOnNldHRpbmdzOnNldFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgSG9va0V2ZW50c1tcIkZMVVNIXCJdID0gXCJmbHVzaFwiO1xufSkoSG9va0V2ZW50cyA9IGV4cG9ydHMuSG9va0V2ZW50cyB8fCAoZXhwb3J0cy5Ib29rRXZlbnRzID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0cy5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///79410\n");
|
|
398
|
+
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\"; // 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\"; // 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_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})(HookEvents = exports.HookEvents || (exports.HookEvents = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzk0MTAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBWSxXQUFaOztBQUFBLFdBQVksV0FBWixFQUF1QjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNELENBTEQsRUFBWSxXQUFXLEdBQVgsOENBQVcsRUFBWCxDQUFaOztBQU9BLElBQVksWUFBWjs7QUFBQSxXQUFZLFlBQVosRUFBd0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBOztBQUNBO0FBQ0E7O0FBQ0E7QUFDQSx3Q0Fac0IsQ0FjdEI7O0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBdkJzQixDQXlCdEI7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2RUE3Q3NCLENBK0N0Qjs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUE1RHNCLENBOER0Qjs7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnR0FsRXNCLENBb0V0Qjs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyRkE5RXNCLENBZ0Z0Qjs7QUFDQTtBQUNELENBbEZELEVBQVksWUFBWSxHQUFaLGdEQUFZLEVBQVosQ0FBWjs7QUFvRkEsSUFBWSxtQkFBWjs7QUFBQSxXQUFZLG1CQUFaLEVBQStCO0FBQzdCO0FBQ0E7QUFDRCxDQUhELEVBQVksbUJBQW1CLEdBQW5CLDhEQUFtQixFQUFuQixDQUFaOztBQUtBLElBQVksVUFBWjs7QUFBQSxXQUFZLFVBQVosRUFBc0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVHOztBQUNIO0FBQ0QsQ0F6QkQsRUFBWSxVQUFVLEdBQVYsNENBQVUsRUFBVixDQUFaIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQHZ1ZS9kZXZ0b29scy8uLi9zcmMvY29uc3RzLnRzP2Q5MTgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkhvb2tFdmVudHMgPSBleHBvcnRzLkJyaWRnZVN1YnNjcmlwdGlvbnMgPSBleHBvcnRzLkJyaWRnZUV2ZW50cyA9IGV4cG9ydHMuQnVpbHRpblRhYnMgPSB2b2lkIDA7XG52YXIgQnVpbHRpblRhYnM7XG4oZnVuY3Rpb24gKEJ1aWx0aW5UYWJzKSB7XG4gICAgQnVpbHRpblRhYnNbXCJDT01QT05FTlRTXCJdID0gXCJjb21wb25lbnRzXCI7XG4gICAgQnVpbHRpblRhYnNbXCJUSU1FTElORVwiXSA9IFwidGltZWxpbmVcIjtcbiAgICBCdWlsdGluVGFic1tcIlBMVUdJTlNcIl0gPSBcInBsdWdpbnNcIjtcbiAgICBCdWlsdGluVGFic1tcIlNFVFRJTkdTXCJdID0gXCJzZXR0aW5nc1wiO1xufSkoQnVpbHRpblRhYnMgPSBleHBvcnRzLkJ1aWx0aW5UYWJzIHx8IChleHBvcnRzLkJ1aWx0aW5UYWJzID0ge30pKTtcbnZhciBCcmlkZ2VFdmVudHM7XG4oZnVuY3Rpb24gKEJyaWRnZUV2ZW50cykge1xuICAgIC8vIE1pc2NcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX1NVQlNDUklCRVwiXSA9IFwiYjpzdWJzY3JpYmVcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX1VOU1VCU0NSSUJFXCJdID0gXCJiOnVuc3Vic2NyaWJlXCI7XG4gICAgLyoqIEJhY2tlbmQgaXMgcmVhZHkgKi9cbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9SRUFEWVwiXSA9IFwiZjpyZWFkeVwiO1xuICAgIC8qKiBEaXNwbGF5cyB0aGUgXCJkZXRlY3RlZCBWdWVcIiBjb25zb2xlIGxvZyAqL1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfTE9HX0RFVEVDVEVEX1ZVRVwiXSA9IFwiYjpsb2ctZGV0ZWN0ZWQtdnVlXCI7XG4gICAgLyoqIEZvcmNlIHJlZnJlc2ggKi9cbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX1JFRlJFU0hcIl0gPSBcImI6cmVmcmVzaFwiO1xuICAgIC8qKiBUYWIgd2FzIHN3aXRjaGVkICovXG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19UQUJfU1dJVENIXCJdID0gXCJiOnRhYjpzd2l0Y2hcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0xPR1wiXSA9IFwiYjpsb2dcIjtcbiAgICAvLyBBcHBzXG4gICAgLyoqIEFwcCB3YXMgcmVnaXN0ZXJlZCAqL1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0FQUF9BRERcIl0gPSBcImY6YXBwOmFkZFwiO1xuICAgIC8qKiBHZXQgYXBwIGxpc3QgKi9cbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0FQUF9MSVNUXCJdID0gXCJiOmFwcDpsaXN0XCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfQVBQX0xJU1RcIl0gPSBcImY6YXBwOmxpc3RcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9BUFBfUkVNT1ZFXCJdID0gXCJmOmFwcDpyZW1vdmVcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0FQUF9TRUxFQ1RcIl0gPSBcImI6YXBwOnNlbGVjdFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0FQUF9TRUxFQ1RFRFwiXSA9IFwiZjphcHA6c2VsZWN0ZWRcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX1NDQU5fTEVHQUNZX0FQUFNcIl0gPSBcImI6YXBwOnNjYW4tbGVnYWN5XCI7XG4gICAgLy8gQ29tcG9uZW50c1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX1RSRUVcIl0gPSBcImI6Y29tcG9uZW50OnRyZWVcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9DT01QT05FTlRfVFJFRVwiXSA9IFwiZjpjb21wb25lbnQ6dHJlZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX1NFTEVDVEVEX0RBVEFcIl0gPSBcImI6Y29tcG9uZW50OnNlbGVjdGVkLWRhdGFcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9DT01QT05FTlRfU0VMRUNURURfREFUQVwiXSA9IFwiZjpjb21wb25lbnQ6c2VsZWN0ZWQtZGF0YVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX0VYUEFORFwiXSA9IFwiYjpjb21wb25lbnQ6ZXhwYW5kXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfQ09NUE9ORU5UX0VYUEFORFwiXSA9IFwiZjpjb21wb25lbnQ6ZXhwYW5kXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19DT01QT05FTlRfU0NST0xMX1RPXCJdID0gXCJiOmNvbXBvbmVudDpzY3JvbGwtdG9cIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0NPTVBPTkVOVF9GSUxURVJcIl0gPSBcImI6Y29tcG9uZW50OmZpbHRlclwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX01PVVNFX09WRVJcIl0gPSBcImI6Y29tcG9uZW50Om1vdXNlLW92ZXJcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0NPTVBPTkVOVF9NT1VTRV9PVVRcIl0gPSBcImI6Y29tcG9uZW50Om1vdXNlLW91dFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX0NPTlRFWFRfTUVOVV9UQVJHRVRcIl0gPSBcImI6Y29tcG9uZW50OmNvbnRleHQtbWVudS10YXJnZXRcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0NPTVBPTkVOVF9FRElUX1NUQVRFXCJdID0gXCJiOmNvbXBvbmVudDplZGl0LXN0YXRlXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19DT01QT05FTlRfUElDS1wiXSA9IFwiYjpjb21wb25lbnQ6cGlja1wiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NPTVBPTkVOVF9QSUNLXCJdID0gXCJmOmNvbXBvbmVudDpwaWNrXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19DT01QT05FTlRfUElDS19DQU5DRUxFRFwiXSA9IFwiYjpjb21wb25lbnQ6cGljay1jYW5jZWxlZFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NPTVBPTkVOVF9QSUNLX0NBTkNFTEVEXCJdID0gXCJmOmNvbXBvbmVudDpwaWNrLWNhbmNlbGVkXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19DT01QT05FTlRfSU5TUEVDVF9ET01cIl0gPSBcImI6Y29tcG9uZW50Omluc3BlY3QtZG9tXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfQ09NUE9ORU5UX0lOU1BFQ1RfRE9NXCJdID0gXCJmOmNvbXBvbmVudDppbnNwZWN0LWRvbVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ09NUE9ORU5UX1JFTkRFUl9DT0RFXCJdID0gXCJiOmNvbXBvbmVudDpyZW5kZXItY29kZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NPTVBPTkVOVF9SRU5ERVJfQ09ERVwiXSA9IFwiZjpjb21wb25lbnQ6cmVuZGVyLWNvZGVcIjtcbiAgICAvLyBUaW1lbGluZVxuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX1RJTUVMSU5FX0VWRU5UXCJdID0gXCJmOnRpbWVsaW5lOmV2ZW50XCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19USU1FTElORV9MQVlFUl9MSVNUXCJdID0gXCJiOnRpbWVsaW5lOmxheWVyLWxpc3RcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9USU1FTElORV9MQVlFUl9MSVNUXCJdID0gXCJmOnRpbWVsaW5lOmxheWVyLWxpc3RcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9USU1FTElORV9MQVlFUl9BRERcIl0gPSBcImY6dGltZWxpbmU6bGF5ZXItYWRkXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19USU1FTElORV9TSE9XX1NDUkVFTlNIT1RcIl0gPSBcImI6dGltZWxpbmU6c2hvdy1zY3JlZW5zaG90XCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19USU1FTElORV9DTEVBUlwiXSA9IFwiYjp0aW1lbGluZTpjbGVhclwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfVElNRUxJTkVfRVZFTlRfREFUQVwiXSA9IFwiYjp0aW1lbGluZTpldmVudC1kYXRhXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfVElNRUxJTkVfRVZFTlRfREFUQVwiXSA9IFwiZjp0aW1lbGluZTpldmVudC1kYXRhXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19USU1FTElORV9MQVlFUl9MT0FEX0VWRU5UU1wiXSA9IFwiYjp0aW1lbGluZTpsYXllci1sb2FkLWV2ZW50c1wiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX1RJTUVMSU5FX0xBWUVSX0xPQURfRVZFTlRTXCJdID0gXCJmOnRpbWVsaW5lOmxheWVyLWxvYWQtZXZlbnRzXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19USU1FTElORV9MT0FEX01BUktFUlNcIl0gPSBcImI6dGltZWxpbmU6bG9hZC1tYXJrZXJzXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfVElNRUxJTkVfTE9BRF9NQVJLRVJTXCJdID0gXCJmOnRpbWVsaW5lOmxvYWQtbWFya2Vyc1wiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX1RJTUVMSU5FX01BUktFUlwiXSA9IFwiZjp0aW1lbGluZTptYXJrZXJcIjtcbiAgICAvLyBQbHVnaW5zXG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19ERVZUT09MU19QTFVHSU5fTElTVFwiXSA9IFwiYjpkZXZ0b29scy1wbHVnaW46bGlzdFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0RFVlRPT0xTX1BMVUdJTl9MSVNUXCJdID0gXCJmOmRldnRvb2xzLXBsdWdpbjpsaXN0XCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fRlJPTlRfREVWVE9PTFNfUExVR0lOX0FERFwiXSA9IFwiZjpkZXZ0b29scy1wbHVnaW46YWRkXCI7XG4gICAgQnJpZGdlRXZlbnRzW1wiVE9fQkFDS19ERVZUT09MU19QTFVHSU5fU0VUVElOR19VUERBVEVEXCJdID0gXCJiOmRldnRvb2xzLXBsdWdpbjpzZXR0aW5nLXVwZGF0ZWRcIjtcbiAgICAvLyBDdXN0b20gaW5zcGVjdG9yc1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9MSVNUXCJdID0gXCJiOmN1c3RvbS1pbnNwZWN0b3I6bGlzdFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NVU1RPTV9JTlNQRUNUT1JfTElTVFwiXSA9IFwiZjpjdXN0b20taW5zcGVjdG9yOmxpc3RcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9DVVNUT01fSU5TUEVDVE9SX0FERFwiXSA9IFwiZjpjdXN0b20taW5zcGVjdG9yOmFkZFwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9UUkVFXCJdID0gXCJiOmN1c3RvbS1pbnNwZWN0b3I6dHJlZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NVU1RPTV9JTlNQRUNUT1JfVFJFRVwiXSA9IFwiZjpjdXN0b20taW5zcGVjdG9yOnRyZWVcIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0NVU1RPTV9JTlNQRUNUT1JfU1RBVEVcIl0gPSBcImI6Y3VzdG9tLWluc3BlY3RvcjpzdGF0ZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0ZST05UX0NVU1RPTV9JTlNQRUNUT1JfU1RBVEVcIl0gPSBcImY6Y3VzdG9tLWluc3BlY3RvcjpzdGF0ZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9FRElUX1NUQVRFXCJdID0gXCJiOmN1c3RvbS1pbnNwZWN0b3I6ZWRpdC1zdGF0ZVwiO1xuICAgIEJyaWRnZUV2ZW50c1tcIlRPX0JBQ0tfQ1VTVE9NX0lOU1BFQ1RPUl9BQ1RJT05cIl0gPSBcImI6Y3VzdG9tLWluc3BlY3RvcjphY3Rpb25cIjtcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19GUk9OVF9DVVNUT01fSU5TUEVDVE9SX1NFTEVDVF9OT0RFXCJdID0gXCJmOmN1c3RvbS1pbnNwZWN0b3I6c2VsZWN0LW5vZGVcIjtcbiAgICAvLyBDdXN0b20gc3RhdGVcbiAgICBCcmlkZ2VFdmVudHNbXCJUT19CQUNLX0NVU1RPTV9TVEFURV9BQ1RJT05cIl0gPSBcImI6Y3VzdG9tLXN0YXRlOmFjdGlvblwiO1xufSkoQnJpZGdlRXZlbnRzID0gZXhwb3J0cy5CcmlkZ2VFdmVudHMgfHwgKGV4cG9ydHMuQnJpZGdlRXZlbnRzID0ge30pKTtcbnZhciBCcmlkZ2VTdWJzY3JpcHRpb25zO1xuKGZ1bmN0aW9uIChCcmlkZ2VTdWJzY3JpcHRpb25zKSB7XG4gICAgQnJpZGdlU3Vic2NyaXB0aW9uc1tcIlNFTEVDVEVEX0NPTVBPTkVOVF9EQVRBXCJdID0gXCJjb21wb25lbnQ6c2VsZWN0ZWQtZGF0YVwiO1xuICAgIEJyaWRnZVN1YnNjcmlwdGlvbnNbXCJDT01QT05FTlRfVFJFRVwiXSA9IFwiY29tcG9uZW50OnRyZWVcIjtcbn0pKEJyaWRnZVN1YnNjcmlwdGlvbnMgPSBleHBvcnRzLkJyaWRnZVN1YnNjcmlwdGlvbnMgfHwgKGV4cG9ydHMuQnJpZGdlU3Vic2NyaXB0aW9ucyA9IHt9KSk7XG52YXIgSG9va0V2ZW50cztcbihmdW5jdGlvbiAoSG9va0V2ZW50cykge1xuICAgIEhvb2tFdmVudHNbXCJJTklUXCJdID0gXCJpbml0XCI7XG4gICAgSG9va0V2ZW50c1tcIkFQUF9JTklUXCJdID0gXCJhcHA6aW5pdFwiO1xuICAgIEhvb2tFdmVudHNbXCJBUFBfQUREXCJdID0gXCJhcHA6YWRkXCI7XG4gICAgSG9va0V2ZW50c1tcIkFQUF9VTk1PVU5UXCJdID0gXCJhcHA6dW5tb3VudFwiO1xuICAgIEhvb2tFdmVudHNbXCJDT01QT05FTlRfVVBEQVRFRFwiXSA9IFwiY29tcG9uZW50OnVwZGF0ZWRcIjtcbiAgICBIb29rRXZlbnRzW1wiQ09NUE9ORU5UX0FEREVEXCJdID0gXCJjb21wb25lbnQ6YWRkZWRcIjtcbiAgICBIb29rRXZlbnRzW1wiQ09NUE9ORU5UX1JFTU9WRURcIl0gPSBcImNvbXBvbmVudDpyZW1vdmVkXCI7XG4gICAgSG9va0V2ZW50c1tcIkNPTVBPTkVOVF9FTUlUXCJdID0gXCJjb21wb25lbnQ6ZW1pdFwiO1xuICAgIEhvb2tFdmVudHNbXCJDT01QT05FTlRfSElHSExJR0hUXCJdID0gXCJjb21wb25lbnQ6aGlnaGxpZ2h0XCI7XG4gICAgSG9va0V2ZW50c1tcIkNPTVBPTkVOVF9VTkhJR0hMSUdIVFwiXSA9IFwiY29tcG9uZW50OnVuaGlnaGxpZ2h0XCI7XG4gICAgSG9va0V2ZW50c1tcIlNFVFVQX0RFVlRPT0xTX1BMVUdJTlwiXSA9IFwiZGV2dG9vbHMtcGx1Z2luOnNldHVwXCI7XG4gICAgSG9va0V2ZW50c1tcIlRJTUVMSU5FX0xBWUVSX0FEREVEXCJdID0gXCJ0aW1lbGluZTpsYXllci1hZGRlZFwiO1xuICAgIEhvb2tFdmVudHNbXCJUSU1FTElORV9FVkVOVF9BRERFRFwiXSA9IFwidGltZWxpbmU6ZXZlbnQtYWRkZWRcIjtcbiAgICBIb29rRXZlbnRzW1wiQ1VTVE9NX0lOU1BFQ1RPUl9BRERcIl0gPSBcImN1c3RvbS1pbnNwZWN0b3I6YWRkXCI7XG4gICAgSG9va0V2ZW50c1tcIkNVU1RPTV9JTlNQRUNUT1JfU0VORF9UUkVFXCJdID0gXCJjdXN0b20taW5zcGVjdG9yOnNlbmQtdHJlZVwiO1xuICAgIEhvb2tFdmVudHNbXCJDVVNUT01fSU5TUEVDVE9SX1NFTkRfU1RBVEVcIl0gPSBcImN1c3RvbS1pbnNwZWN0b3I6c2VuZC1zdGF0ZVwiO1xuICAgIEhvb2tFdmVudHNbXCJDVVNUT01fSU5TUEVDVE9SX1NFTEVDVF9OT0RFXCJdID0gXCJjdXN0b20taW5zcGVjdG9yOnNlbGVjdC1ub2RlXCI7XG4gICAgSG9va0V2ZW50c1tcIlBFUkZPUk1BTkNFX1NUQVJUXCJdID0gXCJwZXJmOnN0YXJ0XCI7XG4gICAgSG9va0V2ZW50c1tcIlBFUkZPUk1BTkNFX0VORFwiXSA9IFwicGVyZjplbmRcIjtcbiAgICBIb29rRXZlbnRzW1wiUExVR0lOX1NFVFRJTkdTX1NFVFwiXSA9IFwicGx1Z2luOnNldHRpbmdzOnNldFwiO1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgSG9va0V2ZW50c1tcIkZMVVNIXCJdID0gXCJmbHVzaFwiO1xufSkoSG9va0V2ZW50cyA9IGV4cG9ydHMuSG9va0V2ZW50cyB8fCAoZXhwb3J0cy5Ib29rRXZlbnRzID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0cy5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///79410\n");
|
|
399
399
|
|
|
400
400
|
/***/ }),
|
|
401
401
|
|
|
@@ -443,7 +443,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));
|
|
|
443
443
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
444
444
|
|
|
445
445
|
"use strict";
|
|
446
|
-
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 debugInfo: false\n};\nconst persisted = ['componentNameStyle', 'theme', 'displayDensity', 'recordVuex', 'editableProps', 'logDetected', 'vuexNewBackend', 'vuexAutoload', 'vuexGroupGettersByModule', 'timeFormat', 'showMenuScrollTip', 'timelineTimeGrid', 'timelineScreenshots', 'menuStepScrolling', 'pluginPermissions', 'pluginSettings', 'performanceMonitoringEnabled', 'componentEventsEnabled', '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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YXRhLnRzP2QwYmIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNoYXJlZERhdGEgPSBleHBvcnRzLndhdGNoU2hhcmVkRGF0YSA9IGV4cG9ydHMuZGVzdHJveVNoYXJlZERhdGEgPSBleHBvcnRzLm9uU2hhcmVkRGF0YUluaXQgPSBleHBvcnRzLmluaXRTaGFyZWREYXRhID0gdm9pZCAwO1xuY29uc3Qgc3RvcmFnZV8xID0gcmVxdWlyZShcIi4vc3RvcmFnZVwiKTtcbmNvbnN0IGVudl8xID0gcmVxdWlyZShcIi4vZW52XCIpO1xuLy8gSW5pdGlhbCBzdGF0ZVxuY29uc3QgaW50ZXJuYWxTaGFyZWREYXRhID0ge1xuICAgIG9wZW5JbkVkaXRvckhvc3Q6ICcvJyxcbiAgICBjb21wb25lbnROYW1lU3R5bGU6ICdjbGFzcycsXG4gICAgdGhlbWU6ICdhdXRvJyxcbiAgICBkaXNwbGF5RGVuc2l0eTogJ2xvdycsXG4gICAgdGltZUZvcm1hdDogJ2RlZmF1bHQnLFxuICAgIHJlY29yZFZ1ZXg6IHRydWUsXG4gICAgY2FjaGVWdWV4U25hcHNob3RzRXZlcnk6IDUwLFxuICAgIGNhY2hlVnVleFNuYXBzaG90c0xpbWl0OiAxMCxcbiAgICBzbmFwc2hvdExvYWRpbmc6IGZhbHNlLFxuICAgIGNvbXBvbmVudEV2ZW50c0VuYWJsZWQ6IHRydWUsXG4gICAgcGVyZm9ybWFuY2VNb25pdG9yaW5nRW5hYmxlZDogdHJ1ZSxcbiAgICBlZGl0YWJsZVByb3BzOiBmYWxzZSxcbiAgICBsb2dEZXRlY3RlZDogdHJ1ZSxcbiAgICB2dWV4TmV3QmFja2VuZDogZmFsc2UsXG4gICAgdnVleEF1dG9sb2FkOiBmYWxzZSxcbiAgICB2dWV4R3JvdXBHZXR0ZXJzQnlNb2R1bGU6IHRydWUsXG4gICAgc2hvd01lbnVTY3JvbGxUaXA6IHRydWUsXG4gICAgdGltZWxpbmVUaW1lR3JpZDogdHJ1ZSxcbiAgICB0aW1lbGluZVNjcmVlbnNob3RzOiB0cnVlLFxuICAgIG1lbnVTdGVwU2Nyb2xsaW5nOiBlbnZfMS5pc01hYyxcbiAgICBwbHVnaW5QZXJtaXNzaW9uczoge30sXG4gICAgcGx1Z2luU2V0dGluZ3M6IHt9LFxuICAgIHBhZ2VDb25maWc6IHt9LFxuICAgIGRlYnVnSW5mbzogZmFsc2UsXG59O1xuY29uc3QgcGVyc2lzdGVkID0gW1xuICAgICdjb21wb25lbnROYW1lU3R5bGUnLFxuICAgICd0aGVtZScsXG4gICAgJ2Rpc3BsYXlEZW5zaXR5JyxcbiAgICAncmVjb3JkVnVleCcsXG4gICAgJ2VkaXRhYmxlUHJvcHMnLFxuICAgICdsb2dEZXRlY3RlZCcsXG4gICAgJ3Z1ZXhOZXdCYWNrZW5kJyxcbiAgICAndnVleEF1dG9sb2FkJyxcbiAgICAndnVleEdyb3VwR2V0dGVyc0J5TW9kdWxlJyxcbiAgICAndGltZUZvcm1hdCcsXG4gICAgJ3Nob3dNZW51U2Nyb2xsVGlwJyxcbiAgICAndGltZWxpbmVUaW1lR3JpZCcsXG4gICAgJ3RpbWVsaW5lU2NyZWVuc2hvdHMnLFxuICAgICdtZW51U3RlcFNjcm9sbGluZycsXG4gICAgJ3BsdWdpblBlcm1pc3Npb25zJyxcbiAgICAncGx1Z2luU2V0dGluZ3MnLFxuICAgICdwZXJmb3JtYW5jZU1vbml0b3JpbmdFbmFibGVkJyxcbiAgICAnY29tcG9uZW50RXZlbnRzRW5hYmxlZCcsXG4gICAgJ2RlYnVnSW5mbycsXG5dO1xuY29uc3Qgc3RvcmFnZVZlcnNpb24gPSAnNi4wLjAtYWxwaGEuMSc7XG4vLyAtLS0tIElOVEVSTkFMUyAtLS0tIC8vXG5sZXQgYnJpZGdlO1xuLy8gTGlzdCBvZiBmaWVsZHMgdG8gcGVyc2lzdCB0byBzdG9yYWdlIChkaXNhYmxlZCBpZiAnZmFsc2UnKVxuLy8gVGhpcyBzaG91bGQgYmUgdW5pcXVlIHRvIGVhY2ggc2hhcmVkIGRhdGEgY2xpZW50IHRvIHByZXZlbnQgY29uZmxpY3RzXG5sZXQgcGVyc2lzdCA9IGZhbHNlO1xubGV0IGRhdGE7XG5sZXQgaW5pdFJldHJ5SW50ZXJ2YWw7XG5sZXQgaW5pdFJldHJ5Q291bnQgPSAwO1xuY29uc3QgaW5pdENicyA9IFtdO1xuZnVuY3Rpb24gaW5pdFNoYXJlZERhdGEocGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIC8vIE1hbmRhdG9yeSBwYXJhbXNcbiAgICAgICAgYnJpZGdlID0gcGFyYW1zLmJyaWRnZTtcbiAgICAgICAgcGVyc2lzdCA9ICEhcGFyYW1zLnBlcnNpc3Q7XG4gICAgICAgIGlmIChwZXJzaXN0KSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tzaGFyZWQgZGF0YV0gTWFzdGVyIGluaXQgaW4gcHJvZ3Jlc3MuLi4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIExvYWQgcGVyc2lzdGVkIGZpZWxkc1xuICAgICAgICAgICAgcGVyc2lzdGVkLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICgwLCBzdG9yYWdlXzEuZ2V0U3RvcmFnZSkoYHZ1ZS1kZXZ0b29scy0ke3N0b3JhZ2VWZXJzaW9ufTpzaGFyZWQtZGF0YToke2tleX1gKTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxTaGFyZWREYXRhW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyaWRnZS5vbignc2hhcmVkLWRhdGE6bG9hZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBTZW5kIGFsbCBmaWVsZHNcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpbnRlcm5hbFNoYXJlZERhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2VuZFZhbHVlKGtleSwgaW50ZXJuYWxTaGFyZWREYXRhW2tleV0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyaWRnZS5zZW5kKCdzaGFyZWQtZGF0YTpsb2FkLWNvbXBsZXRlJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyaWRnZS5vbignc2hhcmVkLWRhdGE6aW5pdC1jb21wbGV0ZScsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3NoYXJlZCBkYXRhXSBNYXN0ZXIgaW5pdCBjb21wbGV0ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGluaXRSZXRyeUludGVydmFsKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyaWRnZS5zZW5kKCdzaGFyZWQtZGF0YTptYXN0ZXItaW5pdC13YWl0aW5nJyk7XG4gICAgICAgICAgICAvLyBJbiBjYXNlIGJhY2tlbmQgaW5pdCBpcyBleGVjdXRlZCBhZnRlciBmcm9udGVuZFxuICAgICAgICAgICAgYnJpZGdlLm9uKCdzaGFyZWQtZGF0YTptaW5pb24taW5pdC13YWl0aW5nJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGJyaWRnZS5zZW5kKCdzaGFyZWQtZGF0YTptYXN0ZXItaW5pdC13YWl0aW5nJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGluaXRSZXRyeUNvdW50ID0gMDtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW5pdFJldHJ5SW50ZXJ2YWwpO1xuICAgICAgICAgICAgaW5pdFJldHJ5SW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tzaGFyZWQgZGF0YV0gTWFzdGVyIGluaXQgcmV0cnlpbmcuLi4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJpZGdlLnNlbmQoJ3NoYXJlZC1kYXRhOm1hc3Rlci1pbml0LXdhaXRpbmcnKTtcbiAgICAgICAgICAgICAgICBpbml0UmV0cnlDb3VudCsrO1xuICAgICAgICAgICAgICAgIGlmIChpbml0UmV0cnlDb3VudCA+IDMwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW5pdFJldHJ5SW50ZXJ2YWwpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbc2hhcmVkIGRhdGFdIE1hc3RlciBpbml0IGZhaWxlZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbc2hhcmVkIGRhdGFdIE1pbmlvbiBpbml0IGluIHByb2dyZXNzLi4uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmlkZ2Uub24oJ3NoYXJlZC1kYXRhOm1hc3Rlci1pbml0LXdhaXRpbmcnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tzaGFyZWQgZGF0YV0gTWluaW9uIGxvYWRpbmcgZGF0YS4uLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBMb2FkIGFsbCBwZXJzaXN0ZWQgc2hhcmVkIGRhdGFcbiAgICAgICAgICAgICAgICBicmlkZ2Uuc2VuZCgnc2hhcmVkLWRhdGE6bG9hZCcpO1xuICAgICAgICAgICAgICAgIGJyaWRnZS5vbmNlKCdzaGFyZWQtZGF0YTpsb2FkLWNvbXBsZXRlJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbc2hhcmVkIGRhdGFdIE1pbmlvbiBpbml0IGNvbXBsZXRlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJpZGdlLnNlbmQoJ3NoYXJlZC1kYXRhOmluaXQtY29tcGxldGUnKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmlkZ2Uuc2VuZCgnc2hhcmVkLWRhdGE6bWluaW9uLWluaXQtd2FpdGluZycpO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgICAuLi5pbnRlcm5hbFNoYXJlZERhdGEsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChwYXJhbXMuVnVlKSB7XG4gICAgICAgICAgICBkYXRhID0gcGFyYW1zLlZ1ZS5vYnNlcnZhYmxlKGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFVwZGF0ZSB2YWx1ZSBmcm9tIG90aGVyIHNoYXJlZCBkYXRhIGNsaWVudHNcbiAgICAgICAgYnJpZGdlLm9uKCdzaGFyZWQtZGF0YTpzZXQnLCAoeyBrZXksIHZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgIHNldFZhbHVlKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgaW5pdENicy5mb3JFYWNoKGNiID0+IGNiKCkpO1xuICAgIH0pO1xufVxuZXhwb3J0cy5pbml0U2hhcmVkRGF0YSA9IGluaXRTaGFyZWREYXRhO1xuZnVuY3Rpb24gb25TaGFyZWREYXRhSW5pdChjYikge1xuICAgIGluaXRDYnMucHVzaChjYik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBpbml0Q2JzLmluZGV4T2YoY2IpO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKVxuICAgICAgICAgICAgaW5pdENicy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH07XG59XG5leHBvcnRzLm9uU2hhcmVkRGF0YUluaXQgPSBvblNoYXJlZERhdGFJbml0O1xuZnVuY3Rpb24gZGVzdHJveVNoYXJlZERhdGEoKSB7XG4gICAgYnJpZGdlLnJlbW92ZUFsbExpc3RlbmVycygnc2hhcmVkLWRhdGE6c2V0Jyk7XG4gICAgd2F0Y2hlcnMgPSB7fTtcbn1cbmV4cG9ydHMuZGVzdHJveVNoYXJlZERhdGEgPSBkZXN0cm95U2hhcmVkRGF0YTtcbmxldCB3YXRjaGVycyA9IHt9O1xuZnVuY3Rpb24gc2V0VmFsdWUoa2V5LCB2YWx1ZSkge1xuICAgIC8vIFN0b3JhZ2VcbiAgICBpZiAocGVyc2lzdCAmJiBwZXJzaXN0ZWQuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAoMCwgc3RvcmFnZV8xLnNldFN0b3JhZ2UpKGB2dWUtZGV2dG9vbHMtJHtzdG9yYWdlVmVyc2lvbn06c2hhcmVkLWRhdGE6JHtrZXl9YCwgdmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBvbGRWYWx1ZSA9IGRhdGFba2V5XTtcbiAgICBkYXRhW2tleV0gPSB2YWx1ZTtcbiAgICBjb25zdCBoYW5kbGVycyA9IHdhdGNoZXJzW2tleV07XG4gICAgaWYgKGhhbmRsZXJzKSB7XG4gICAgICAgIGhhbmRsZXJzLmZvckVhY2goaCA9PiBoKHZhbHVlLCBvbGRWYWx1ZSkpO1xuICAgIH1cbiAgICAvLyBWYWxpZGF0ZSBQcm94eSBzZXQgdHJhcFxuICAgIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gc2VuZFZhbHVlKGtleSwgdmFsdWUpIHtcbiAgICBicmlkZ2UgJiYgYnJpZGdlLnNlbmQoJ3NoYXJlZC1kYXRhOnNldCcsIHtcbiAgICAgICAga2V5LFxuICAgICAgICB2YWx1ZSxcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHdhdGNoU2hhcmVkRGF0YShwcm9wLCBoYW5kbGVyKSB7XG4gICAgY29uc3QgbGlzdCA9IHdhdGNoZXJzW3Byb3BdIHx8ICh3YXRjaGVyc1twcm9wXSA9IFtdKTtcbiAgICBsaXN0LnB1c2goaGFuZGxlcik7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBsaXN0LmluZGV4T2YoaGFuZGxlcik7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgfTtcbn1cbmV4cG9ydHMud2F0Y2hTaGFyZWREYXRhID0gd2F0Y2hTaGFyZWREYXRhO1xuY29uc3QgcHJveHkgPSB7fTtcbk9iamVjdC5rZXlzKGludGVybmFsU2hhcmVkRGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwga2V5LCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGdldDogKCkgPT4gZGF0YVtrZXldLFxuICAgICAgICBzZXQ6ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgc2VuZFZhbHVlKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgc2V0VmFsdWUoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgfSk7XG59KTtcbmV4cG9ydHMuU2hhcmVkRGF0YSA9IHByb3h5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2hhcmVkLWRhdGEuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///29556\n");
|
|
446
|
+
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 debugInfo: false\n};\nconst persisted = ['componentNameStyle', 'theme', 'displayDensity', 'recordVuex', 'editableProps', 'logDetected', 'vuexNewBackend', 'vuexAutoload', 'vuexGroupGettersByModule', 'timeFormat', 'showMenuScrollTip', 'timelineTimeGrid', 'timelineScreenshots', 'menuStepScrolling', 'pluginPermissions', 'pluginSettings', 'performanceMonitoringEnabled', 'componentEventsEnabled', '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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ZXZ0b29scy8uLi9zcmMvc2hhcmVkLWRhdGEudHM/ZDBiYiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuU2hhcmVkRGF0YSA9IGV4cG9ydHMud2F0Y2hTaGFyZWREYXRhID0gZXhwb3J0cy5kZXN0cm95U2hhcmVkRGF0YSA9IGV4cG9ydHMub25TaGFyZWREYXRhSW5pdCA9IGV4cG9ydHMuaW5pdFNoYXJlZERhdGEgPSB2b2lkIDA7XG5jb25zdCBzdG9yYWdlXzEgPSByZXF1aXJlKFwiLi9zdG9yYWdlXCIpO1xuY29uc3QgZW52XzEgPSByZXF1aXJlKFwiLi9lbnZcIik7XG4vLyBJbml0aWFsIHN0YXRlXG5jb25zdCBpbnRlcm5hbFNoYXJlZERhdGEgPSB7XG4gICAgb3BlbkluRWRpdG9ySG9zdDogJy8nLFxuICAgIGNvbXBvbmVudE5hbWVTdHlsZTogJ2NsYXNzJyxcbiAgICB0aGVtZTogJ2F1dG8nLFxuICAgIGRpc3BsYXlEZW5zaXR5OiAnbG93JyxcbiAgICB0aW1lRm9ybWF0OiAnZGVmYXVsdCcsXG4gICAgcmVjb3JkVnVleDogdHJ1ZSxcbiAgICBjYWNoZVZ1ZXhTbmFwc2hvdHNFdmVyeTogNTAsXG4gICAgY2FjaGVWdWV4U25hcHNob3RzTGltaXQ6IDEwLFxuICAgIHNuYXBzaG90TG9hZGluZzogZmFsc2UsXG4gICAgY29tcG9uZW50RXZlbnRzRW5hYmxlZDogdHJ1ZSxcbiAgICBwZXJmb3JtYW5jZU1vbml0b3JpbmdFbmFibGVkOiB0cnVlLFxuICAgIGVkaXRhYmxlUHJvcHM6IGZhbHNlLFxuICAgIGxvZ0RldGVjdGVkOiB0cnVlLFxuICAgIHZ1ZXhOZXdCYWNrZW5kOiBmYWxzZSxcbiAgICB2dWV4QXV0b2xvYWQ6IGZhbHNlLFxuICAgIHZ1ZXhHcm91cEdldHRlcnNCeU1vZHVsZTogdHJ1ZSxcbiAgICBzaG93TWVudVNjcm9sbFRpcDogdHJ1ZSxcbiAgICB0aW1lbGluZVRpbWVHcmlkOiB0cnVlLFxuICAgIHRpbWVsaW5lU2NyZWVuc2hvdHM6IHRydWUsXG4gICAgbWVudVN0ZXBTY3JvbGxpbmc6IGVudl8xLmlzTWFjLFxuICAgIHBsdWdpblBlcm1pc3Npb25zOiB7fSxcbiAgICBwbHVnaW5TZXR0aW5nczoge30sXG4gICAgcGFnZUNvbmZpZzoge30sXG4gICAgbGVnYWN5QXBwczogZmFsc2UsXG4gICAgZGVidWdJbmZvOiBmYWxzZSxcbn07XG5jb25zdCBwZXJzaXN0ZWQgPSBbXG4gICAgJ2NvbXBvbmVudE5hbWVTdHlsZScsXG4gICAgJ3RoZW1lJyxcbiAgICAnZGlzcGxheURlbnNpdHknLFxuICAgICdyZWNvcmRWdWV4JyxcbiAgICAnZWRpdGFibGVQcm9wcycsXG4gICAgJ2xvZ0RldGVjdGVkJyxcbiAgICAndnVleE5ld0JhY2tlbmQnLFxuICAgICd2dWV4QXV0b2xvYWQnLFxuICAgICd2dWV4R3JvdXBHZXR0ZXJzQnlNb2R1bGUnLFxuICAgICd0aW1lRm9ybWF0JyxcbiAgICAnc2hvd01lbnVTY3JvbGxUaXAnLFxuICAgICd0aW1lbGluZVRpbWVHcmlkJyxcbiAgICAndGltZWxpbmVTY3JlZW5zaG90cycsXG4gICAgJ21lbnVTdGVwU2Nyb2xsaW5nJyxcbiAgICAncGx1Z2luUGVybWlzc2lvbnMnLFxuICAgICdwbHVnaW5TZXR0aW5ncycsXG4gICAgJ3BlcmZvcm1hbmNlTW9uaXRvcmluZ0VuYWJsZWQnLFxuICAgICdjb21wb25lbnRFdmVudHNFbmFibGVkJyxcbiAgICAnZGVidWdJbmZvJyxcbl07XG5jb25zdCBzdG9yYWdlVmVyc2lvbiA9ICc2LjAuMC1hbHBoYS4xJztcbi8vIC0tLS0gSU5URVJOQUxTIC0tLS0gLy9cbmxldCBicmlkZ2U7XG4vLyBMaXN0IG9mIGZpZWxkcyB0byBwZXJzaXN0IHRvIHN0b3JhZ2UgKGRpc2FibGVkIGlmICdmYWxzZScpXG4vLyBUaGlzIHNob3VsZCBiZSB1bmlxdWUgdG8gZWFjaCBzaGFyZWQgZGF0YSBjbGllbnQgdG8gcHJldmVudCBjb25mbGljdHNcbmxldCBwZXJzaXN0ID0gZmFsc2U7XG5sZXQgZGF0YTtcbmxldCBpbml0UmV0cnlJbnRlcnZhbDtcbmxldCBpbml0UmV0cnlDb3VudCA9IDA7XG5jb25zdCBpbml0Q2JzID0gW107XG5mdW5jdGlvbiBpbml0U2hhcmVkRGF0YShwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgLy8gTWFuZGF0b3J5IHBhcmFtc1xuICAgICAgICBicmlkZ2UgPSBwYXJhbXMuYnJpZGdlO1xuICAgICAgICBwZXJzaXN0ID0gISFwYXJhbXMucGVyc2lzdDtcbiAgICAgICAgaWYgKHBlcnNpc3QpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3NoYXJlZCBkYXRhXSBNYXN0ZXIgaW5pdCBpbiBwcm9ncmVzcy4uLicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTG9hZCBwZXJzaXN0ZWQgZmllbGRzXG4gICAgICAgICAgICBwZXJzaXN0ZWQuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKDAsIHN0b3JhZ2VfMS5nZXRTdG9yYWdlKShgdnVlLWRldnRvb2xzLSR7c3RvcmFnZVZlcnNpb259OnNoYXJlZC1kYXRhOiR7a2V5fWApO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbFNoYXJlZERhdGFba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJpZGdlLm9uKCdzaGFyZWQtZGF0YTpsb2FkJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFNlbmQgYWxsIGZpZWxkc1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGludGVybmFsU2hhcmVkRGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZW5kVmFsdWUoa2V5LCBpbnRlcm5hbFNoYXJlZERhdGFba2V5XSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnJpZGdlLnNlbmQoJ3NoYXJlZC1kYXRhOmxvYWQtY29tcGxldGUnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJpZGdlLm9uKCdzaGFyZWQtZGF0YTppbml0LWNvbXBsZXRlJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbc2hhcmVkIGRhdGFdIE1hc3RlciBpbml0IGNvbXBsZXRlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW5pdFJldHJ5SW50ZXJ2YWwpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJpZGdlLnNlbmQoJ3NoYXJlZC1kYXRhOm1hc3Rlci1pbml0LXdhaXRpbmcnKTtcbiAgICAgICAgICAgIC8vIEluIGNhc2UgYmFja2VuZCBpbml0IGlzIGV4ZWN1dGVkIGFmdGVyIGZyb250ZW5kXG4gICAgICAgICAgICBicmlkZ2Uub24oJ3NoYXJlZC1kYXRhOm1pbmlvbi1pbml0LXdhaXRpbmcnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgYnJpZGdlLnNlbmQoJ3NoYXJlZC1kYXRhOm1hc3Rlci1pbml0LXdhaXRpbmcnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaW5pdFJldHJ5Q291bnQgPSAwO1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbml0UmV0cnlJbnRlcnZhbCk7XG4gICAgICAgICAgICBpbml0UmV0cnlJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3NoYXJlZCBkYXRhXSBNYXN0ZXIgaW5pdCByZXRyeWluZy4uLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmlkZ2Uuc2VuZCgnc2hhcmVkLWRhdGE6bWFzdGVyLWluaXQtd2FpdGluZycpO1xuICAgICAgICAgICAgICAgIGluaXRSZXRyeUNvdW50Kys7XG4gICAgICAgICAgICAgICAgaWYgKGluaXRSZXRyeUNvdW50ID4gMzApIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbml0UmV0cnlJbnRlcnZhbCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tzaGFyZWQgZGF0YV0gTWFzdGVyIGluaXQgZmFpbGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tzaGFyZWQgZGF0YV0gTWluaW9uIGluaXQgaW4gcHJvZ3Jlc3MuLi4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyaWRnZS5vbignc2hhcmVkLWRhdGE6bWFzdGVyLWluaXQtd2FpdGluZycsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3NoYXJlZCBkYXRhXSBNaW5pb24gbG9hZGluZyBkYXRhLi4uJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIExvYWQgYWxsIHBlcnNpc3RlZCBzaGFyZWQgZGF0YVxuICAgICAgICAgICAgICAgIGJyaWRnZS5zZW5kKCdzaGFyZWQtZGF0YTpsb2FkJyk7XG4gICAgICAgICAgICAgICAgYnJpZGdlLm9uY2UoJ3NoYXJlZC1kYXRhOmxvYWQtY29tcGxldGUnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tzaGFyZWQgZGF0YV0gTWluaW9uIGluaXQgY29tcGxldGUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmlkZ2Uuc2VuZCgnc2hhcmVkLWRhdGE6aW5pdC1jb21wbGV0ZScpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyaWRnZS5zZW5kKCdzaGFyZWQtZGF0YTptaW5pb24taW5pdC13YWl0aW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgIC4uLmludGVybmFsU2hhcmVkRGF0YSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHBhcmFtcy5WdWUpIHtcbiAgICAgICAgICAgIGRhdGEgPSBwYXJhbXMuVnVlLm9ic2VydmFibGUoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVXBkYXRlIHZhbHVlIGZyb20gb3RoZXIgc2hhcmVkIGRhdGEgY2xpZW50c1xuICAgICAgICBicmlkZ2Uub24oJ3NoYXJlZC1kYXRhOnNldCcsICh7IGtleSwgdmFsdWUgfSkgPT4ge1xuICAgICAgICAgICAgc2V0VmFsdWUoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpbml0Q2JzLmZvckVhY2goY2IgPT4gY2IoKSk7XG4gICAgfSk7XG59XG5leHBvcnRzLmluaXRTaGFyZWREYXRhID0gaW5pdFNoYXJlZERhdGE7XG5mdW5jdGlvbiBvblNoYXJlZERhdGFJbml0KGNiKSB7XG4gICAgaW5pdENicy5wdXNoKGNiKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IGluaXRDYnMuaW5kZXhPZihjYik7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpXG4gICAgICAgICAgICBpbml0Q2JzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfTtcbn1cbmV4cG9ydHMub25TaGFyZWREYXRhSW5pdCA9IG9uU2hhcmVkRGF0YUluaXQ7XG5mdW5jdGlvbiBkZXN0cm95U2hhcmVkRGF0YSgpIHtcbiAgICBicmlkZ2UucmVtb3ZlQWxsTGlzdGVuZXJzKCdzaGFyZWQtZGF0YTpzZXQnKTtcbiAgICB3YXRjaGVycyA9IHt9O1xufVxuZXhwb3J0cy5kZXN0cm95U2hhcmVkRGF0YSA9IGRlc3Ryb3lTaGFyZWREYXRhO1xubGV0IHdhdGNoZXJzID0ge307XG5mdW5jdGlvbiBzZXRWYWx1ZShrZXksIHZhbHVlKSB7XG4gICAgLy8gU3RvcmFnZVxuICAgIGlmIChwZXJzaXN0ICYmIHBlcnNpc3RlZC5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICgwLCBzdG9yYWdlXzEuc2V0U3RvcmFnZSkoYHZ1ZS1kZXZ0b29scy0ke3N0b3JhZ2VWZXJzaW9ufTpzaGFyZWQtZGF0YToke2tleX1gLCB2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IG9sZFZhbHVlID0gZGF0YVtrZXldO1xuICAgIGRhdGFba2V5XSA9IHZhbHVlO1xuICAgIGNvbnN0IGhhbmRsZXJzID0gd2F0Y2hlcnNba2V5XTtcbiAgICBpZiAoaGFuZGxlcnMpIHtcbiAgICAgICAgaGFuZGxlcnMuZm9yRWFjaChoID0+IGgodmFsdWUsIG9sZFZhbHVlKSk7XG4gICAgfVxuICAgIC8vIFZhbGlkYXRlIFByb3h5IHNldCB0cmFwXG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBzZW5kVmFsdWUoa2V5LCB2YWx1ZSkge1xuICAgIGJyaWRnZSAmJiBicmlkZ2Uuc2VuZCgnc2hhcmVkLWRhdGE6c2V0Jywge1xuICAgICAgICBrZXksXG4gICAgICAgIHZhbHVlLFxuICAgIH0pO1xufVxuZnVuY3Rpb24gd2F0Y2hTaGFyZWREYXRhKHByb3AsIGhhbmRsZXIpIHtcbiAgICBjb25zdCBsaXN0ID0gd2F0Y2hlcnNbcHJvcF0gfHwgKHdhdGNoZXJzW3Byb3BdID0gW10pO1xuICAgIGxpc3QucHVzaChoYW5kbGVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IGxpc3QuaW5kZXhPZihoYW5kbGVyKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSlcbiAgICAgICAgICAgIGxpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9O1xufVxuZXhwb3J0cy53YXRjaFNoYXJlZERhdGEgPSB3YXRjaFNoYXJlZERhdGE7XG5jb25zdCBwcm94eSA9IHt9O1xuT2JqZWN0LmtleXMoaW50ZXJuYWxTaGFyZWREYXRhKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3h5LCBrZXksIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZ2V0OiAoKSA9PiBkYXRhW2tleV0sXG4gICAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBzZW5kVmFsdWUoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICBzZXRWYWx1ZShrZXksIHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn0pO1xuZXhwb3J0cy5TaGFyZWREYXRhID0gcHJveHk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zaGFyZWQtZGF0YS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///29556\n");
|
|
447
447
|
|
|
448
448
|
/***/ }),
|
|
449
449
|
|