@nsshunt/stsuxvue 1.0.111 → 1.0.113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/dist/stsuxvue.cjs +12 -10
- package/dist/stsuxvue.cjs.map +1 -1
- package/dist/stsuxvue.css +10 -10
- package/dist/stsuxvue.mjs +12 -10
- package/dist/stsuxvue.mjs.map +1 -1
- package/package.json +7 -7
- package/types/components/UXModelInstrumentServiceCommon.vue.d.ts.map +1 -1
- package/types/components/UXModelInstrumentServiceSmall.vue.d.ts.map +1 -1
package/dist/stsuxvue.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stsuxvue.cjs","names":["getPrototypeOf","getGlobal","ANSI_BACKGROUND_OFFSET","wrapAnsi16","wrapAnsi256","wrapAnsi16m","styles","foregroundColorNames","backgroundColorNames","assembleStyles","ansiStyles","level","colorSupport","supportsColor","stringReplaceAll","stringEncaseCRLFWithFirstIndex","stdoutColor","stderrColor","supportsColor","GENERATOR","STYLER","IS_EMPTY","levelMapping","styles","applyOptions","chalkFactory","createChalk","ansiStyles","createBuilder","createStyler","getModelAnsi","proto","applyStyle","stringReplaceAll","stringEncaseCRLFWithFirstIndex","chalk","isFunction","utils","utils","encode","utils","utils","platform","platform","utils","utils","utils","transitionalDefaults","platform","utils","utils","parseHeaders","utils","platform","platform","utils","utils","utils","platform","isURLSameOrigin","cookies","resolveConfig","transitionalDefaults","utils","platform","utils","utils","ReadableStream","TextEncoder","platform","resolveConfig","xhrAdapter","fetchAdapter.getFetch","utils","adapters","validators","validator","utils","transitionalDefaults","utils","utils","adapters","__commonJSMin","import_tiny_emitter","#name","#logger","#reconnectTimeout","#agentManager","#address","#authToken","#socketIoCustomPath","#socket","#EstablishSocketConnect","isNode","#options","#label","#data","#serviceModel","#agentModel","#lambdaModel","#LogDebugMessage","#LogErrorMessage","#RemoveKeepAlive","#AddKeepAlive","#currentSubscriptions","#InvokeRESTAPI","isNode","STSAxiosConfig","#GetData","#SetupTimeout","#socketSubscribeKeepAlive","#id","defaultLogger","native"],"sources":["../src/stores/modelStore.ts","../src/commonTypes.ts","../src/components/UXBarChart.vue","../src/components/UXBarChart.vue","../src/components/UXLineChart.vue","../src/components/UXLineChart.vue","../src/components/UXMultiBarChart.vue","../src/components/UXMultiBarChart.vue","../src/components/UXRadialChart.vue","../src/components/UXRadialChart.vue","../node_modules/entities/lib/maps/entities.json","../node_modules/entities/lib/maps/legacy.json","../node_modules/entities/lib/maps/xml.json","../node_modules/entities/lib/maps/decode.json","../node_modules/entities/lib/decode_codepoint.js","../node_modules/entities/lib/decode.js","../node_modules/entities/lib/encode.js","../node_modules/entities/lib/index.js","../node_modules/ansi-to-html/lib/ansi_to_html.js","../node_modules/dompurify/dist/purify.es.mjs","../src/components/UXModelInstrumentAgentCommon.vue","../src/components/UXModelInstrumentAgentCommon.vue","../node_modules/chalk/source/vendor/ansi-styles/index.js","../node_modules/chalk/source/vendor/supports-color/browser.js","../node_modules/chalk/source/utilities.js","../node_modules/chalk/source/index.js","../src/components/UXModelInstrumentServiceCommon.vue","../src/components/UXModelInstrumentServiceCommon.vue","../src/components/UXModelInstrumentServiceSmall.vue","../src/components/UXModelInstrumentServiceSmall.vue","../src/components/UXModelNode.vue","../src/components/UXModelNode.vue","../node_modules/tiny-emitter/index.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/@nsshunt/stssocketioutils/dist/tiny-emitter-DB59cw42.js","../node_modules/@nsshunt/stssocketioutils/dist/index.mjs","../node_modules/@nsshunt/stsinstrumentmanagerclient/dist/index.mjs","../node_modules/uuid/dist/stringify.js","../node_modules/uuid/dist/rng.js","../node_modules/uuid/dist/native.js","../node_modules/uuid/dist/v4.js","../src/components/UXModelNavigator.vue","../src/components/UXModelNavigator.vue","../src/components/UXTestForm.vue","../src/components/UXTestForm.vue"],"sourcesContent":["/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { defineStore } from 'pinia'\nimport _cloneDeep from 'lodash.clonedeep'\n\nimport { type ISubscriptionKey } from '@nsshunt/stsinstrumentmanagerclient'\nimport { type JSONObject } from '@nsshunt/stsutils'\n\n//import { ObservabilitySubscriberManager } from './../plugins/observabilitySubscriberManager'\n\n// https://pinia.vuejs.org/\n// https://seb-l.github.io/pinia-plugin-persist/\n\nexport interface IModelMeta {\n\tdetailView: boolean\n}\n\nexport interface IModelStore {\n serviceModel: JSONObject\n agentModel: JSONObject\n modelMeta: Record<string, IModelMeta>\n serviceModelSubscriptionKey: ISubscriptionKey | null\n agentModelSubscriptionKey: ISubscriptionKey | null\n friendlyName: Record<string, string>\n friendNameIndex: number\n state: string\n}\nexport interface IModelStores {\n _models: Record<string, IModelStore>\n _state: Record<string, string>\n //_observabilitySubscriberManager: Record<string, ObservabilitySubscriberManager | null>\n}\n\nexport enum _estate {\n IDLE = \"idle\",\n STARTING = \"starting\",\n STARTED = \"started\",\n STOPPING = \"stopping\",\n DELAYED_START = \"delayed_start\"\n}\n\nexport const ModelStore = defineStore('__sts__ModelStore', {\n // State\n // https://pinia.vuejs.org/core-concepts/state.html\n state: (): IModelStores => {\n return {\n _models: { },\n _state: { },\n //_observabilitySubscriberManager: { }\n };\n /*\n serviceModel: { },\n agentModel: { },\n modelMeta: { },\n serviceModelSubscriptionKey: null,\n agentModelSubscriptionKey: null,\n friendlyName: { },\n friendNameIndex: 1\n */\n },\n\n // Getters\n // https://pinia.vuejs.org/core-concepts/getters.html\n\n // Actions\n // https://pinia.vuejs.org/core-concepts/actions.html\n actions: {\n /*\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n UpdateModel(model: MasterModel): void {\n //this.masterModel.serviceModel = _cloneDeep(model.serviceModel.model);\n //this.masterModel.agentModel = _cloneDeep(model.agentModel.model);\n },\n UpdateLogDataDirect(modeNode: any, logData: string[]): void {\n if (modeNode.instruments) {\n modeNode.instruments[Gauge.LOGGER] = {\n '_': 'd',\n val: _cloneDeep(logData)\n } as any\n modeNode.instruments[Gauge.LOGGER_COPY] = {\n '_': 'd',\n val: _cloneDeep(logData)\n } as any\n }\n },\n UpdateLogData(modeNode: any, logData: string[]): void {\n this.UpdateLogDataDirect(modeNode, [ ]);\n if (modeNode.instruments && modeNode.children) {\n for (const [k, v] of Object.entries(modeNode.children) as any) {\n this.UpdateLogDataDirect(v, [ ]);\n }\n }\n },\n UpdateModelEx(model: ModelNode): void {\n try {\n this.model = _cloneDeep((model as any).data);\n if (!this.model.context?.serviceInstanceId) {\n // Remove aggregated logs (legacy instruments when logs part of payload) for non serviceInstanceId 'levels'\n this.UpdateLogData(this.model, [ ]);\n }\n } catch (error) {\n console.error(chalk.red(`${error}`));\n //console.error(chalk.red(`${JSON.stringify(this.model)}`));\n }\n },\n UpdateModelLogs(nodeId: string, logMessages: string[]): void {\n const topicSplit = nodeId.split('_');\n const serviceInstanceId = `${topicSplit[0]}@${topicSplit[1]}`;\n const serviceInstanceProcessId = `${topicSplit[2]}@${topicSplit[3]}`;\n\n //topic = (serviceInstanceId + '_' + serviceInstanceProcessId).replace(/@/g, '_');\n if (this.model.children) {\n for (const [k, v] of Object.entries(this.model.children) as any) {\n if (v.context.serviceInstanceId.localeCompare(serviceInstanceId) === 0) {\n if (v.context.serviceInstanceProcessId.localeCompare(serviceInstanceProcessId) === 0) {\n this.UpdateLogDataDirect(v, logMessages);\n }\n }\n }\n }\n },\n */\n\n GetSate(modelId: string): string {\n if (!this._state[modelId]) {\n this._state[modelId] = _estate.IDLE\n }\n return this._state[modelId];\n },\n\n UpdateSate(modelId: string, newSate: string): void {\n this._state[modelId] = newSate;\n },\n\n /*\n UpdateObservabilitySubscriberManager(modelId: string, observabilitySubscriberManager: ObservabilitySubscriberManager | null): void {\n if (observabilitySubscriberManager === null) {\n delete this._observabilitySubscriberManager[modelId];\n } else {\n this._observabilitySubscriberManager[modelId] = observabilitySubscriberManager;\n }\n },\n */\n\n SetupNewModelId(modelId: string): void {\n this._models[modelId] = {\n serviceModel: { },\n agentModel: { },\n modelMeta: { },\n serviceModelSubscriptionKey: null,\n agentModelSubscriptionKey: null,\n friendlyName: { },\n friendNameIndex: 1,\n state: 'idle'\n };\n },\n\n UpdateServiceModel(modelId: string, model: JSONObject, subscriptionKey: ISubscriptionKey): void {\n try {\n if (!this._models[modelId]) {\n this.SetupNewModelId(modelId);\n }\n this._models[modelId].serviceModel = _cloneDeep(model);\n this._models[modelId].serviceModelSubscriptionKey = subscriptionKey;\n } catch (error) {\n console.error(error);\n }\n },\n\n UpdateAgentModel(modelId: string, model: JSONObject, subscriptionKey: ISubscriptionKey): void {\n if (!this._models[modelId]) {\n this.SetupNewModelId(modelId);\n }\n this._models[modelId].agentModel = _cloneDeep(model);\n this._models[modelId].agentModelSubscriptionKey = subscriptionKey;\n //console.log(`agentModel: ${this.agentModel}`);\n //console.log(`agentModelSubscriptionKey: ${JSON.stringify(this.agentModelSubscriptionKey)}`);\n },\n\n GetFriendName(modelId: string, id: string): string {\n try {\n if (!this._models[modelId]) {\n this.SetupNewModelId(modelId);\n }\n if (!this._models[modelId].friendlyName[id]) {\n this._models[modelId].friendlyName[id] = `FN${this._models[modelId].friendNameIndex++}@${id.split('@')[1]}`;\n }\n return this._models[modelId].friendlyName[id];\n } catch (error) {\n return `Error: ${error}`\n }\n }\n }\n});\n","export const URI_BASE_STSUXVUE: string = '/';\n\nexport interface IRadioGroupElement {\n key: string\n label: string\n value: string\n}\n\nexport interface IFormDataElement {\n elementType: string\n model?: string | number | boolean\n label?: string\n hint?: string\n description?: string\n radioGroup?: IRadioGroupElement[]\n}\n\nexport type IFormData = IFormDataElement[];\n\nexport interface IObservabilitySubscriberManagerOptions {\n modelId: string\n consumeInstrumentationMode: string\n instrumentManagerEndpoint: string\n instrumentManagerPort: string\n instrumentManagerAPIRoot: string\n}\n","<script setup lang=\"ts\">\nimport { ref, defineAsyncComponent } from 'vue'\n\n//import VueApexCharts from 'vue3-apexcharts'\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n//const VueApexCharts = () => import('vue3-apexcharts')\n\nconst series = [{\n name: 'Duration (ms)',\n data: [0, 0, 0, 0, 0, 0, 0]\n}, {\n name: 'Latency (ms)',\n data: [0, 0, 0, 0, 0, 0, 0]\n}]\n\nconst options = {\n chart: {\n type: 'bar',\n height: 350,\n animations: {\n enabled: false\n },\n toolbar: {\n show: false\n },\n },\n plotOptions: {\n bar: {\n horizontal: false,\n columnWidth: '55%',\n endingShape: 'rounded'\n },\n },\n dataLabels: {\n enabled: false\n },\n stroke: {\n show: true,\n width: 2,\n colors: ['transparent']\n },\n xaxis: {\n categories: ['10', '20', '50', '100', '1000', '5000', 'EE'],\n },\n yaxis: {\n title: {\n text: 'count'\n }\n },\n fill: {\n opacity: 1\n },\n tooltip: {\n enabled: false,\n y: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formatter: function (val: any) {\n return \"$ \" + val + \" thousands\"\n }\n }\n }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any \n} as any\n\nconst barChart = ref(null);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst UpdateGraph = (durationSeries: any[], latencySeries: any[]) => {\n series[0].data = durationSeries.map((v) => v[0]);\n series[1].data = latencySeries.map((v) => v[0]);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (barChart.value as any).updateSeries(series, true);\n}\n\ndefineExpose({\n UpdateGraph\n})\n\n</script>\n \n<template>\n <div>\n <VueApexCharts\n ref=\"barChart\"\n height=\"250\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, defineAsyncComponent } from 'vue'\n\n//import VueApexCharts from 'vue3-apexcharts'\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n//const VueApexCharts = () => import('vue3-apexcharts')\n\nconst series = [{\n name: 'Duration (ms)',\n data: [0, 0, 0, 0, 0, 0, 0]\n}, {\n name: 'Latency (ms)',\n data: [0, 0, 0, 0, 0, 0, 0]\n}]\n\nconst options = {\n chart: {\n type: 'bar',\n height: 350,\n animations: {\n enabled: false\n },\n toolbar: {\n show: false\n },\n },\n plotOptions: {\n bar: {\n horizontal: false,\n columnWidth: '55%',\n endingShape: 'rounded'\n },\n },\n dataLabels: {\n enabled: false\n },\n stroke: {\n show: true,\n width: 2,\n colors: ['transparent']\n },\n xaxis: {\n categories: ['10', '20', '50', '100', '1000', '5000', 'EE'],\n },\n yaxis: {\n title: {\n text: 'count'\n }\n },\n fill: {\n opacity: 1\n },\n tooltip: {\n enabled: false,\n y: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formatter: function (val: any) {\n return \"$ \" + val + \" thousands\"\n }\n }\n }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any \n} as any\n\nconst barChart = ref(null);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst UpdateGraph = (durationSeries: any[], latencySeries: any[]) => {\n series[0].data = durationSeries.map((v) => v[0]);\n series[1].data = latencySeries.map((v) => v[0]);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (barChart.value as any).updateSeries(series, true);\n}\n\ndefineExpose({\n UpdateGraph\n})\n\n</script>\n \n<template>\n <div>\n <VueApexCharts\n ref=\"barChart\"\n height=\"250\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { reactive, defineAsyncComponent } from 'vue'\n//import ApexCharts, { type ApexOptions } from \"apexcharts\";\n\n//import VueApexCharts from 'vue3-apexcharts'\n//const VueApexCharts = () => import('vue3-apexcharts')\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\nlet interval = 0;\n\ninterface dataPoint {\n x: number\n y: number\n}\ninterface series {\n data: dataPoint[]\n}\n\nconst series: series[] = reactive([ { data: [ ] } ]);\n\nconst UpdateGraph = (val: number) => {\n series[0].data.push({\n x: interval++,\n y: val\n });\n if (series[0].data.length > 50) {\n series[0].data.shift();\n }\n}\n\nconst options = {\n chart: {\n id: 'realtime',\n height: 50,\n type: 'area',\n animations: {\n enabled: false,\n easing: 'linear',\n dynamicAnimation: {\n speed: 1000\n }\n },\n toolbar: {\n show: false\n },\n zoom: {\n enabled: false\n },\n sparkline: {\n enabled: false,\n }\n },\n dataLabels: {\n enabled: false\n },\n stroke: {\n curve: 'smooth',\n width: 3,\n colors: [ '#6e1db5' ]\n },\n markers: {\n size: 0\n },\n fill: {\n //colors: ['#BDD5F5'],\n //gradientToColors: ['#EE2A17'],\n type: \"gradient\",\n gradient: {\n shadeIntensity: 1,\n opacityFrom: 0.7,\n opacityTo: 0.9,\n stops: [0, 100, 100]\n }\n }, \n tooltip: {\n enabled: false,\n },\n xaxis: {\n //type: \"datetime\",\n //range: 777600000\n type: \"numeric\",\n range: 25,\n tickAmount: 8,\n labels: {\n show: false\n }\n }, \n yaxis: {\n min: 0,\n //max: 100,\n tickAmount: 5,\n labels: {\n formatter: function(val: any, index: any) {\n return val.toFixed(2);\n }\n }\n },\n legend: {\n show: false\n }\n \n} as any\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n \n<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"250\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { reactive, defineAsyncComponent } from 'vue'\n//import ApexCharts, { type ApexOptions } from \"apexcharts\";\n\n//import VueApexCharts from 'vue3-apexcharts'\n//const VueApexCharts = () => import('vue3-apexcharts')\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\nlet interval = 0;\n\ninterface dataPoint {\n x: number\n y: number\n}\ninterface series {\n data: dataPoint[]\n}\n\nconst series: series[] = reactive([ { data: [ ] } ]);\n\nconst UpdateGraph = (val: number) => {\n series[0].data.push({\n x: interval++,\n y: val\n });\n if (series[0].data.length > 50) {\n series[0].data.shift();\n }\n}\n\nconst options = {\n chart: {\n id: 'realtime',\n height: 50,\n type: 'area',\n animations: {\n enabled: false,\n easing: 'linear',\n dynamicAnimation: {\n speed: 1000\n }\n },\n toolbar: {\n show: false\n },\n zoom: {\n enabled: false\n },\n sparkline: {\n enabled: false,\n }\n },\n dataLabels: {\n enabled: false\n },\n stroke: {\n curve: 'smooth',\n width: 3,\n colors: [ '#6e1db5' ]\n },\n markers: {\n size: 0\n },\n fill: {\n //colors: ['#BDD5F5'],\n //gradientToColors: ['#EE2A17'],\n type: \"gradient\",\n gradient: {\n shadeIntensity: 1,\n opacityFrom: 0.7,\n opacityTo: 0.9,\n stops: [0, 100, 100]\n }\n }, \n tooltip: {\n enabled: false,\n },\n xaxis: {\n //type: \"datetime\",\n //range: 777600000\n type: \"numeric\",\n range: 25,\n tickAmount: 8,\n labels: {\n show: false\n }\n }, \n yaxis: {\n min: 0,\n //max: 100,\n tickAmount: 5,\n labels: {\n formatter: function(val: any, index: any) {\n return val.toFixed(2);\n }\n }\n },\n legend: {\n show: false\n }\n \n} as any\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n \n<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"250\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n","<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"100\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n style=\"background: red\"\n />\n </div>\n</template>\n \n<script setup lang=\"ts\">\nimport { defineAsyncComponent } from 'vue'\n\nimport type { JSONObject } from '@nsshunt/stsutils';\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst props = defineProps<{ \n series: JSONObject[]\n labels: string[]\n }>();\n\nconst UpdateGraph = () => {\n\n /*\n series[0] = (activeRequests / maxNum) * 100.0;\n series[1] = (TCPConnecitons / maxNum) * 100.0;\n series[2] = (connectionPoolTotal / maxNum) * 100.0;\n\n labels[0] = `AR: ${activeRequests}`;\n labels[1] = `TCP: ${TCPConnecitons}`;\n labels[2] = `Pool: ${connectionPoolTotal}`;\n\n //console.log(series);\n */\n}\n\nconst options = {\n chart: {\n id: 'multibarrealtime',\n //height: 0,\n type: 'bar',\n animations: {\n enabled: false\n } ,\n toolbar: {\n show: false\n },\n offsetX: 0,\n offsetY: 0,\n parentHeightOffset: 0\n },\n plotOptions: {\n bar: {\n barHeight: '100%',\n distributed: true,\n horizontal: true,\n /*\n dataLabels: {\n position: 'left',\n }\n */\n }\n },\n colors: ['#eba834', '#34b1eb', '#6beb34'],\n dataLabels: {\n enabled: true,\n textAnchor: 'start',\n //distributed: true,\n style: {\n colors: ['#fff']\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n formatter: function (val: any, opt: any) {\n //return opt.w.globals.labels[opt.dataPointIndex] + \": \" + val\n return val;\n },\n offsetX: -10,\n offsetY: 0,\n dropShadow: {\n enabled: true\n }\n },\n stroke: {\n width: 1,\n colors: ['#fff']\n },\n xaxis: {\n categories: ['AR', 'TCP', 'Pool'],\n },\n yaxis: {\n labels: {\n show: true\n }\n },\n legend: {\n show: false\n },\n tooltip: {\n enabled: false\n },\n grid: {\n show: true,\n padding: {\n top: -20,\n right: 20,\n bottom: -5,\n left: 5\n }, \n }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n} as any\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n","<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"100\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n style=\"background: red\"\n />\n </div>\n</template>\n \n<script setup lang=\"ts\">\nimport { defineAsyncComponent } from 'vue'\n\nimport type { JSONObject } from '@nsshunt/stsutils';\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst props = defineProps<{ \n series: JSONObject[]\n labels: string[]\n }>();\n\nconst UpdateGraph = () => {\n\n /*\n series[0] = (activeRequests / maxNum) * 100.0;\n series[1] = (TCPConnecitons / maxNum) * 100.0;\n series[2] = (connectionPoolTotal / maxNum) * 100.0;\n\n labels[0] = `AR: ${activeRequests}`;\n labels[1] = `TCP: ${TCPConnecitons}`;\n labels[2] = `Pool: ${connectionPoolTotal}`;\n\n //console.log(series);\n */\n}\n\nconst options = {\n chart: {\n id: 'multibarrealtime',\n //height: 0,\n type: 'bar',\n animations: {\n enabled: false\n } ,\n toolbar: {\n show: false\n },\n offsetX: 0,\n offsetY: 0,\n parentHeightOffset: 0\n },\n plotOptions: {\n bar: {\n barHeight: '100%',\n distributed: true,\n horizontal: true,\n /*\n dataLabels: {\n position: 'left',\n }\n */\n }\n },\n colors: ['#eba834', '#34b1eb', '#6beb34'],\n dataLabels: {\n enabled: true,\n textAnchor: 'start',\n //distributed: true,\n style: {\n colors: ['#fff']\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n formatter: function (val: any, opt: any) {\n //return opt.w.globals.labels[opt.dataPointIndex] + \": \" + val\n return val;\n },\n offsetX: -10,\n offsetY: 0,\n dropShadow: {\n enabled: true\n }\n },\n stroke: {\n width: 1,\n colors: ['#fff']\n },\n xaxis: {\n categories: ['AR', 'TCP', 'Pool'],\n },\n yaxis: {\n labels: {\n show: true\n }\n },\n legend: {\n show: false\n },\n tooltip: {\n enabled: false\n },\n grid: {\n show: true,\n padding: {\n top: -20,\n right: 20,\n bottom: -5,\n left: 5\n }, \n }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n} as any\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n","<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"140\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n \n<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent } from 'vue'\n\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\n \nconst props = defineProps<{ \n series: number[],\n labels: string[]\n }>();\n\nconst UpdateGraph = () => {\n\n /*\n series[0] = (activeRequests / maxNum) * 100.0;\n series[1] = (TCPConnecitons / maxNum) * 100.0;\n series[2] = (connectionPoolTotal / maxNum) * 100.0;\n\n labels[0] = `AR: ${activeRequests}`;\n labels[1] = `TCP: ${TCPConnecitons}`;\n labels[2] = `Pool: ${connectionPoolTotal}`;\n\n //console.log(series);\n */\n}\n\nconst options = computed(() => {\n return {\n chart: {\n id: 'realtime',\n //height: 0,\n type: 'radialBar'\n },\n plotOptions: {\n radialBar: {\n offsetY: 0,\n startAngle: 0,\n endAngle: 270,\n hollow: {\n margin: 5,\n size: '30%',\n background: 'transparent',\n image: undefined,\n },\n dataLabels: {\n name: {\n show: false,\n },\n value: {\n show: false,\n }\n }\n }\n },\n colors: ['#eba834', '#34b1eb', '#6beb34'],\n labels: props.labels,\n legend: {\n show: true,\n floating: true,\n fontSize: '14px',\n position: 'left',\n offsetX: 180,\n offsetY: 6,\n labels: {\n useSeriesColors: true,\n },\n markers: {\n size: 0\n },\n //formatter: function(seriesName: string, opts: JSONObject) {\n //return seriesName + \": \" + opts.w.globals.series[opts.seriesIndex]\n //},\n itemMargin: {\n vertical: 0\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any\n});\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n","<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"140\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n \n<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent } from 'vue'\n\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\n \nconst props = defineProps<{ \n series: number[],\n labels: string[]\n }>();\n\nconst UpdateGraph = () => {\n\n /*\n series[0] = (activeRequests / maxNum) * 100.0;\n series[1] = (TCPConnecitons / maxNum) * 100.0;\n series[2] = (connectionPoolTotal / maxNum) * 100.0;\n\n labels[0] = `AR: ${activeRequests}`;\n labels[1] = `TCP: ${TCPConnecitons}`;\n labels[2] = `Pool: ${connectionPoolTotal}`;\n\n //console.log(series);\n */\n}\n\nconst options = computed(() => {\n return {\n chart: {\n id: 'realtime',\n //height: 0,\n type: 'radialBar'\n },\n plotOptions: {\n radialBar: {\n offsetY: 0,\n startAngle: 0,\n endAngle: 270,\n hollow: {\n margin: 5,\n size: '30%',\n background: 'transparent',\n image: undefined,\n },\n dataLabels: {\n name: {\n show: false,\n },\n value: {\n show: false,\n }\n }\n }\n },\n colors: ['#eba834', '#34b1eb', '#6beb34'],\n labels: props.labels,\n legend: {\n show: true,\n floating: true,\n fontSize: '14px',\n position: 'left',\n offsetX: 180,\n offsetY: 6,\n labels: {\n useSeriesColors: true,\n },\n markers: {\n size: 0\n },\n //formatter: function(seriesName: string, opts: JSONObject) {\n //return seriesName + \": \" + opts.w.globals.series[opts.seriesIndex]\n //},\n itemMargin: {\n vertical: 0\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any\n});\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n","{\"Aacute\":\"Á\",\"aacute\":\"á\",\"Abreve\":\"Ă\",\"abreve\":\"ă\",\"ac\":\"∾\",\"acd\":\"∿\",\"acE\":\"∾̳\",\"Acirc\":\"Â\",\"acirc\":\"â\",\"acute\":\"´\",\"Acy\":\"А\",\"acy\":\"а\",\"AElig\":\"Æ\",\"aelig\":\"æ\",\"af\":\"\",\"Afr\":\"𝔄\",\"afr\":\"𝔞\",\"Agrave\":\"À\",\"agrave\":\"à\",\"alefsym\":\"ℵ\",\"aleph\":\"ℵ\",\"Alpha\":\"Α\",\"alpha\":\"α\",\"Amacr\":\"Ā\",\"amacr\":\"ā\",\"amalg\":\"⨿\",\"amp\":\"&\",\"AMP\":\"&\",\"andand\":\"⩕\",\"And\":\"⩓\",\"and\":\"∧\",\"andd\":\"⩜\",\"andslope\":\"⩘\",\"andv\":\"⩚\",\"ang\":\"∠\",\"ange\":\"⦤\",\"angle\":\"∠\",\"angmsdaa\":\"⦨\",\"angmsdab\":\"⦩\",\"angmsdac\":\"⦪\",\"angmsdad\":\"⦫\",\"angmsdae\":\"⦬\",\"angmsdaf\":\"⦭\",\"angmsdag\":\"⦮\",\"angmsdah\":\"⦯\",\"angmsd\":\"∡\",\"angrt\":\"∟\",\"angrtvb\":\"⊾\",\"angrtvbd\":\"⦝\",\"angsph\":\"∢\",\"angst\":\"Å\",\"angzarr\":\"⍼\",\"Aogon\":\"Ą\",\"aogon\":\"ą\",\"Aopf\":\"𝔸\",\"aopf\":\"𝕒\",\"apacir\":\"⩯\",\"ap\":\"≈\",\"apE\":\"⩰\",\"ape\":\"≊\",\"apid\":\"≋\",\"apos\":\"'\",\"ApplyFunction\":\"\",\"approx\":\"≈\",\"approxeq\":\"≊\",\"Aring\":\"Å\",\"aring\":\"å\",\"Ascr\":\"𝒜\",\"ascr\":\"𝒶\",\"Assign\":\"≔\",\"ast\":\"*\",\"asymp\":\"≈\",\"asympeq\":\"≍\",\"Atilde\":\"Ã\",\"atilde\":\"ã\",\"Auml\":\"Ä\",\"auml\":\"ä\",\"awconint\":\"∳\",\"awint\":\"⨑\",\"backcong\":\"≌\",\"backepsilon\":\"϶\",\"backprime\":\"‵\",\"backsim\":\"∽\",\"backsimeq\":\"⋍\",\"Backslash\":\"∖\",\"Barv\":\"⫧\",\"barvee\":\"⊽\",\"barwed\":\"⌅\",\"Barwed\":\"⌆\",\"barwedge\":\"⌅\",\"bbrk\":\"⎵\",\"bbrktbrk\":\"⎶\",\"bcong\":\"≌\",\"Bcy\":\"Б\",\"bcy\":\"б\",\"bdquo\":\"„\",\"becaus\":\"∵\",\"because\":\"∵\",\"Because\":\"∵\",\"bemptyv\":\"⦰\",\"bepsi\":\"϶\",\"bernou\":\"ℬ\",\"Bernoullis\":\"ℬ\",\"Beta\":\"Β\",\"beta\":\"β\",\"beth\":\"ℶ\",\"between\":\"≬\",\"Bfr\":\"𝔅\",\"bfr\":\"𝔟\",\"bigcap\":\"⋂\",\"bigcirc\":\"◯\",\"bigcup\":\"⋃\",\"bigodot\":\"⨀\",\"bigoplus\":\"⨁\",\"bigotimes\":\"⨂\",\"bigsqcup\":\"⨆\",\"bigstar\":\"★\",\"bigtriangledown\":\"▽\",\"bigtriangleup\":\"△\",\"biguplus\":\"⨄\",\"bigvee\":\"⋁\",\"bigwedge\":\"⋀\",\"bkarow\":\"⤍\",\"blacklozenge\":\"⧫\",\"blacksquare\":\"▪\",\"blacktriangle\":\"▴\",\"blacktriangledown\":\"▾\",\"blacktriangleleft\":\"◂\",\"blacktriangleright\":\"▸\",\"blank\":\"␣\",\"blk12\":\"▒\",\"blk14\":\"░\",\"blk34\":\"▓\",\"block\":\"█\",\"bne\":\"=⃥\",\"bnequiv\":\"≡⃥\",\"bNot\":\"⫭\",\"bnot\":\"⌐\",\"Bopf\":\"𝔹\",\"bopf\":\"𝕓\",\"bot\":\"⊥\",\"bottom\":\"⊥\",\"bowtie\":\"⋈\",\"boxbox\":\"⧉\",\"boxdl\":\"┐\",\"boxdL\":\"╕\",\"boxDl\":\"╖\",\"boxDL\":\"╗\",\"boxdr\":\"┌\",\"boxdR\":\"╒\",\"boxDr\":\"╓\",\"boxDR\":\"╔\",\"boxh\":\"─\",\"boxH\":\"═\",\"boxhd\":\"┬\",\"boxHd\":\"╤\",\"boxhD\":\"╥\",\"boxHD\":\"╦\",\"boxhu\":\"┴\",\"boxHu\":\"╧\",\"boxhU\":\"╨\",\"boxHU\":\"╩\",\"boxminus\":\"⊟\",\"boxplus\":\"⊞\",\"boxtimes\":\"⊠\",\"boxul\":\"┘\",\"boxuL\":\"╛\",\"boxUl\":\"╜\",\"boxUL\":\"╝\",\"boxur\":\"└\",\"boxuR\":\"╘\",\"boxUr\":\"╙\",\"boxUR\":\"╚\",\"boxv\":\"│\",\"boxV\":\"║\",\"boxvh\":\"┼\",\"boxvH\":\"╪\",\"boxVh\":\"╫\",\"boxVH\":\"╬\",\"boxvl\":\"┤\",\"boxvL\":\"╡\",\"boxVl\":\"╢\",\"boxVL\":\"╣\",\"boxvr\":\"├\",\"boxvR\":\"╞\",\"boxVr\":\"╟\",\"boxVR\":\"╠\",\"bprime\":\"‵\",\"breve\":\"˘\",\"Breve\":\"˘\",\"brvbar\":\"¦\",\"bscr\":\"𝒷\",\"Bscr\":\"ℬ\",\"bsemi\":\"⁏\",\"bsim\":\"∽\",\"bsime\":\"⋍\",\"bsolb\":\"⧅\",\"bsol\":\"\\\\\",\"bsolhsub\":\"⟈\",\"bull\":\"•\",\"bullet\":\"•\",\"bump\":\"≎\",\"bumpE\":\"⪮\",\"bumpe\":\"≏\",\"Bumpeq\":\"≎\",\"bumpeq\":\"≏\",\"Cacute\":\"Ć\",\"cacute\":\"ć\",\"capand\":\"⩄\",\"capbrcup\":\"⩉\",\"capcap\":\"⩋\",\"cap\":\"∩\",\"Cap\":\"⋒\",\"capcup\":\"⩇\",\"capdot\":\"⩀\",\"CapitalDifferentialD\":\"ⅅ\",\"caps\":\"∩︀\",\"caret\":\"⁁\",\"caron\":\"ˇ\",\"Cayleys\":\"ℭ\",\"ccaps\":\"⩍\",\"Ccaron\":\"Č\",\"ccaron\":\"č\",\"Ccedil\":\"Ç\",\"ccedil\":\"ç\",\"Ccirc\":\"Ĉ\",\"ccirc\":\"ĉ\",\"Cconint\":\"∰\",\"ccups\":\"⩌\",\"ccupssm\":\"⩐\",\"Cdot\":\"Ċ\",\"cdot\":\"ċ\",\"cedil\":\"¸\",\"Cedilla\":\"¸\",\"cemptyv\":\"⦲\",\"cent\":\"¢\",\"centerdot\":\"·\",\"CenterDot\":\"·\",\"cfr\":\"𝔠\",\"Cfr\":\"ℭ\",\"CHcy\":\"Ч\",\"chcy\":\"ч\",\"check\":\"✓\",\"checkmark\":\"✓\",\"Chi\":\"Χ\",\"chi\":\"χ\",\"circ\":\"ˆ\",\"circeq\":\"≗\",\"circlearrowleft\":\"↺\",\"circlearrowright\":\"↻\",\"circledast\":\"⊛\",\"circledcirc\":\"⊚\",\"circleddash\":\"⊝\",\"CircleDot\":\"⊙\",\"circledR\":\"®\",\"circledS\":\"Ⓢ\",\"CircleMinus\":\"⊖\",\"CirclePlus\":\"⊕\",\"CircleTimes\":\"⊗\",\"cir\":\"○\",\"cirE\":\"⧃\",\"cire\":\"≗\",\"cirfnint\":\"⨐\",\"cirmid\":\"⫯\",\"cirscir\":\"⧂\",\"ClockwiseContourIntegral\":\"∲\",\"CloseCurlyDoubleQuote\":\"”\",\"CloseCurlyQuote\":\"’\",\"clubs\":\"♣\",\"clubsuit\":\"♣\",\"colon\":\":\",\"Colon\":\"∷\",\"Colone\":\"⩴\",\"colone\":\"≔\",\"coloneq\":\"≔\",\"comma\":\",\",\"commat\":\"@\",\"comp\":\"∁\",\"compfn\":\"∘\",\"complement\":\"∁\",\"complexes\":\"ℂ\",\"cong\":\"≅\",\"congdot\":\"⩭\",\"Congruent\":\"≡\",\"conint\":\"∮\",\"Conint\":\"∯\",\"ContourIntegral\":\"∮\",\"copf\":\"𝕔\",\"Copf\":\"ℂ\",\"coprod\":\"∐\",\"Coproduct\":\"∐\",\"copy\":\"©\",\"COPY\":\"©\",\"copysr\":\"℗\",\"CounterClockwiseContourIntegral\":\"∳\",\"crarr\":\"↵\",\"cross\":\"✗\",\"Cross\":\"⨯\",\"Cscr\":\"𝒞\",\"cscr\":\"𝒸\",\"csub\":\"⫏\",\"csube\":\"⫑\",\"csup\":\"⫐\",\"csupe\":\"⫒\",\"ctdot\":\"⋯\",\"cudarrl\":\"⤸\",\"cudarrr\":\"⤵\",\"cuepr\":\"⋞\",\"cuesc\":\"⋟\",\"cularr\":\"↶\",\"cularrp\":\"⤽\",\"cupbrcap\":\"⩈\",\"cupcap\":\"⩆\",\"CupCap\":\"≍\",\"cup\":\"∪\",\"Cup\":\"⋓\",\"cupcup\":\"⩊\",\"cupdot\":\"⊍\",\"cupor\":\"⩅\",\"cups\":\"∪︀\",\"curarr\":\"↷\",\"curarrm\":\"⤼\",\"curlyeqprec\":\"⋞\",\"curlyeqsucc\":\"⋟\",\"curlyvee\":\"⋎\",\"curlywedge\":\"⋏\",\"curren\":\"¤\",\"curvearrowleft\":\"↶\",\"curvearrowright\":\"↷\",\"cuvee\":\"⋎\",\"cuwed\":\"⋏\",\"cwconint\":\"∲\",\"cwint\":\"∱\",\"cylcty\":\"⌭\",\"dagger\":\"†\",\"Dagger\":\"‡\",\"daleth\":\"ℸ\",\"darr\":\"↓\",\"Darr\":\"↡\",\"dArr\":\"⇓\",\"dash\":\"‐\",\"Dashv\":\"⫤\",\"dashv\":\"⊣\",\"dbkarow\":\"⤏\",\"dblac\":\"˝\",\"Dcaron\":\"Ď\",\"dcaron\":\"ď\",\"Dcy\":\"Д\",\"dcy\":\"д\",\"ddagger\":\"‡\",\"ddarr\":\"⇊\",\"DD\":\"ⅅ\",\"dd\":\"ⅆ\",\"DDotrahd\":\"⤑\",\"ddotseq\":\"⩷\",\"deg\":\"°\",\"Del\":\"∇\",\"Delta\":\"Δ\",\"delta\":\"δ\",\"demptyv\":\"⦱\",\"dfisht\":\"⥿\",\"Dfr\":\"𝔇\",\"dfr\":\"𝔡\",\"dHar\":\"⥥\",\"dharl\":\"⇃\",\"dharr\":\"⇂\",\"DiacriticalAcute\":\"´\",\"DiacriticalDot\":\"˙\",\"DiacriticalDoubleAcute\":\"˝\",\"DiacriticalGrave\":\"`\",\"DiacriticalTilde\":\"˜\",\"diam\":\"⋄\",\"diamond\":\"⋄\",\"Diamond\":\"⋄\",\"diamondsuit\":\"♦\",\"diams\":\"♦\",\"die\":\"¨\",\"DifferentialD\":\"ⅆ\",\"digamma\":\"ϝ\",\"disin\":\"⋲\",\"div\":\"÷\",\"divide\":\"÷\",\"divideontimes\":\"⋇\",\"divonx\":\"⋇\",\"DJcy\":\"Ђ\",\"djcy\":\"ђ\",\"dlcorn\":\"⌞\",\"dlcrop\":\"⌍\",\"dollar\":\"$\",\"Dopf\":\"𝔻\",\"dopf\":\"𝕕\",\"Dot\":\"¨\",\"dot\":\"˙\",\"DotDot\":\"⃜\",\"doteq\":\"≐\",\"doteqdot\":\"≑\",\"DotEqual\":\"≐\",\"dotminus\":\"∸\",\"dotplus\":\"∔\",\"dotsquare\":\"⊡\",\"doublebarwedge\":\"⌆\",\"DoubleContourIntegral\":\"∯\",\"DoubleDot\":\"¨\",\"DoubleDownArrow\":\"⇓\",\"DoubleLeftArrow\":\"⇐\",\"DoubleLeftRightArrow\":\"⇔\",\"DoubleLeftTee\":\"⫤\",\"DoubleLongLeftArrow\":\"⟸\",\"DoubleLongLeftRightArrow\":\"⟺\",\"DoubleLongRightArrow\":\"⟹\",\"DoubleRightArrow\":\"⇒\",\"DoubleRightTee\":\"⊨\",\"DoubleUpArrow\":\"⇑\",\"DoubleUpDownArrow\":\"⇕\",\"DoubleVerticalBar\":\"∥\",\"DownArrowBar\":\"⤓\",\"downarrow\":\"↓\",\"DownArrow\":\"↓\",\"Downarrow\":\"⇓\",\"DownArrowUpArrow\":\"⇵\",\"DownBreve\":\"̑\",\"downdownarrows\":\"⇊\",\"downharpoonleft\":\"⇃\",\"downharpoonright\":\"⇂\",\"DownLeftRightVector\":\"⥐\",\"DownLeftTeeVector\":\"⥞\",\"DownLeftVectorBar\":\"⥖\",\"DownLeftVector\":\"↽\",\"DownRightTeeVector\":\"⥟\",\"DownRightVectorBar\":\"⥗\",\"DownRightVector\":\"⇁\",\"DownTeeArrow\":\"↧\",\"DownTee\":\"⊤\",\"drbkarow\":\"⤐\",\"drcorn\":\"⌟\",\"drcrop\":\"⌌\",\"Dscr\":\"𝒟\",\"dscr\":\"𝒹\",\"DScy\":\"Ѕ\",\"dscy\":\"ѕ\",\"dsol\":\"⧶\",\"Dstrok\":\"Đ\",\"dstrok\":\"đ\",\"dtdot\":\"⋱\",\"dtri\":\"▿\",\"dtrif\":\"▾\",\"duarr\":\"⇵\",\"duhar\":\"⥯\",\"dwangle\":\"⦦\",\"DZcy\":\"Џ\",\"dzcy\":\"џ\",\"dzigrarr\":\"⟿\",\"Eacute\":\"É\",\"eacute\":\"é\",\"easter\":\"⩮\",\"Ecaron\":\"Ě\",\"ecaron\":\"ě\",\"Ecirc\":\"Ê\",\"ecirc\":\"ê\",\"ecir\":\"≖\",\"ecolon\":\"≕\",\"Ecy\":\"Э\",\"ecy\":\"э\",\"eDDot\":\"⩷\",\"Edot\":\"Ė\",\"edot\":\"ė\",\"eDot\":\"≑\",\"ee\":\"ⅇ\",\"efDot\":\"≒\",\"Efr\":\"𝔈\",\"efr\":\"𝔢\",\"eg\":\"⪚\",\"Egrave\":\"È\",\"egrave\":\"è\",\"egs\":\"⪖\",\"egsdot\":\"⪘\",\"el\":\"⪙\",\"Element\":\"∈\",\"elinters\":\"⏧\",\"ell\":\"ℓ\",\"els\":\"⪕\",\"elsdot\":\"⪗\",\"Emacr\":\"Ē\",\"emacr\":\"ē\",\"empty\":\"∅\",\"emptyset\":\"∅\",\"EmptySmallSquare\":\"◻\",\"emptyv\":\"∅\",\"EmptyVerySmallSquare\":\"▫\",\"emsp13\":\" \",\"emsp14\":\" \",\"emsp\":\" \",\"ENG\":\"Ŋ\",\"eng\":\"ŋ\",\"ensp\":\" \",\"Eogon\":\"Ę\",\"eogon\":\"ę\",\"Eopf\":\"𝔼\",\"eopf\":\"𝕖\",\"epar\":\"⋕\",\"eparsl\":\"⧣\",\"eplus\":\"⩱\",\"epsi\":\"ε\",\"Epsilon\":\"Ε\",\"epsilon\":\"ε\",\"epsiv\":\"ϵ\",\"eqcirc\":\"≖\",\"eqcolon\":\"≕\",\"eqsim\":\"≂\",\"eqslantgtr\":\"⪖\",\"eqslantless\":\"⪕\",\"Equal\":\"⩵\",\"equals\":\"=\",\"EqualTilde\":\"≂\",\"equest\":\"≟\",\"Equilibrium\":\"⇌\",\"equiv\":\"≡\",\"equivDD\":\"⩸\",\"eqvparsl\":\"⧥\",\"erarr\":\"⥱\",\"erDot\":\"≓\",\"escr\":\"ℯ\",\"Escr\":\"ℰ\",\"esdot\":\"≐\",\"Esim\":\"⩳\",\"esim\":\"≂\",\"Eta\":\"Η\",\"eta\":\"η\",\"ETH\":\"Ð\",\"eth\":\"ð\",\"Euml\":\"Ë\",\"euml\":\"ë\",\"euro\":\"€\",\"excl\":\"!\",\"exist\":\"∃\",\"Exists\":\"∃\",\"expectation\":\"ℰ\",\"exponentiale\":\"ⅇ\",\"ExponentialE\":\"ⅇ\",\"fallingdotseq\":\"≒\",\"Fcy\":\"Ф\",\"fcy\":\"ф\",\"female\":\"♀\",\"ffilig\":\"ffi\",\"fflig\":\"ff\",\"ffllig\":\"ffl\",\"Ffr\":\"𝔉\",\"ffr\":\"𝔣\",\"filig\":\"fi\",\"FilledSmallSquare\":\"◼\",\"FilledVerySmallSquare\":\"▪\",\"fjlig\":\"fj\",\"flat\":\"♭\",\"fllig\":\"fl\",\"fltns\":\"▱\",\"fnof\":\"ƒ\",\"Fopf\":\"𝔽\",\"fopf\":\"𝕗\",\"forall\":\"∀\",\"ForAll\":\"∀\",\"fork\":\"⋔\",\"forkv\":\"⫙\",\"Fouriertrf\":\"ℱ\",\"fpartint\":\"⨍\",\"frac12\":\"½\",\"frac13\":\"⅓\",\"frac14\":\"¼\",\"frac15\":\"⅕\",\"frac16\":\"⅙\",\"frac18\":\"⅛\",\"frac23\":\"⅔\",\"frac25\":\"⅖\",\"frac34\":\"¾\",\"frac35\":\"⅗\",\"frac38\":\"⅜\",\"frac45\":\"⅘\",\"frac56\":\"⅚\",\"frac58\":\"⅝\",\"frac78\":\"⅞\",\"frasl\":\"⁄\",\"frown\":\"⌢\",\"fscr\":\"𝒻\",\"Fscr\":\"ℱ\",\"gacute\":\"ǵ\",\"Gamma\":\"Γ\",\"gamma\":\"γ\",\"Gammad\":\"Ϝ\",\"gammad\":\"ϝ\",\"gap\":\"⪆\",\"Gbreve\":\"Ğ\",\"gbreve\":\"ğ\",\"Gcedil\":\"Ģ\",\"Gcirc\":\"Ĝ\",\"gcirc\":\"ĝ\",\"Gcy\":\"Г\",\"gcy\":\"г\",\"Gdot\":\"Ġ\",\"gdot\":\"ġ\",\"ge\":\"≥\",\"gE\":\"≧\",\"gEl\":\"⪌\",\"gel\":\"⋛\",\"geq\":\"≥\",\"geqq\":\"≧\",\"geqslant\":\"⩾\",\"gescc\":\"⪩\",\"ges\":\"⩾\",\"gesdot\":\"⪀\",\"gesdoto\":\"⪂\",\"gesdotol\":\"⪄\",\"gesl\":\"⋛︀\",\"gesles\":\"⪔\",\"Gfr\":\"𝔊\",\"gfr\":\"𝔤\",\"gg\":\"≫\",\"Gg\":\"⋙\",\"ggg\":\"⋙\",\"gimel\":\"ℷ\",\"GJcy\":\"Ѓ\",\"gjcy\":\"ѓ\",\"gla\":\"⪥\",\"gl\":\"≷\",\"glE\":\"⪒\",\"glj\":\"⪤\",\"gnap\":\"⪊\",\"gnapprox\":\"⪊\",\"gne\":\"⪈\",\"gnE\":\"≩\",\"gneq\":\"⪈\",\"gneqq\":\"≩\",\"gnsim\":\"⋧\",\"Gopf\":\"𝔾\",\"gopf\":\"𝕘\",\"grave\":\"`\",\"GreaterEqual\":\"≥\",\"GreaterEqualLess\":\"⋛\",\"GreaterFullEqual\":\"≧\",\"GreaterGreater\":\"⪢\",\"GreaterLess\":\"≷\",\"GreaterSlantEqual\":\"⩾\",\"GreaterTilde\":\"≳\",\"Gscr\":\"𝒢\",\"gscr\":\"ℊ\",\"gsim\":\"≳\",\"gsime\":\"⪎\",\"gsiml\":\"⪐\",\"gtcc\":\"⪧\",\"gtcir\":\"⩺\",\"gt\":\">\",\"GT\":\">\",\"Gt\":\"≫\",\"gtdot\":\"⋗\",\"gtlPar\":\"⦕\",\"gtquest\":\"⩼\",\"gtrapprox\":\"⪆\",\"gtrarr\":\"⥸\",\"gtrdot\":\"⋗\",\"gtreqless\":\"⋛\",\"gtreqqless\":\"⪌\",\"gtrless\":\"≷\",\"gtrsim\":\"≳\",\"gvertneqq\":\"≩︀\",\"gvnE\":\"≩︀\",\"Hacek\":\"ˇ\",\"hairsp\":\" \",\"half\":\"½\",\"hamilt\":\"ℋ\",\"HARDcy\":\"Ъ\",\"hardcy\":\"ъ\",\"harrcir\":\"⥈\",\"harr\":\"↔\",\"hArr\":\"⇔\",\"harrw\":\"↭\",\"Hat\":\"^\",\"hbar\":\"ℏ\",\"Hcirc\":\"Ĥ\",\"hcirc\":\"ĥ\",\"hearts\":\"♥\",\"heartsuit\":\"♥\",\"hellip\":\"…\",\"hercon\":\"⊹\",\"hfr\":\"𝔥\",\"Hfr\":\"ℌ\",\"HilbertSpace\":\"ℋ\",\"hksearow\":\"⤥\",\"hkswarow\":\"⤦\",\"hoarr\":\"⇿\",\"homtht\":\"∻\",\"hookleftarrow\":\"↩\",\"hookrightarrow\":\"↪\",\"hopf\":\"𝕙\",\"Hopf\":\"ℍ\",\"horbar\":\"―\",\"HorizontalLine\":\"─\",\"hscr\":\"𝒽\",\"Hscr\":\"ℋ\",\"hslash\":\"ℏ\",\"Hstrok\":\"Ħ\",\"hstrok\":\"ħ\",\"HumpDownHump\":\"≎\",\"HumpEqual\":\"≏\",\"hybull\":\"⁃\",\"hyphen\":\"‐\",\"Iacute\":\"Í\",\"iacute\":\"í\",\"ic\":\"\",\"Icirc\":\"Î\",\"icirc\":\"î\",\"Icy\":\"И\",\"icy\":\"и\",\"Idot\":\"İ\",\"IEcy\":\"Е\",\"iecy\":\"е\",\"iexcl\":\"¡\",\"iff\":\"⇔\",\"ifr\":\"𝔦\",\"Ifr\":\"ℑ\",\"Igrave\":\"Ì\",\"igrave\":\"ì\",\"ii\":\"ⅈ\",\"iiiint\":\"⨌\",\"iiint\":\"∭\",\"iinfin\":\"⧜\",\"iiota\":\"℩\",\"IJlig\":\"IJ\",\"ijlig\":\"ij\",\"Imacr\":\"Ī\",\"imacr\":\"ī\",\"image\":\"ℑ\",\"ImaginaryI\":\"ⅈ\",\"imagline\":\"ℐ\",\"imagpart\":\"ℑ\",\"imath\":\"ı\",\"Im\":\"ℑ\",\"imof\":\"⊷\",\"imped\":\"Ƶ\",\"Implies\":\"⇒\",\"incare\":\"℅\",\"in\":\"∈\",\"infin\":\"∞\",\"infintie\":\"⧝\",\"inodot\":\"ı\",\"intcal\":\"⊺\",\"int\":\"∫\",\"Int\":\"∬\",\"integers\":\"ℤ\",\"Integral\":\"∫\",\"intercal\":\"⊺\",\"Intersection\":\"⋂\",\"intlarhk\":\"⨗\",\"intprod\":\"⨼\",\"InvisibleComma\":\"\",\"InvisibleTimes\":\"\",\"IOcy\":\"Ё\",\"iocy\":\"ё\",\"Iogon\":\"Į\",\"iogon\":\"į\",\"Iopf\":\"𝕀\",\"iopf\":\"𝕚\",\"Iota\":\"Ι\",\"iota\":\"ι\",\"iprod\":\"⨼\",\"iquest\":\"¿\",\"iscr\":\"𝒾\",\"Iscr\":\"ℐ\",\"isin\":\"∈\",\"isindot\":\"⋵\",\"isinE\":\"⋹\",\"isins\":\"⋴\",\"isinsv\":\"⋳\",\"isinv\":\"∈\",\"it\":\"\",\"Itilde\":\"Ĩ\",\"itilde\":\"ĩ\",\"Iukcy\":\"І\",\"iukcy\":\"і\",\"Iuml\":\"Ï\",\"iuml\":\"ï\",\"Jcirc\":\"Ĵ\",\"jcirc\":\"ĵ\",\"Jcy\":\"Й\",\"jcy\":\"й\",\"Jfr\":\"𝔍\",\"jfr\":\"𝔧\",\"jmath\":\"ȷ\",\"Jopf\":\"𝕁\",\"jopf\":\"𝕛\",\"Jscr\":\"𝒥\",\"jscr\":\"𝒿\",\"Jsercy\":\"Ј\",\"jsercy\":\"ј\",\"Jukcy\":\"Є\",\"jukcy\":\"є\",\"Kappa\":\"Κ\",\"kappa\":\"κ\",\"kappav\":\"ϰ\",\"Kcedil\":\"Ķ\",\"kcedil\":\"ķ\",\"Kcy\":\"К\",\"kcy\":\"к\",\"Kfr\":\"𝔎\",\"kfr\":\"𝔨\",\"kgreen\":\"ĸ\",\"KHcy\":\"Х\",\"khcy\":\"х\",\"KJcy\":\"Ќ\",\"kjcy\":\"ќ\",\"Kopf\":\"𝕂\",\"kopf\":\"𝕜\",\"Kscr\":\"𝒦\",\"kscr\":\"𝓀\",\"lAarr\":\"⇚\",\"Lacute\":\"Ĺ\",\"lacute\":\"ĺ\",\"laemptyv\":\"⦴\",\"lagran\":\"ℒ\",\"Lambda\":\"Λ\",\"lambda\":\"λ\",\"lang\":\"⟨\",\"Lang\":\"⟪\",\"langd\":\"⦑\",\"langle\":\"⟨\",\"lap\":\"⪅\",\"Laplacetrf\":\"ℒ\",\"laquo\":\"«\",\"larrb\":\"⇤\",\"larrbfs\":\"⤟\",\"larr\":\"←\",\"Larr\":\"↞\",\"lArr\":\"⇐\",\"larrfs\":\"⤝\",\"larrhk\":\"↩\",\"larrlp\":\"↫\",\"larrpl\":\"⤹\",\"larrsim\":\"⥳\",\"larrtl\":\"↢\",\"latail\":\"⤙\",\"lAtail\":\"⤛\",\"lat\":\"⪫\",\"late\":\"⪭\",\"lates\":\"⪭︀\",\"lbarr\":\"⤌\",\"lBarr\":\"⤎\",\"lbbrk\":\"❲\",\"lbrace\":\"{\",\"lbrack\":\"[\",\"lbrke\":\"⦋\",\"lbrksld\":\"⦏\",\"lbrkslu\":\"⦍\",\"Lcaron\":\"Ľ\",\"lcaron\":\"ľ\",\"Lcedil\":\"Ļ\",\"lcedil\":\"ļ\",\"lceil\":\"⌈\",\"lcub\":\"{\",\"Lcy\":\"Л\",\"lcy\":\"л\",\"ldca\":\"⤶\",\"ldquo\":\"“\",\"ldquor\":\"„\",\"ldrdhar\":\"⥧\",\"ldrushar\":\"⥋\",\"ldsh\":\"↲\",\"le\":\"≤\",\"lE\":\"≦\",\"LeftAngleBracket\":\"⟨\",\"LeftArrowBar\":\"⇤\",\"leftarrow\":\"←\",\"LeftArrow\":\"←\",\"Leftarrow\":\"⇐\",\"LeftArrowRightArrow\":\"⇆\",\"leftarrowtail\":\"↢\",\"LeftCeiling\":\"⌈\",\"LeftDoubleBracket\":\"⟦\",\"LeftDownTeeVector\":\"⥡\",\"LeftDownVectorBar\":\"⥙\",\"LeftDownVector\":\"⇃\",\"LeftFloor\":\"⌊\",\"leftharpoondown\":\"↽\",\"leftharpoonup\":\"↼\",\"leftleftarrows\":\"⇇\",\"leftrightarrow\":\"↔\",\"LeftRightArrow\":\"↔\",\"Leftrightarrow\":\"⇔\",\"leftrightarrows\":\"⇆\",\"leftrightharpoons\":\"⇋\",\"leftrightsquigarrow\":\"↭\",\"LeftRightVector\":\"⥎\",\"LeftTeeArrow\":\"↤\",\"LeftTee\":\"⊣\",\"LeftTeeVector\":\"⥚\",\"leftthreetimes\":\"⋋\",\"LeftTriangleBar\":\"⧏\",\"LeftTriangle\":\"⊲\",\"LeftTriangleEqual\":\"⊴\",\"LeftUpDownVector\":\"⥑\",\"LeftUpTeeVector\":\"⥠\",\"LeftUpVectorBar\":\"⥘\",\"LeftUpVector\":\"↿\",\"LeftVectorBar\":\"⥒\",\"LeftVector\":\"↼\",\"lEg\":\"⪋\",\"leg\":\"⋚\",\"leq\":\"≤\",\"leqq\":\"≦\",\"leqslant\":\"⩽\",\"lescc\":\"⪨\",\"les\":\"⩽\",\"lesdot\":\"⩿\",\"lesdoto\":\"⪁\",\"lesdotor\":\"⪃\",\"lesg\":\"⋚︀\",\"lesges\":\"⪓\",\"lessapprox\":\"⪅\",\"lessdot\":\"⋖\",\"lesseqgtr\":\"⋚\",\"lesseqqgtr\":\"⪋\",\"LessEqualGreater\":\"⋚\",\"LessFullEqual\":\"≦\",\"LessGreater\":\"≶\",\"lessgtr\":\"≶\",\"LessLess\":\"⪡\",\"lesssim\":\"≲\",\"LessSlantEqual\":\"⩽\",\"LessTilde\":\"≲\",\"lfisht\":\"⥼\",\"lfloor\":\"⌊\",\"Lfr\":\"𝔏\",\"lfr\":\"𝔩\",\"lg\":\"≶\",\"lgE\":\"⪑\",\"lHar\":\"⥢\",\"lhard\":\"↽\",\"lharu\":\"↼\",\"lharul\":\"⥪\",\"lhblk\":\"▄\",\"LJcy\":\"Љ\",\"ljcy\":\"љ\",\"llarr\":\"⇇\",\"ll\":\"≪\",\"Ll\":\"⋘\",\"llcorner\":\"⌞\",\"Lleftarrow\":\"⇚\",\"llhard\":\"⥫\",\"lltri\":\"◺\",\"Lmidot\":\"Ŀ\",\"lmidot\":\"ŀ\",\"lmoustache\":\"⎰\",\"lmoust\":\"⎰\",\"lnap\":\"⪉\",\"lnapprox\":\"⪉\",\"lne\":\"⪇\",\"lnE\":\"≨\",\"lneq\":\"⪇\",\"lneqq\":\"≨\",\"lnsim\":\"⋦\",\"loang\":\"⟬\",\"loarr\":\"⇽\",\"lobrk\":\"⟦\",\"longleftarrow\":\"⟵\",\"LongLeftArrow\":\"⟵\",\"Longleftarrow\":\"⟸\",\"longleftrightarrow\":\"⟷\",\"LongLeftRightArrow\":\"⟷\",\"Longleftrightarrow\":\"⟺\",\"longmapsto\":\"⟼\",\"longrightarrow\":\"⟶\",\"LongRightArrow\":\"⟶\",\"Longrightarrow\":\"⟹\",\"looparrowleft\":\"↫\",\"looparrowright\":\"↬\",\"lopar\":\"⦅\",\"Lopf\":\"𝕃\",\"lopf\":\"𝕝\",\"loplus\":\"⨭\",\"lotimes\":\"⨴\",\"lowast\":\"∗\",\"lowbar\":\"_\",\"LowerLeftArrow\":\"↙\",\"LowerRightArrow\":\"↘\",\"loz\":\"◊\",\"lozenge\":\"◊\",\"lozf\":\"⧫\",\"lpar\":\"(\",\"lparlt\":\"⦓\",\"lrarr\":\"⇆\",\"lrcorner\":\"⌟\",\"lrhar\":\"⇋\",\"lrhard\":\"⥭\",\"lrm\":\"\",\"lrtri\":\"⊿\",\"lsaquo\":\"‹\",\"lscr\":\"𝓁\",\"Lscr\":\"ℒ\",\"lsh\":\"↰\",\"Lsh\":\"↰\",\"lsim\":\"≲\",\"lsime\":\"⪍\",\"lsimg\":\"⪏\",\"lsqb\":\"[\",\"lsquo\":\"‘\",\"lsquor\":\"‚\",\"Lstrok\":\"Ł\",\"lstrok\":\"ł\",\"ltcc\":\"⪦\",\"ltcir\":\"⩹\",\"lt\":\"<\",\"LT\":\"<\",\"Lt\":\"≪\",\"ltdot\":\"⋖\",\"lthree\":\"⋋\",\"ltimes\":\"⋉\",\"ltlarr\":\"⥶\",\"ltquest\":\"⩻\",\"ltri\":\"◃\",\"ltrie\":\"⊴\",\"ltrif\":\"◂\",\"ltrPar\":\"⦖\",\"lurdshar\":\"⥊\",\"luruhar\":\"⥦\",\"lvertneqq\":\"≨︀\",\"lvnE\":\"≨︀\",\"macr\":\"¯\",\"male\":\"♂\",\"malt\":\"✠\",\"maltese\":\"✠\",\"Map\":\"⤅\",\"map\":\"↦\",\"mapsto\":\"↦\",\"mapstodown\":\"↧\",\"mapstoleft\":\"↤\",\"mapstoup\":\"↥\",\"marker\":\"▮\",\"mcomma\":\"⨩\",\"Mcy\":\"М\",\"mcy\":\"м\",\"mdash\":\"—\",\"mDDot\":\"∺\",\"measuredangle\":\"∡\",\"MediumSpace\":\" \",\"Mellintrf\":\"ℳ\",\"Mfr\":\"𝔐\",\"mfr\":\"𝔪\",\"mho\":\"℧\",\"micro\":\"µ\",\"midast\":\"*\",\"midcir\":\"⫰\",\"mid\":\"∣\",\"middot\":\"·\",\"minusb\":\"⊟\",\"minus\":\"−\",\"minusd\":\"∸\",\"minusdu\":\"⨪\",\"MinusPlus\":\"∓\",\"mlcp\":\"⫛\",\"mldr\":\"…\",\"mnplus\":\"∓\",\"models\":\"⊧\",\"Mopf\":\"𝕄\",\"mopf\":\"𝕞\",\"mp\":\"∓\",\"mscr\":\"𝓂\",\"Mscr\":\"ℳ\",\"mstpos\":\"∾\",\"Mu\":\"Μ\",\"mu\":\"μ\",\"multimap\":\"⊸\",\"mumap\":\"⊸\",\"nabla\":\"∇\",\"Nacute\":\"Ń\",\"nacute\":\"ń\",\"nang\":\"∠⃒\",\"nap\":\"≉\",\"napE\":\"⩰̸\",\"napid\":\"≋̸\",\"napos\":\"ʼn\",\"napprox\":\"≉\",\"natural\":\"♮\",\"naturals\":\"ℕ\",\"natur\":\"♮\",\"nbsp\":\" \",\"nbump\":\"≎̸\",\"nbumpe\":\"≏̸\",\"ncap\":\"⩃\",\"Ncaron\":\"Ň\",\"ncaron\":\"ň\",\"Ncedil\":\"Ņ\",\"ncedil\":\"ņ\",\"ncong\":\"≇\",\"ncongdot\":\"⩭̸\",\"ncup\":\"⩂\",\"Ncy\":\"Н\",\"ncy\":\"н\",\"ndash\":\"–\",\"nearhk\":\"⤤\",\"nearr\":\"↗\",\"neArr\":\"⇗\",\"nearrow\":\"↗\",\"ne\":\"≠\",\"nedot\":\"≐̸\",\"NegativeMediumSpace\":\"\",\"NegativeThickSpace\":\"\",\"NegativeThinSpace\":\"\",\"NegativeVeryThinSpace\":\"\",\"nequiv\":\"≢\",\"nesear\":\"⤨\",\"nesim\":\"≂̸\",\"NestedGreaterGreater\":\"≫\",\"NestedLessLess\":\"≪\",\"NewLine\":\"\\n\",\"nexist\":\"∄\",\"nexists\":\"∄\",\"Nfr\":\"𝔑\",\"nfr\":\"𝔫\",\"ngE\":\"≧̸\",\"nge\":\"≱\",\"ngeq\":\"≱\",\"ngeqq\":\"≧̸\",\"ngeqslant\":\"⩾̸\",\"nges\":\"⩾̸\",\"nGg\":\"⋙̸\",\"ngsim\":\"≵\",\"nGt\":\"≫⃒\",\"ngt\":\"≯\",\"ngtr\":\"≯\",\"nGtv\":\"≫̸\",\"nharr\":\"↮\",\"nhArr\":\"⇎\",\"nhpar\":\"⫲\",\"ni\":\"∋\",\"nis\":\"⋼\",\"nisd\":\"⋺\",\"niv\":\"∋\",\"NJcy\":\"Њ\",\"njcy\":\"њ\",\"nlarr\":\"↚\",\"nlArr\":\"⇍\",\"nldr\":\"‥\",\"nlE\":\"≦̸\",\"nle\":\"≰\",\"nleftarrow\":\"↚\",\"nLeftarrow\":\"⇍\",\"nleftrightarrow\":\"↮\",\"nLeftrightarrow\":\"⇎\",\"nleq\":\"≰\",\"nleqq\":\"≦̸\",\"nleqslant\":\"⩽̸\",\"nles\":\"⩽̸\",\"nless\":\"≮\",\"nLl\":\"⋘̸\",\"nlsim\":\"≴\",\"nLt\":\"≪⃒\",\"nlt\":\"≮\",\"nltri\":\"⋪\",\"nltrie\":\"⋬\",\"nLtv\":\"≪̸\",\"nmid\":\"∤\",\"NoBreak\":\"\",\"NonBreakingSpace\":\" \",\"nopf\":\"𝕟\",\"Nopf\":\"ℕ\",\"Not\":\"⫬\",\"not\":\"¬\",\"NotCongruent\":\"≢\",\"NotCupCap\":\"≭\",\"NotDoubleVerticalBar\":\"∦\",\"NotElement\":\"∉\",\"NotEqual\":\"≠\",\"NotEqualTilde\":\"≂̸\",\"NotExists\":\"∄\",\"NotGreater\":\"≯\",\"NotGreaterEqual\":\"≱\",\"NotGreaterFullEqual\":\"≧̸\",\"NotGreaterGreater\":\"≫̸\",\"NotGreaterLess\":\"≹\",\"NotGreaterSlantEqual\":\"⩾̸\",\"NotGreaterTilde\":\"≵\",\"NotHumpDownHump\":\"≎̸\",\"NotHumpEqual\":\"≏̸\",\"notin\":\"∉\",\"notindot\":\"⋵̸\",\"notinE\":\"⋹̸\",\"notinva\":\"∉\",\"notinvb\":\"⋷\",\"notinvc\":\"⋶\",\"NotLeftTriangleBar\":\"⧏̸\",\"NotLeftTriangle\":\"⋪\",\"NotLeftTriangleEqual\":\"⋬\",\"NotLess\":\"≮\",\"NotLessEqual\":\"≰\",\"NotLessGreater\":\"≸\",\"NotLessLess\":\"≪̸\",\"NotLessSlantEqual\":\"⩽̸\",\"NotLessTilde\":\"≴\",\"NotNestedGreaterGreater\":\"⪢̸\",\"NotNestedLessLess\":\"⪡̸\",\"notni\":\"∌\",\"notniva\":\"∌\",\"notnivb\":\"⋾\",\"notnivc\":\"⋽\",\"NotPrecedes\":\"⊀\",\"NotPrecedesEqual\":\"⪯̸\",\"NotPrecedesSlantEqual\":\"⋠\",\"NotReverseElement\":\"∌\",\"NotRightTriangleBar\":\"⧐̸\",\"NotRightTriangle\":\"⋫\",\"NotRightTriangleEqual\":\"⋭\",\"NotSquareSubset\":\"⊏̸\",\"NotSquareSubsetEqual\":\"⋢\",\"NotSquareSuperset\":\"⊐̸\",\"NotSquareSupersetEqual\":\"⋣\",\"NotSubset\":\"⊂⃒\",\"NotSubsetEqual\":\"⊈\",\"NotSucceeds\":\"⊁\",\"NotSucceedsEqual\":\"⪰̸\",\"NotSucceedsSlantEqual\":\"⋡\",\"NotSucceedsTilde\":\"≿̸\",\"NotSuperset\":\"⊃⃒\",\"NotSupersetEqual\":\"⊉\",\"NotTilde\":\"≁\",\"NotTildeEqual\":\"≄\",\"NotTildeFullEqual\":\"≇\",\"NotTildeTilde\":\"≉\",\"NotVerticalBar\":\"∤\",\"nparallel\":\"∦\",\"npar\":\"∦\",\"nparsl\":\"⫽⃥\",\"npart\":\"∂̸\",\"npolint\":\"⨔\",\"npr\":\"⊀\",\"nprcue\":\"⋠\",\"nprec\":\"⊀\",\"npreceq\":\"⪯̸\",\"npre\":\"⪯̸\",\"nrarrc\":\"⤳̸\",\"nrarr\":\"↛\",\"nrArr\":\"⇏\",\"nrarrw\":\"↝̸\",\"nrightarrow\":\"↛\",\"nRightarrow\":\"⇏\",\"nrtri\":\"⋫\",\"nrtrie\":\"⋭\",\"nsc\":\"⊁\",\"nsccue\":\"⋡\",\"nsce\":\"⪰̸\",\"Nscr\":\"𝒩\",\"nscr\":\"𝓃\",\"nshortmid\":\"∤\",\"nshortparallel\":\"∦\",\"nsim\":\"≁\",\"nsime\":\"≄\",\"nsimeq\":\"≄\",\"nsmid\":\"∤\",\"nspar\":\"∦\",\"nsqsube\":\"⋢\",\"nsqsupe\":\"⋣\",\"nsub\":\"⊄\",\"nsubE\":\"⫅̸\",\"nsube\":\"⊈\",\"nsubset\":\"⊂⃒\",\"nsubseteq\":\"⊈\",\"nsubseteqq\":\"⫅̸\",\"nsucc\":\"⊁\",\"nsucceq\":\"⪰̸\",\"nsup\":\"⊅\",\"nsupE\":\"⫆̸\",\"nsupe\":\"⊉\",\"nsupset\":\"⊃⃒\",\"nsupseteq\":\"⊉\",\"nsupseteqq\":\"⫆̸\",\"ntgl\":\"≹\",\"Ntilde\":\"Ñ\",\"ntilde\":\"ñ\",\"ntlg\":\"≸\",\"ntriangleleft\":\"⋪\",\"ntrianglelefteq\":\"⋬\",\"ntriangleright\":\"⋫\",\"ntrianglerighteq\":\"⋭\",\"Nu\":\"Ν\",\"nu\":\"ν\",\"num\":\"#\",\"numero\":\"№\",\"numsp\":\" \",\"nvap\":\"≍⃒\",\"nvdash\":\"⊬\",\"nvDash\":\"⊭\",\"nVdash\":\"⊮\",\"nVDash\":\"⊯\",\"nvge\":\"≥⃒\",\"nvgt\":\">⃒\",\"nvHarr\":\"⤄\",\"nvinfin\":\"⧞\",\"nvlArr\":\"⤂\",\"nvle\":\"≤⃒\",\"nvlt\":\"<⃒\",\"nvltrie\":\"⊴⃒\",\"nvrArr\":\"⤃\",\"nvrtrie\":\"⊵⃒\",\"nvsim\":\"∼⃒\",\"nwarhk\":\"⤣\",\"nwarr\":\"↖\",\"nwArr\":\"⇖\",\"nwarrow\":\"↖\",\"nwnear\":\"⤧\",\"Oacute\":\"Ó\",\"oacute\":\"ó\",\"oast\":\"⊛\",\"Ocirc\":\"Ô\",\"ocirc\":\"ô\",\"ocir\":\"⊚\",\"Ocy\":\"О\",\"ocy\":\"о\",\"odash\":\"⊝\",\"Odblac\":\"Ő\",\"odblac\":\"ő\",\"odiv\":\"⨸\",\"odot\":\"⊙\",\"odsold\":\"⦼\",\"OElig\":\"Œ\",\"oelig\":\"œ\",\"ofcir\":\"⦿\",\"Ofr\":\"𝔒\",\"ofr\":\"𝔬\",\"ogon\":\"˛\",\"Ograve\":\"Ò\",\"ograve\":\"ò\",\"ogt\":\"⧁\",\"ohbar\":\"⦵\",\"ohm\":\"Ω\",\"oint\":\"∮\",\"olarr\":\"↺\",\"olcir\":\"⦾\",\"olcross\":\"⦻\",\"oline\":\"‾\",\"olt\":\"⧀\",\"Omacr\":\"Ō\",\"omacr\":\"ō\",\"Omega\":\"Ω\",\"omega\":\"ω\",\"Omicron\":\"Ο\",\"omicron\":\"ο\",\"omid\":\"⦶\",\"ominus\":\"⊖\",\"Oopf\":\"𝕆\",\"oopf\":\"𝕠\",\"opar\":\"⦷\",\"OpenCurlyDoubleQuote\":\"“\",\"OpenCurlyQuote\":\"‘\",\"operp\":\"⦹\",\"oplus\":\"⊕\",\"orarr\":\"↻\",\"Or\":\"⩔\",\"or\":\"∨\",\"ord\":\"⩝\",\"order\":\"ℴ\",\"orderof\":\"ℴ\",\"ordf\":\"ª\",\"ordm\":\"º\",\"origof\":\"⊶\",\"oror\":\"⩖\",\"orslope\":\"⩗\",\"orv\":\"⩛\",\"oS\":\"Ⓢ\",\"Oscr\":\"𝒪\",\"oscr\":\"ℴ\",\"Oslash\":\"Ø\",\"oslash\":\"ø\",\"osol\":\"⊘\",\"Otilde\":\"Õ\",\"otilde\":\"õ\",\"otimesas\":\"⨶\",\"Otimes\":\"⨷\",\"otimes\":\"⊗\",\"Ouml\":\"Ö\",\"ouml\":\"ö\",\"ovbar\":\"⌽\",\"OverBar\":\"‾\",\"OverBrace\":\"⏞\",\"OverBracket\":\"⎴\",\"OverParenthesis\":\"⏜\",\"para\":\"¶\",\"parallel\":\"∥\",\"par\":\"∥\",\"parsim\":\"⫳\",\"parsl\":\"⫽\",\"part\":\"∂\",\"PartialD\":\"∂\",\"Pcy\":\"П\",\"pcy\":\"п\",\"percnt\":\"%\",\"period\":\".\",\"permil\":\"‰\",\"perp\":\"⊥\",\"pertenk\":\"‱\",\"Pfr\":\"𝔓\",\"pfr\":\"𝔭\",\"Phi\":\"Φ\",\"phi\":\"φ\",\"phiv\":\"ϕ\",\"phmmat\":\"ℳ\",\"phone\":\"☎\",\"Pi\":\"Π\",\"pi\":\"π\",\"pitchfork\":\"⋔\",\"piv\":\"ϖ\",\"planck\":\"ℏ\",\"planckh\":\"ℎ\",\"plankv\":\"ℏ\",\"plusacir\":\"⨣\",\"plusb\":\"⊞\",\"pluscir\":\"⨢\",\"plus\":\"+\",\"plusdo\":\"∔\",\"plusdu\":\"⨥\",\"pluse\":\"⩲\",\"PlusMinus\":\"±\",\"plusmn\":\"±\",\"plussim\":\"⨦\",\"plustwo\":\"⨧\",\"pm\":\"±\",\"Poincareplane\":\"ℌ\",\"pointint\":\"⨕\",\"popf\":\"𝕡\",\"Popf\":\"ℙ\",\"pound\":\"£\",\"prap\":\"⪷\",\"Pr\":\"⪻\",\"pr\":\"≺\",\"prcue\":\"≼\",\"precapprox\":\"⪷\",\"prec\":\"≺\",\"preccurlyeq\":\"≼\",\"Precedes\":\"≺\",\"PrecedesEqual\":\"⪯\",\"PrecedesSlantEqual\":\"≼\",\"PrecedesTilde\":\"≾\",\"preceq\":\"⪯\",\"precnapprox\":\"⪹\",\"precneqq\":\"⪵\",\"precnsim\":\"⋨\",\"pre\":\"⪯\",\"prE\":\"⪳\",\"precsim\":\"≾\",\"prime\":\"′\",\"Prime\":\"″\",\"primes\":\"ℙ\",\"prnap\":\"⪹\",\"prnE\":\"⪵\",\"prnsim\":\"⋨\",\"prod\":\"∏\",\"Product\":\"∏\",\"profalar\":\"⌮\",\"profline\":\"⌒\",\"profsurf\":\"⌓\",\"prop\":\"∝\",\"Proportional\":\"∝\",\"Proportion\":\"∷\",\"propto\":\"∝\",\"prsim\":\"≾\",\"prurel\":\"⊰\",\"Pscr\":\"𝒫\",\"pscr\":\"𝓅\",\"Psi\":\"Ψ\",\"psi\":\"ψ\",\"puncsp\":\" \",\"Qfr\":\"𝔔\",\"qfr\":\"𝔮\",\"qint\":\"⨌\",\"qopf\":\"𝕢\",\"Qopf\":\"ℚ\",\"qprime\":\"⁗\",\"Qscr\":\"𝒬\",\"qscr\":\"𝓆\",\"quaternions\":\"ℍ\",\"quatint\":\"⨖\",\"quest\":\"?\",\"questeq\":\"≟\",\"quot\":\"\\\"\",\"QUOT\":\"\\\"\",\"rAarr\":\"⇛\",\"race\":\"∽̱\",\"Racute\":\"Ŕ\",\"racute\":\"ŕ\",\"radic\":\"√\",\"raemptyv\":\"⦳\",\"rang\":\"⟩\",\"Rang\":\"⟫\",\"rangd\":\"⦒\",\"range\":\"⦥\",\"rangle\":\"⟩\",\"raquo\":\"»\",\"rarrap\":\"⥵\",\"rarrb\":\"⇥\",\"rarrbfs\":\"⤠\",\"rarrc\":\"⤳\",\"rarr\":\"→\",\"Rarr\":\"↠\",\"rArr\":\"⇒\",\"rarrfs\":\"⤞\",\"rarrhk\":\"↪\",\"rarrlp\":\"↬\",\"rarrpl\":\"⥅\",\"rarrsim\":\"⥴\",\"Rarrtl\":\"⤖\",\"rarrtl\":\"↣\",\"rarrw\":\"↝\",\"ratail\":\"⤚\",\"rAtail\":\"⤜\",\"ratio\":\"∶\",\"rationals\":\"ℚ\",\"rbarr\":\"⤍\",\"rBarr\":\"⤏\",\"RBarr\":\"⤐\",\"rbbrk\":\"❳\",\"rbrace\":\"}\",\"rbrack\":\"]\",\"rbrke\":\"⦌\",\"rbrksld\":\"⦎\",\"rbrkslu\":\"⦐\",\"Rcaron\":\"Ř\",\"rcaron\":\"ř\",\"Rcedil\":\"Ŗ\",\"rcedil\":\"ŗ\",\"rceil\":\"⌉\",\"rcub\":\"}\",\"Rcy\":\"Р\",\"rcy\":\"р\",\"rdca\":\"⤷\",\"rdldhar\":\"⥩\",\"rdquo\":\"”\",\"rdquor\":\"”\",\"rdsh\":\"↳\",\"real\":\"ℜ\",\"realine\":\"ℛ\",\"realpart\":\"ℜ\",\"reals\":\"ℝ\",\"Re\":\"ℜ\",\"rect\":\"▭\",\"reg\":\"®\",\"REG\":\"®\",\"ReverseElement\":\"∋\",\"ReverseEquilibrium\":\"⇋\",\"ReverseUpEquilibrium\":\"⥯\",\"rfisht\":\"⥽\",\"rfloor\":\"⌋\",\"rfr\":\"𝔯\",\"Rfr\":\"ℜ\",\"rHar\":\"⥤\",\"rhard\":\"⇁\",\"rharu\":\"⇀\",\"rharul\":\"⥬\",\"Rho\":\"Ρ\",\"rho\":\"ρ\",\"rhov\":\"ϱ\",\"RightAngleBracket\":\"⟩\",\"RightArrowBar\":\"⇥\",\"rightarrow\":\"→\",\"RightArrow\":\"→\",\"Rightarrow\":\"⇒\",\"RightArrowLeftArrow\":\"⇄\",\"rightarrowtail\":\"↣\",\"RightCeiling\":\"⌉\",\"RightDoubleBracket\":\"⟧\",\"RightDownTeeVector\":\"⥝\",\"RightDownVectorBar\":\"⥕\",\"RightDownVector\":\"⇂\",\"RightFloor\":\"⌋\",\"rightharpoondown\":\"⇁\",\"rightharpoonup\":\"⇀\",\"rightleftarrows\":\"⇄\",\"rightleftharpoons\":\"⇌\",\"rightrightarrows\":\"⇉\",\"rightsquigarrow\":\"↝\",\"RightTeeArrow\":\"↦\",\"RightTee\":\"⊢\",\"RightTeeVector\":\"⥛\",\"rightthreetimes\":\"⋌\",\"RightTriangleBar\":\"⧐\",\"RightTriangle\":\"⊳\",\"RightTriangleEqual\":\"⊵\",\"RightUpDownVector\":\"⥏\",\"RightUpTeeVector\":\"⥜\",\"RightUpVectorBar\":\"⥔\",\"RightUpVector\":\"↾\",\"RightVectorBar\":\"⥓\",\"RightVector\":\"⇀\",\"ring\":\"˚\",\"risingdotseq\":\"≓\",\"rlarr\":\"⇄\",\"rlhar\":\"⇌\",\"rlm\":\"\",\"rmoustache\":\"⎱\",\"rmoust\":\"⎱\",\"rnmid\":\"⫮\",\"roang\":\"⟭\",\"roarr\":\"⇾\",\"robrk\":\"⟧\",\"ropar\":\"⦆\",\"ropf\":\"𝕣\",\"Ropf\":\"ℝ\",\"roplus\":\"⨮\",\"rotimes\":\"⨵\",\"RoundImplies\":\"⥰\",\"rpar\":\")\",\"rpargt\":\"⦔\",\"rppolint\":\"⨒\",\"rrarr\":\"⇉\",\"Rrightarrow\":\"⇛\",\"rsaquo\":\"›\",\"rscr\":\"𝓇\",\"Rscr\":\"ℛ\",\"rsh\":\"↱\",\"Rsh\":\"↱\",\"rsqb\":\"]\",\"rsquo\":\"’\",\"rsquor\":\"’\",\"rthree\":\"⋌\",\"rtimes\":\"⋊\",\"rtri\":\"▹\",\"rtrie\":\"⊵\",\"rtrif\":\"▸\",\"rtriltri\":\"⧎\",\"RuleDelayed\":\"⧴\",\"ruluhar\":\"⥨\",\"rx\":\"℞\",\"Sacute\":\"Ś\",\"sacute\":\"ś\",\"sbquo\":\"‚\",\"scap\":\"⪸\",\"Scaron\":\"Š\",\"scaron\":\"š\",\"Sc\":\"⪼\",\"sc\":\"≻\",\"sccue\":\"≽\",\"sce\":\"⪰\",\"scE\":\"⪴\",\"Scedil\":\"Ş\",\"scedil\":\"ş\",\"Scirc\":\"Ŝ\",\"scirc\":\"ŝ\",\"scnap\":\"⪺\",\"scnE\":\"⪶\",\"scnsim\":\"⋩\",\"scpolint\":\"⨓\",\"scsim\":\"≿\",\"Scy\":\"С\",\"scy\":\"с\",\"sdotb\":\"⊡\",\"sdot\":\"⋅\",\"sdote\":\"⩦\",\"searhk\":\"⤥\",\"searr\":\"↘\",\"seArr\":\"⇘\",\"searrow\":\"↘\",\"sect\":\"§\",\"semi\":\";\",\"seswar\":\"⤩\",\"setminus\":\"∖\",\"setmn\":\"∖\",\"sext\":\"✶\",\"Sfr\":\"𝔖\",\"sfr\":\"𝔰\",\"sfrown\":\"⌢\",\"sharp\":\"♯\",\"SHCHcy\":\"Щ\",\"shchcy\":\"щ\",\"SHcy\":\"Ш\",\"shcy\":\"ш\",\"ShortDownArrow\":\"↓\",\"ShortLeftArrow\":\"←\",\"shortmid\":\"∣\",\"shortparallel\":\"∥\",\"ShortRightArrow\":\"→\",\"ShortUpArrow\":\"↑\",\"shy\":\"\",\"Sigma\":\"Σ\",\"sigma\":\"σ\",\"sigmaf\":\"ς\",\"sigmav\":\"ς\",\"sim\":\"∼\",\"simdot\":\"⩪\",\"sime\":\"≃\",\"simeq\":\"≃\",\"simg\":\"⪞\",\"simgE\":\"⪠\",\"siml\":\"⪝\",\"simlE\":\"⪟\",\"simne\":\"≆\",\"simplus\":\"⨤\",\"simrarr\":\"⥲\",\"slarr\":\"←\",\"SmallCircle\":\"∘\",\"smallsetminus\":\"∖\",\"smashp\":\"⨳\",\"smeparsl\":\"⧤\",\"smid\":\"∣\",\"smile\":\"⌣\",\"smt\":\"⪪\",\"smte\":\"⪬\",\"smtes\":\"⪬︀\",\"SOFTcy\":\"Ь\",\"softcy\":\"ь\",\"solbar\":\"⌿\",\"solb\":\"⧄\",\"sol\":\"/\",\"Sopf\":\"𝕊\",\"sopf\":\"𝕤\",\"spades\":\"♠\",\"spadesuit\":\"♠\",\"spar\":\"∥\",\"sqcap\":\"⊓\",\"sqcaps\":\"⊓︀\",\"sqcup\":\"⊔\",\"sqcups\":\"⊔︀\",\"Sqrt\":\"√\",\"sqsub\":\"⊏\",\"sqsube\":\"⊑\",\"sqsubset\":\"⊏\",\"sqsubseteq\":\"⊑\",\"sqsup\":\"⊐\",\"sqsupe\":\"⊒\",\"sqsupset\":\"⊐\",\"sqsupseteq\":\"⊒\",\"square\":\"□\",\"Square\":\"□\",\"SquareIntersection\":\"⊓\",\"SquareSubset\":\"⊏\",\"SquareSubsetEqual\":\"⊑\",\"SquareSuperset\":\"⊐\",\"SquareSupersetEqual\":\"⊒\",\"SquareUnion\":\"⊔\",\"squarf\":\"▪\",\"squ\":\"□\",\"squf\":\"▪\",\"srarr\":\"→\",\"Sscr\":\"𝒮\",\"sscr\":\"𝓈\",\"ssetmn\":\"∖\",\"ssmile\":\"⌣\",\"sstarf\":\"⋆\",\"Star\":\"⋆\",\"star\":\"☆\",\"starf\":\"★\",\"straightepsilon\":\"ϵ\",\"straightphi\":\"ϕ\",\"strns\":\"¯\",\"sub\":\"⊂\",\"Sub\":\"⋐\",\"subdot\":\"⪽\",\"subE\":\"⫅\",\"sube\":\"⊆\",\"subedot\":\"⫃\",\"submult\":\"⫁\",\"subnE\":\"⫋\",\"subne\":\"⊊\",\"subplus\":\"⪿\",\"subrarr\":\"⥹\",\"subset\":\"⊂\",\"Subset\":\"⋐\",\"subseteq\":\"⊆\",\"subseteqq\":\"⫅\",\"SubsetEqual\":\"⊆\",\"subsetneq\":\"⊊\",\"subsetneqq\":\"⫋\",\"subsim\":\"⫇\",\"subsub\":\"⫕\",\"subsup\":\"⫓\",\"succapprox\":\"⪸\",\"succ\":\"≻\",\"succcurlyeq\":\"≽\",\"Succeeds\":\"≻\",\"SucceedsEqual\":\"⪰\",\"SucceedsSlantEqual\":\"≽\",\"SucceedsTilde\":\"≿\",\"succeq\":\"⪰\",\"succnapprox\":\"⪺\",\"succneqq\":\"⪶\",\"succnsim\":\"⋩\",\"succsim\":\"≿\",\"SuchThat\":\"∋\",\"sum\":\"∑\",\"Sum\":\"∑\",\"sung\":\"♪\",\"sup1\":\"¹\",\"sup2\":\"²\",\"sup3\":\"³\",\"sup\":\"⊃\",\"Sup\":\"⋑\",\"supdot\":\"⪾\",\"supdsub\":\"⫘\",\"supE\":\"⫆\",\"supe\":\"⊇\",\"supedot\":\"⫄\",\"Superset\":\"⊃\",\"SupersetEqual\":\"⊇\",\"suphsol\":\"⟉\",\"suphsub\":\"⫗\",\"suplarr\":\"⥻\",\"supmult\":\"⫂\",\"supnE\":\"⫌\",\"supne\":\"⊋\",\"supplus\":\"⫀\",\"supset\":\"⊃\",\"Supset\":\"⋑\",\"supseteq\":\"⊇\",\"supseteqq\":\"⫆\",\"supsetneq\":\"⊋\",\"supsetneqq\":\"⫌\",\"supsim\":\"⫈\",\"supsub\":\"⫔\",\"supsup\":\"⫖\",\"swarhk\":\"⤦\",\"swarr\":\"↙\",\"swArr\":\"⇙\",\"swarrow\":\"↙\",\"swnwar\":\"⤪\",\"szlig\":\"ß\",\"Tab\":\"\\t\",\"target\":\"⌖\",\"Tau\":\"Τ\",\"tau\":\"τ\",\"tbrk\":\"⎴\",\"Tcaron\":\"Ť\",\"tcaron\":\"ť\",\"Tcedil\":\"Ţ\",\"tcedil\":\"ţ\",\"Tcy\":\"Т\",\"tcy\":\"т\",\"tdot\":\"⃛\",\"telrec\":\"⌕\",\"Tfr\":\"𝔗\",\"tfr\":\"𝔱\",\"there4\":\"∴\",\"therefore\":\"∴\",\"Therefore\":\"∴\",\"Theta\":\"Θ\",\"theta\":\"θ\",\"thetasym\":\"ϑ\",\"thetav\":\"ϑ\",\"thickapprox\":\"≈\",\"thicksim\":\"∼\",\"ThickSpace\":\" \",\"ThinSpace\":\" \",\"thinsp\":\" \",\"thkap\":\"≈\",\"thksim\":\"∼\",\"THORN\":\"Þ\",\"thorn\":\"þ\",\"tilde\":\"˜\",\"Tilde\":\"∼\",\"TildeEqual\":\"≃\",\"TildeFullEqual\":\"≅\",\"TildeTilde\":\"≈\",\"timesbar\":\"⨱\",\"timesb\":\"⊠\",\"times\":\"×\",\"timesd\":\"⨰\",\"tint\":\"∭\",\"toea\":\"⤨\",\"topbot\":\"⌶\",\"topcir\":\"⫱\",\"top\":\"⊤\",\"Topf\":\"𝕋\",\"topf\":\"𝕥\",\"topfork\":\"⫚\",\"tosa\":\"⤩\",\"tprime\":\"‴\",\"trade\":\"™\",\"TRADE\":\"™\",\"triangle\":\"▵\",\"triangledown\":\"▿\",\"triangleleft\":\"◃\",\"trianglelefteq\":\"⊴\",\"triangleq\":\"≜\",\"triangleright\":\"▹\",\"trianglerighteq\":\"⊵\",\"tridot\":\"◬\",\"trie\":\"≜\",\"triminus\":\"⨺\",\"TripleDot\":\"⃛\",\"triplus\":\"⨹\",\"trisb\":\"⧍\",\"tritime\":\"⨻\",\"trpezium\":\"⏢\",\"Tscr\":\"𝒯\",\"tscr\":\"𝓉\",\"TScy\":\"Ц\",\"tscy\":\"ц\",\"TSHcy\":\"Ћ\",\"tshcy\":\"ћ\",\"Tstrok\":\"Ŧ\",\"tstrok\":\"ŧ\",\"twixt\":\"≬\",\"twoheadleftarrow\":\"↞\",\"twoheadrightarrow\":\"↠\",\"Uacute\":\"Ú\",\"uacute\":\"ú\",\"uarr\":\"↑\",\"Uarr\":\"↟\",\"uArr\":\"⇑\",\"Uarrocir\":\"⥉\",\"Ubrcy\":\"Ў\",\"ubrcy\":\"ў\",\"Ubreve\":\"Ŭ\",\"ubreve\":\"ŭ\",\"Ucirc\":\"Û\",\"ucirc\":\"û\",\"Ucy\":\"У\",\"ucy\":\"у\",\"udarr\":\"⇅\",\"Udblac\":\"Ű\",\"udblac\":\"ű\",\"udhar\":\"⥮\",\"ufisht\":\"⥾\",\"Ufr\":\"𝔘\",\"ufr\":\"𝔲\",\"Ugrave\":\"Ù\",\"ugrave\":\"ù\",\"uHar\":\"⥣\",\"uharl\":\"↿\",\"uharr\":\"↾\",\"uhblk\":\"▀\",\"ulcorn\":\"⌜\",\"ulcorner\":\"⌜\",\"ulcrop\":\"⌏\",\"ultri\":\"◸\",\"Umacr\":\"Ū\",\"umacr\":\"ū\",\"uml\":\"¨\",\"UnderBar\":\"_\",\"UnderBrace\":\"⏟\",\"UnderBracket\":\"⎵\",\"UnderParenthesis\":\"⏝\",\"Union\":\"⋃\",\"UnionPlus\":\"⊎\",\"Uogon\":\"Ų\",\"uogon\":\"ų\",\"Uopf\":\"𝕌\",\"uopf\":\"𝕦\",\"UpArrowBar\":\"⤒\",\"uparrow\":\"↑\",\"UpArrow\":\"↑\",\"Uparrow\":\"⇑\",\"UpArrowDownArrow\":\"⇅\",\"updownarrow\":\"↕\",\"UpDownArrow\":\"↕\",\"Updownarrow\":\"⇕\",\"UpEquilibrium\":\"⥮\",\"upharpoonleft\":\"↿\",\"upharpoonright\":\"↾\",\"uplus\":\"⊎\",\"UpperLeftArrow\":\"↖\",\"UpperRightArrow\":\"↗\",\"upsi\":\"υ\",\"Upsi\":\"ϒ\",\"upsih\":\"ϒ\",\"Upsilon\":\"Υ\",\"upsilon\":\"υ\",\"UpTeeArrow\":\"↥\",\"UpTee\":\"⊥\",\"upuparrows\":\"⇈\",\"urcorn\":\"⌝\",\"urcorner\":\"⌝\",\"urcrop\":\"⌎\",\"Uring\":\"Ů\",\"uring\":\"ů\",\"urtri\":\"◹\",\"Uscr\":\"𝒰\",\"uscr\":\"𝓊\",\"utdot\":\"⋰\",\"Utilde\":\"Ũ\",\"utilde\":\"ũ\",\"utri\":\"▵\",\"utrif\":\"▴\",\"uuarr\":\"⇈\",\"Uuml\":\"Ü\",\"uuml\":\"ü\",\"uwangle\":\"⦧\",\"vangrt\":\"⦜\",\"varepsilon\":\"ϵ\",\"varkappa\":\"ϰ\",\"varnothing\":\"∅\",\"varphi\":\"ϕ\",\"varpi\":\"ϖ\",\"varpropto\":\"∝\",\"varr\":\"↕\",\"vArr\":\"⇕\",\"varrho\":\"ϱ\",\"varsigma\":\"ς\",\"varsubsetneq\":\"⊊︀\",\"varsubsetneqq\":\"⫋︀\",\"varsupsetneq\":\"⊋︀\",\"varsupsetneqq\":\"⫌︀\",\"vartheta\":\"ϑ\",\"vartriangleleft\":\"⊲\",\"vartriangleright\":\"⊳\",\"vBar\":\"⫨\",\"Vbar\":\"⫫\",\"vBarv\":\"⫩\",\"Vcy\":\"В\",\"vcy\":\"в\",\"vdash\":\"⊢\",\"vDash\":\"⊨\",\"Vdash\":\"⊩\",\"VDash\":\"⊫\",\"Vdashl\":\"⫦\",\"veebar\":\"⊻\",\"vee\":\"∨\",\"Vee\":\"⋁\",\"veeeq\":\"≚\",\"vellip\":\"⋮\",\"verbar\":\"|\",\"Verbar\":\"‖\",\"vert\":\"|\",\"Vert\":\"‖\",\"VerticalBar\":\"∣\",\"VerticalLine\":\"|\",\"VerticalSeparator\":\"❘\",\"VerticalTilde\":\"≀\",\"VeryThinSpace\":\" \",\"Vfr\":\"𝔙\",\"vfr\":\"𝔳\",\"vltri\":\"⊲\",\"vnsub\":\"⊂⃒\",\"vnsup\":\"⊃⃒\",\"Vopf\":\"𝕍\",\"vopf\":\"𝕧\",\"vprop\":\"∝\",\"vrtri\":\"⊳\",\"Vscr\":\"𝒱\",\"vscr\":\"𝓋\",\"vsubnE\":\"⫋︀\",\"vsubne\":\"⊊︀\",\"vsupnE\":\"⫌︀\",\"vsupne\":\"⊋︀\",\"Vvdash\":\"⊪\",\"vzigzag\":\"⦚\",\"Wcirc\":\"Ŵ\",\"wcirc\":\"ŵ\",\"wedbar\":\"⩟\",\"wedge\":\"∧\",\"Wedge\":\"⋀\",\"wedgeq\":\"≙\",\"weierp\":\"℘\",\"Wfr\":\"𝔚\",\"wfr\":\"𝔴\",\"Wopf\":\"𝕎\",\"wopf\":\"𝕨\",\"wp\":\"℘\",\"wr\":\"≀\",\"wreath\":\"≀\",\"Wscr\":\"𝒲\",\"wscr\":\"𝓌\",\"xcap\":\"⋂\",\"xcirc\":\"◯\",\"xcup\":\"⋃\",\"xdtri\":\"▽\",\"Xfr\":\"𝔛\",\"xfr\":\"𝔵\",\"xharr\":\"⟷\",\"xhArr\":\"⟺\",\"Xi\":\"Ξ\",\"xi\":\"ξ\",\"xlarr\":\"⟵\",\"xlArr\":\"⟸\",\"xmap\":\"⟼\",\"xnis\":\"⋻\",\"xodot\":\"⨀\",\"Xopf\":\"𝕏\",\"xopf\":\"𝕩\",\"xoplus\":\"⨁\",\"xotime\":\"⨂\",\"xrarr\":\"⟶\",\"xrArr\":\"⟹\",\"Xscr\":\"𝒳\",\"xscr\":\"𝓍\",\"xsqcup\":\"⨆\",\"xuplus\":\"⨄\",\"xutri\":\"△\",\"xvee\":\"⋁\",\"xwedge\":\"⋀\",\"Yacute\":\"Ý\",\"yacute\":\"ý\",\"YAcy\":\"Я\",\"yacy\":\"я\",\"Ycirc\":\"Ŷ\",\"ycirc\":\"ŷ\",\"Ycy\":\"Ы\",\"ycy\":\"ы\",\"yen\":\"¥\",\"Yfr\":\"𝔜\",\"yfr\":\"𝔶\",\"YIcy\":\"Ї\",\"yicy\":\"ї\",\"Yopf\":\"𝕐\",\"yopf\":\"𝕪\",\"Yscr\":\"𝒴\",\"yscr\":\"𝓎\",\"YUcy\":\"Ю\",\"yucy\":\"ю\",\"yuml\":\"ÿ\",\"Yuml\":\"Ÿ\",\"Zacute\":\"Ź\",\"zacute\":\"ź\",\"Zcaron\":\"Ž\",\"zcaron\":\"ž\",\"Zcy\":\"З\",\"zcy\":\"з\",\"Zdot\":\"Ż\",\"zdot\":\"ż\",\"zeetrf\":\"ℨ\",\"ZeroWidthSpace\":\"\",\"Zeta\":\"Ζ\",\"zeta\":\"ζ\",\"zfr\":\"𝔷\",\"Zfr\":\"ℨ\",\"ZHcy\":\"Ж\",\"zhcy\":\"ж\",\"zigrarr\":\"⇝\",\"zopf\":\"𝕫\",\"Zopf\":\"ℤ\",\"Zscr\":\"𝒵\",\"zscr\":\"𝓏\",\"zwj\":\"\",\"zwnj\":\"\"}\n","{\"Aacute\":\"Á\",\"aacute\":\"á\",\"Acirc\":\"Â\",\"acirc\":\"â\",\"acute\":\"´\",\"AElig\":\"Æ\",\"aelig\":\"æ\",\"Agrave\":\"À\",\"agrave\":\"à\",\"amp\":\"&\",\"AMP\":\"&\",\"Aring\":\"Å\",\"aring\":\"å\",\"Atilde\":\"Ã\",\"atilde\":\"ã\",\"Auml\":\"Ä\",\"auml\":\"ä\",\"brvbar\":\"¦\",\"Ccedil\":\"Ç\",\"ccedil\":\"ç\",\"cedil\":\"¸\",\"cent\":\"¢\",\"copy\":\"©\",\"COPY\":\"©\",\"curren\":\"¤\",\"deg\":\"°\",\"divide\":\"÷\",\"Eacute\":\"É\",\"eacute\":\"é\",\"Ecirc\":\"Ê\",\"ecirc\":\"ê\",\"Egrave\":\"È\",\"egrave\":\"è\",\"ETH\":\"Ð\",\"eth\":\"ð\",\"Euml\":\"Ë\",\"euml\":\"ë\",\"frac12\":\"½\",\"frac14\":\"¼\",\"frac34\":\"¾\",\"gt\":\">\",\"GT\":\">\",\"Iacute\":\"Í\",\"iacute\":\"í\",\"Icirc\":\"Î\",\"icirc\":\"î\",\"iexcl\":\"¡\",\"Igrave\":\"Ì\",\"igrave\":\"ì\",\"iquest\":\"¿\",\"Iuml\":\"Ï\",\"iuml\":\"ï\",\"laquo\":\"«\",\"lt\":\"<\",\"LT\":\"<\",\"macr\":\"¯\",\"micro\":\"µ\",\"middot\":\"·\",\"nbsp\":\" \",\"not\":\"¬\",\"Ntilde\":\"Ñ\",\"ntilde\":\"ñ\",\"Oacute\":\"Ó\",\"oacute\":\"ó\",\"Ocirc\":\"Ô\",\"ocirc\":\"ô\",\"Ograve\":\"Ò\",\"ograve\":\"ò\",\"ordf\":\"ª\",\"ordm\":\"º\",\"Oslash\":\"Ø\",\"oslash\":\"ø\",\"Otilde\":\"Õ\",\"otilde\":\"õ\",\"Ouml\":\"Ö\",\"ouml\":\"ö\",\"para\":\"¶\",\"plusmn\":\"±\",\"pound\":\"£\",\"quot\":\"\\\"\",\"QUOT\":\"\\\"\",\"raquo\":\"»\",\"reg\":\"®\",\"REG\":\"®\",\"sect\":\"§\",\"shy\":\"\",\"sup1\":\"¹\",\"sup2\":\"²\",\"sup3\":\"³\",\"szlig\":\"ß\",\"THORN\":\"Þ\",\"thorn\":\"þ\",\"times\":\"×\",\"Uacute\":\"Ú\",\"uacute\":\"ú\",\"Ucirc\":\"Û\",\"ucirc\":\"û\",\"Ugrave\":\"Ù\",\"ugrave\":\"ù\",\"uml\":\"¨\",\"Uuml\":\"Ü\",\"uuml\":\"ü\",\"Yacute\":\"Ý\",\"yacute\":\"ý\",\"yen\":\"¥\",\"yuml\":\"ÿ\"}\n","{\"amp\":\"&\",\"apos\":\"'\",\"gt\":\">\",\"lt\":\"<\",\"quot\":\"\\\"\"}\n","{\"0\":65533,\"128\":8364,\"130\":8218,\"131\":402,\"132\":8222,\"133\":8230,\"134\":8224,\"135\":8225,\"136\":710,\"137\":8240,\"138\":352,\"139\":8249,\"140\":338,\"142\":381,\"145\":8216,\"146\":8217,\"147\":8220,\"148\":8221,\"149\":8226,\"150\":8211,\"151\":8212,\"152\":732,\"153\":8482,\"154\":353,\"155\":8250,\"156\":339,\"158\":382,\"159\":376}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint(codePoint);\n}\nexports.default = decodeCodePoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var replace = getReplacer(map);\n return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n // TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return map[str.slice(1, -1)] || str;\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `#`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n function (str) { return str.codePointAt(0); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c) {\n return (c.charCodeAt(0) - 0xd800) * 0x400 +\n c.charCodeAt(1) -\n 0xdc00 +\n 0x10000;\n };\nfunction singleCharReplacer(c) {\n return \"&#x\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n .toString(16)\n .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n}\nexports.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `ü`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n}\nexports.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n return function (data) {\n return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return encode_2.escapeUTF8; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar entities = require('entities');\n\nvar defaults = {\n fg: '#FFF',\n bg: '#000',\n newline: false,\n escapeXML: false,\n stream: false,\n colors: getDefaultColors()\n};\n\nfunction getDefaultColors() {\n var colors = {\n 0: '#000',\n 1: '#A00',\n 2: '#0A0',\n 3: '#A50',\n 4: '#00A',\n 5: '#A0A',\n 6: '#0AA',\n 7: '#AAA',\n 8: '#555',\n 9: '#F55',\n 10: '#5F5',\n 11: '#FF5',\n 12: '#55F',\n 13: '#F5F',\n 14: '#5FF',\n 15: '#FFF'\n };\n range(0, 5).forEach(function (red) {\n range(0, 5).forEach(function (green) {\n range(0, 5).forEach(function (blue) {\n return setStyleColor(red, green, blue, colors);\n });\n });\n });\n range(0, 23).forEach(function (gray) {\n var c = gray + 232;\n var l = toHexString(gray * 10 + 8);\n colors[c] = '#' + l + l + l;\n });\n return colors;\n}\n/**\n * @param {number} red\n * @param {number} green\n * @param {number} blue\n * @param {object} colors\n */\n\n\nfunction setStyleColor(red, green, blue, colors) {\n var c = 16 + red * 36 + green * 6 + blue;\n var r = red > 0 ? red * 40 + 55 : 0;\n var g = green > 0 ? green * 40 + 55 : 0;\n var b = blue > 0 ? blue * 40 + 55 : 0;\n colors[c] = toColorHexString([r, g, b]);\n}\n/**\n * Converts from a number like 15 to a hex string like 'F'\n * @param {number} num\n * @returns {string}\n */\n\n\nfunction toHexString(num) {\n var str = num.toString(16);\n\n while (str.length < 2) {\n str = '0' + str;\n }\n\n return str;\n}\n/**\n * Converts from an array of numbers like [15, 15, 15] to a hex string like 'FFF'\n * @param {[red, green, blue]} ref\n * @returns {string}\n */\n\n\nfunction toColorHexString(ref) {\n var results = [];\n\n var _iterator = _createForOfIteratorHelper(ref),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var r = _step.value;\n results.push(toHexString(r));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return '#' + results.join('');\n}\n/**\n * @param {Array} stack\n * @param {string} token\n * @param {*} data\n * @param {object} options\n */\n\n\nfunction generateOutput(stack, token, data, options) {\n var result;\n\n if (token === 'text') {\n result = pushText(data, options);\n } else if (token === 'display') {\n result = handleDisplay(stack, data, options);\n } else if (token === 'xterm256Foreground') {\n result = pushForegroundColor(stack, options.colors[data]);\n } else if (token === 'xterm256Background') {\n result = pushBackgroundColor(stack, options.colors[data]);\n } else if (token === 'rgb') {\n result = handleRgb(stack, data);\n }\n\n return result;\n}\n/**\n * @param {Array} stack\n * @param {string} data\n * @returns {*}\n */\n\n\nfunction handleRgb(stack, data) {\n data = data.substring(2).slice(0, -1);\n var operation = +data.substr(0, 2);\n var color = data.substring(5).split(';');\n var rgb = color.map(function (value) {\n return ('0' + Number(value).toString(16)).substr(-2);\n }).join('');\n return pushStyle(stack, (operation === 38 ? 'color:#' : 'background-color:#') + rgb);\n}\n/**\n * @param {Array} stack\n * @param {number} code\n * @param {object} options\n * @returns {*}\n */\n\n\nfunction handleDisplay(stack, code, options) {\n code = parseInt(code, 10);\n var codeMap = {\n '-1': function _() {\n return '<br/>';\n },\n 0: function _() {\n return stack.length && resetStyles(stack);\n },\n 1: function _() {\n return pushTag(stack, 'b');\n },\n 3: function _() {\n return pushTag(stack, 'i');\n },\n 4: function _() {\n return pushTag(stack, 'u');\n },\n 8: function _() {\n return pushStyle(stack, 'display:none');\n },\n 9: function _() {\n return pushTag(stack, 'strike');\n },\n 22: function _() {\n return pushStyle(stack, 'font-weight:normal;text-decoration:none;font-style:normal');\n },\n 23: function _() {\n return closeTag(stack, 'i');\n },\n 24: function _() {\n return closeTag(stack, 'u');\n },\n 39: function _() {\n return pushForegroundColor(stack, options.fg);\n },\n 49: function _() {\n return pushBackgroundColor(stack, options.bg);\n },\n 53: function _() {\n return pushStyle(stack, 'text-decoration:overline');\n }\n };\n var result;\n\n if (codeMap[code]) {\n result = codeMap[code]();\n } else if (4 < code && code < 7) {\n result = pushTag(stack, 'blink');\n } else if (29 < code && code < 38) {\n result = pushForegroundColor(stack, options.colors[code - 30]);\n } else if (39 < code && code < 48) {\n result = pushBackgroundColor(stack, options.colors[code - 40]);\n } else if (89 < code && code < 98) {\n result = pushForegroundColor(stack, options.colors[8 + (code - 90)]);\n } else if (99 < code && code < 108) {\n result = pushBackgroundColor(stack, options.colors[8 + (code - 100)]);\n }\n\n return result;\n}\n/**\n * Clear all the styles\n * @returns {string}\n */\n\n\nfunction resetStyles(stack) {\n var stackClone = stack.slice(0);\n stack.length = 0;\n return stackClone.reverse().map(function (tag) {\n return '</' + tag + '>';\n }).join('');\n}\n/**\n * Creates an array of numbers ranging from low to high\n * @param {number} low\n * @param {number} high\n * @returns {Array}\n * @example range(3, 7); // creates [3, 4, 5, 6, 7]\n */\n\n\nfunction range(low, high) {\n var results = [];\n\n for (var j = low; j <= high; j++) {\n results.push(j);\n }\n\n return results;\n}\n/**\n * Returns a new function that is true if value is NOT the same category\n * @param {string} category\n * @returns {function}\n */\n\n\nfunction notCategory(category) {\n return function (e) {\n return (category === null || e.category !== category) && category !== 'all';\n };\n}\n/**\n * Converts a code into an ansi token type\n * @param {number} code\n * @returns {string}\n */\n\n\nfunction categoryForCode(code) {\n code = parseInt(code, 10);\n var result = null;\n\n if (code === 0) {\n result = 'all';\n } else if (code === 1) {\n result = 'bold';\n } else if (2 < code && code < 5) {\n result = 'underline';\n } else if (4 < code && code < 7) {\n result = 'blink';\n } else if (code === 8) {\n result = 'hide';\n } else if (code === 9) {\n result = 'strike';\n } else if (29 < code && code < 38 || code === 39 || 89 < code && code < 98) {\n result = 'foreground-color';\n } else if (39 < code && code < 48 || code === 49 || 99 < code && code < 108) {\n result = 'background-color';\n }\n\n return result;\n}\n/**\n * @param {string} text\n * @param {object} options\n * @returns {string}\n */\n\n\nfunction pushText(text, options) {\n if (options.escapeXML) {\n return entities.encodeXML(text);\n }\n\n return text;\n}\n/**\n * @param {Array} stack\n * @param {string} tag\n * @param {string} [style='']\n * @returns {string}\n */\n\n\nfunction pushTag(stack, tag, style) {\n if (!style) {\n style = '';\n }\n\n stack.push(tag);\n return \"<\".concat(tag).concat(style ? \" style=\\\"\".concat(style, \"\\\"\") : '', \">\");\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction pushStyle(stack, style) {\n return pushTag(stack, 'span', style);\n}\n\nfunction pushForegroundColor(stack, color) {\n return pushTag(stack, 'span', 'color:' + color);\n}\n\nfunction pushBackgroundColor(stack, color) {\n return pushTag(stack, 'span', 'background-color:' + color);\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction closeTag(stack, style) {\n var last;\n\n if (stack.slice(-1)[0] === style) {\n last = stack.pop();\n }\n\n if (last) {\n return '</' + style + '>';\n }\n}\n/**\n * @param {string} text\n * @param {object} options\n * @param {function} callback\n * @returns {Array}\n */\n\n\nfunction tokenize(text, options, callback) {\n var ansiMatch = false;\n var ansiHandler = 3;\n\n function remove() {\n return '';\n }\n\n function removeXterm256Foreground(m, g1) {\n callback('xterm256Foreground', g1);\n return '';\n }\n\n function removeXterm256Background(m, g1) {\n callback('xterm256Background', g1);\n return '';\n }\n\n function newline(m) {\n if (options.newline) {\n callback('display', -1);\n } else {\n callback('text', m);\n }\n\n return '';\n }\n\n function ansiMess(m, g1) {\n ansiMatch = true;\n\n if (g1.trim().length === 0) {\n g1 = '0';\n }\n\n g1 = g1.trimRight(';').split(';');\n\n var _iterator2 = _createForOfIteratorHelper(g1),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var g = _step2.value;\n callback('display', g);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return '';\n }\n\n function realText(m) {\n callback('text', m);\n return '';\n }\n\n function rgb(m) {\n callback('rgb', m);\n return '';\n }\n /* eslint no-control-regex:0 */\n\n\n var tokens = [{\n pattern: /^\\x08+/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[012]?K/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[\\(B/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[34]8;2;\\d+;\\d+;\\d+m/,\n sub: rgb\n }, {\n pattern: /^\\x1b\\[38;5;(\\d+)m/,\n sub: removeXterm256Foreground\n }, {\n pattern: /^\\x1b\\[48;5;(\\d+)m/,\n sub: removeXterm256Background\n }, {\n pattern: /^\\n/,\n sub: newline\n }, {\n pattern: /^\\r+\\n/,\n sub: newline\n }, {\n pattern: /^\\r/,\n sub: newline\n }, {\n pattern: /^\\x1b\\[((?:\\d{1,3};?)+|)m/,\n sub: ansiMess\n }, {\n // CSI n J\n // ED - Erase in Display Clears part of the screen.\n // If n is 0 (or missing), clear from cursor to end of screen.\n // If n is 1, clear from cursor to beginning of the screen.\n // If n is 2, clear entire screen (and moves cursor to upper left on DOS ANSI.SYS).\n // If n is 3, clear entire screen and delete all lines saved in the scrollback buffer\n // (this feature was added for xterm and is supported by other terminal applications).\n pattern: /^\\x1b\\[\\d?J/,\n sub: remove\n }, {\n // CSI n ; m f\n // HVP - Horizontal Vertical Position Same as CUP\n pattern: /^\\x1b\\[\\d{0,3};\\d{0,3}f/,\n sub: remove\n }, {\n // catch-all for CSI sequences?\n pattern: /^\\x1b\\[?[\\d;]{0,3}/,\n sub: remove\n }, {\n /**\n * extracts real text - not containing:\n * - `\\x1b' - ESC - escape (Ascii 27)\n * - '\\x08' - BS - backspace (Ascii 8)\n * - `\\n` - Newline - linefeed (LF) (ascii 10)\n * - `\\r` - Windows Carriage Return (CR)\n */\n pattern: /^(([^\\x1b\\x08\\r\\n])+)/,\n sub: realText\n }];\n\n function process(handler, i) {\n if (i > ansiHandler && ansiMatch) {\n return;\n }\n\n ansiMatch = false;\n text = text.replace(handler.pattern, handler.sub);\n }\n\n var results1 = [];\n var _text = text,\n length = _text.length;\n\n outer: while (length > 0) {\n for (var i = 0, o = 0, len = tokens.length; o < len; i = ++o) {\n var handler = tokens[i];\n process(handler, i);\n\n if (text.length !== length) {\n // We matched a token and removed it from the text. We need to\n // start matching *all* tokens against the new text.\n length = text.length;\n continue outer;\n }\n }\n\n if (text.length === length) {\n break;\n }\n\n results1.push(0);\n length = text.length;\n }\n\n return results1;\n}\n/**\n * If streaming, then the stack is \"sticky\"\n *\n * @param {Array} stickyStack\n * @param {string} token\n * @param {*} data\n * @returns {Array}\n */\n\n\nfunction updateStickyStack(stickyStack, token, data) {\n if (token !== 'text') {\n stickyStack = stickyStack.filter(notCategory(categoryForCode(data)));\n stickyStack.push({\n token: token,\n data: data,\n category: categoryForCode(data)\n });\n }\n\n return stickyStack;\n}\n\nvar Filter = /*#__PURE__*/function () {\n /**\n * @param {object} options\n * @param {string=} options.fg The default foreground color used when reset color codes are encountered.\n * @param {string=} options.bg The default background color used when reset color codes are encountered.\n * @param {boolean=} options.newline Convert newline characters to `<br/>`.\n * @param {boolean=} options.escapeXML Generate HTML/XML entities.\n * @param {boolean=} options.stream Save style state across invocations of `toHtml()`.\n * @param {(string[] | {[code: number]: string})=} options.colors Can override specific colors or the entire ANSI palette.\n */\n function Filter(options) {\n _classCallCheck(this, Filter);\n\n options = options || {};\n\n if (options.colors) {\n options.colors = Object.assign({}, defaults.colors, options.colors);\n }\n\n this.options = Object.assign({}, defaults, options);\n this.stack = [];\n this.stickyStack = [];\n }\n /**\n * @param {string | string[]} input\n * @returns {string}\n */\n\n\n _createClass(Filter, [{\n key: \"toHtml\",\n value: function toHtml(input) {\n var _this = this;\n\n input = typeof input === 'string' ? [input] : input;\n var stack = this.stack,\n options = this.options;\n var buf = [];\n this.stickyStack.forEach(function (element) {\n var output = generateOutput(stack, element.token, element.data, options);\n\n if (output) {\n buf.push(output);\n }\n });\n tokenize(input.join(''), options, function (token, data) {\n var output = generateOutput(stack, token, data, options);\n\n if (output) {\n buf.push(output);\n }\n\n if (options.stream) {\n _this.stickyStack = updateStickyStack(_this.stickyStack, token, data);\n }\n });\n\n if (stack.length) {\n buf.push(resetStyles(stack));\n }\n\n return buf.join('');\n }\n }]);\n\n return Filter;\n}();\n\nmodule.exports = Filter;\n//# sourceMappingURL=ansi_to_html.js.map","/*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.3';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = create(null);\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Prevent function-based ADD_ATTR / ADD_TAGS from leaking across calls */\n if (!objectHasOwnProperty(cfg, 'ADD_TAGS')) {\n EXTRA_ELEMENT_HANDLING.tagCheck = null;\n }\n if (!objectHasOwnProperty(cfg, 'ADD_ATTR')) {\n EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n if (FORBID_ATTR[lcName]) {\n return false;\n }\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","<!--\n [Gauge.REQUEST_COUNT_GAUGE]: this.GetModelNode(data.requestCount),\n [Gauge.ERROR_COUNT_GAUGE]: this.GetModelNode(data.errorCount),\n [Gauge.RETRY_COUNT_GAUGE]: this.GetModelNode(data.retryCount),\n [Gauge.AUTHENTICATION_COUNT_GAUGE]: this.GetModelNode(data.authenticationCount),\n [Gauge.VELOCITY_GAUGE]: this.GetModelNode(data.velocity),\n [Gauge.ACTIVE_REQUEST_GAUGE]: this.GetModelNode(data.activeRequestCount),\n [Gauge.CORE_COUNT_GAUGE]: this.GetModelNode(data.coreCount),\n [Gauge.TIMER_GAUGE]: this.GetModelNode(data.timer),\n [Gauge.DURATION_GAUGE]: this.GetModelNodeWithQuantile(data.duration, data.duration_quantile),\n [Gauge.DURATION_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.duration_histo),\n [Gauge.LATENCY_GAUGE]: this.GetModelNodeWithQuantile(data.latency, data.latency_quantile),\n [Gauge.LATENCY_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.latency_histo),\n-->\n<template>\n <v-container>\n <v-card\n class=\"ma-2 pa-2\"\n color=\"#002255\"\n theme=\"dark\"\n prepend-icon=\"mdi-desktop-tower\"\n :title=\"`${title}`\"\n >\n <template #text>\n [{{ nodeid }}]\n <v-switch\n v-model=\"detailMode\"\n :label=\"`Detailed Mode: ${detailMode.toString()}`\"\n />\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Duration\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ round2Places(instrumentData[`${Gauge.DURATION_GAUGE}`].val) }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round2PlacesArray(instrumentData[`${Gauge.DURATION_GAUGE}`].percentile) }}\n </span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Duration Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div\n v-for=\"(histo, index) in instrumentData[`${Gauge.DURATION_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Latency\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ round2Places(instrumentData[`${Gauge.LATENCY_GAUGE}`].val) }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round2PlacesArray(instrumentData[`${Gauge.LATENCY_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Latency Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div\n v-for=\"(histo, index) in instrumentData[`${Gauge.LATENCY_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"12\">\n <div><UXBarChart ref=\"barChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Request Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.REQUEST_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentData[`${Gauge.ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentData[`${Gauge.RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Authentication Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay ml-6\">{{ instrumentData[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentData[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentData[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Velocity\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].va) }} <span class=\"subDisplay ml-1\">[{{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].velocity) }}]</span></span>\n <span class=\"instDisplay ml-6\">Delta: {{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].delta) }}</span>\n <span class=\"instDisplay ml-6\">Max: {{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].maxVelocity) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Active Request Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentData[`${Gauge.ACTIVE_REQUEST_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Core Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.CORE_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Time\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ convertMS(instrumentData[`${Gauge.TIMER_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Logs\n </v-col>\n <v-col md=\"10\">\n <div\n class=\"overflow-x-auto\"\n style=\"max-height: 400px\"\n >\n <div v-if=\"isLeafNode\">\n <div\n v-for=\"(logLine, index) in LogDataCopy\"\n :key=\"`ln-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n <div v-else>\n <div\n v-for=\"(logLine, index) in LogData\"\n :key=\"`nlf-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n </template>\n </v-card>\n </v-container>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport Convert from 'ansi-to-html'\nimport { ModelStore } from './../stores/modelStore.js'\nimport UXBarChart from './UXBarChart.vue';\n\n// Alternatives;\n// https://www.npmjs.com/package/sanitize-html\n// Use this is node\n// https://www.npmjs.com/package/isomorphic-dompurify\n// import DOMPurify2 from 'isomorphic-dompurify';\nimport DOMPurify from 'dompurify'\n\nconst convert = new Convert();\n \nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n if (!props.isLeafNode) {\n emit('myclick', id);\n }\n}\n\nconst props = defineProps<{ \n \n modelId: string\n instrumentData: any\n contextData: any\n isLeafNode: boolean\n nodeid: string\n title: string\n }>();\n\nconst LogData = computed(() => {\n if (props.instrumentData[`${Gauge.LOGGER}`]) {\n return props.instrumentData[`${Gauge.LOGGER}`].val;\n } else {\n return [];\n }\n});\n\nconst LogDataCopy = computed(() => {\n if (props.instrumentData[`${Gauge.LOGGER_COPY}`]) {\n return props.instrumentData[`${Gauge.LOGGER_COPY}`].val;\n } else {\n return [];\n }\n});\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n};\n\nconst round2Places = function(value: number): string{\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n};\n\nconst round0PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n retVal += `${sep}${value[i][0]}/${value[i][1]}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n}\n\nconst round2PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n const bp = (Math.round(value[i][0] as number * 10000) / 100) as number;\n const val = (Math.round(value[i][1] as number * 100) / 100) as number;\n retVal += `${sep}${bp}/${val.toFixed(2)}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n\n\n let numArray = value.map((value) => (Math.round(value[1] * 100) / 100).toFixed(2));\n let sep = '';\n return '[' + numArray.reduce((prev, current) => {\n const retVal = prev += (sep + current);\n sep = ', ';\n return retVal;\n }, '') + ']'\n}\n\nconst convertMS = function(ms: number): string {\n //let d, h, m, s;\n let s = Math.floor(ms / 1000);\n let m = Math.floor(s / 60);\n s = s % 60;\n let h = Math.floor(m / 60);\n m = m % 60;\n const d = Math.floor(h / 24);\n h = h % 24;\n\n const pad: (n: number) => string = function(n: number) { return n < 10 ? '0' + n : n.toString(); };\n\n return (d + '.' + pad(h) + ':' + pad(m) + ':' + pad(s)).padStart(12);\n}\n\nconst convertHtml = function(value: string): string {\n return DOMPurify.sanitize(convert.toHtml(value));\n}\n\nconst detailMode = computed<boolean>({\n get: () => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid] && store._models[props.modelId].modelMeta[props.nodeid].detailView) {\n return store._models[props.modelId].modelMeta[props.nodeid].detailView;\n }\n }\n return false;\n },\n set: (val) => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid]) {\n store._models[props.modelId].modelMeta[props.nodeid].detailView = val;\n } else {\n store._models[props.modelId].modelMeta[props.nodeid] = {\n detailView: val\n }\n }\n }\n }\n})\n\nconst barChartEx = ref<typeof UXBarChart>(); //@@ was ref(null);\n//const radialChartEx = ref<typeof UXRadialChart>(); //@@ was ref(null);\n\nlet barUpdate = 0;\n\n \nwatch(() => props.instrumentData, (val) => {\n if (barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentData[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentData[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n</script>\n\n<style scoped>\n .stdWidth {\n width: 70px;\n }\n .instDisplay {\n display: inline-block;\n width: 70px;\n }\n .instDisplayWide {\n display: inline-block;\n width: 300px;\n max-width: 400px;\n }\n .instDisplayXWide {\n width: 300px;\n max-width: 400px;\n }\n .subDisplay {\n font-size: smaller;\n }\n</style>","<!--\n [Gauge.REQUEST_COUNT_GAUGE]: this.GetModelNode(data.requestCount),\n [Gauge.ERROR_COUNT_GAUGE]: this.GetModelNode(data.errorCount),\n [Gauge.RETRY_COUNT_GAUGE]: this.GetModelNode(data.retryCount),\n [Gauge.AUTHENTICATION_COUNT_GAUGE]: this.GetModelNode(data.authenticationCount),\n [Gauge.VELOCITY_GAUGE]: this.GetModelNode(data.velocity),\n [Gauge.ACTIVE_REQUEST_GAUGE]: this.GetModelNode(data.activeRequestCount),\n [Gauge.CORE_COUNT_GAUGE]: this.GetModelNode(data.coreCount),\n [Gauge.TIMER_GAUGE]: this.GetModelNode(data.timer),\n [Gauge.DURATION_GAUGE]: this.GetModelNodeWithQuantile(data.duration, data.duration_quantile),\n [Gauge.DURATION_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.duration_histo),\n [Gauge.LATENCY_GAUGE]: this.GetModelNodeWithQuantile(data.latency, data.latency_quantile),\n [Gauge.LATENCY_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.latency_histo),\n-->\n<template>\n <v-container>\n <v-card\n class=\"ma-2 pa-2\"\n color=\"#002255\"\n theme=\"dark\"\n prepend-icon=\"mdi-desktop-tower\"\n :title=\"`${title}`\"\n >\n <template #text>\n [{{ nodeid }}]\n <v-switch\n v-model=\"detailMode\"\n :label=\"`Detailed Mode: ${detailMode.toString()}`\"\n />\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Duration\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ round2Places(instrumentData[`${Gauge.DURATION_GAUGE}`].val) }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round2PlacesArray(instrumentData[`${Gauge.DURATION_GAUGE}`].percentile) }}\n </span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Duration Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div\n v-for=\"(histo, index) in instrumentData[`${Gauge.DURATION_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Latency\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ round2Places(instrumentData[`${Gauge.LATENCY_GAUGE}`].val) }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round2PlacesArray(instrumentData[`${Gauge.LATENCY_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Latency Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div\n v-for=\"(histo, index) in instrumentData[`${Gauge.LATENCY_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"12\">\n <div><UXBarChart ref=\"barChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Request Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.REQUEST_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentData[`${Gauge.ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentData[`${Gauge.RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Authentication Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay ml-6\">{{ instrumentData[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentData[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentData[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Velocity\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].va) }} <span class=\"subDisplay ml-1\">[{{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].velocity) }}]</span></span>\n <span class=\"instDisplay ml-6\">Delta: {{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].delta) }}</span>\n <span class=\"instDisplay ml-6\">Max: {{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].maxVelocity) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Active Request Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentData[`${Gauge.ACTIVE_REQUEST_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Core Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.CORE_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Time\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ convertMS(instrumentData[`${Gauge.TIMER_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Logs\n </v-col>\n <v-col md=\"10\">\n <div\n class=\"overflow-x-auto\"\n style=\"max-height: 400px\"\n >\n <div v-if=\"isLeafNode\">\n <div\n v-for=\"(logLine, index) in LogDataCopy\"\n :key=\"`ln-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n <div v-else>\n <div\n v-for=\"(logLine, index) in LogData\"\n :key=\"`nlf-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n </template>\n </v-card>\n </v-container>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport Convert from 'ansi-to-html'\nimport { ModelStore } from './../stores/modelStore.js'\nimport UXBarChart from './UXBarChart.vue';\n\n// Alternatives;\n// https://www.npmjs.com/package/sanitize-html\n// Use this is node\n// https://www.npmjs.com/package/isomorphic-dompurify\n// import DOMPurify2 from 'isomorphic-dompurify';\nimport DOMPurify from 'dompurify'\n\nconst convert = new Convert();\n \nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n if (!props.isLeafNode) {\n emit('myclick', id);\n }\n}\n\nconst props = defineProps<{ \n \n modelId: string\n instrumentData: any\n contextData: any\n isLeafNode: boolean\n nodeid: string\n title: string\n }>();\n\nconst LogData = computed(() => {\n if (props.instrumentData[`${Gauge.LOGGER}`]) {\n return props.instrumentData[`${Gauge.LOGGER}`].val;\n } else {\n return [];\n }\n});\n\nconst LogDataCopy = computed(() => {\n if (props.instrumentData[`${Gauge.LOGGER_COPY}`]) {\n return props.instrumentData[`${Gauge.LOGGER_COPY}`].val;\n } else {\n return [];\n }\n});\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n};\n\nconst round2Places = function(value: number): string{\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n};\n\nconst round0PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n retVal += `${sep}${value[i][0]}/${value[i][1]}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n}\n\nconst round2PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n const bp = (Math.round(value[i][0] as number * 10000) / 100) as number;\n const val = (Math.round(value[i][1] as number * 100) / 100) as number;\n retVal += `${sep}${bp}/${val.toFixed(2)}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n\n\n let numArray = value.map((value) => (Math.round(value[1] * 100) / 100).toFixed(2));\n let sep = '';\n return '[' + numArray.reduce((prev, current) => {\n const retVal = prev += (sep + current);\n sep = ', ';\n return retVal;\n }, '') + ']'\n}\n\nconst convertMS = function(ms: number): string {\n //let d, h, m, s;\n let s = Math.floor(ms / 1000);\n let m = Math.floor(s / 60);\n s = s % 60;\n let h = Math.floor(m / 60);\n m = m % 60;\n const d = Math.floor(h / 24);\n h = h % 24;\n\n const pad: (n: number) => string = function(n: number) { return n < 10 ? '0' + n : n.toString(); };\n\n return (d + '.' + pad(h) + ':' + pad(m) + ':' + pad(s)).padStart(12);\n}\n\nconst convertHtml = function(value: string): string {\n return DOMPurify.sanitize(convert.toHtml(value));\n}\n\nconst detailMode = computed<boolean>({\n get: () => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid] && store._models[props.modelId].modelMeta[props.nodeid].detailView) {\n return store._models[props.modelId].modelMeta[props.nodeid].detailView;\n }\n }\n return false;\n },\n set: (val) => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid]) {\n store._models[props.modelId].modelMeta[props.nodeid].detailView = val;\n } else {\n store._models[props.modelId].modelMeta[props.nodeid] = {\n detailView: val\n }\n }\n }\n }\n})\n\nconst barChartEx = ref<typeof UXBarChart>(); //@@ was ref(null);\n//const radialChartEx = ref<typeof UXRadialChart>(); //@@ was ref(null);\n\nlet barUpdate = 0;\n\n \nwatch(() => props.instrumentData, (val) => {\n if (barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentData[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentData[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n</script>\n\n<style scoped>\n .stdWidth {\n width: 70px;\n }\n .instDisplay {\n display: inline-block;\n width: 70px;\n }\n .instDisplayWide {\n display: inline-block;\n width: 300px;\n max-width: 400px;\n }\n .instDisplayXWide {\n width: 300px;\n max-width: 400px;\n }\n .subDisplay {\n font-size: smaller;\n }\n</style>","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","/* eslint-env browser */\n\nconst level = (() => {\n\tif (!('navigator' in globalThis)) {\n\t\treturn 0;\n\t}\n\n\tif (globalThis.navigator.userAgentData) {\n\t\tconst brand = navigator.userAgentData.brands.find(({brand}) => brand === 'Chromium');\n\t\tif (brand && brand.version > 93) {\n\t\t\treturn 3;\n\t\t}\n\t}\n\n\tif (/\\b(Chrome|Chromium)\\//.test(globalThis.navigator.userAgent)) {\n\t\treturn 1;\n\t}\n\n\treturn 0;\n})();\n\nconst colorSupport = level !== 0 && {\n\tlevel,\n\thasBasic: true,\n\thas256: level >= 2,\n\thas16m: level >= 3,\n};\n\nconst supportsColor = {\n\tstdout: colorSupport,\n\tstderr: colorSupport,\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","<!--\n[Gauge.REQUEST_COUNT_GAUGE]: this.GetModelNode(data.requestCount),\n[Gauge.ERROR_COUNT_GAUGE]: this.GetModelNode(data.errorCount),\n[Gauge.RETRY_COUNT_GAUGE]: this.GetModelNode(data.retryCount),\n[Gauge.AUTHENTICATION_COUNT_GAUGE]: this.GetModelNode(data.authenticationCount),\n[Gauge.VELOCITY_GAUGE]: this.GetModelNode(data.velocity),\n[Gauge.CPU_LOAD_GAUGE]: this.GetModelNodeWithQuantile(data.cpu, data.cpu_quantile),\n[Gauge.CPU_SYSTEM_LOAD_GAUGE]: this.GetModelNodeWithQuantile(data.systemcpu, data.systemcpu_quantile),\n[Gauge.ACTIVE_REQUEST_GAUGE]: this.GetModelNode(data.activeRequestCount),\n[Gauge.CONNECTION_COUNT_GAUGE]: this.GetModelNode(data.connectionCount),\n[Gauge.CONNECTION_POOL_TOTAL_GAUGE]: this.GetModelNode(data.connectionPoolCount),\n[Gauge.CONNECTION_POOL_IDLE_GAUGE]: this.GetModelNode(data.connectionIdleCount),\n[Gauge.CONNECTION_POOL_WAITING_GAUGE]: this.GetModelNode(data.connectionWaitingCount),\n[Gauge.CORE_COUNT_GAUGE]: this.GetModelNode(data.coreCount),\n[Gauge.TIMER_GAUGE]: this.GetModelNode(data.timer),\n[Gauge.DURATION_GAUGE]: this.GetModelNodeWithQuantile(data.duration, data.duration_quantile),\n[Gauge.LATENCY_GAUGE]: this.GetModelNodeWithQuantile(data.latency, data.latency_quantile),\n[Gauge.DURATION_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.duration_histo),\n[Gauge.LATENCY_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.latency_histo),\n[Gauge.OBJECT_GAUGE]: this.GetModelNodeObject(data.memory)\n-->\n\n<template>\n <v-sheet\n theme=\"light\"\n rounded=\"lg\"\n class=\"mx-2 mt-2 mb-4 pa-2 pr-4\"\n :elevation=\"10\"\n @click=\"clicked(nodeid)\"\n >\n <div class=\"ststitle\">\n {{ friendlyTitle(title) }}\n <div\n v-if=\"title.length > 30\"\n class=\"stssubtitle\"\n >\n {{ title.split('@')[0] }}\n <div>\n {{ title.split('@')[1] }}\n </div>\n </div>\n </div>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"mt-1\"\n >\n <v-col cols=\"2\">\n CPU\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div class=\"instDisplay text-right\">\n {{ CPU }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n\n\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col\n cols=\"12\"\n style=\"margin-top: -20px;\"\n >\n <div><UXLineChart ref=\"lineChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"pt-1\"\n style=\"border-top: 2px solid lightgray;\"\n >\n <v-col cols=\"2\">\n Duration\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div class=\"instDisplay text-right\">\n {{ round2Places(instrumentdata[`${Gauge.DURATION_GAUGE}`].val) }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.DURATION_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col cols=\"2\">\n Duration Histo\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-nowrap\">\n <div\n v-for=\"(histo, index) in instrumentdata[`${Gauge.DURATION_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"2\">\n Latency\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row\">\n <div class=\"instDisplay text-right\">\n {{ round2Places(instrumentdata[`${Gauge.LATENCY_GAUGE}`].val) }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.LATENCY_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"2\">\n Latency Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-nowrap\">\n <div\n v-for=\"(histo, index) in instrumentdata[`${Gauge.LATENCY_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n style=\"margin-top: -15px;\"\n >\n <v-col md=\"12\">\n <div><UXBarChart ref=\"barChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"pt-1\"\n style=\"margin-top: -10px; border-top: 2px solid lightgray;\"\n >\n <v-col md=\"3\">\n Rx (MB/s)\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ Rx }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Tx (MB/s)\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ Tx }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Request Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentdata[`${Gauge.ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentdata[`${Gauge.RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Authentication Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentdata[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentdata[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Velocity\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ velocityFormat(instrumentdata[`${Gauge.VELOCITY_GAUGE}`].val) }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Active Request Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val }}</span>\n <span\n v-if=\"isleafnode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Core Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CORE_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n TCP Connections\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val }}</span>\n <span\n v-if=\"isleafnode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Connection Pool\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Idle: {{ velocityFormat(instrumentdata[`${Gauge.CONNECTION_POOL_IDLE_GAUGE}`].val) }}</span>\n <span class=\"instDisplay ml-6\">Wait: {{ velocityFormat(instrumentdata[`${Gauge.CONNECTION_POOL_WAITING_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Time\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ convertMS(instrumentdata[`${Gauge.TIMER_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Logs\n </v-col>\n <v-col md=\"9\">\n <div\n class=\"overflow-x-auto\"\n style=\"max-height: 400px\"\n >\n <div v-if=\"isleafnode\">\n <div\n v-for=\"(logLine, index) in LogDataCopy\"\n :key=\"`ln-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n <div v-else>\n <div\n v-for=\"(logLine, index) in LogData\"\n :key=\"`nlf-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n </v-sheet>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport Convert from 'ansi-to-html'\nimport { ModelStore } from './../stores/modelStore.js'\n\nimport UXLineChart from './UXLineChart.vue';\nimport UXBarChart from './UXBarChart.vue';\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\n//import UXRadialChart from './UXRadialChart.vue';\n\n// Alternatives;\n// https://www.npmjs.com/package/sanitize-html\n// Use this is node\n// https://www.npmjs.com/package/isomorphic-dompurify\n// import DOMPurify2 from 'isomorphic-dompurify';\nimport DOMPurify from 'dompurify'\n\nconst friendlyTitle = (id: string) => {\n if (id.length > 30) {\n return store.GetFriendName(props.modelId, id);\n } else {\n return id;\n }\n}\n\nconst convert = new Convert();\n \nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n if (!props.isleafnode) {\n emit('myclick', id);\n }\n}\n\nconst props = defineProps<{ \n \n modelId: string\n instrumentdata: any\n contextdata: any\n isleafnode: boolean\n nodeid: string\n title: string\n }>();\n\nconst CPU = computed(() => {\n const cpuVal = props.instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].val;\n return round2Places(cpuVal);\n});\n\nconst LogData = computed(() => {\n if (props.instrumentdata[`${Gauge.LOGGER}`]) {\n return props.instrumentdata[`${Gauge.LOGGER}`].val;\n } else {\n return [];\n }\n});\n\nconst Rx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_RX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Tx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_TX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst LogDataCopy = computed(() => {\n if (props.instrumentdata[`${Gauge.LOGGER_COPY}`]) {\n return props.instrumentdata[`${Gauge.LOGGER_COPY}`].val;\n } else {\n return [];\n }\n});\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n};\n\nconst round2Places = function(value: number): string{\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n};\n\nconst round0PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n retVal += `${sep}${value[i][0]}/${value[i][1]}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n}\n\nconst round2PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n const bp = (Math.round(value[i][0] as number * 10000) / 100) as number;\n const val = (Math.round(value[i][1] as number * 100) / 100) as number;\n retVal += `${sep}${bp}/${val.toFixed(2)}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n\n\n let numArray = value.map((value) => (Math.round(value[1] * 100) / 100).toFixed(2));\n let sep = '';\n return '[' + numArray.reduce((prev, current) => {\n const retVal = prev += (sep + current);\n sep = ', ';\n return retVal;\n }, '') + ']'\n}\n\nconst convertMS = function(ms: number): string {\n //let d, h, m, s;\n let s = Math.floor(ms / 1000);\n let m = Math.floor(s / 60);\n s = s % 60;\n let h = Math.floor(m / 60);\n m = m % 60;\n const d = Math.floor(h / 24);\n h = h % 24;\n\n const pad: (n: number) => string = function(n: number) { return n < 10 ? '0' + n : n.toString(); };\n\n return (d + '.' + pad(h) + ':' + pad(m) + ':' + pad(s)).padStart(12);\n}\n\nconst convertHtml = function(value: string): string {\n return DOMPurify.sanitize(convert.toHtml(value));\n}\n\nconst detailMode = computed<boolean>({\n get: () => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid] && store._models[props.modelId].modelMeta[props.nodeid].detailView) {\n return store._models[props.modelId].modelMeta[props.nodeid].detailView;\n }\n }\n return false;\n },\n set: (val) => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid]) {\n store._models[props.modelId].modelMeta[props.nodeid].detailView = val;\n } else {\n store._models[props.modelId].modelMeta[props.nodeid] = {\n detailView: val\n }\n }\n }\n }\n})\n\nconst lineChartEx = ref<typeof UXLineChart>(); //@@ was ref(null);\nconst barChartEx = ref<typeof UXBarChart>(); //@@ was ref(null);\n//const radialChartEx = ref<typeof UXRadialChart>(); //@@ was ref(null);\n\nlet barUpdate = 0;\n\n \nwatch(() => props.instrumentdata, (val) => {\n if (lineChartEx.value) {\n lineChartEx.value.UpdateGraph(props.instrumentdata[Gauge.CPU_LOAD_GAUGE].val);\n }\n /*\n if (radialChartEx.value) {\n radialChartEx.value.UpdateGraph(props.instrumentData[Gauge.ACTIVE_REQUEST_GAUGE].val,\n props.instrumentData[Gauge.CONNECTION_COUNT_GAUGE].val, // TCP Connections\n props.instrumentData[Gauge.CONNECTION_POOL_TOTAL_GAUGE].val);\n\n console.log(JSON.stringify(props.instrumentData[Gauge.CONNECTION_COUNT_GAUGE]));\n }\n */\n if (barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentdata[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentdata[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n</script>\n\n<style scoped>\n .stdWidth {\n width: 70px;\n }\n .instDisplay {\n display: inline-block;\n width: 70px;\n }\n .instDisplayWide {\n display: inline-block;\n width: 300px;\n max-width: 400px;\n }\n .instDisplayXWide {\n width: 300px;\n max-width: 400px;\n }\n .subDisplay {\n font-size: smaller;\n }\n</style>","<!--\n[Gauge.REQUEST_COUNT_GAUGE]: this.GetModelNode(data.requestCount),\n[Gauge.ERROR_COUNT_GAUGE]: this.GetModelNode(data.errorCount),\n[Gauge.RETRY_COUNT_GAUGE]: this.GetModelNode(data.retryCount),\n[Gauge.AUTHENTICATION_COUNT_GAUGE]: this.GetModelNode(data.authenticationCount),\n[Gauge.VELOCITY_GAUGE]: this.GetModelNode(data.velocity),\n[Gauge.CPU_LOAD_GAUGE]: this.GetModelNodeWithQuantile(data.cpu, data.cpu_quantile),\n[Gauge.CPU_SYSTEM_LOAD_GAUGE]: this.GetModelNodeWithQuantile(data.systemcpu, data.systemcpu_quantile),\n[Gauge.ACTIVE_REQUEST_GAUGE]: this.GetModelNode(data.activeRequestCount),\n[Gauge.CONNECTION_COUNT_GAUGE]: this.GetModelNode(data.connectionCount),\n[Gauge.CONNECTION_POOL_TOTAL_GAUGE]: this.GetModelNode(data.connectionPoolCount),\n[Gauge.CONNECTION_POOL_IDLE_GAUGE]: this.GetModelNode(data.connectionIdleCount),\n[Gauge.CONNECTION_POOL_WAITING_GAUGE]: this.GetModelNode(data.connectionWaitingCount),\n[Gauge.CORE_COUNT_GAUGE]: this.GetModelNode(data.coreCount),\n[Gauge.TIMER_GAUGE]: this.GetModelNode(data.timer),\n[Gauge.DURATION_GAUGE]: this.GetModelNodeWithQuantile(data.duration, data.duration_quantile),\n[Gauge.LATENCY_GAUGE]: this.GetModelNodeWithQuantile(data.latency, data.latency_quantile),\n[Gauge.DURATION_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.duration_histo),\n[Gauge.LATENCY_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.latency_histo),\n[Gauge.OBJECT_GAUGE]: this.GetModelNodeObject(data.memory)\n-->\n\n<template>\n <v-sheet\n theme=\"light\"\n rounded=\"lg\"\n class=\"mx-2 mt-2 mb-4 pa-2 pr-4\"\n :elevation=\"10\"\n @click=\"clicked(nodeid)\"\n >\n <div class=\"ststitle\">\n {{ friendlyTitle(title) }}\n <div\n v-if=\"title.length > 30\"\n class=\"stssubtitle\"\n >\n {{ title.split('@')[0] }}\n <div>\n {{ title.split('@')[1] }}\n </div>\n </div>\n </div>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"mt-1\"\n >\n <v-col cols=\"2\">\n CPU\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div class=\"instDisplay text-right\">\n {{ CPU }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n\n\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col\n cols=\"12\"\n style=\"margin-top: -20px;\"\n >\n <div><UXLineChart ref=\"lineChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"pt-1\"\n style=\"border-top: 2px solid lightgray;\"\n >\n <v-col cols=\"2\">\n Duration\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div class=\"instDisplay text-right\">\n {{ round2Places(instrumentdata[`${Gauge.DURATION_GAUGE}`].val) }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.DURATION_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col cols=\"2\">\n Duration Histo\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-nowrap\">\n <div\n v-for=\"(histo, index) in instrumentdata[`${Gauge.DURATION_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"2\">\n Latency\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row\">\n <div class=\"instDisplay text-right\">\n {{ round2Places(instrumentdata[`${Gauge.LATENCY_GAUGE}`].val) }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.LATENCY_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"2\">\n Latency Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-nowrap\">\n <div\n v-for=\"(histo, index) in instrumentdata[`${Gauge.LATENCY_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n style=\"margin-top: -15px;\"\n >\n <v-col md=\"12\">\n <div><UXBarChart ref=\"barChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"pt-1\"\n style=\"margin-top: -10px; border-top: 2px solid lightgray;\"\n >\n <v-col md=\"3\">\n Rx (MB/s)\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ Rx }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Tx (MB/s)\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ Tx }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Request Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentdata[`${Gauge.ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentdata[`${Gauge.RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Authentication Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentdata[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentdata[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Velocity\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ velocityFormat(instrumentdata[`${Gauge.VELOCITY_GAUGE}`].val) }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Active Request Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val }}</span>\n <span\n v-if=\"isleafnode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Core Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CORE_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n TCP Connections\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val }}</span>\n <span\n v-if=\"isleafnode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Connection Pool\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Idle: {{ velocityFormat(instrumentdata[`${Gauge.CONNECTION_POOL_IDLE_GAUGE}`].val) }}</span>\n <span class=\"instDisplay ml-6\">Wait: {{ velocityFormat(instrumentdata[`${Gauge.CONNECTION_POOL_WAITING_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Time\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ convertMS(instrumentdata[`${Gauge.TIMER_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Logs\n </v-col>\n <v-col md=\"9\">\n <div\n class=\"overflow-x-auto\"\n style=\"max-height: 400px\"\n >\n <div v-if=\"isleafnode\">\n <div\n v-for=\"(logLine, index) in LogDataCopy\"\n :key=\"`ln-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n <div v-else>\n <div\n v-for=\"(logLine, index) in LogData\"\n :key=\"`nlf-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n </v-sheet>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport Convert from 'ansi-to-html'\nimport { ModelStore } from './../stores/modelStore.js'\n\nimport UXLineChart from './UXLineChart.vue';\nimport UXBarChart from './UXBarChart.vue';\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\n//import UXRadialChart from './UXRadialChart.vue';\n\n// Alternatives;\n// https://www.npmjs.com/package/sanitize-html\n// Use this is node\n// https://www.npmjs.com/package/isomorphic-dompurify\n// import DOMPurify2 from 'isomorphic-dompurify';\nimport DOMPurify from 'dompurify'\n\nconst friendlyTitle = (id: string) => {\n if (id.length > 30) {\n return store.GetFriendName(props.modelId, id);\n } else {\n return id;\n }\n}\n\nconst convert = new Convert();\n \nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n if (!props.isleafnode) {\n emit('myclick', id);\n }\n}\n\nconst props = defineProps<{ \n \n modelId: string\n instrumentdata: any\n contextdata: any\n isleafnode: boolean\n nodeid: string\n title: string\n }>();\n\nconst CPU = computed(() => {\n const cpuVal = props.instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].val;\n return round2Places(cpuVal);\n});\n\nconst LogData = computed(() => {\n if (props.instrumentdata[`${Gauge.LOGGER}`]) {\n return props.instrumentdata[`${Gauge.LOGGER}`].val;\n } else {\n return [];\n }\n});\n\nconst Rx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_RX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Tx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_TX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst LogDataCopy = computed(() => {\n if (props.instrumentdata[`${Gauge.LOGGER_COPY}`]) {\n return props.instrumentdata[`${Gauge.LOGGER_COPY}`].val;\n } else {\n return [];\n }\n});\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n};\n\nconst round2Places = function(value: number): string{\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n};\n\nconst round0PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n retVal += `${sep}${value[i][0]}/${value[i][1]}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n}\n\nconst round2PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n const bp = (Math.round(value[i][0] as number * 10000) / 100) as number;\n const val = (Math.round(value[i][1] as number * 100) / 100) as number;\n retVal += `${sep}${bp}/${val.toFixed(2)}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n\n\n let numArray = value.map((value) => (Math.round(value[1] * 100) / 100).toFixed(2));\n let sep = '';\n return '[' + numArray.reduce((prev, current) => {\n const retVal = prev += (sep + current);\n sep = ', ';\n return retVal;\n }, '') + ']'\n}\n\nconst convertMS = function(ms: number): string {\n //let d, h, m, s;\n let s = Math.floor(ms / 1000);\n let m = Math.floor(s / 60);\n s = s % 60;\n let h = Math.floor(m / 60);\n m = m % 60;\n const d = Math.floor(h / 24);\n h = h % 24;\n\n const pad: (n: number) => string = function(n: number) { return n < 10 ? '0' + n : n.toString(); };\n\n return (d + '.' + pad(h) + ':' + pad(m) + ':' + pad(s)).padStart(12);\n}\n\nconst convertHtml = function(value: string): string {\n return DOMPurify.sanitize(convert.toHtml(value));\n}\n\nconst detailMode = computed<boolean>({\n get: () => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid] && store._models[props.modelId].modelMeta[props.nodeid].detailView) {\n return store._models[props.modelId].modelMeta[props.nodeid].detailView;\n }\n }\n return false;\n },\n set: (val) => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid]) {\n store._models[props.modelId].modelMeta[props.nodeid].detailView = val;\n } else {\n store._models[props.modelId].modelMeta[props.nodeid] = {\n detailView: val\n }\n }\n }\n }\n})\n\nconst lineChartEx = ref<typeof UXLineChart>(); //@@ was ref(null);\nconst barChartEx = ref<typeof UXBarChart>(); //@@ was ref(null);\n//const radialChartEx = ref<typeof UXRadialChart>(); //@@ was ref(null);\n\nlet barUpdate = 0;\n\n \nwatch(() => props.instrumentdata, (val) => {\n if (lineChartEx.value) {\n lineChartEx.value.UpdateGraph(props.instrumentdata[Gauge.CPU_LOAD_GAUGE].val);\n }\n /*\n if (radialChartEx.value) {\n radialChartEx.value.UpdateGraph(props.instrumentData[Gauge.ACTIVE_REQUEST_GAUGE].val,\n props.instrumentData[Gauge.CONNECTION_COUNT_GAUGE].val, // TCP Connections\n props.instrumentData[Gauge.CONNECTION_POOL_TOTAL_GAUGE].val);\n\n console.log(JSON.stringify(props.instrumentData[Gauge.CONNECTION_COUNT_GAUGE]));\n }\n */\n if (barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentdata[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentdata[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n</script>\n\n<style scoped>\n .stdWidth {\n width: 70px;\n }\n .instDisplay {\n display: inline-block;\n width: 70px;\n }\n .instDisplayWide {\n display: inline-block;\n width: 300px;\n max-width: 400px;\n }\n .instDisplayXWide {\n width: 300px;\n max-width: 400px;\n }\n .subDisplay {\n font-size: smaller;\n }\n</style>","<template>\n <v-sheet\n theme=\"light\"\n rounded=\"lg\"\n class=\"mx-2 mt-2 mb-4 pa-2\"\n :elevation=\"10\"\n @click=\"clicked(nodeid)\"\n >\n <div class=\"ststitle\">\n {{ friendlyTitle(title) }}\n <div\n v-if=\"title.length > 30\"\n class=\"stssubtitle\"\n >\n {{ title.split('@')[0] }}\n <div>\n {{ title.split('@')[1] }}\n </div>\n </div>\n </div>\n <v-row\n no-gutters\n class=\"mb-3\"\n >\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n CPU\n </div>\n <div class=\"stsbiginfo\">\n {{ round2Places(CPU) }}%\n <v-progress-circular\n class=\"mb-1\"\n :rotate=\"360\"\n :size=\"20\"\n :width=\"CPUWidth\"\n :model-value=\"CPU\"\n :color=\"CPUColor\"\n />\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Velocity\n </div>\n <div class=\"stsbiginfo\">\n {{ velocityFormat(Velocity) }}\n <v-progress-circular\n class=\"mb-1\"\n :rotate=\"360\"\n :size=\"18\"\n :width=\"VelocityWidth\"\n :model-value=\"VelocityPerc\"\n :color=\"VelocityColor\"\n />\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n class=\"mb-3\"\n >\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Active Rx Count\n </div>\n <div class=\"stsbiginfo\">\n {{ ActiveRequestCount }}\n <v-progress-circular\n :rotate=\"360\"\n :size=\"18\"\n :width=\"ActiveRequestWidth\"\n :model-value=\"ActiveRequestCountPerc\"\n :color=\"ActiveRequestColor\"\n /> \n </div>\n </v-col>\n\n\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Connections\n </div>\n <div class=\"stsbiginfo\">\n {{ ConnectionCount }}\n <v-progress-circular\n :rotate=\"360\"\n :size=\"18\"\n :width=\"ConnectionCountWidth\"\n :model-value=\"ConnectionCountPercentage\"\n :color=\"ConnectionCountColor\"\n />\n </div>\n </v-col>\n </v-row>\n\n <v-row\n no-gutters\n style=\"border-top: 2px solid lightgray;\"\n >\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Request (c/e/r):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ RequestCountErrorRetry }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Timer:\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Timer }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Duration (ms):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Duration }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Latency (ms):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Latency }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Receive-Rx (MBs):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Rx }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Transmit-Tx (MBs):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Tx }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Pool (tot/idle/wait):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ ConnectionPool }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n vCPU:\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ CoreCount }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Auth (c/e/r):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ AuthErrorRetry }}\n </div>\n </v-col>\n </v-row>\n </v-sheet>\n</template>\n \n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed, onMounted, onBeforeUnmount } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport UXLineChart from './UXLineChart.vue';\nimport UXBarChart from './UXBarChart.vue';\nimport { ModelStore } from './../stores/modelStore.js'\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n emit('myclick', id);\n}\n\nconst props = defineProps<{\n \n modelId: string\n instrumentdata: any\n contextdata: any\n isleafnode: boolean\n nodeid: string\n title: string\n }>();\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n}\n\nconst round2Places = function(value: number): string {\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n}\n\nconst lineChartEx = ref<typeof UXLineChart>(); // ref(null);\nconst barChartEx = ref<typeof UXBarChart>(); // ref(null);\n\nlet barUpdate = 0;\n\nconst friendlyTitle = (id: string) => {\n if (id.length > 30) {\n return store.GetFriendName(props.modelId, id);\n } else {\n return id;\n }\n}\n\nconst KafkaTopic = () => {\n const context = props.contextdata;\n\n let topic = '';\n if (context.serviceInstanceId && context.serviceInstanceProcessId) {\n topic = (context.serviceInstanceId + '_' + context.serviceInstanceProcessId).replace(/@/g, '_');\n }\n return topic;\n}\n\nconst KafkaTopicEx = computed(() => {\n const context = props.contextdata;\n\n let topic = '';\n if (context.serviceInstanceId && context.serviceInstanceProcessId) {\n topic = (context.serviceInstanceId + '_' + context.serviceInstanceProcessId).replace(/@/g, '_');\n }\n return topic;\n})\n\nonMounted(() => {\n console.log(chalk.magenta(`onMounted`));\n})\n\nonBeforeUnmount(() => {\n console.log(chalk.magenta(`onBeforeUnmount`));\n})\n\nwatch(() => props.instrumentdata, (val) => {\n if (lineChartEx.value && lineChartEx.value) {\n lineChartEx.value.UpdateGraph(props.instrumentdata[Gauge.CPU_LOAD_GAUGE].val);\n }\n if (barChartEx.value && barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentdata[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentdata[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n\nconst CPUBreakPoints = [\n { bp: 90, col: '#ff0000'},\n { bp: 60, col: '#9900cc'},\n { bp: 40, col: '#ff9900'},\n { bp: 20, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst VelocityBreakPoints = [\n { bp: 1000, col: '#ff0000'},\n { bp: 500, col: '#9900cc'},\n { bp: 250, col: '#ff9900'},\n { bp: 50, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst ActiveRequestCountBreakPoints = [\n { bp: 20, col: '#ff0000'},\n { bp: 10, col: '#9900cc'},\n { bp: 5, col: '#ff9900'},\n { bp: 2, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst CPU = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst ActiveRequestCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst RequestCountErrorRetry = computed<string>(() => {\n try {\n //return props.instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val;\n return `${props.instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.ERROR_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.RETRY_COUNT_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return '0/0/0';\n }\n});\n\nconst CoreCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CORE_COUNT_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst Timer = computed<number>(() => {\n try {\n return Math.round(props.instrumentdata[`${Gauge.TIMER_GAUGE}`].val);\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst Duration = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.DURATION_GAUGE}`].val * 100) / 100.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\"\n }\n});\n\nconst Rx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_RX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Tx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_TX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Latency = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.LATENCY_GAUGE}`].val * 100) / 100.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst ConnectionPool = computed<string>(() => {\n try {\n return `${props.instrumentdata[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE}`].val}/${props.instrumentdata[`${Gauge.CONNECTION_POOL_IDLE_GAUGE}`].val}/${props.instrumentdata[`${Gauge.CONNECTION_POOL_WAITING_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"[Unknown]\";\n }\n});\n\nconst AuthErrorRetry = computed<string>(() => {\n try {\n return `${props.instrumentdata[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"[Unknown]\";\n }\n});\n\nconst ActiveRequestCountPerc = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val / 20) * 100.0;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst ConnectionCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val \n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst ConnectionCountPercentage = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val / 20) * 100.0; // We are at 100% if we have 20 connections\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst Velocity = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.VELOCITY_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst VelocityPerc = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.VELOCITY_GAUGE}`].va / 1000.0) * 100.0;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\n \nconst GetColFromBP = (value: number, bpList: any[]): string => {\n for (let i=0; i < bpList.length; i++) {\n if (value >= bpList[i].bp) {\n return bpList[i].col;\n }\n }\n return bpList[bpList.length-1].col;\n}\n\nconst CPUColor = computed<string>(() => {\n return GetColFromBP(CPU.value, CPUBreakPoints);\n});\n\nconst ActiveRequestColor = computed<string>(() => {\n return GetColFromBP(ActiveRequestCount.value, ActiveRequestCountBreakPoints);\n});\n\nconst VelocityColor = computed<string>(() => {\n return GetColFromBP(Velocity.value, VelocityBreakPoints);\n});\n\nconst ConnectionCountColor = computed<string>(() => {\n return GetColFromBP(Velocity.value, ActiveRequestCountBreakPoints);\n});\n\nconst CircleWidth = (value: number, maxVal: number): number => {\n if (value > maxVal) {\n return 4\n } else {\n return 2\n }\n};\n\nconst CPUWidth = computed<number>(() => {\n return CircleWidth(CPU.value, 200);\n});\n\nconst ActiveRequestWidth = computed<number>(() => {\n return CircleWidth(ActiveRequestCountPerc.value, 200);\n});\n\nconst VelocityWidth = computed<number>(() => {\n return CircleWidth(VelocityPerc.value, 200);\n});\n\nconst ConnectionCountWidth = computed<number>(() => {\n return CircleWidth(ConnectionCountPercentage.value, 100);\n});\n\n</script>\n\n<style scoped>\n .stsinfo { \n\n }\n .stsbiginfo { \n font-size: x-large;\n font-weight: bold;\n text-align: right;\n width: 130px;\n }\n .stsbiginfolabel { \n text-align: right;\n white-space: nowrap;\n width: 130px;\n }\n .ststitle { \n font-size: large;\n font-weight: bold;\n text-align: center;\n border-bottom: 2px solid lightgray;\n margin-bottom: 5px;\n }\n .stssubtitle { \n font-size: small;\n font-weight: bold;\n text-align: center;\n }\n</style>\n\n","<template>\n <v-sheet\n theme=\"light\"\n rounded=\"lg\"\n class=\"mx-2 mt-2 mb-4 pa-2\"\n :elevation=\"10\"\n @click=\"clicked(nodeid)\"\n >\n <div class=\"ststitle\">\n {{ friendlyTitle(title) }}\n <div\n v-if=\"title.length > 30\"\n class=\"stssubtitle\"\n >\n {{ title.split('@')[0] }}\n <div>\n {{ title.split('@')[1] }}\n </div>\n </div>\n </div>\n <v-row\n no-gutters\n class=\"mb-3\"\n >\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n CPU\n </div>\n <div class=\"stsbiginfo\">\n {{ round2Places(CPU) }}%\n <v-progress-circular\n class=\"mb-1\"\n :rotate=\"360\"\n :size=\"20\"\n :width=\"CPUWidth\"\n :model-value=\"CPU\"\n :color=\"CPUColor\"\n />\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Velocity\n </div>\n <div class=\"stsbiginfo\">\n {{ velocityFormat(Velocity) }}\n <v-progress-circular\n class=\"mb-1\"\n :rotate=\"360\"\n :size=\"18\"\n :width=\"VelocityWidth\"\n :model-value=\"VelocityPerc\"\n :color=\"VelocityColor\"\n />\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n class=\"mb-3\"\n >\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Active Rx Count\n </div>\n <div class=\"stsbiginfo\">\n {{ ActiveRequestCount }}\n <v-progress-circular\n :rotate=\"360\"\n :size=\"18\"\n :width=\"ActiveRequestWidth\"\n :model-value=\"ActiveRequestCountPerc\"\n :color=\"ActiveRequestColor\"\n /> \n </div>\n </v-col>\n\n\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Connections\n </div>\n <div class=\"stsbiginfo\">\n {{ ConnectionCount }}\n <v-progress-circular\n :rotate=\"360\"\n :size=\"18\"\n :width=\"ConnectionCountWidth\"\n :model-value=\"ConnectionCountPercentage\"\n :color=\"ConnectionCountColor\"\n />\n </div>\n </v-col>\n </v-row>\n\n <v-row\n no-gutters\n style=\"border-top: 2px solid lightgray;\"\n >\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Request (c/e/r):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ RequestCountErrorRetry }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Timer:\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Timer }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Duration (ms):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Duration }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Latency (ms):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Latency }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Receive-Rx (MBs):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Rx }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Transmit-Tx (MBs):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Tx }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Pool (tot/idle/wait):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ ConnectionPool }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n vCPU:\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ CoreCount }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Auth (c/e/r):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ AuthErrorRetry }}\n </div>\n </v-col>\n </v-row>\n </v-sheet>\n</template>\n \n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed, onMounted, onBeforeUnmount } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport UXLineChart from './UXLineChart.vue';\nimport UXBarChart from './UXBarChart.vue';\nimport { ModelStore } from './../stores/modelStore.js'\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n emit('myclick', id);\n}\n\nconst props = defineProps<{\n \n modelId: string\n instrumentdata: any\n contextdata: any\n isleafnode: boolean\n nodeid: string\n title: string\n }>();\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n}\n\nconst round2Places = function(value: number): string {\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n}\n\nconst lineChartEx = ref<typeof UXLineChart>(); // ref(null);\nconst barChartEx = ref<typeof UXBarChart>(); // ref(null);\n\nlet barUpdate = 0;\n\nconst friendlyTitle = (id: string) => {\n if (id.length > 30) {\n return store.GetFriendName(props.modelId, id);\n } else {\n return id;\n }\n}\n\nconst KafkaTopic = () => {\n const context = props.contextdata;\n\n let topic = '';\n if (context.serviceInstanceId && context.serviceInstanceProcessId) {\n topic = (context.serviceInstanceId + '_' + context.serviceInstanceProcessId).replace(/@/g, '_');\n }\n return topic;\n}\n\nconst KafkaTopicEx = computed(() => {\n const context = props.contextdata;\n\n let topic = '';\n if (context.serviceInstanceId && context.serviceInstanceProcessId) {\n topic = (context.serviceInstanceId + '_' + context.serviceInstanceProcessId).replace(/@/g, '_');\n }\n return topic;\n})\n\nonMounted(() => {\n console.log(chalk.magenta(`onMounted`));\n})\n\nonBeforeUnmount(() => {\n console.log(chalk.magenta(`onBeforeUnmount`));\n})\n\nwatch(() => props.instrumentdata, (val) => {\n if (lineChartEx.value && lineChartEx.value) {\n lineChartEx.value.UpdateGraph(props.instrumentdata[Gauge.CPU_LOAD_GAUGE].val);\n }\n if (barChartEx.value && barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentdata[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentdata[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n\nconst CPUBreakPoints = [\n { bp: 90, col: '#ff0000'},\n { bp: 60, col: '#9900cc'},\n { bp: 40, col: '#ff9900'},\n { bp: 20, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst VelocityBreakPoints = [\n { bp: 1000, col: '#ff0000'},\n { bp: 500, col: '#9900cc'},\n { bp: 250, col: '#ff9900'},\n { bp: 50, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst ActiveRequestCountBreakPoints = [\n { bp: 20, col: '#ff0000'},\n { bp: 10, col: '#9900cc'},\n { bp: 5, col: '#ff9900'},\n { bp: 2, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst CPU = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst ActiveRequestCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst RequestCountErrorRetry = computed<string>(() => {\n try {\n //return props.instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val;\n return `${props.instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.ERROR_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.RETRY_COUNT_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return '0/0/0';\n }\n});\n\nconst CoreCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CORE_COUNT_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst Timer = computed<number>(() => {\n try {\n return Math.round(props.instrumentdata[`${Gauge.TIMER_GAUGE}`].val);\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst Duration = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.DURATION_GAUGE}`].val * 100) / 100.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\"\n }\n});\n\nconst Rx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_RX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Tx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_TX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Latency = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.LATENCY_GAUGE}`].val * 100) / 100.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst ConnectionPool = computed<string>(() => {\n try {\n return `${props.instrumentdata[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE}`].val}/${props.instrumentdata[`${Gauge.CONNECTION_POOL_IDLE_GAUGE}`].val}/${props.instrumentdata[`${Gauge.CONNECTION_POOL_WAITING_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"[Unknown]\";\n }\n});\n\nconst AuthErrorRetry = computed<string>(() => {\n try {\n return `${props.instrumentdata[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"[Unknown]\";\n }\n});\n\nconst ActiveRequestCountPerc = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val / 20) * 100.0;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst ConnectionCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val \n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst ConnectionCountPercentage = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val / 20) * 100.0; // We are at 100% if we have 20 connections\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst Velocity = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.VELOCITY_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst VelocityPerc = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.VELOCITY_GAUGE}`].va / 1000.0) * 100.0;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\n \nconst GetColFromBP = (value: number, bpList: any[]): string => {\n for (let i=0; i < bpList.length; i++) {\n if (value >= bpList[i].bp) {\n return bpList[i].col;\n }\n }\n return bpList[bpList.length-1].col;\n}\n\nconst CPUColor = computed<string>(() => {\n return GetColFromBP(CPU.value, CPUBreakPoints);\n});\n\nconst ActiveRequestColor = computed<string>(() => {\n return GetColFromBP(ActiveRequestCount.value, ActiveRequestCountBreakPoints);\n});\n\nconst VelocityColor = computed<string>(() => {\n return GetColFromBP(Velocity.value, VelocityBreakPoints);\n});\n\nconst ConnectionCountColor = computed<string>(() => {\n return GetColFromBP(Velocity.value, ActiveRequestCountBreakPoints);\n});\n\nconst CircleWidth = (value: number, maxVal: number): number => {\n if (value > maxVal) {\n return 4\n } else {\n return 2\n }\n};\n\nconst CPUWidth = computed<number>(() => {\n return CircleWidth(CPU.value, 200);\n});\n\nconst ActiveRequestWidth = computed<number>(() => {\n return CircleWidth(ActiveRequestCountPerc.value, 200);\n});\n\nconst VelocityWidth = computed<number>(() => {\n return CircleWidth(VelocityPerc.value, 200);\n});\n\nconst ConnectionCountWidth = computed<number>(() => {\n return CircleWidth(ConnectionCountPercentage.value, 100);\n});\n\n</script>\n\n<style scoped>\n .stsinfo { \n\n }\n .stsbiginfo { \n font-size: x-large;\n font-weight: bold;\n text-align: right;\n width: 130px;\n }\n .stsbiginfolabel { \n text-align: right;\n white-space: nowrap;\n width: 130px;\n }\n .ststitle { \n font-size: large;\n font-weight: bold;\n text-align: center;\n border-bottom: 2px solid lightgray;\n margin-bottom: 5px;\n }\n .stssubtitle { \n font-size: small;\n font-weight: bold;\n text-align: center;\n }\n</style>\n\n","<template>\n <div\n v-for=\"(svc, svcIndex) in serviceModel\"\n :key=\"svcIndex\"\n :value=\"svc\"\n class=\"d-inline-flex align-center justify-center ma-0 pa-0\"\n >\n <div v-if=\"cpu(svc) > 0.0\">\n <component\n :is=\"smallMode ? UXModelInstrumentServiceSmall : UXModelInstrumentServiceCommon\"\n :isleafnode=\"false\"\n :model-id=\"props.modelId\"\n :nodeid=\"svc.id\"\n :contextdata=\"svc.context\"\n :instrumentdata=\"svc.instruments\"\n :title=\"svc.id\"\n @myclick=\"navigate\"\n />\n </div>\n </div>\n</template>\n \n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\n \nimport UXModelInstrumentServiceCommon from './UXModelInstrumentServiceCommon.vue'\n\nimport UXModelInstrumentServiceSmall from './UXModelInstrumentServiceSmall.vue'\n\nimport { ModelStore } from './../stores/modelStore.js'\nimport { Gauge } from '@nsshunt/stsobservability'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nconst store = ModelStore();\n\n \nconst props = defineProps<{\n modelId: string\n nodeid: string,\n smallMode: boolean\n}>()\n \nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n}>()\n\nconst agentModel = computed(() => {\n if (store._models[props.modelId]) {\n return store._models[props.modelId].agentModel;\n } else {\n return { };\n }\n})\n\nconst serviceModel = computed(() => {\n if (store._models[props.modelId]) {\n return store._models[props.modelId].serviceModel;\n } else {\n return { };\n }\n})\n\nconst cpu = (model: JSONObject) => {\n try {\n return model.instruments[`${Gauge.CPU_LOAD_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${error}`));\n }\n};\n\nconst navigate = function(id: string) {\n emit('myclick', id);\n}\n\n/*\nconst CPU = computed((): number => {\n if (modelNode.value && modelNode.value.instruments) {\n return modelNode.value.instruments[`${Gauge.CPU_LOAD_GAUGE}`].val as number;\n } else {\n return 0;\n }\n});\n\nconst maxARC = 50;\nconst maxTCP = 50;\nconst maxPool = 50;\n\nconst Series = computed(() => {\n if (modelNode.value && modelNode.value.instruments) {\n return [\n (modelNode.value.instruments[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val as number / maxARC) * 100.0,\n (modelNode.value.instruments[`${Gauge.CONNECTION_COUNT_GAUGE}`].val as number / maxTCP) * 100.0,\n (modelNode.value.instruments[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE }`].val as number / maxPool) * 100.0\n ]\n } else {\n return [ 0, 0, 0];\n }\n})\n\nconst Series2 = computed(() => {\n if (modelNode.value && modelNode.value.instruments) {\n return [{\n data: [\n modelNode.value.instruments[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val as number,\n modelNode.value.instruments[`${Gauge.CONNECTION_COUNT_GAUGE}`].val as number,\n modelNode.value.instruments[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE }`].val as number\n ]\n }]\n } else {\n return [{\n data: [ 0, 0, 0]\n }]\n }\n})\n\nconst Labels = computed(() => {\n return [ 'AR', 'TCP', 'Pool' ];\n})\n*/\n\n</script>\n","<template>\n <div\n v-for=\"(svc, svcIndex) in serviceModel\"\n :key=\"svcIndex\"\n :value=\"svc\"\n class=\"d-inline-flex align-center justify-center ma-0 pa-0\"\n >\n <div v-if=\"cpu(svc) > 0.0\">\n <component\n :is=\"smallMode ? UXModelInstrumentServiceSmall : UXModelInstrumentServiceCommon\"\n :isleafnode=\"false\"\n :model-id=\"props.modelId\"\n :nodeid=\"svc.id\"\n :contextdata=\"svc.context\"\n :instrumentdata=\"svc.instruments\"\n :title=\"svc.id\"\n @myclick=\"navigate\"\n />\n </div>\n </div>\n</template>\n \n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\n \nimport UXModelInstrumentServiceCommon from './UXModelInstrumentServiceCommon.vue'\n\nimport UXModelInstrumentServiceSmall from './UXModelInstrumentServiceSmall.vue'\n\nimport { ModelStore } from './../stores/modelStore.js'\nimport { Gauge } from '@nsshunt/stsobservability'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nconst store = ModelStore();\n\n \nconst props = defineProps<{\n modelId: string\n nodeid: string,\n smallMode: boolean\n}>()\n \nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n}>()\n\nconst agentModel = computed(() => {\n if (store._models[props.modelId]) {\n return store._models[props.modelId].agentModel;\n } else {\n return { };\n }\n})\n\nconst serviceModel = computed(() => {\n if (store._models[props.modelId]) {\n return store._models[props.modelId].serviceModel;\n } else {\n return { };\n }\n})\n\nconst cpu = (model: JSONObject) => {\n try {\n return model.instruments[`${Gauge.CPU_LOAD_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${error}`));\n }\n};\n\nconst navigate = function(id: string) {\n emit('myclick', id);\n}\n\n/*\nconst CPU = computed((): number => {\n if (modelNode.value && modelNode.value.instruments) {\n return modelNode.value.instruments[`${Gauge.CPU_LOAD_GAUGE}`].val as number;\n } else {\n return 0;\n }\n});\n\nconst maxARC = 50;\nconst maxTCP = 50;\nconst maxPool = 50;\n\nconst Series = computed(() => {\n if (modelNode.value && modelNode.value.instruments) {\n return [\n (modelNode.value.instruments[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val as number / maxARC) * 100.0,\n (modelNode.value.instruments[`${Gauge.CONNECTION_COUNT_GAUGE}`].val as number / maxTCP) * 100.0,\n (modelNode.value.instruments[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE }`].val as number / maxPool) * 100.0\n ]\n } else {\n return [ 0, 0, 0];\n }\n})\n\nconst Series2 = computed(() => {\n if (modelNode.value && modelNode.value.instruments) {\n return [{\n data: [\n modelNode.value.instruments[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val as number,\n modelNode.value.instruments[`${Gauge.CONNECTION_COUNT_GAUGE}`].val as number,\n modelNode.value.instruments[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE }`].val as number\n ]\n }]\n } else {\n return [{\n data: [ 0, 0, 0]\n }]\n }\n})\n\nconst Labels = computed(() => {\n return [ 'AR', 'TCP', 'Pool' ];\n})\n*/\n\n</script>\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (FormDataCtor && thing instanceof FormDataCtor) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array<unknown>} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== 'undefined') return globalThis;\n return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\n const targetKey = (caseless && findKey(result, key)) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xfeff) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype,\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n // eslint-disable-next-line func-names\n return (thing) => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n };\n }\n });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach((value) => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if (!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n \n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true\n });\n \n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\n .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\n );\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n ) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : key + '[]',\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable,\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\n .join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain counterparts (`:`, `$`, `,`, `+`).\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = utils.isURLSearchParams(params)\n ? params.toString()\n : new AxiosURLSearchParams(params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null,\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false,\n legacyInterceptorReqResOrdering: true,\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n","import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob,\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\n};\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function (value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options,\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map((match) => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n },\n ],\n\n transformResponse: [\n function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !this.responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n },\n ],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob,\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': undefined,\n },\n },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n 'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders &&\n rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value)\n ? value.map(normalizeValue)\n : String(value).replace(/[\\r\\n]+$/, '');\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header\n .trim()\n .toLowerCase()\n .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach((methodName) => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function (arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true,\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null &&\n value !== false &&\n (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals =\n (this[$internals] =\n this[$internals] =\n {\n accessors: {},\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n },\n };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\n );\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return (match && match[1]) || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? loaded / total : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n },\n }\n : // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {},\n };\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n if (typeof url !== 'string') {\n return false;\n }\n\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({ caseless }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request,\n };\n\n settle(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = (cancel) => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const body = new ReadableStream();\n\n const hasContentType = new Request(platform.origin, {\n body,\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n body.cancel();\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length\n ? reasons.length > 1\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n : ' ' + renderReason(reasons[0])\n : 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object<string, Function|Object>}\n */\n adapters: knownAdapters,\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(config, config.transformRequest);\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\n function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n }\n );\n}\n","export const VERSION = \"1.14.0\";","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager(),\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const { transitional, paramsSerializer, headers } = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\n );\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\n });\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\n );\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then((cancel) => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = (onfulfilled) => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise((resolve) => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel,\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n // Copy context to instance\n utils.extend(instance, context, null, { allOwnKeys: true });\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n","//#region \\0rolldown/runtime.js\nvar __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);\n//#endregion\n//#region node_modules/tiny-emitter/index.js\nvar require_tiny_emitter = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tfunction E() {}\n\tE.prototype = {\n\t\ton: function(name, callback, ctx) {\n\t\t\tvar e = this.e || (this.e = {});\n\t\t\t(e[name] || (e[name] = [])).push({\n\t\t\t\tfn: callback,\n\t\t\t\tctx\n\t\t\t});\n\t\t\treturn this;\n\t\t},\n\t\tonce: function(name, callback, ctx) {\n\t\t\tvar self = this;\n\t\t\tfunction listener() {\n\t\t\t\tself.off(name, listener);\n\t\t\t\tcallback.apply(ctx, arguments);\n\t\t\t}\n\t\t\tlistener._ = callback;\n\t\t\treturn this.on(name, listener, ctx);\n\t\t},\n\t\temit: function(name) {\n\t\t\tvar data = [].slice.call(arguments, 1);\n\t\t\tvar evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n\t\t\tvar i = 0;\n\t\t\tvar len = evtArr.length;\n\t\t\tfor (; i < len; i++) evtArr[i].fn.apply(evtArr[i].ctx, data);\n\t\t\treturn this;\n\t\t},\n\t\toff: function(name, callback) {\n\t\t\tvar e = this.e || (this.e = {});\n\t\t\tvar evts = e[name];\n\t\t\tvar liveEvents = [];\n\t\t\tif (evts && callback) {\n\t\t\t\tfor (var i = 0, len = evts.length; i < len; i++) if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n\t\t\t}\n\t\t\tliveEvents.length ? e[name] = liveEvents : delete e[name];\n\t\t\treturn this;\n\t\t}\n\t};\n\tmodule.exports = E;\n\tmodule.exports.TinyEmitter = E;\n}));\n//#endregion\nexport { require_tiny_emitter as t };\n\n//# sourceMappingURL=tiny-emitter-DB59cw42.js.map","import { t as require_tiny_emitter } from \"./tiny-emitter-DB59cw42.js\";\nimport { io } from \"socket.io-client\";\nimport { isNode } from \"@nsshunt/stsutils\";\n//#region src/commonTypes.ts\nvar STSNamespace = /* @__PURE__ */ function(STSNamespace) {\n\tSTSNamespace[\"STSMonitor\"] = \"stsinstrumentmanager/stsmonitor\";\n\tSTSNamespace[\"STSControl\"] = \"stsinstrumentmanager/stscontrol\";\n\tSTSNamespace[\"STSTestingNamespace\"] = \"ststestingnamespace/ststesting\";\n\treturn STSNamespace;\n}({});\nvar STSRoom = /* @__PURE__ */ function(STSRoom) {\n\tSTSRoom[\"STSInstrumentDataRoom\"] = \"stsinstrumentdataroom\";\n\tSTSRoom[\"STSInstrumentDataSubscriptionRoom\"] = \"stsinstrumentdatasubscriptionroom\";\n\tSTSRoom[\"STSRunnerRoom\"] = \"stsrunnerroom\";\n\tSTSRoom[\"STSNodeRunnerRoom\"] = \"stsnoderunnerroom\";\n\treturn STSRoom;\n}({});\nvar STSEvent = /* @__PURE__ */ function(STSEvent) {\n\tSTSEvent[\"STSInstrumentData\"] = \"stsinstrumentdata\";\n\tSTSEvent[\"STSSubInstrumentData\"] = \"stssubinstrumentdata\";\n\tSTSEvent[\"STSResetInstrumentData\"] = \"stsresetinstrumentdata\";\n\tSTSEvent[\"STSStartLoggingInstrumentData\"] = \"stsStartLoggingInstrumentData\";\n\tSTSEvent[\"STSStopLoggingInstrumentData\"] = \"stsStopLoggingInstrumentData\";\n\tSTSEvent[\"STSStart\"] = \"stsstart\";\n\tSTSEvent[\"STSStop\"] = \"stsstop\";\n\tSTSEvent[\"STSPause\"] = \"stspause\";\n\tSTSEvent[\"STSResume\"] = \"stsresume\";\n\tSTSEvent[\"STSTerminate\"] = \"ststerminate\";\n\tSTSEvent[\"STSUpdateStaticConfig\"] = \"stsupdatestaticconfig\";\n\tSTSEvent[\"STSUpdateDynamicConfig\"] = \"stsupdatedynamicconfig\";\n\tSTSEvent[\"STSSendToRoom\"] = \"sendToRoom\";\n\tSTSEvent[\"connect\"] = \"connect\";\n\treturn STSEvent;\n}({});\n//#endregion\n//#region src/socketIoClient.ts\nvar import_tiny_emitter = require_tiny_emitter();\nvar SocketIoClient = class extends import_tiny_emitter.TinyEmitter {\n\t#agentManager;\n\t#logger;\n\t#name;\n\t#address;\n\t#socketIoCustomPath;\n\t#authToken;\n\t#socket;\n\t#reconnectTimeout = 2e3;\n\tconstructor(name) {\n\t\tsuper();\n\t\tthis.#name = name;\n\t}\n\tget logPrefix() {\n\t\treturn `SocketIoClient[${this.#name}]:`;\n\t}\n\tLogDebugMessage(message) {\n\t\tif (this.#logger) this.#logger.debug(`${this.logPrefix}${message}`);\n\t}\n\tLogErrorMessage(message) {\n\t\tif (this.#logger) this.#logger.error(`${this.logPrefix}${message}`);\n\t}\n\tLogWarningMessage(message) {\n\t\tif (this.#logger) this.#logger.warn(`${this.logPrefix}${message}`);\n\t}\n\tget name() {\n\t\treturn this.#name;\n\t}\n\tget reconnectTimeout() {\n\t\treturn this.#reconnectTimeout;\n\t}\n\tget agentManager() {\n\t\treturn this.#agentManager;\n\t}\n\tget logger() {\n\t\treturn this.#logger;\n\t}\n\tget address() {\n\t\treturn this.#address;\n\t}\n\tget authToken() {\n\t\treturn this.#authToken;\n\t}\n\tget socketIoCustomPath() {\n\t\treturn this.#socketIoCustomPath;\n\t}\n\tget socket() {\n\t\treturn this.#socket;\n\t}\n\tWithAddress(address) {\n\t\tthis.#address = address;\n\t\treturn this;\n\t}\n\tWithAuthToken(authToken) {\n\t\tthis.#authToken = authToken;\n\t\treturn this;\n\t}\n\tWithSocketIoCustomPath(socketIoCustomPath) {\n\t\tthis.#socketIoCustomPath = socketIoCustomPath;\n\t\treturn this;\n\t}\n\tWithLogger(logger) {\n\t\tthis.#logger = logger;\n\t\treturn this;\n\t}\n\tWithAgentManager(agentManager) {\n\t\tthis.#agentManager = agentManager;\n\t\treturn this;\n\t}\n\tWithReconnectTimeout(reconnectTimeout) {\n\t\tthis.#reconnectTimeout = reconnectTimeout;\n\t\treturn this;\n\t}\n\tSetupSocket() {\n\t\tif (!this.#address) throw new Error(`SocketIoClientHelper:SetupSocket(): Error: [address not provided]`);\n\t\tthis.#EstablishSocketConnect();\n\t\treturn this;\n\t}\n\tEngineError(error) {}\n\tEngineReconnectError(error) {}\n\tEngineConnectError(error) {}\n\tEngineReconnect(attempt) {}\n\t#EstablishSocketConnect() {\n\t\tif (this.#socket !== void 0) {\n\t\t\tif (this.#socket.connected === true) this.#socket.disconnect();\n\t\t\tthis.#socket = void 0;\n\t\t\tif (isNode) setTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout).unref();\n\t\t\telse setTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout);\n\t\t\treturn;\n\t\t}\n\t\tlet socketOptions;\n\t\tif (isNode) {\n\t\t\tsocketOptions = { transports: [\"websocket\"] };\n\t\t\tif (this.#agentManager) {\n\t\t\t\tif (!this.#address) throw new Error(`SocketIoClient:SetupSocket(): Error: [address not provided when using agentManager]`);\n\t\t\t\tsocketOptions.agent = this.#agentManager.GetAgent(this.#address);\n\t\t\t}\n\t\t} else socketOptions = { transports: [\"websocket\"] };\n\t\tif (this.#authToken) socketOptions.auth = (cb) => {\n\t\t\tcb({ token: this.#authToken });\n\t\t};\n\t\tif (this.#socketIoCustomPath && this.#socketIoCustomPath.localeCompare(\"\") !== 0) socketOptions.path = this.#socketIoCustomPath;\n\t\tthis.#socket = io(this.#address, socketOptions);\n\t\tthis.#socket.io.on(\"error\", (err) => {\n\t\t\tthis.LogErrorMessage(`socketDetail.socket.io.on('error'): [${err}] Address: [${this.#address}]`);\n\t\t\tthis.EngineError(err);\n\t\t});\n\t\tthis.#socket.io.on(\"reconnect_error\", (err) => {\n\t\t\tthis.LogErrorMessage(`socketDetail.socket.io.on('reconnect_error'): [${err}] Address: [${this.#address}]`);\n\t\t\tthis.EngineReconnectError(err);\n\t\t});\n\t\tthis.#socket.on(\"connect_error\", (err) => {\n\t\t\tthis.LogErrorMessage(`socketDetail.socket.on('connect_error'): [${err}] Address: [${this.#address}]`);\n\t\t\tthis.EngineConnectError(err);\n\t\t});\n\t\tthis.#socket.io.on(\"reconnect\", (attempt) => {\n\t\t\tthis.LogErrorMessage(`socketDetail.socket.io.on('reconnect'): Number: [${attempt}] Address: [${this.#address}]`);\n\t\t\tthis.EngineReconnect(attempt);\n\t\t});\n\t\tthis.#socket.on(\"connect\", () => {\n\t\t\tif (this.#socket) {\n\t\t\t\tthis.LogDebugMessage(`Socket: [${this.#socket.id}]: connected, Address: [${this.#address}]`);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.SocketConnect(this.#socket);\n\t\t\t\t}, 0);\n\t\t\t\tthis.SetupSocketEvents(this.#socket);\n\t\t\t} else {\n\t\t\t\tconst errorMessage = \"Could not get socket object from socket.io, Address: [${socketDetail.address}]\";\n\t\t\t\tthis.LogErrorMessage(errorMessage);\n\t\t\t\tthis.SocketConnectError(new Error(errorMessage));\n\t\t\t}\n\t\t});\n\t\tthis.#socket.on(\"disconnect\", (reason) => {\n\t\t\tthis.LogDebugMessage(\"socket disconnect: \" + reason);\n\t\t\tthis.SocketDisconnect(reason);\n\t\t\tswitch (reason) {\n\t\t\t\tcase \"io server disconnect\":\n\t\t\t\t\tthis.LogDebugMessage(\"The server disconnected using disconnectSockets, i.e. normal safe shutdown from explicit disconnection by the server.\");\n\t\t\t\t\tthis.LogDebugMessage(\"The connection will be re-established when the server becomes available.\");\n\t\t\t\t\tthis.#socket = void 0;\n\t\t\t\t\tif (isNode) {\n\t\t\t\t\t\tif (this.#agentManager) this.#agentManager.ResetAgent();\n\t\t\t\t\t\tsetTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout).unref();\n\t\t\t\t\t} else setTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"io client disconnect\":\n\t\t\t\t\tthis.LogDebugMessage(\"The client disconnected using disconnectSockets, i.e. normal safe disconnection from explicit disconnection by the client.\");\n\t\t\t\t\tthis.LogDebugMessage(\"The connection will not be re-established automatically.\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"transport close\":\n\t\t\t\tcase \"ping timeout\":\n\t\t\t\tcase \"transport error\":\n\t\t\t\t\tthis.LogDebugMessage(`Server unexpectedly disconnected. Reason: [${reason}]`);\n\t\t\t\t\tthis.LogDebugMessage(\"The connection will be re-established when the server becomes available.\");\n\t\t\t\t\tif (this.#socket) this.#socket.disconnect();\n\t\t\t\t\tthis.#socket = void 0;\n\t\t\t\t\tif (isNode) {\n\t\t\t\t\t\tif (this.#agentManager) this.#agentManager?.ResetAgent();\n\t\t\t\t\t\tsetTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout).unref();\n\t\t\t\t\t} else setTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n};\n//#endregion\nexport { STSEvent, STSNamespace, STSRoom, SocketIoClient };\n\n//# sourceMappingURL=index.mjs.map","import { TinyEmitter } from \"tiny-emitter\";\nimport _cloneDeep from \"lodash.clonedeep\";\nimport { STSAxiosConfig, defaultLogger, isNode } from \"@nsshunt/stsutils\";\nimport axios from \"axios\";\nimport { inject } from \"vue\";\nimport { SocketIoClient } from \"@nsshunt/stssocketioutils\";\n//#region src/commonTypes.ts\nvar SubscriptionTopic = /* @__PURE__ */ function(SubscriptionTopic) {\n\tSubscriptionTopic[\"AllServicesCombined\"] = \"AllServicesCombined\";\n\tSubscriptionTopic[\"Services\"] = \"Services\";\n\tSubscriptionTopic[\"ServiceInstances\"] = \"ServiceInstances\";\n\tSubscriptionTopic[\"ServiceInstance\"] = \"ServiceInstance\";\n\tSubscriptionTopic[\"AllAgentsCombined\"] = \"AllAgentsCombined\";\n\tSubscriptionTopic[\"Agents\"] = \"Agents\";\n\tSubscriptionTopic[\"AgentWorkers\"] = \"AgentWorkers\";\n\tSubscriptionTopic[\"AgentWorker\"] = \"AgentWorker\";\n\tSubscriptionTopic[\"AllLambdasCombined\"] = \"AllLambdasCombined\";\n\tSubscriptionTopic[\"LambdaTechnologies\"] = \"LambdaTechnologies\";\n\tSubscriptionTopic[\"LambdaSubTechnologies\"] = \"LambdaSubTechnologies\";\n\tSubscriptionTopic[\"LambdaSubTechnologiesInstance\"] = \"LambdaSubTechnologiesInstance\";\n\tSubscriptionTopic[\"LogProcessing\"] = \"LogProcessing\";\n\treturn SubscriptionTopic;\n}({});\nvar GetSocketIOSubscriptionKey = (subscriptionKey) => {\n\treturn `SubscriptionData_${subscriptionKey.id}`;\n};\nvar KAFKA_PREFIX = \"__STS__\";\nvar TransportType = /* @__PURE__ */ function(TransportType) {\n\tTransportType[TransportType[\"none\"] = 0] = \"none\";\n\tTransportType[TransportType[\"IPC\"] = 1] = \"IPC\";\n\tTransportType[TransportType[\"websocket\"] = 2] = \"websocket\";\n\tTransportType[TransportType[\"RESTAPI\"] = 4] = \"RESTAPI\";\n\tTransportType[TransportType[\"redis\"] = 8] = \"redis\";\n\tTransportType[TransportType[\"kafka\"] = 16] = \"kafka\";\n\tTransportType[TransportType[\"influxdb\"] = 32] = \"influxdb\";\n\tTransportType[TransportType[\"prometheus\"] = 64] = \"prometheus\";\n\tTransportType[TransportType[\"gRPC\"] = 128] = \"gRPC\";\n\tTransportType[TransportType[\"unixsocket\"] = 256] = \"unixsocket\";\n\tTransportType[TransportType[\"socketio\"] = 512] = \"socketio\";\n\tTransportType[TransportType[\"otelcollector\"] = 1024] = \"otelcollector\";\n\tTransportType[TransportType[\"messageport\"] = 2048] = \"messageport\";\n\tTransportType[TransportType[\"jsonrpc\"] = 4096] = \"jsonrpc\";\n\tTransportType[TransportType[\"postgresql\"] = 8192] = \"postgresql\";\n\tTransportType[TransportType[\"grafanaloki\"] = 16384] = \"grafanaloki\";\n\tTransportType[TransportType[\"logstash\"] = 32768] = \"logstash\";\n\tTransportType[TransportType[\"fluentbit\"] = 65536] = \"fluentbit\";\n\tTransportType[TransportType[\"fluentd\"] = 131072] = \"fluentd\";\n\tTransportType[TransportType[\"inmemory\"] = 262144] = \"inmemory\";\n\treturn TransportType;\n}({});\nfunction GetTransportMode(transport) {\n\tlet trans = 0;\n\ttry {\n\t\ttransport.split(\"|\").forEach((item) => {\n\t\t\tswitch (item) {\n\t\t\t\tcase \"IPC\":\n\t\t\t\t\ttrans |= TransportType.IPC;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"websocket\":\n\t\t\t\t\ttrans |= TransportType.websocket;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"RESTAPI\":\n\t\t\t\t\ttrans |= TransportType.RESTAPI;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"redis\":\n\t\t\t\t\ttrans |= TransportType.redis;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"kafka\":\n\t\t\t\t\ttrans |= TransportType.kafka;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"influxdb\":\n\t\t\t\t\ttrans |= TransportType.influxdb;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"prometheus\":\n\t\t\t\t\ttrans |= TransportType.prometheus;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gRPC\":\n\t\t\t\t\ttrans |= TransportType.gRPC;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"unixsocket\":\n\t\t\t\t\ttrans |= TransportType.unixsocket;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"socketio\":\n\t\t\t\t\ttrans |= TransportType.socketio;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"otelcollector\":\n\t\t\t\t\ttrans |= TransportType.otelcollector;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"messageport\":\n\t\t\t\t\ttrans |= TransportType.messageport;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"jsonrpc\":\n\t\t\t\t\ttrans |= TransportType.jsonrpc;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"postgresql\":\n\t\t\t\t\ttrans |= TransportType.postgresql;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"grafanaloki\":\n\t\t\t\t\ttrans |= TransportType.grafanaloki;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"logstash\":\n\t\t\t\t\ttrans |= TransportType.logstash;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"fluentbit\":\n\t\t\t\t\ttrans |= TransportType.fluentbit;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"fluentd\":\n\t\t\t\t\ttrans |= TransportType.fluentd;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inmemory\":\n\t\t\t\t\ttrans |= TransportType.inmemory;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tthrow new Error(`GetTransportMode(): Error: [${error}]`);\n\t}\n\treturn trans;\n}\nvar InstrumentPayloadType = /* @__PURE__ */ function(InstrumentPayloadType) {\n\tInstrumentPayloadType[\"agent\"] = \"agent\";\n\tInstrumentPayloadType[\"service\"] = \"service\";\n\treturn InstrumentPayloadType;\n}({});\n//#endregion\n//#region src/publish/middleware/requestLoggerMiddleware.ts\nvar RequestLoggerMiddlewareEventName = /* @__PURE__ */ function(RequestLoggerMiddlewareEventName) {\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_AR_DEC\"] = \"UpdateInstrument_AR_DEC\";\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_AR_INC\"] = \"UpdateInstrument_AR_INC\";\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_RC_INC\"] = \"UpdateInstrument_RC_INC\";\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_V_INC\"] = \"UpdateInstrument_V_INC\";\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_DH_VAL\"] = \"UpdateInstrument_DH_VAL\";\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_D_VAL\"] = \"UpdateInstrument_D_VAL\";\n\treturn RequestLoggerMiddlewareEventName;\n}({});\nvar RequestLoggerMiddleware = class {\n\toptions;\n\t#tinyEmitter = new TinyEmitter();\n\tconstructor(options) {\n\t\tthis.options = options;\n\t}\n\ton(eventName, callBackFn) {\n\t\tthis.#tinyEmitter.on(eventName, callBackFn);\n\t}\n\t#RequestCompleted = (start) => {\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_AR_DEC);\n\t\tconst end = performance.now() - start;\n\t\tconst timeInMs = parseFloat(end.toFixed(4));\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_DH_VAL, timeInMs);\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_D_VAL, timeInMs);\n\t};\n\t/**\n\t* Use with .bind(class instance).\n\t* Example;\n\t* ---\n\t* `let requestLoggerMiddleware = new RequestLoggerMiddleware();\n\t* app.use(requestLoggerMiddleware.Middleware.bind(requestLoggerMiddleware));`\n\t* @param {*} req \n\t* @param {*} res \n\t* @param {*} next \n\t* @returns \n\t*/\n\tMiddleware = async (req, res, next) => {\n\t\tif (this.options.ignoresocketio && req.originalUrl.includes(\"socket.io\")) return next();\n\t\tconst start = performance.now();\n\t\tlet completed = false;\n\t\tconst completeOnce = () => {\n\t\t\tif (completed) return;\n\t\t\tcompleted = true;\n\t\t\tthis.#RequestCompleted(start);\n\t\t};\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_AR_INC);\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_RC_INC);\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_V_INC);\n\t\treq.on(\"aborted\", () => {});\n\t\treq.on(\"end\", () => {});\n\t\tres.on(\"close\", () => {\n\t\t\tcompleteOnce();\n\t\t});\n\t\tres.on(\"finish\", () => {\n\t\t\tcompleteOnce();\n\t\t});\n\t\tnext();\n\t};\n};\n//#endregion\n//#region node_modules/chalk/source/vendor/ansi-styles/index.js\nvar ANSI_BACKGROUND_OFFSET = 10;\nvar wrapAnsi16 = (offset = 0) => (code) => `\\u001B[${code + offset}m`;\nvar wrapAnsi256 = (offset = 0) => (code) => `\\u001B[${38 + offset};5;${code}m`;\nvar wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\nvar styles$1 = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29]\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39],\n\t\tgrey: [90, 39],\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39]\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49],\n\t\tbgGrey: [100, 49],\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49]\n\t}\n};\nObject.keys(styles$1.modifier);\nvar foregroundColorNames = Object.keys(styles$1.color);\nvar backgroundColorNames = Object.keys(styles$1.bgColor);\n[...foregroundColorNames, ...backgroundColorNames];\nfunction assembleStyles() {\n\tconst codes = /* @__PURE__ */ new Map();\n\tfor (const [groupName, group] of Object.entries(styles$1)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles$1[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\t\t\tgroup[styleName] = styles$1[styleName];\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\t\tObject.defineProperty(styles$1, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\tObject.defineProperty(styles$1, \"codes\", {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\tstyles$1.color.close = \"\\x1B[39m\";\n\tstyles$1.bgColor.close = \"\\x1B[49m\";\n\tstyles$1.color.ansi = wrapAnsi16();\n\tstyles$1.color.ansi256 = wrapAnsi256();\n\tstyles$1.color.ansi16m = wrapAnsi16m();\n\tstyles$1.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles$1.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles$1.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\tObject.defineProperties(styles$1, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) return 16;\n\t\t\t\t\tif (red > 248) return 231;\n\t\t\t\t\treturn Math.round((red - 8) / 247 * 24) + 232;\n\t\t\t\t}\n\t\t\t\treturn 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) return [\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tlet [colorString] = matches;\n\t\t\t\tif (colorString.length === 3) colorString = [...colorString].map((character) => character + character).join(\"\");\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\t\t\t\treturn [\n\t\t\t\t\tinteger >> 16 & 255,\n\t\t\t\t\tinteger >> 8 & 255,\n\t\t\t\t\tinteger & 255\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: (hex) => styles$1.rgbToAnsi256(...styles$1.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) return 30 + code;\n\t\t\t\tif (code < 16) return 90 + (code - 8);\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = ((code - 232) * 10 + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\t\t\t\t\tconst remainder = code % 36;\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = remainder % 6 / 5;\n\t\t\t\t}\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\t\t\t\tif (value === 0) return 30;\n\t\t\t\tlet result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));\n\t\t\t\tif (value === 2) result += 60;\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles$1.ansi256ToAnsi(styles$1.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: (hex) => styles$1.ansi256ToAnsi(styles$1.hexToAnsi256(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\treturn styles$1;\n}\nvar ansiStyles = assembleStyles();\n//#endregion\n//#region node_modules/chalk/source/vendor/supports-color/browser.js\nvar level = (() => {\n\tif (!(\"navigator\" in globalThis)) return 0;\n\tif (globalThis.navigator.userAgentData) {\n\t\tconst brand = navigator.userAgentData.brands.find(({ brand }) => brand === \"Chromium\");\n\t\tif (brand && brand.version > 93) return 3;\n\t}\n\tif (/\\b(Chrome|Chromium)\\//.test(globalThis.navigator.userAgent)) return 1;\n\treturn 0;\n})();\nvar colorSupport = level !== 0 && {\n\tlevel,\n\thasBasic: true,\n\thas256: level >= 2,\n\thas16m: level >= 3\n};\nvar supportsColor = {\n\tstdout: colorSupport,\n\tstderr: colorSupport\n};\n//#endregion\n//#region node_modules/chalk/source/utilities.js\nfunction stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) return string;\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = \"\";\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\nfunction stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = \"\";\n\tdo {\n\t\tconst gotCR = string[index - 1] === \"\\r\";\n\t\treturnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? \"\\r\\n\" : \"\\n\") + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf(\"\\n\", endIndex);\n\t} while (index !== -1);\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n//#endregion\n//#region node_modules/chalk/source/index.js\nvar { stdout: stdoutColor, stderr: stderrColor } = supportsColor;\nvar GENERATOR = Symbol(\"GENERATOR\");\nvar STYLER = Symbol(\"STYLER\");\nvar IS_EMPTY = Symbol(\"IS_EMPTY\");\nvar levelMapping = [\n\t\"ansi\",\n\t\"ansi\",\n\t\"ansi256\",\n\t\"ansi16m\"\n];\nvar styles = Object.create(null);\nvar applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) throw new Error(\"The `level` option should be an integer from 0 to 3\");\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === void 0 ? colorLevel : options.level;\n};\nvar chalkFactory = (options) => {\n\tconst chalk = (...strings) => strings.join(\" \");\n\tapplyOptions(chalk, options);\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\treturn chalk;\n};\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\nfor (const [styleName, style] of Object.entries(ansiStyles)) styles[styleName] = { get() {\n\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\tObject.defineProperty(this, styleName, { value: builder });\n\treturn builder;\n} };\nstyles.visible = { get() {\n\tconst builder = createBuilder(this, this[STYLER], true);\n\tObject.defineProperty(this, \"visible\", { value: builder });\n\treturn builder;\n} };\nvar getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === \"rgb\") {\n\t\tif (level === \"ansi16m\") return ansiStyles[type].ansi16m(...arguments_);\n\t\tif (level === \"ansi256\") return ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\tif (model === \"hex\") return getModelAnsi(\"rgb\", level, type, ...ansiStyles.hexToRgb(...arguments_));\n\treturn ansiStyles[type][model](...arguments_);\n};\nfor (const model of [\n\t\"rgb\",\n\t\"hex\",\n\t\"ansi256\"\n]) {\n\tstyles[model] = { get() {\n\t\tconst { level } = this;\n\t\treturn function(...arguments_) {\n\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], \"color\", ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t};\n\t} };\n\tconst bgModel = \"bg\" + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = { get() {\n\t\tconst { level } = this;\n\t\treturn function(...arguments_) {\n\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], \"bgColor\", ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t};\n\t} };\n}\nvar proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t}\n\t}\n});\nvar createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === void 0) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\nvar createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? \"\" + arguments_[0] : arguments_.join(\" \"));\n\tObject.setPrototypeOf(builder, proto);\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\treturn builder;\n};\nvar applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) return self[IS_EMPTY] ? \"\" : string;\n\tlet styler = self[STYLER];\n\tif (styler === void 0) return string;\n\tconst { openAll, closeAll } = styler;\n\tif (string.includes(\"\\x1B\")) while (styler !== void 0) {\n\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\t\tstyler = styler.parent;\n\t}\n\tconst lfIndex = string.indexOf(\"\\n\");\n\tif (lfIndex !== -1) string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\treturn openAll + string + closeAll;\n};\nObject.defineProperties(createChalk.prototype, styles);\nvar chalk = createChalk();\ncreateChalk({ level: stderrColor ? stderrColor.level : 0 });\n//#endregion\n//#region node_modules/@nsshunt/stsobservability/dist/index.mjs\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\nvar Gauge = /* @__PURE__ */ function(Gauge) {\n\tGauge[\"ACTIVE_REQUEST_GAUGE\"] = \"a\";\n\tGauge[\"AUTHENTICATION_COUNT_GAUGE\"] = \"b\";\n\tGauge[\"AUTHENTICATION_ERROR_COUNT_GAUGE\"] = \"aa\";\n\tGauge[\"AUTHENTICATION_RETRY_COUNT_GAUGE\"] = \"ab\";\n\tGauge[\"CONNECTION_POOL_IDLE_GAUGE\"] = \"c\";\n\tGauge[\"CONNECTION_POOL_TOTAL_GAUGE\"] = \"d\";\n\tGauge[\"CONNECTION_POOL_WAITING_GAUGE\"] = \"e\";\n\tGauge[\"CPU_LOAD_GAUGE\"] = \"f\";\n\tGauge[\"CPU_SYSTEM_LOAD_GAUGE\"] = \"g\";\n\tGauge[\"DURATION_GAUGE\"] = \"h\";\n\tGauge[\"DURATION_HISTOGRAM_GAUGE\"] = \"i\";\n\tGauge[\"ERROR_COUNT_GAUGE\"] = \"j\";\n\tGauge[\"LATENCY_GAUGE\"] = \"k\";\n\tGauge[\"LATENCY_HISTOGRAM_GAUGE\"] = \"l\";\n\tGauge[\"LOGGER\"] = \"m\";\n\tGauge[\"LOGGER_COPY\"] = \"n\";\n\tGauge[\"NETWORK_RX_GAUGE\"] = \"o\";\n\tGauge[\"NETWORK_TX_GAUGE\"] = \"p\";\n\tGauge[\"REQUEST_COUNT_GAUGE\"] = \"q\";\n\tGauge[\"RETRY_COUNT_GAUGE\"] = \"r\";\n\tGauge[\"TIMER_GAUGE\"] = \"s\";\n\tGauge[\"VELOCITY_GAUGE\"] = \"t\";\n\tGauge[\"CONNECTION_COUNT_GAUGE\"] = \"u\";\n\tGauge[\"OBJECT_GAUGE\"] = \"v\";\n\tGauge[\"PAYLOAD_SIZE\"] = \"w\";\n\tGauge[\"CORE_COUNT_GAUGE\"] = \"x\";\n\tGauge[\"CHILD_COUNT\"] = \"y\";\n\tGauge[\"UNKNOWN\"] = \"z\";\n\treturn Gauge;\n}({});\nvar GaugeTypes = /* @__PURE__ */ function(GaugeTypes) {\n\tGaugeTypes[\"GAUGE_TYPE\"] = \"_\";\n\tGaugeTypes[\"INSTRUMENT_GAUGE\"] = \"a\";\n\tGaugeTypes[\"INSTRUMENT_VELOCITY\"] = \"b\";\n\tGaugeTypes[\"INSTRUMENT_HISTOGRAM\"] = \"c\";\n\tGaugeTypes[\"INSTRUMENT_LOG\"] = \"d\";\n\tGaugeTypes[\"INSTRUMENT_TIMER\"] = \"e\";\n\tGaugeTypes[\"INSTRUMENT_OBJECT\"] = \"f\";\n\treturn GaugeTypes;\n}({});\nvar InstrumentBase = class {\n\t#label = \"\";\n\t#options = null;\n\t#data = {};\n\tconstructor(options = {}) {\n\t\tif (typeof options === \"string\" || options instanceof String) throw new Error(\"Instrument parameter must be an options object.\");\n\t\tthis.#options = options;\n\t\tif (options.label) this.#label = options.label;\n\t\telse this.#label = \"InstrumentGauge\";\n\t}\n\t[GaugeTypes.GAUGE_TYPE] = GaugeTypes.INSTRUMENT_OBJECT;\n\tval;\n\tWithLabel(label) {\n\t\tthis.label = label;\n\t\treturn this;\n\t}\n\tDefineCopyProperties(propertyNames) {\n\t\tpropertyNames.forEach((propertyName) => {\n\t\t\tObject.defineProperty(this, propertyName, {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#data[propertyName],\n\t\t\t\tset: (value) => {\n\t\t\t\t\tif (value === void 0) return;\n\t\t\t\t\tthis.#data[propertyName] = value;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\tGetNumber(val) {\n\t\tif (Number.isInteger(val)) return val;\n\t\telse return Math.round((val + Number.EPSILON) * 100) / 100;\n\t}\n\tget options() {\n\t\treturn this.#options;\n\t}\n\tset options(optionsValue) {\n\t\tthis.#options = optionsValue;\n\t}\n\tget label() {\n\t\treturn this.#label;\n\t}\n\tset label(labelValue) {\n\t\tthis.#label = labelValue;\n\t}\n\tStopTimer() {}\n\tProcessTelemetry(telemetry) {\n\t\tthrow new Error(`Must override in extended class: [ProcessTelemetry]: [${telemetry}].`);\n\t}\n};\nvar InstrumentVelocity = class extends InstrumentBase {\n\t#val = 0;\n\t#interval = null;\n\t#timeoutComputeVelocity = null;\n\t#lastVelocity = 0;\n\t#delta = 0;\n\t#maxVelocity = 0;\n\t#timerInterval = 0;\n\t#copy = false;\n\t#velocity = 0;\n\t#velocityVal = 0;\n\t#valStack = [];\n\t#averageValStack = [];\n\t#maxAverageValStack = 0;\n\t#maxAverageIterations = 0;\n\t#valStackMaxLength = 0;\n\t#valStackAverage = 0;\n\t#timeStamp = 0;\n\t#maxTimeDiff = 0;\n\t#vaTimeDiff = 0;\n\t#velocityTimeDiff = 0;\n\t#autoComputeVelocity = false;\n\t#autoComputeVelocityTimeout = 0;\n\t#countDiff = 0;\n\t#timeDiff = 0;\n\t#deltaCountDiff = 0;\n\t#deltaTimeDif = 0;\n\t#minTimeForReporting = 0;\n\t#averageVelocity = [];\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (typeof options.label === \"undefined\") this.label = \"InstrumentVelocity\";\n\t\telse this.label = options.label;\n\t\tif (typeof options.interval === \"undefined\") this.#timerInterval = 1e3;\n\t\telse this.#timerInterval = options.interval;\n\t\tif (typeof options.valStackMaxLength === \"undefined\") this.#valStackMaxLength = 100;\n\t\telse this.#valStackMaxLength = options.valStackMaxLength;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tif (typeof options.autoComputeVelocity === \"undefined\") this.#autoComputeVelocity = false;\n\t\telse this.#autoComputeVelocity = options.autoComputeVelocity;\n\t\tif (typeof options.maxAverageValStack === \"undefined\") this.#maxAverageValStack = 5;\n\t\telse this.#maxAverageValStack = options.maxAverageValStack;\n\t\tif (typeof options.maxAverageIterations === \"undefined\") this.#maxAverageIterations = 3;\n\t\telse this.#maxAverageIterations = options.maxAverageIterations;\n\t\tif (typeof options.velocityTimeDiff === \"undefined\") this.#velocityTimeDiff = 5e3;\n\t\telse this.#velocityTimeDiff = options.velocityTimeDiff;\n\t\tif (typeof options.vaTimeDiff === \"undefined\") this.#vaTimeDiff = 1e4;\n\t\telse this.#vaTimeDiff = options.vaTimeDiff;\n\t\tif (typeof options.autoComputeVelocityTimeout === \"undefined\") this.#autoComputeVelocityTimeout = 50;\n\t\telse this.#autoComputeVelocityTimeout = options.autoComputeVelocityTimeout;\n\t\tthis.#maxTimeDiff = this.#vaTimeDiff * 2;\n\t\tthis.#minTimeForReporting = this.#vaTimeDiff + 2e3;\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_VELOCITY\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\n\t\t\t\"val\",\n\t\t\t\"maxVelocity\",\n\t\t\t\"delta\",\n\t\t\t\"velocity\",\n\t\t\t\"va\",\n\t\t\t\"timeStamp\",\n\t\t\t\"deltaTimeDif\",\n\t\t\t\"deltaCountDiff\",\n\t\t\t\"timeDiff\",\n\t\t\t\"countDiff\",\n\t\t\t\"averageVelocity\"\n\t\t]);\n\t\telse {\n\t\t\tObject.defineProperty(this, \"val\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetVal(),\n\t\t\t\tset: (value) => {\n\t\t\t\t\tthis.#SetVal(value);\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"maxVelocity\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetMaxVelocity()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"delta\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetDelta()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"velocity\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetVelocity()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"va\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetVelocityStackAverage()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"timeStamp\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetTimeStamp()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"countDiff\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetCountDiff()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"timeDiff\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetTimeDiff()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"deltaCountDiff\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetDeltaCountDiff()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"deltaTimeDif\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetDeltaTimeDif()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"averageVelocity\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetAverageVelocity()\n\t\t\t});\n\t\t\tif (this.#timerInterval > 0 && this.#autoComputeVelocity === false) this._StartTimer();\n\t\t}\n\t\tif (typeof options.initValue !== \"undefined\") this.val = options.initValue;\n\t\tif (typeof options.fromJSON !== \"undefined\") {\n\t\t\tconst result = _cloneDeep(options.fromJSON);\n\t\t\tthis.val = result.val;\n\t\t\tthis.velocity = result.velocity;\n\t\t\tthis.maxVelocity = result.maxVelocity;\n\t\t\tthis.delta = result.delta;\n\t\t\tthis.va = result.va;\n\t\t\tthis.timeStamp = result.timeStamp;\n\t\t\tthis.countDiff = result.countDiff;\n\t\t\tthis.timeDiff = result.timeDiff;\n\t\t\tthis.deltaCountDiff = result.deltaCountDiff;\n\t\t\tthis.deltaTimeDif = result.deltaTimeDif;\n\t\t\tthis.averageVelocity = _cloneDeep(result.averageVelocity);\n\t\t}\n\t}\n\tmaxVelocity = 0;\n\tdelta = 0;\n\tvelocity = 0;\n\tva = 0;\n\ttimeStamp = 0;\n\tcountDiff = 0;\n\ttimeDiff = 0;\n\tdeltaCountDiff = 0;\n\tdeltaTimeDif = 0;\n\taverageVelocity = [];\n\tval = 0;\n\tWithValStackMaxLength(valStackMaxLength) {\n\t\tthis.#valStackMaxLength = valStackMaxLength;\n\t\tthis.#valStack = [];\n\t\treturn this;\n\t}\n\t_StartTimer() {\n\t\tthis.#interval = setInterval(() => {\n\t\t\tthis.#ComputeVelocity();\n\t\t\tlet pushVal = this.#velocity;\n\t\t\tfor (let i = 0; i < this.#maxAverageIterations; i++) {\n\t\t\t\tif (!this.#averageValStack[i]) this.#averageValStack[i] = [];\n\t\t\t\tthis.#averageValStack[i].push(pushVal);\n\t\t\t\tif (this.#averageValStack[i].length > this.#maxAverageValStack) this.#averageValStack[i].shift();\n\t\t\t\tpushVal = this.#averageValStack[i].reduce((prev, current) => prev + current) / this.#averageValStack[i].length;\n\t\t\t\tthis.#averageVelocity[i] = pushVal;\n\t\t\t}\n\t\t}, this.#timerInterval);\n\t\tif (isNode) this.#interval.unref();\n\t}\n\t#ComputeVelocityByTimeDiff(checkTimeDiff, checkDeltaTimeDiff) {\n\t\tlet val = 0;\n\t\tlet deltaVal = 0;\n\t\tlet countDiff = 0;\n\t\tlet timeDiff = 0;\n\t\tlet deltaCountDiff = 0;\n\t\tlet deltaTimeDiff = 0;\n\t\tif (this.#valStack.length > 1 && this.#valStack[this.#valStack.length - 1].timeStamp - this.#valStack[0].timeStamp > this.#minTimeForReporting) {\n\t\t\tconst dp = this.#valStack[this.#valStack.length - 1];\n\t\t\tlet timeDiffPos = -1;\n\t\t\tlet deltaDiffPos = -1;\n\t\t\tfor (let i = this.#valStack.length - 2; i > -1; i--) {\n\t\t\t\tif (timeDiffPos === -1 && this.#timeStamp - this.#valStack[i].timeStamp >= checkTimeDiff) {\n\t\t\t\t\ttimeDiffPos = i;\n\t\t\t\t\tif (checkDeltaTimeDiff === 0) break;\n\t\t\t\t}\n\t\t\t\tif (deltaDiffPos === -1 && this.#timeStamp - this.#valStack[i].timeStamp >= checkDeltaTimeDiff) deltaDiffPos = i;\n\t\t\t\tif (timeDiffPos !== -1 && deltaDiffPos !== -1) break;\n\t\t\t}\n\t\t\tif (timeDiffPos > -1) {\n\t\t\t\tcountDiff = dp.count - this.#valStack[timeDiffPos].count;\n\t\t\t\tif (countDiff > 0) {\n\t\t\t\t\ttimeDiff = dp.timeStamp - this.#valStack[timeDiffPos].timeStamp;\n\t\t\t\t\tif (timeDiff > 0) val = 1e3 / timeDiff * countDiff;\n\t\t\t\t\telse val = 0;\n\t\t\t\t} else val = 0;\n\t\t\t} else val = 0;\n\t\t\tif (deltaDiffPos > -1) {\n\t\t\t\tdeltaCountDiff = this.#valStack[timeDiffPos].count - this.#valStack[deltaDiffPos].count;\n\t\t\t\tif (deltaCountDiff > 0) {\n\t\t\t\t\tdeltaTimeDiff = this.#valStack[timeDiffPos].timeStamp - this.#valStack[deltaDiffPos].timeStamp;\n\t\t\t\t\tif (deltaTimeDiff > 0) deltaVal = 1e3 / deltaTimeDiff * deltaTimeDiff;\n\t\t\t\t\telse deltaVal = 0;\n\t\t\t\t} else deltaVal = 0;\n\t\t\t} else deltaVal = 0;\n\t\t}\n\t\treturn {\n\t\t\tval,\n\t\t\tcountDiff,\n\t\t\ttimeDiff,\n\t\t\tdeltaVal,\n\t\t\tdeltaCountDiff,\n\t\t\tdeltaTimeDiff\n\t\t};\n\t}\n\t#ComputeVelocity() {\n\t\tconst dp = {\n\t\t\ttimeStamp: performance.now(),\n\t\t\tcount: this.#velocityVal\n\t\t};\n\t\tthis.#valStack.push(dp);\n\t\tthis.#timeStamp = dp.timeStamp;\n\t\twhile (this.#valStack.length > 0 && this.#timeStamp - this.#valStack[0].timeStamp > this.#maxTimeDiff) this.#valStack.shift();\n\t\tthis.#valStackAverage = this.#ComputeVelocityByTimeDiff(this.#vaTimeDiff, 0).val;\n\t\tconst velocityDataPoint = this.#ComputeVelocityByTimeDiff(this.#velocityTimeDiff, this.#velocityTimeDiff * 2);\n\t\tthis.#velocity = velocityDataPoint.val;\n\t\tthis.#delta = velocityDataPoint.val - velocityDataPoint.deltaVal;\n\t\tthis.#countDiff = velocityDataPoint.countDiff;\n\t\tthis.#timeDiff = velocityDataPoint.timeDiff;\n\t\tthis.#deltaCountDiff = velocityDataPoint.deltaCountDiff;\n\t\tthis.#deltaTimeDif = velocityDataPoint.deltaTimeDiff;\n\t\tthis.#lastVelocity = this.#velocity;\n\t\tif (this.#velocity > this.#maxVelocity) this.#maxVelocity = this.#velocity;\n\t}\n\t#SetupAutoComputeVelocity() {\n\t\tif (this.#timeoutComputeVelocity) clearTimeout(this.#timeoutComputeVelocity);\n\t\tthis.#timeoutComputeVelocity = setTimeout(() => {\n\t\t\tthis.#ComputeVelocity();\n\t\t}, this.#autoComputeVelocityTimeout);\n\t}\n\t#GetVelocityStackAverage() {\n\t\treturn this.GetNumber(this.#valStackAverage);\n\t}\n\tInc(incVal = 1) {\n\t\tthis.#velocityVal += incVal;\n\t\tif (this.#autoComputeVelocity) this.#ComputeVelocity();\n\t\telse this.#SetupAutoComputeVelocity();\n\t}\n\t#GetVal() {\n\t\treturn this.GetNumber(this.#velocityVal);\n\t}\n\t#SetVal(updatedValue) {\n\t\tthis.#velocityVal = updatedValue;\n\t\tif (this.#autoComputeVelocity) this.#ComputeVelocity();\n\t\telse this.#SetupAutoComputeVelocity();\n\t}\n\t#GetVelocity() {\n\t\treturn this.GetNumber(this.#velocity);\n\t}\n\t#GetMaxVelocity() {\n\t\treturn this.GetNumber(this.#maxVelocity);\n\t}\n\t#GetDelta() {\n\t\treturn this.GetNumber(this.#delta);\n\t}\n\t#GetTimeStamp() {\n\t\treturn this.GetNumber(this.#timeStamp);\n\t}\n\t#GetCountDiff() {\n\t\treturn this.GetNumber(this.#countDiff);\n\t}\n\t#GetTimeDiff() {\n\t\treturn this.GetNumber(this.#timeDiff);\n\t}\n\t#GetDeltaCountDiff() {\n\t\treturn this.GetNumber(this.#deltaCountDiff);\n\t}\n\t#GetDeltaTimeDif() {\n\t\treturn this.GetNumber(this.#deltaTimeDif);\n\t}\n\t#GetAverageVelocity() {\n\t\treturn this.#averageVelocity;\n\t}\n\tStopTimer() {\n\t\tif (this.#interval !== null) {\n\t\t\tclearTimeout(this.#interval);\n\t\t\tthis.#interval = null;\n\t\t}\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.Inc !== void 0) this.Inc(telemetry.Inc);\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t}\n};\nvar HistogramDataElementPos = /* @__PURE__ */ function(HistogramDataElementPos) {\n\tHistogramDataElementPos[HistogramDataElementPos[\"val\"] = 0] = \"val\";\n\tHistogramDataElementPos[HistogramDataElementPos[\"label\"] = 1] = \"label\";\n\tHistogramDataElementPos[HistogramDataElementPos[\"breakPoint\"] = 2] = \"breakPoint\";\n\treturn HistogramDataElementPos;\n}({});\nvar InstrumentHistogram = class extends InstrumentBase {\n\t#histogramData = [];\n\t#val = 0;\n\t#copy = false;\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (typeof options.label === \"undefined\") this.label = \"InstrumentHistogram\";\n\t\telse this.label = options.label;\n\t\tlet histogramData = null;\n\t\tif (typeof options.histogramData === \"undefined\") histogramData = null;\n\t\telse histogramData = options.histogramData;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tif (histogramData === null) this.#histogramData = [\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"10\",\n\t\t\t\t10\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"20\",\n\t\t\t\t20\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"50\",\n\t\t\t\t50\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"100\",\n\t\t\t\t100\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"1000\",\n\t\t\t\t1e3\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"5000\",\n\t\t\t\t5e3\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"EE\",\n\t\t\t\t0\n\t\t\t]\n\t\t];\n\t\telse if (Array.isArray(histogramData)) {\n\t\t\tthis.#histogramData = [];\n\t\t\tfor (let i = 0; i < histogramData.length; i++) this.#histogramData.push([\n\t\t\t\t0,\n\t\t\t\t\"\" + histogramData[i],\n\t\t\t\tparseFloat(histogramData[i].toString())\n\t\t\t]);\n\t\t\tthis.#histogramData.push([\n\t\t\t\t0,\n\t\t\t\t\"EE\",\n\t\t\t\t0\n\t\t\t]);\n\t\t} else throw new Error(`Passed [${histogramData}] must be an array.`);\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_HISTOGRAM\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\"val\", \"hist\"]);\n\t\telse {\n\t\t\tObject.defineProperty(this, \"val\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetVal(),\n\t\t\t\tset: (value) => {\n\t\t\t\t\tthis.#SetVal(value);\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"hist\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetHistogramData(),\n\t\t\t\tset: (value) => {\n\t\t\t\t\tthis.#SetHistogramData(value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (typeof options.initValue !== \"undefined\") this.#val = options.initValue;\n\t\tif (typeof options.fromJSON !== \"undefined\") {\n\t\t\tconst result = _cloneDeep(options.fromJSON);\n\t\t\tthis.#val = result.val;\n\t\t\tthis.hist = result.hist;\n\t\t}\n\t}\n\thist = [];\n\tval = 0;\n\tWithInitVal(initVal) {\n\t\tthis.#val = initVal;\n\t\treturn this;\n\t}\n\tResetHistogramData() {\n\t\tfor (let i = 0; i < this.hist.length; i++) this.hist[i][0] = 0;\n\t}\n\tAddObservation(updateValue) {\n\t\tif (this.#copy) throw new Error(\"Cannot add observations from the copy version of this class.\");\n\t\tlet i = 0;\n\t\tfor (; i < this.#histogramData.length - 1; i++) if (updateValue <= this.#histogramData[i][HistogramDataElementPos.breakPoint]) {\n\t\t\tthis.#histogramData[i][HistogramDataElementPos.val]++;\n\t\t\treturn;\n\t\t}\n\t\tthis.#histogramData[i][HistogramDataElementPos.val]++;\n\t}\n\t#GetVal() {\n\t\treturn this.GetNumber(this.#val);\n\t}\n\t#SetVal(value) {\n\t\tthis.#val = value;\n\t\tthis.AddObservation(value);\n\t}\n\tget formattedHistogramData() {\n\t\tlet retVal = \"\";\n\t\tlet sep = \"\";\n\t\tfor (let i = 0; i < this.hist.length; i++) {\n\t\t\tretVal += sep + \"[\" + (this.hist[i][HistogramDataElementPos.val] + \"/\" + this.hist[i][HistogramDataElementPos.label]).padStart(10, \" \") + \"]\";\n\t\t\tsep = \" \";\n\t\t}\n\t\treturn retVal;\n\t}\n\t#GetHistogramData() {\n\t\treturn this.#histogramData;\n\t}\n\t#SetHistogramData(value) {\n\t\tthis.#histogramData = value;\n\t}\n\tstatic AddHistogramDataEx(histoA, histoB) {\n\t\tif (histoA === null) return _cloneDeep(histoB);\n\t\tconst result = _cloneDeep(histoA);\n\t\tconst histogramAData = result.hist;\n\t\tconst histogramBData = histoB.hist;\n\t\tif (histogramAData.length !== histogramBData.length) throw new Error(\"Invalid HistogramData. HistogramData bucket lengths must be the same.\");\n\t\tfor (let i = 0; i < histogramAData.length; i++) {\n\t\t\tif (histogramAData[i][HistogramDataElementPos.breakPoint] !== histogramBData[i][HistogramDataElementPos.breakPoint]) throw new Error(`Invalid HistogramData. HistogramData bucket break-point at index [${i}] must be the same.`);\n\t\t\tif (histogramAData[i][HistogramDataElementPos.label] !== histogramBData[i][HistogramDataElementPos.label]) throw new Error(`Invalid HistogramData. HistogramData bucket label at index [${i}] must be the same.`);\n\t\t\thistogramAData[i][HistogramDataElementPos.val] += histogramBData[i][HistogramDataElementPos.val];\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Adds a value object (from GetFormatted()) to this instance.\n\t* @param {*} value \n\t*/\n\tAddHistogramData(histogramData) {\n\t\tif (histogramData === null) return;\n\t\tif (this.hist.length !== histogramData.hist.length) throw new Error(\"Invalid HistogramData. HistogramData bucket lengths must be the same.\");\n\t\tfor (let i = 0; i < histogramData.hist.length; i++) {\n\t\t\tif (this.hist[i][HistogramDataElementPos.breakPoint] !== histogramData.hist[i][HistogramDataElementPos.breakPoint]) throw new Error(`Invalid HistogramData. HistogramData bucket break-point at index [${i}] must be the same.`);\n\t\t\tif (this.hist[i][HistogramDataElementPos.label] !== histogramData.hist[i][HistogramDataElementPos.label]) throw new Error(`Invalid HistogramData. HistogramData bucket label at index [${i}] must be the same.`);\n\t\t\tthis.hist[i][HistogramDataElementPos.val] += histogramData.hist[i][HistogramDataElementPos.val];\n\t\t}\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t}\n};\nvar InstrumentLog = class extends InstrumentBase {\n\t#messages = [];\n\t#readPos = 0;\n\t#maxSize = 200;\n\t#copy = false;\n\t#useLatestMessages = false;\n\t#consoleLogging = false;\n\t#instrumentLogging = true;\n\t#winstonLogging = false;\n\t#stsLogger;\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (typeof options.label === \"undefined\") this.label = \"InstrumentLog\";\n\t\telse this.label = options.label;\n\t\tif (typeof options.maxSize === \"undefined\") this.#maxSize = 200;\n\t\telse this.#maxSize = options.maxSize;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tif (typeof options.useLatestMessages === \"undefined\") this.#useLatestMessages = false;\n\t\telse this.#useLatestMessages = options.useLatestMessages;\n\t\tif (typeof options.consoleLogging === \"undefined\") this.#consoleLogging = false;\n\t\telse this.#consoleLogging = options.consoleLogging;\n\t\tif (typeof options.instrumentLogging === \"undefined\") this.#instrumentLogging = true;\n\t\telse this.#instrumentLogging = options.instrumentLogging;\n\t\tif (typeof options.winstonLogging === \"undefined\") this.#winstonLogging = false;\n\t\telse this.#winstonLogging = options.winstonLogging;\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_LOG\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\"val\"]);\n\t\telse Object.defineProperty(this, \"val\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => _cloneDeep(this.#GetVal()),\n\t\t\tset: (value) => {\n\t\t\t\tthis.#SetVal(value);\n\t\t\t}\n\t\t});\n\t\tif (typeof options.initValue !== \"undefined\") this.val = options.initValue;\n\t\tif (typeof options.fromJSON !== \"undefined\") this.val = _cloneDeep(options.fromJSON).val;\n\t}\n\tval = [];\n\tWithMaxSize(maxSize) {\n\t\tthis.#maxSize = maxSize;\n\t\treturn this;\n\t}\n\tWithUseLatestMessages(useLatestMessages) {\n\t\tthis.#useLatestMessages = useLatestMessages;\n\t\treturn this;\n\t}\n\tWithConsoleLogging(consoleLogging) {\n\t\tthis.#consoleLogging = consoleLogging;\n\t\treturn this;\n\t}\n\tWithInstrumentLogging(instrumentLogging) {\n\t\tthis.#instrumentLogging = instrumentLogging;\n\t\treturn this;\n\t}\n\tget MaxSize() {\n\t\treturn this.#maxSize;\n\t}\n\tset MaxSize(maxSize) {\n\t\tthis.#maxSize = maxSize;\n\t}\n\t#DumpToConsole() {\n\t\tconst logReport = this.GetMessagesSinceLastRead();\n\t\tfor (let i = 0; i < logReport.length; i++) console.log(logReport[i]);\n\t}\n\tget consoleLogging() {\n\t\treturn this.#consoleLogging;\n\t}\n\tset consoleLogging(value) {\n\t\tthis.#consoleLogging = value;\n\t\tif (value === true) this.#DumpToConsole();\n\t}\n\tget instrumentLogging() {\n\t\treturn this.#instrumentLogging;\n\t}\n\tset instrumentLogging(value) {\n\t\tthis.#instrumentLogging = value;\n\t}\n\tAppend(messageArray) {\n\t\tfor (let i = 0; i < messageArray.length; i++) this.LogMessage(messageArray[i]);\n\t}\n\terror(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.error(message);\n\t}\n\twarn(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.warn(message);\n\t}\n\tinfo(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.info(message);\n\t}\n\thttp(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.http(message);\n\t}\n\tverbose(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.verbose(message);\n\t}\n\tdebug(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.debug(message);\n\t}\n\tsilly(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.silly(message);\n\t}\n\tLogMessage(message) {\n\t\tif (this.#copy) throw new Error(\"Cannot add log messages from the copy version of this class.\");\n\t\tif (this.#consoleLogging === true) console.log(message);\n\t\tif (this.#instrumentLogging === false) return;\n\t\tthis.#messages.push(message);\n\t\tif (this.#messages.length > this.#maxSize) {\n\t\t\tthis.#messages.shift();\n\t\t\tthis.#readPos = this.#readPos > 0 ? this.#readPos - 1 : 0;\n\t\t}\n\t}\n\t#GetVal() {\n\t\tif (this.#useLatestMessages) return this.GetMessagesSinceLastRead();\n\t\telse return this.#messages;\n\t}\n\t#SetVal(updatedValue) {\n\t\tthis.#messages = updatedValue;\n\t\tthis.#readPos = 0;\n\t}\n\tGetMessagesNoUpdate() {\n\t\treturn this.#messages.slice(this.#readPos);\n\t}\n\tGetMessagesSinceLastRead() {\n\t\tconst retVal = this.#messages.slice(this.#readPos);\n\t\tthis.#readPos = this.#messages.length;\n\t\treturn retVal;\n\t}\n\tResetLog() {\n\t\tthis.#messages = [];\n\t\tthis.#readPos = 0;\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t\tif (telemetry.Append !== void 0) this.Append(telemetry.Append);\n\t\tif (telemetry.LogMessage !== void 0) this.LogMessage(telemetry.LogMessage);\n\t\tif (telemetry.ResetLog !== void 0 && telemetry.ResetLog === true) this.ResetLog();\n\t}\n};\nvar InstrumentTimerGauge = class extends InstrumentBase {\n\t#start = 0;\n\t#copy = false;\n\t#pauseVal = 0;\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (typeof options.label === \"undefined\") this.label = \"InstrumentTimerGauge\";\n\t\telse this.label = options.label;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_TIMER\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\"val\"]);\n\t\telse Object.defineProperty(this, \"val\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => this.#GetVal(),\n\t\t\tset: (value) => {\n\t\t\t\tthis.#SetVal(value);\n\t\t\t}\n\t\t});\n\t\tif (typeof options.initValue !== \"undefined\") this.val = options.initValue;\n\t\tif (typeof options.fromJSON !== \"undefined\") this.val = _cloneDeep(options.fromJSON).val;\n\t\tthis.Reset();\n\t}\n\tval = 0;\n\tPause() {\n\t\tthis.#pauseVal = this.val;\n\t}\n\tResume() {\n\t\tthis.#pauseVal = 0;\n\t}\n\tReset() {\n\t\tthis.#start = performance.now();\n\t}\n\t#GetVal() {\n\t\tif (this.#pauseVal !== 0) return this.GetNumber(this.#pauseVal);\n\t\treturn this.GetNumber(performance.now() - this.#start);\n\t}\n\t#SetVal(updatedValue) {\n\t\tthis.#start = performance.now() - updatedValue;\n\t}\n\tget start() {\n\t\treturn this.#start;\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t\tif (telemetry.Pause !== void 0 && telemetry.Pause === true) this.Pause();\n\t\tif (telemetry.Resume !== void 0 && telemetry.Resume === true) this.Resume();\n\t\tif (telemetry.Reset !== void 0 && telemetry.Reset === true) this.Reset();\n\t}\n};\nvar require_timsort$1 = /* @__PURE__ */ __commonJSMin(((exports) => {\n\t/****\n\t* The MIT License\n\t*\n\t* Copyright (c) 2015 Marco Ziccardi\n\t*\n\t* Permission is hereby granted, free of charge, to any person obtaining a copy\n\t* of this software and associated documentation files (the \"Software\"), to deal\n\t* in the Software without restriction, including without limitation the rights\n\t* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\t* copies of the Software, and to permit persons to whom the Software is\n\t* furnished to do so, subject to the following conditions:\n\t*\n\t* The above copyright notice and this permission notice shall be included in\n\t* all copies or substantial portions of the Software.\n\t*\n\t* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\t* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\t* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\t* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\t* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\t* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\t* THE SOFTWARE.\n\t*\n\t****/\n\t(function(global, factory) {\n\t\tif (typeof define === \"function\" && define.amd) define(\"timsort\", [\"exports\"], factory);\n\t\telse if (typeof exports !== \"undefined\") factory(exports);\n\t\telse {\n\t\t\tvar mod = { exports: {} };\n\t\t\tfactory(mod.exports);\n\t\t\tglobal.timsort = mod.exports;\n\t\t}\n\t})(exports, function(exports$1) {\n\t\t\"use strict\";\n\t\texports$1.__esModule = true;\n\t\texports$1.sort = sort;\n\t\tfunction _classCallCheck(instance, Constructor) {\n\t\t\tif (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n\t\t}\n\t\tvar DEFAULT_MIN_MERGE = 32;\n\t\tvar DEFAULT_MIN_GALLOPING = 7;\n\t\tvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\t\tvar POWERS_OF_TEN = [\n\t\t\t1,\n\t\t\t10,\n\t\t\t100,\n\t\t\t1e3,\n\t\t\t1e4,\n\t\t\t1e5,\n\t\t\t1e6,\n\t\t\t1e7,\n\t\t\t1e8,\n\t\t\t1e9\n\t\t];\n\t\tfunction log10(x) {\n\t\t\tif (x < 1e5) {\n\t\t\t\tif (x < 100) return x < 10 ? 0 : 1;\n\t\t\t\tif (x < 1e4) return x < 1e3 ? 2 : 3;\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t\tif (x < 1e7) return x < 1e6 ? 5 : 6;\n\t\t\tif (x < 1e9) return x < 1e8 ? 7 : 8;\n\t\t\treturn 9;\n\t\t}\n\t\tfunction alphabeticalCompare(a, b) {\n\t\t\tif (a === b) return 0;\n\t\t\tif (~~a === a && ~~b === b) {\n\t\t\t\tif (a === 0 || b === 0) return a < b ? -1 : 1;\n\t\t\t\tif (a < 0 || b < 0) {\n\t\t\t\t\tif (b >= 0) return -1;\n\t\t\t\t\tif (a >= 0) return 1;\n\t\t\t\t\ta = -a;\n\t\t\t\t\tb = -b;\n\t\t\t\t}\n\t\t\t\tvar al = log10(a);\n\t\t\t\tvar bl = log10(b);\n\t\t\t\tvar t = 0;\n\t\t\t\tif (al < bl) {\n\t\t\t\t\ta *= POWERS_OF_TEN[bl - al - 1];\n\t\t\t\t\tb /= 10;\n\t\t\t\t\tt = -1;\n\t\t\t\t} else if (al > bl) {\n\t\t\t\t\tb *= POWERS_OF_TEN[al - bl - 1];\n\t\t\t\t\ta /= 10;\n\t\t\t\t\tt = 1;\n\t\t\t\t}\n\t\t\t\tif (a === b) return t;\n\t\t\t\treturn a < b ? -1 : 1;\n\t\t\t}\n\t\t\tvar aStr = String(a);\n\t\t\tvar bStr = String(b);\n\t\t\tif (aStr === bStr) return 0;\n\t\t\treturn aStr < bStr ? -1 : 1;\n\t\t}\n\t\tfunction minRunLength(n) {\n\t\t\tvar r = 0;\n\t\t\twhile (n >= DEFAULT_MIN_MERGE) {\n\t\t\t\tr |= n & 1;\n\t\t\t\tn >>= 1;\n\t\t\t}\n\t\t\treturn n + r;\n\t\t}\n\t\tfunction makeAscendingRun(array, lo, hi, compare) {\n\t\t\tvar runHi = lo + 1;\n\t\t\tif (runHi === hi) return 1;\n\t\t\tif (compare(array[runHi++], array[lo]) < 0) {\n\t\t\t\twhile (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) runHi++;\n\t\t\t\treverseRun(array, lo, runHi);\n\t\t\t} else while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) runHi++;\n\t\t\treturn runHi - lo;\n\t\t}\n\t\tfunction reverseRun(array, lo, hi) {\n\t\t\thi--;\n\t\t\twhile (lo < hi) {\n\t\t\t\tvar t = array[lo];\n\t\t\t\tarray[lo++] = array[hi];\n\t\t\t\tarray[hi--] = t;\n\t\t\t}\n\t\t}\n\t\tfunction binaryInsertionSort(array, lo, hi, start, compare) {\n\t\t\tif (start === lo) start++;\n\t\t\tfor (; start < hi; start++) {\n\t\t\t\tvar pivot = array[start];\n\t\t\t\tvar left = lo;\n\t\t\t\tvar right = start;\n\t\t\t\twhile (left < right) {\n\t\t\t\t\tvar mid = left + right >>> 1;\n\t\t\t\t\tif (compare(pivot, array[mid]) < 0) right = mid;\n\t\t\t\t\telse left = mid + 1;\n\t\t\t\t}\n\t\t\t\tvar n = start - left;\n\t\t\t\tswitch (n) {\n\t\t\t\t\tcase 3: array[left + 3] = array[left + 2];\n\t\t\t\t\tcase 2: array[left + 2] = array[left + 1];\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tarray[left + 1] = array[left];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: while (n > 0) {\n\t\t\t\t\t\tarray[left + n] = array[left + n - 1];\n\t\t\t\t\t\tn--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tarray[left] = pivot;\n\t\t\t}\n\t\t}\n\t\tfunction gallopLeft(value, array, start, length, hint, compare) {\n\t\t\tvar lastOffset = 0;\n\t\t\tvar maxOffset = 0;\n\t\t\tvar offset = 1;\n\t\t\tif (compare(value, array[start + hint]) > 0) {\n\t\t\t\tmaxOffset = length - hint;\n\t\t\t\twhile (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n\t\t\t\t\tlastOffset = offset;\n\t\t\t\t\toffset = (offset << 1) + 1;\n\t\t\t\t\tif (offset <= 0) offset = maxOffset;\n\t\t\t\t}\n\t\t\t\tif (offset > maxOffset) offset = maxOffset;\n\t\t\t\tlastOffset += hint;\n\t\t\t\toffset += hint;\n\t\t\t} else {\n\t\t\t\tmaxOffset = hint + 1;\n\t\t\t\twhile (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n\t\t\t\t\tlastOffset = offset;\n\t\t\t\t\toffset = (offset << 1) + 1;\n\t\t\t\t\tif (offset <= 0) offset = maxOffset;\n\t\t\t\t}\n\t\t\t\tif (offset > maxOffset) offset = maxOffset;\n\t\t\t\tvar tmp = lastOffset;\n\t\t\t\tlastOffset = hint - offset;\n\t\t\t\toffset = hint - tmp;\n\t\t\t}\n\t\t\tlastOffset++;\n\t\t\twhile (lastOffset < offset) {\n\t\t\t\tvar m = lastOffset + (offset - lastOffset >>> 1);\n\t\t\t\tif (compare(value, array[start + m]) > 0) lastOffset = m + 1;\n\t\t\t\telse offset = m;\n\t\t\t}\n\t\t\treturn offset;\n\t\t}\n\t\tfunction gallopRight(value, array, start, length, hint, compare) {\n\t\t\tvar lastOffset = 0;\n\t\t\tvar maxOffset = 0;\n\t\t\tvar offset = 1;\n\t\t\tif (compare(value, array[start + hint]) < 0) {\n\t\t\t\tmaxOffset = hint + 1;\n\t\t\t\twhile (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n\t\t\t\t\tlastOffset = offset;\n\t\t\t\t\toffset = (offset << 1) + 1;\n\t\t\t\t\tif (offset <= 0) offset = maxOffset;\n\t\t\t\t}\n\t\t\t\tif (offset > maxOffset) offset = maxOffset;\n\t\t\t\tvar tmp = lastOffset;\n\t\t\t\tlastOffset = hint - offset;\n\t\t\t\toffset = hint - tmp;\n\t\t\t} else {\n\t\t\t\tmaxOffset = length - hint;\n\t\t\t\twhile (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n\t\t\t\t\tlastOffset = offset;\n\t\t\t\t\toffset = (offset << 1) + 1;\n\t\t\t\t\tif (offset <= 0) offset = maxOffset;\n\t\t\t\t}\n\t\t\t\tif (offset > maxOffset) offset = maxOffset;\n\t\t\t\tlastOffset += hint;\n\t\t\t\toffset += hint;\n\t\t\t}\n\t\t\tlastOffset++;\n\t\t\twhile (lastOffset < offset) {\n\t\t\t\tvar m = lastOffset + (offset - lastOffset >>> 1);\n\t\t\t\tif (compare(value, array[start + m]) < 0) offset = m;\n\t\t\t\telse lastOffset = m + 1;\n\t\t\t}\n\t\t\treturn offset;\n\t\t}\n\t\tvar TimSort = (function() {\n\t\t\tfunction TimSort(array, compare) {\n\t\t\t\t_classCallCheck(this, TimSort);\n\t\t\t\tthis.array = null;\n\t\t\t\tthis.compare = null;\n\t\t\t\tthis.minGallop = DEFAULT_MIN_GALLOPING;\n\t\t\t\tthis.length = 0;\n\t\t\t\tthis.tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n\t\t\t\tthis.stackLength = 0;\n\t\t\t\tthis.runStart = null;\n\t\t\t\tthis.runLength = null;\n\t\t\t\tthis.stackSize = 0;\n\t\t\t\tthis.array = array;\n\t\t\t\tthis.compare = compare;\n\t\t\t\tthis.length = array.length;\n\t\t\t\tif (this.length < 2 * DEFAULT_TMP_STORAGE_LENGTH) this.tmpStorageLength = this.length >>> 1;\n\t\t\t\tthis.tmp = new Array(this.tmpStorageLength);\n\t\t\t\tthis.stackLength = this.length < 120 ? 5 : this.length < 1542 ? 10 : this.length < 119151 ? 19 : 40;\n\t\t\t\tthis.runStart = new Array(this.stackLength);\n\t\t\t\tthis.runLength = new Array(this.stackLength);\n\t\t\t}\n\t\t\tTimSort.prototype.pushRun = function pushRun(runStart, runLength) {\n\t\t\t\tthis.runStart[this.stackSize] = runStart;\n\t\t\t\tthis.runLength[this.stackSize] = runLength;\n\t\t\t\tthis.stackSize += 1;\n\t\t\t};\n\t\t\tTimSort.prototype.mergeRuns = function mergeRuns() {\n\t\t\t\twhile (this.stackSize > 1) {\n\t\t\t\t\tvar n = this.stackSize - 2;\n\t\t\t\t\tif (n >= 1 && this.runLength[n - 1] <= this.runLength[n] + this.runLength[n + 1] || n >= 2 && this.runLength[n - 2] <= this.runLength[n] + this.runLength[n - 1]) {\n\t\t\t\t\t\tif (this.runLength[n - 1] < this.runLength[n + 1]) n--;\n\t\t\t\t\t} else if (this.runLength[n] > this.runLength[n + 1]) break;\n\t\t\t\t\tthis.mergeAt(n);\n\t\t\t\t}\n\t\t\t};\n\t\t\tTimSort.prototype.forceMergeRuns = function forceMergeRuns() {\n\t\t\t\twhile (this.stackSize > 1) {\n\t\t\t\t\tvar n = this.stackSize - 2;\n\t\t\t\t\tif (n > 0 && this.runLength[n - 1] < this.runLength[n + 1]) n--;\n\t\t\t\t\tthis.mergeAt(n);\n\t\t\t\t}\n\t\t\t};\n\t\t\tTimSort.prototype.mergeAt = function mergeAt(i) {\n\t\t\t\tvar compare = this.compare;\n\t\t\t\tvar array = this.array;\n\t\t\t\tvar start1 = this.runStart[i];\n\t\t\t\tvar length1 = this.runLength[i];\n\t\t\t\tvar start2 = this.runStart[i + 1];\n\t\t\t\tvar length2 = this.runLength[i + 1];\n\t\t\t\tthis.runLength[i] = length1 + length2;\n\t\t\t\tif (i === this.stackSize - 3) {\n\t\t\t\t\tthis.runStart[i + 1] = this.runStart[i + 2];\n\t\t\t\t\tthis.runLength[i + 1] = this.runLength[i + 2];\n\t\t\t\t}\n\t\t\t\tthis.stackSize--;\n\t\t\t\tvar k = gallopRight(array[start2], array, start1, length1, 0, compare);\n\t\t\t\tstart1 += k;\n\t\t\t\tlength1 -= k;\n\t\t\t\tif (length1 === 0) return;\n\t\t\t\tlength2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\t\t\t\tif (length2 === 0) return;\n\t\t\t\tif (length1 <= length2) this.mergeLow(start1, length1, start2, length2);\n\t\t\t\telse this.mergeHigh(start1, length1, start2, length2);\n\t\t\t};\n\t\t\tTimSort.prototype.mergeLow = function mergeLow(start1, length1, start2, length2) {\n\t\t\t\tvar compare = this.compare;\n\t\t\t\tvar array = this.array;\n\t\t\t\tvar tmp = this.tmp;\n\t\t\t\tvar i = 0;\n\t\t\t\tfor (i = 0; i < length1; i++) tmp[i] = array[start1 + i];\n\t\t\t\tvar cursor1 = 0;\n\t\t\t\tvar cursor2 = start2;\n\t\t\t\tvar dest = start1;\n\t\t\t\tarray[dest++] = array[cursor2++];\n\t\t\t\tif (--length2 === 0) {\n\t\t\t\t\tfor (i = 0; i < length1; i++) array[dest + i] = tmp[cursor1 + i];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (length1 === 1) {\n\t\t\t\t\tfor (i = 0; i < length2; i++) array[dest + i] = array[cursor2 + i];\n\t\t\t\t\tarray[dest + length2] = tmp[cursor1];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar minGallop = this.minGallop;\n\t\t\t\twhile (true) {\n\t\t\t\t\tvar count1 = 0;\n\t\t\t\t\tvar count2 = 0;\n\t\t\t\t\tvar exit = false;\n\t\t\t\t\tdo\n\t\t\t\t\t\tif (compare(array[cursor2], tmp[cursor1]) < 0) {\n\t\t\t\t\t\t\tarray[dest++] = array[cursor2++];\n\t\t\t\t\t\t\tcount2++;\n\t\t\t\t\t\t\tcount1 = 0;\n\t\t\t\t\t\t\tif (--length2 === 0) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tarray[dest++] = tmp[cursor1++];\n\t\t\t\t\t\t\tcount1++;\n\t\t\t\t\t\t\tcount2 = 0;\n\t\t\t\t\t\t\tif (--length1 === 1) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\twhile ((count1 | count2) < minGallop);\n\t\t\t\t\tif (exit) break;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tcount1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\t\t\t\t\t\tif (count1 !== 0) {\n\t\t\t\t\t\t\tfor (i = 0; i < count1; i++) array[dest + i] = tmp[cursor1 + i];\n\t\t\t\t\t\t\tdest += count1;\n\t\t\t\t\t\t\tcursor1 += count1;\n\t\t\t\t\t\t\tlength1 -= count1;\n\t\t\t\t\t\t\tif (length1 <= 1) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tarray[dest++] = array[cursor2++];\n\t\t\t\t\t\tif (--length2 === 0) {\n\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcount2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\t\t\t\t\t\tif (count2 !== 0) {\n\t\t\t\t\t\t\tfor (i = 0; i < count2; i++) array[dest + i] = array[cursor2 + i];\n\t\t\t\t\t\t\tdest += count2;\n\t\t\t\t\t\t\tcursor2 += count2;\n\t\t\t\t\t\t\tlength2 -= count2;\n\t\t\t\t\t\t\tif (length2 === 0) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tarray[dest++] = tmp[cursor1++];\n\t\t\t\t\t\tif (--length1 === 1) {\n\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tminGallop--;\n\t\t\t\t\t} while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\t\t\t\t\tif (exit) break;\n\t\t\t\t\tif (minGallop < 0) minGallop = 0;\n\t\t\t\t\tminGallop += 2;\n\t\t\t\t}\n\t\t\t\tthis.minGallop = minGallop;\n\t\t\t\tif (minGallop < 1) this.minGallop = 1;\n\t\t\t\tif (length1 === 1) {\n\t\t\t\t\tfor (i = 0; i < length2; i++) array[dest + i] = array[cursor2 + i];\n\t\t\t\t\tarray[dest + length2] = tmp[cursor1];\n\t\t\t\t} else if (length1 === 0) throw new Error(\"mergeLow preconditions were not respected\");\n\t\t\t\telse for (i = 0; i < length1; i++) array[dest + i] = tmp[cursor1 + i];\n\t\t\t};\n\t\t\tTimSort.prototype.mergeHigh = function mergeHigh(start1, length1, start2, length2) {\n\t\t\t\tvar compare = this.compare;\n\t\t\t\tvar array = this.array;\n\t\t\t\tvar tmp = this.tmp;\n\t\t\t\tvar i = 0;\n\t\t\t\tfor (i = 0; i < length2; i++) tmp[i] = array[start2 + i];\n\t\t\t\tvar cursor1 = start1 + length1 - 1;\n\t\t\t\tvar cursor2 = length2 - 1;\n\t\t\t\tvar dest = start2 + length2 - 1;\n\t\t\t\tvar customCursor = 0;\n\t\t\t\tvar customDest = 0;\n\t\t\t\tarray[dest--] = array[cursor1--];\n\t\t\t\tif (--length1 === 0) {\n\t\t\t\t\tcustomCursor = dest - (length2 - 1);\n\t\t\t\t\tfor (i = 0; i < length2; i++) array[customCursor + i] = tmp[i];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (length2 === 1) {\n\t\t\t\t\tdest -= length1;\n\t\t\t\t\tcursor1 -= length1;\n\t\t\t\t\tcustomDest = dest + 1;\n\t\t\t\t\tcustomCursor = cursor1 + 1;\n\t\t\t\t\tfor (i = length1 - 1; i >= 0; i--) array[customDest + i] = array[customCursor + i];\n\t\t\t\t\tarray[dest] = tmp[cursor2];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar minGallop = this.minGallop;\n\t\t\t\twhile (true) {\n\t\t\t\t\tvar count1 = 0;\n\t\t\t\t\tvar count2 = 0;\n\t\t\t\t\tvar exit = false;\n\t\t\t\t\tdo\n\t\t\t\t\t\tif (compare(tmp[cursor2], array[cursor1]) < 0) {\n\t\t\t\t\t\t\tarray[dest--] = array[cursor1--];\n\t\t\t\t\t\t\tcount1++;\n\t\t\t\t\t\t\tcount2 = 0;\n\t\t\t\t\t\t\tif (--length1 === 0) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tarray[dest--] = tmp[cursor2--];\n\t\t\t\t\t\t\tcount2++;\n\t\t\t\t\t\t\tcount1 = 0;\n\t\t\t\t\t\t\tif (--length2 === 1) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\twhile ((count1 | count2) < minGallop);\n\t\t\t\t\tif (exit) break;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tcount1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\t\t\t\t\t\tif (count1 !== 0) {\n\t\t\t\t\t\t\tdest -= count1;\n\t\t\t\t\t\t\tcursor1 -= count1;\n\t\t\t\t\t\t\tlength1 -= count1;\n\t\t\t\t\t\t\tcustomDest = dest + 1;\n\t\t\t\t\t\t\tcustomCursor = cursor1 + 1;\n\t\t\t\t\t\t\tfor (i = count1 - 1; i >= 0; i--) array[customDest + i] = array[customCursor + i];\n\t\t\t\t\t\t\tif (length1 === 0) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tarray[dest--] = tmp[cursor2--];\n\t\t\t\t\t\tif (--length2 === 1) {\n\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcount2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\t\t\t\t\t\tif (count2 !== 0) {\n\t\t\t\t\t\t\tdest -= count2;\n\t\t\t\t\t\t\tcursor2 -= count2;\n\t\t\t\t\t\t\tlength2 -= count2;\n\t\t\t\t\t\t\tcustomDest = dest + 1;\n\t\t\t\t\t\t\tcustomCursor = cursor2 + 1;\n\t\t\t\t\t\t\tfor (i = 0; i < count2; i++) array[customDest + i] = tmp[customCursor + i];\n\t\t\t\t\t\t\tif (length2 <= 1) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tarray[dest--] = array[cursor1--];\n\t\t\t\t\t\tif (--length1 === 0) {\n\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tminGallop--;\n\t\t\t\t\t} while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\t\t\t\t\tif (exit) break;\n\t\t\t\t\tif (minGallop < 0) minGallop = 0;\n\t\t\t\t\tminGallop += 2;\n\t\t\t\t}\n\t\t\t\tthis.minGallop = minGallop;\n\t\t\t\tif (minGallop < 1) this.minGallop = 1;\n\t\t\t\tif (length2 === 1) {\n\t\t\t\t\tdest -= length1;\n\t\t\t\t\tcursor1 -= length1;\n\t\t\t\t\tcustomDest = dest + 1;\n\t\t\t\t\tcustomCursor = cursor1 + 1;\n\t\t\t\t\tfor (i = length1 - 1; i >= 0; i--) array[customDest + i] = array[customCursor + i];\n\t\t\t\t\tarray[dest] = tmp[cursor2];\n\t\t\t\t} else if (length2 === 0) throw new Error(\"mergeHigh preconditions were not respected\");\n\t\t\t\telse {\n\t\t\t\t\tcustomCursor = dest - (length2 - 1);\n\t\t\t\t\tfor (i = 0; i < length2; i++) array[customCursor + i] = tmp[i];\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn TimSort;\n\t\t})();\n\t\tfunction sort(array, compare, lo, hi) {\n\t\t\tif (!Array.isArray(array)) throw new TypeError(\"Can only sort arrays\");\n\t\t\tif (!compare) compare = alphabeticalCompare;\n\t\t\telse if (typeof compare !== \"function\") {\n\t\t\t\thi = lo;\n\t\t\t\tlo = compare;\n\t\t\t\tcompare = alphabeticalCompare;\n\t\t\t}\n\t\t\tif (!lo) lo = 0;\n\t\t\tif (!hi) hi = array.length;\n\t\t\tvar remaining = hi - lo;\n\t\t\tif (remaining < 2) return;\n\t\t\tvar runLength = 0;\n\t\t\tif (remaining < DEFAULT_MIN_MERGE) {\n\t\t\t\trunLength = makeAscendingRun(array, lo, hi, compare);\n\t\t\t\tbinaryInsertionSort(array, lo, hi, lo + runLength, compare);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar ts = new TimSort(array, compare);\n\t\t\tvar minRun = minRunLength(remaining);\n\t\t\tdo {\n\t\t\t\trunLength = makeAscendingRun(array, lo, hi, compare);\n\t\t\t\tif (runLength < minRun) {\n\t\t\t\t\tvar force = remaining;\n\t\t\t\t\tif (force > minRun) force = minRun;\n\t\t\t\t\tbinaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n\t\t\t\t\trunLength = force;\n\t\t\t\t}\n\t\t\t\tts.pushRun(lo, runLength);\n\t\t\t\tts.mergeRuns();\n\t\t\t\tremaining -= runLength;\n\t\t\t\tlo += runLength;\n\t\t\t} while (remaining !== 0);\n\t\t\tts.forceMergeRuns();\n\t\t}\n\t});\n}));\nvar require_timsort = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = require_timsort$1();\n}));\nvar require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\t/**\n\t@typedef {(Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array)} TypedArray\n\t*/\n\t/**\n\t* Error message for a case when percentile is less than 0.\n\t*\n\t* @param {Number} p\n\t*\n\t* @return {String}\n\t*/\n\tfunction lessThanZeroError(p) {\n\t\treturn \"Expect percentile to be >= 0 but given \\\"\" + p + \"\\\" and its type is \\\"\" + typeof p + \"\\\".\";\n\t}\n\t/**\n\t* Error message for a case when percentile is greater than 100.\n\t*\n\t* @param {Number} p\n\t*\n\t* @return {String}\n\t*/\n\tfunction greaterThanHundredError(p) {\n\t\treturn \"Expect percentile to be <= 100 but given \\\"\" + p + \"\\\" and its type is \\\"\" + typeof p + \"\\\".\";\n\t}\n\t/**\n\t* Error message for a case when percentile is not a number (NaN).\n\t*\n\t* @param {Number} p\n\t*\n\t* @return {String}\n\t*/\n\tfunction nanError(p) {\n\t\treturn \"Expect percentile to be a number but given \\\"\" + p + \"\\\" and its type is \\\"\" + typeof p + \"\\\".\";\n\t}\n\t/**\n\t* Checks that a list of percentiles are all numbers and they lie in range 0..100.\n\t*\n\t* @param {Array<Number>} ps - percentiles to calculate\n\t*\n\t* @return {Array} List of errors\n\t*/\n\tfunction validateInput(ps) {\n\t\treturn ps.reduce(function(errors, p) {\n\t\t\tif (isNaN(Number(p))) errors.push(nanError(p));\n\t\t\telse if (p < 0) errors.push(lessThanZeroError(p));\n\t\t\telse if (p > 100) errors.push(greaterThanHundredError(p));\n\t\t\treturn errors;\n\t\t}, []);\n\t}\n\t/**\n\t* Get percentile value from an array.\n\t*\n\t* @param {Number} p - percentile\n\t* @param {Array|TypedArray} list - list of values\n\t*\n\t* @return {*}\n\t*/\n\tfunction getPsValue(p, list) {\n\t\tif (p === 0) return list[0];\n\t\treturn list[Math.ceil(list.length * (p / 100)) - 1];\n\t}\n\t/**\n\t* Calculate percentile for given array of values.\n\t*\n\t* @template T\n\t* @param {Number|Array<Number>} pOrPs - percentile or a list of percentiles\n\t* @param {Array<T>|Array<Number>|TypedArray} list - array of values\n\t* @param {function(T): Number} [fn] - optional function to extract a value from an array item\n\t*\n\t* @return {Number|T|Array<Number>|Array<T>}\n\t*/\n\tfunction percentile(pOrPs, list, fn) {\n\t\tvar ps = Array.isArray(pOrPs) ? pOrPs : [pOrPs];\n\t\tvar validationErrors = validateInput(ps);\n\t\tif (validationErrors.length) throw new Error(validationErrors.join(\" \"));\n\t\tlist = list.slice().sort(function(a, b) {\n\t\t\tif (fn) {\n\t\t\t\ta = fn(a);\n\t\t\t\tb = fn(b);\n\t\t\t}\n\t\t\ta = Number.isNaN(a) ? Number.NEGATIVE_INFINITY : a;\n\t\t\tb = Number.isNaN(b) ? Number.NEGATIVE_INFINITY : b;\n\t\t\tif (a > b) return 1;\n\t\t\tif (a < b) return -1;\n\t\t\treturn 0;\n\t\t});\n\t\tif (ps.length === 1) return getPsValue(ps[0], list);\n\t\treturn ps.map(function(p) {\n\t\t\treturn getPsValue(p, list);\n\t\t});\n\t}\n\tmodule.exports = percentile;\n}));\nvar import_timsort = /* @__PURE__ */ __toESM(require_timsort(), 1);\nvar import_lib = /* @__PURE__ */ __toESM(require_lib(), 1);\nvar InstrumentGauge = class extends InstrumentBase {\n\t#val = 0;\n\t#maxval = null;\n\t#lastObservedValue = 0;\n\t#timeSeriesList = [];\n\t#maxSampleSize = 0;\n\t#timerInterval = 0;\n\t#observer = null;\n\t#min = null;\n\t#max = 0;\n\t#observations = 0;\n\t#total = 0;\n\t#copy = false;\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (!options.label) this.label = \"InstrumentGauge\";\n\t\telse this.label = options.label;\n\t\tif (typeof options.interval === \"undefined\") this.#timerInterval = 0;\n\t\telse this.#timerInterval = options.interval;\n\t\tif (typeof options.sampleSize === \"undefined\") this.#maxSampleSize = 600;\n\t\telse this.#maxSampleSize = options.sampleSize;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_GAUGE\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\n\t\t\t\"val\",\n\t\t\t\"min\",\n\t\t\t\"max\",\n\t\t\t\"avg\",\n\t\t\t\"percentile\"\n\t\t]);\n\t\telse {\n\t\t\tObject.defineProperty(this, \"val\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetVal(),\n\t\t\t\tset: (value) => {\n\t\t\t\t\tthis.#SetVal(value);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (this.#timerInterval > 0) {\n\t\t\t\tObject.defineProperty(this, \"percentile\", {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: () => this.#GetPercentileData()\n\t\t\t\t});\n\t\t\t\tthis._StartTimer();\n\t\t\t}\n\t\t}\n\t\tif (typeof options.initValue !== \"undefined\") this.val = options.initValue;\n\t\tif (typeof options.fromJSON !== \"undefined\") {\n\t\t\tconst result = _cloneDeep(options.fromJSON);\n\t\t\tthis.val = result.val;\n\t\t\tif (result.percentile) this.percentile = result.percentile;\n\t\t\tif (result.min) this.min = result.min;\n\t\t\tif (result.max) this.max = result.max;\n\t\t\tif (result.avg) this.avg = result.avg;\n\t\t}\n\t}\n\tpercentile;\n\tmin;\n\tmax;\n\tavg;\n\tval = 0;\n\tWithInitVal(initVal) {\n\t\tthis.val = initVal;\n\t\treturn this;\n\t}\n\tWithMin() {\n\t\tObject.defineProperty(this, \"min\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => this.#GetMin()\n\t\t});\n\t\treturn this;\n\t}\n\tWithMax() {\n\t\tObject.defineProperty(this, \"max\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => this.#GetMax()\n\t\t});\n\t\treturn this;\n\t}\n\tWithAverage() {\n\t\tObject.defineProperty(this, \"avg\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => this.#GetAverage()\n\t\t});\n\t\treturn this;\n\t}\n\t_StartTimer() {\n\t\tif (this.#timerInterval > 0) {\n\t\t\tthis.#timeSeriesList = [];\n\t\t\tthis.#observer = setInterval(() => {\n\t\t\t\tif (this.#timeSeriesList.length > this.#maxSampleSize) this.#timeSeriesList.shift();\n\t\t\t\tconst maxval = this.#GetAndResetMaxVal();\n\t\t\t\tthis.#timeSeriesList.push(maxval);\n\t\t\t}, this.#timerInterval);\n\t\t\tif (isNode) this.#observer.unref();\n\t\t} else throw new Error(`Unable to StartTimer for this instrument. The interval is set to <= 0.`);\n\t}\n\tStopTimer() {\n\t\tif (this.#observer) {\n\t\t\tclearTimeout(this.#observer);\n\t\t\tthis.#observer = null;\n\t\t\tthis.#timeSeriesList = [];\n\t\t}\n\t}\n\t/**\n\t* If the gauge is being monitored as part of a time series, get the most recent recorded value (max value) from within the time interval\n\t* otherwise, just return the current instant value.\n\t*/\n\t#GetVal() {\n\t\tif (this.#timerInterval > 0 && this.#observer !== null) if (this.#maxval === null) return this.GetNumber(this.#lastObservedValue);\n\t\telse return this.GetNumber(this.#maxval);\n\t\treturn this.GetNumber(this.#val);\n\t}\n\t#SetVal(updatedValue) {\n\t\tthis.#val = updatedValue;\n\t\tthis.#observations++;\n\t\tthis.#total += updatedValue;\n\t\tif (this.#val > this.#max) this.#max = this.#val;\n\t\tif (this.#min !== null) {\n\t\t\tif (this.#val < this.#min) this.#min = this.#val;\n\t\t} else this.#min = this.#val;\n\t\tif (this.#timerInterval > 0) {\n\t\t\tthis.#lastObservedValue = updatedValue;\n\t\t\tif (this.#maxval === null) this.#maxval = this.#val;\n\t\t\telse if (this.#val > this.#maxval) this.#maxval = this.#val;\n\t\t}\n\t}\n\t#GetMin() {\n\t\tif (this.#min !== null) return this.#min;\n\t\treturn 0;\n\t}\n\t#GetMax() {\n\t\treturn this.#max;\n\t}\n\t#GetAverage() {\n\t\tif (this.#observations > 0) return this.#total / this.#observations;\n\t\treturn 0;\n\t}\n\tReset() {\n\t\tthis.StopTimer();\n\t\tthis.#maxval = 0;\n\t\tthis.#lastObservedValue = 0;\n\t\tthis.#val = 0;\n\t\tthis.#min = null;\n\t\tthis.#max = 0;\n\t\tthis.#observations = 0;\n\t\tthis.#total = 0;\n\t\tif (this.#timerInterval > 0) this._StartTimer();\n\t}\n\t#GetAndResetMaxVal() {\n\t\tif (this.#maxval === null) return this.#lastObservedValue;\n\t\tconst retVal = this.#maxval;\n\t\tthis.#maxval = null;\n\t\treturn retVal;\n\t}\n\tInc(incVal = 1) {\n\t\tthis.#SetVal(this.#val + incVal);\n\t}\n\tDec(decVal = 1) {\n\t\tthis.#SetVal(this.#val - decVal);\n\t}\n\t#NumberCompare(a, b) {\n\t\treturn a - b;\n\t}\n\t#GetPercentileData() {\n\t\tconst sortedList = this.#timeSeriesList.slice(0);\n\t\timport_timsort.sort(sortedList, this.#NumberCompare);\n\t\treturn (0, import_lib.default)([\n\t\t\t50,\n\t\t\t80,\n\t\t\t90,\n\t\t\t95,\n\t\t\t99,\n\t\t\t99.95\n\t\t], sortedList);\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.Inc !== void 0) this.Inc(telemetry.Inc);\n\t\tif (telemetry.Dec !== void 0) this.Dec(telemetry.Dec);\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t}\n};\nvar InstrumentObject = class extends InstrumentBase {\n\t#val = {};\n\t#copy = false;\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (typeof options.label === \"undefined\") this.label = \"InstrumentObject\";\n\t\telse this.label = options.label;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_OBJECT\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\"val\"]);\n\t\telse Object.defineProperty(this, \"val\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => this.#GetVal(),\n\t\t\tset: (value) => {\n\t\t\t\tthis.#SetVal(value);\n\t\t\t}\n\t\t});\n\t\tif (typeof options.initValue !== \"undefined\") this.val = options.initValue;\n\t\telse this.val = {};\n\t\tif (typeof options.fromJSON !== \"undefined\") this.val = _cloneDeep(options.fromJSON).val;\n\t}\n\tval;\n\tWithInitVal(initVal) {\n\t\tthis.val = initVal;\n\t\treturn this;\n\t}\n\t#GetVal() {\n\t\treturn this.#val;\n\t}\n\t#SetVal(updatedValue) {\n\t\tthis.#val = updatedValue;\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t}\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/utils/utf8.mjs\nfunction utf8Count(str) {\n\tconst strLength = str.length;\n\tlet byteLength = 0;\n\tlet pos = 0;\n\twhile (pos < strLength) {\n\t\tlet value = str.charCodeAt(pos++);\n\t\tif ((value & 4294967168) === 0) {\n\t\t\tbyteLength++;\n\t\t\tcontinue;\n\t\t} else if ((value & 4294965248) === 0) byteLength += 2;\n\t\telse {\n\t\t\tif (value >= 55296 && value <= 56319) {\n\t\t\t\tif (pos < strLength) {\n\t\t\t\t\tconst extra = str.charCodeAt(pos);\n\t\t\t\t\tif ((extra & 64512) === 56320) {\n\t\t\t\t\t\t++pos;\n\t\t\t\t\t\tvalue = ((value & 1023) << 10) + (extra & 1023) + 65536;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ((value & 4294901760) === 0) byteLength += 3;\n\t\t\telse byteLength += 4;\n\t\t}\n\t}\n\treturn byteLength;\n}\nfunction utf8EncodeJs(str, output, outputOffset) {\n\tconst strLength = str.length;\n\tlet offset = outputOffset;\n\tlet pos = 0;\n\twhile (pos < strLength) {\n\t\tlet value = str.charCodeAt(pos++);\n\t\tif ((value & 4294967168) === 0) {\n\t\t\toutput[offset++] = value;\n\t\t\tcontinue;\n\t\t} else if ((value & 4294965248) === 0) output[offset++] = value >> 6 & 31 | 192;\n\t\telse {\n\t\t\tif (value >= 55296 && value <= 56319) {\n\t\t\t\tif (pos < strLength) {\n\t\t\t\t\tconst extra = str.charCodeAt(pos);\n\t\t\t\t\tif ((extra & 64512) === 56320) {\n\t\t\t\t\t\t++pos;\n\t\t\t\t\t\tvalue = ((value & 1023) << 10) + (extra & 1023) + 65536;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ((value & 4294901760) === 0) {\n\t\t\t\toutput[offset++] = value >> 12 & 15 | 224;\n\t\t\t\toutput[offset++] = value >> 6 & 63 | 128;\n\t\t\t} else {\n\t\t\t\toutput[offset++] = value >> 18 & 7 | 240;\n\t\t\t\toutput[offset++] = value >> 12 & 63 | 128;\n\t\t\t\toutput[offset++] = value >> 6 & 63 | 128;\n\t\t\t}\n\t\t}\n\t\toutput[offset++] = value & 63 | 128;\n\t}\n}\nvar sharedTextEncoder = new TextEncoder();\nvar TEXT_ENCODER_THRESHOLD = 50;\nfunction utf8EncodeTE(str, output, outputOffset) {\n\tsharedTextEncoder.encodeInto(str, output.subarray(outputOffset));\n}\nfunction utf8Encode(str, output, outputOffset) {\n\tif (str.length > TEXT_ENCODER_THRESHOLD) utf8EncodeTE(str, output, outputOffset);\n\telse utf8EncodeJs(str, output, outputOffset);\n}\nnew TextDecoder();\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/ExtData.mjs\n/**\n* ExtData is used to handle Extension Types that are not registered to ExtensionCodec.\n*/\nvar ExtData = class {\n\ttype;\n\tdata;\n\tconstructor(type, data) {\n\t\tthis.type = type;\n\t\tthis.data = data;\n\t}\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/DecodeError.mjs\nvar DecodeError = class DecodeError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tconst proto = Object.create(DecodeError.prototype);\n\t\tObject.setPrototypeOf(this, proto);\n\t\tObject.defineProperty(this, \"name\", {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: DecodeError.name\n\t\t});\n\t}\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/utils/int.mjs\nfunction setUint64(view, offset, value) {\n\tconst high = value / 4294967296;\n\tconst low = value;\n\tview.setUint32(offset, high);\n\tview.setUint32(offset + 4, low);\n}\nfunction setInt64(view, offset, value) {\n\tconst high = Math.floor(value / 4294967296);\n\tconst low = value;\n\tview.setUint32(offset, high);\n\tview.setUint32(offset + 4, low);\n}\nfunction getInt64(view, offset) {\n\tconst high = view.getInt32(offset);\n\tconst low = view.getUint32(offset + 4);\n\treturn high * 4294967296 + low;\n}\nvar TIMESTAMP32_MAX_SEC = 4294967295;\nvar TIMESTAMP64_MAX_SEC = 17179869183;\nfunction encodeTimeSpecToTimestamp({ sec, nsec }) {\n\tif (sec >= 0 && nsec >= 0 && sec <= TIMESTAMP64_MAX_SEC) if (nsec === 0 && sec <= TIMESTAMP32_MAX_SEC) {\n\t\tconst rv = new Uint8Array(4);\n\t\tnew DataView(rv.buffer).setUint32(0, sec);\n\t\treturn rv;\n\t} else {\n\t\tconst secHigh = sec / 4294967296;\n\t\tconst secLow = sec & 4294967295;\n\t\tconst rv = new Uint8Array(8);\n\t\tconst view = new DataView(rv.buffer);\n\t\tview.setUint32(0, nsec << 2 | secHigh & 3);\n\t\tview.setUint32(4, secLow);\n\t\treturn rv;\n\t}\n\telse {\n\t\tconst rv = new Uint8Array(12);\n\t\tconst view = new DataView(rv.buffer);\n\t\tview.setUint32(0, nsec);\n\t\tsetInt64(view, 4, sec);\n\t\treturn rv;\n\t}\n}\nfunction encodeDateToTimeSpec(date) {\n\tconst msec = date.getTime();\n\tconst sec = Math.floor(msec / 1e3);\n\tconst nsec = (msec - sec * 1e3) * 1e6;\n\tconst nsecInSec = Math.floor(nsec / 1e9);\n\treturn {\n\t\tsec: sec + nsecInSec,\n\t\tnsec: nsec - nsecInSec * 1e9\n\t};\n}\nfunction encodeTimestampExtension(object) {\n\tif (object instanceof Date) return encodeTimeSpecToTimestamp(encodeDateToTimeSpec(object));\n\telse return null;\n}\nfunction decodeTimestampToTimeSpec(data) {\n\tconst view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\tswitch (data.byteLength) {\n\t\tcase 4: return {\n\t\t\tsec: view.getUint32(0),\n\t\t\tnsec: 0\n\t\t};\n\t\tcase 8: {\n\t\t\tconst nsec30AndSecHigh2 = view.getUint32(0);\n\t\t\tconst secLow32 = view.getUint32(4);\n\t\t\treturn {\n\t\t\t\tsec: (nsec30AndSecHigh2 & 3) * 4294967296 + secLow32,\n\t\t\t\tnsec: nsec30AndSecHigh2 >>> 2\n\t\t\t};\n\t\t}\n\t\tcase 12: return {\n\t\t\tsec: getInt64(view, 4),\n\t\t\tnsec: view.getUint32(0)\n\t\t};\n\t\tdefault: throw new DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${data.length}`);\n\t}\n}\nfunction decodeTimestampExtension(data) {\n\tconst timeSpec = decodeTimestampToTimeSpec(data);\n\treturn /* @__PURE__ */ new Date(timeSpec.sec * 1e3 + timeSpec.nsec / 1e6);\n}\nvar timestampExtension = {\n\ttype: -1,\n\tencode: encodeTimestampExtension,\n\tdecode: decodeTimestampExtension\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/ExtensionCodec.mjs\nvar ExtensionCodec = class ExtensionCodec {\n\tstatic defaultCodec = new ExtensionCodec();\n\t__brand;\n\tbuiltInEncoders = [];\n\tbuiltInDecoders = [];\n\tencoders = [];\n\tdecoders = [];\n\tconstructor() {\n\t\tthis.register(timestampExtension);\n\t}\n\tregister({ type, encode, decode }) {\n\t\tif (type >= 0) {\n\t\t\tthis.encoders[type] = encode;\n\t\t\tthis.decoders[type] = decode;\n\t\t} else {\n\t\t\tconst index = -1 - type;\n\t\t\tthis.builtInEncoders[index] = encode;\n\t\t\tthis.builtInDecoders[index] = decode;\n\t\t}\n\t}\n\ttryToEncode(object, context) {\n\t\tfor (let i = 0; i < this.builtInEncoders.length; i++) {\n\t\t\tconst encodeExt = this.builtInEncoders[i];\n\t\t\tif (encodeExt != null) {\n\t\t\t\tconst data = encodeExt(object, context);\n\t\t\t\tif (data != null) return new ExtData(-1 - i, data);\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < this.encoders.length; i++) {\n\t\t\tconst encodeExt = this.encoders[i];\n\t\t\tif (encodeExt != null) {\n\t\t\t\tconst data = encodeExt(object, context);\n\t\t\t\tif (data != null) return new ExtData(i, data);\n\t\t\t}\n\t\t}\n\t\tif (object instanceof ExtData) return object;\n\t\treturn null;\n\t}\n\tdecode(data, type, context) {\n\t\tconst decodeExt = type < 0 ? this.builtInDecoders[-1 - type] : this.decoders[type];\n\t\tif (decodeExt) return decodeExt(data, type, context);\n\t\telse return new ExtData(type, data);\n\t}\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/utils/typedArrays.mjs\nfunction isArrayBufferLike(buffer) {\n\treturn buffer instanceof ArrayBuffer || typeof SharedArrayBuffer !== \"undefined\" && buffer instanceof SharedArrayBuffer;\n}\nfunction ensureUint8Array(buffer) {\n\tif (buffer instanceof Uint8Array) return buffer;\n\telse if (ArrayBuffer.isView(buffer)) return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n\telse if (isArrayBufferLike(buffer)) return new Uint8Array(buffer);\n\telse return Uint8Array.from(buffer);\n}\nvar Encoder = class Encoder {\n\textensionCodec;\n\tcontext;\n\tuseBigInt64;\n\tmaxDepth;\n\tinitialBufferSize;\n\tsortKeys;\n\tforceFloat32;\n\tignoreUndefined;\n\tforceIntegerToFloat;\n\tpos;\n\tview;\n\tbytes;\n\tentered = false;\n\tconstructor(options) {\n\t\tthis.extensionCodec = options?.extensionCodec ?? ExtensionCodec.defaultCodec;\n\t\tthis.context = options?.context;\n\t\tthis.useBigInt64 = options?.useBigInt64 ?? false;\n\t\tthis.maxDepth = options?.maxDepth ?? 100;\n\t\tthis.initialBufferSize = options?.initialBufferSize ?? 2048;\n\t\tthis.sortKeys = options?.sortKeys ?? false;\n\t\tthis.forceFloat32 = options?.forceFloat32 ?? false;\n\t\tthis.ignoreUndefined = options?.ignoreUndefined ?? false;\n\t\tthis.forceIntegerToFloat = options?.forceIntegerToFloat ?? false;\n\t\tthis.pos = 0;\n\t\tthis.view = new DataView(new ArrayBuffer(this.initialBufferSize));\n\t\tthis.bytes = new Uint8Array(this.view.buffer);\n\t}\n\tclone() {\n\t\treturn new Encoder({\n\t\t\textensionCodec: this.extensionCodec,\n\t\t\tcontext: this.context,\n\t\t\tuseBigInt64: this.useBigInt64,\n\t\t\tmaxDepth: this.maxDepth,\n\t\t\tinitialBufferSize: this.initialBufferSize,\n\t\t\tsortKeys: this.sortKeys,\n\t\t\tforceFloat32: this.forceFloat32,\n\t\t\tignoreUndefined: this.ignoreUndefined,\n\t\t\tforceIntegerToFloat: this.forceIntegerToFloat\n\t\t});\n\t}\n\treinitializeState() {\n\t\tthis.pos = 0;\n\t}\n\t/**\n\t* This is almost equivalent to {@link Encoder#encode}, but it returns an reference of the encoder's internal buffer and thus much faster than {@link Encoder#encode}.\n\t*\n\t* @returns Encodes the object and returns a shared reference the encoder's internal buffer.\n\t*/\n\tencodeSharedRef(object) {\n\t\tif (this.entered) return this.clone().encodeSharedRef(object);\n\t\ttry {\n\t\t\tthis.entered = true;\n\t\t\tthis.reinitializeState();\n\t\t\tthis.doEncode(object, 1);\n\t\t\treturn this.bytes.subarray(0, this.pos);\n\t\t} finally {\n\t\t\tthis.entered = false;\n\t\t}\n\t}\n\t/**\n\t* @returns Encodes the object and returns a copy of the encoder's internal buffer.\n\t*/\n\tencode(object) {\n\t\tif (this.entered) return this.clone().encode(object);\n\t\ttry {\n\t\t\tthis.entered = true;\n\t\t\tthis.reinitializeState();\n\t\t\tthis.doEncode(object, 1);\n\t\t\treturn this.bytes.slice(0, this.pos);\n\t\t} finally {\n\t\t\tthis.entered = false;\n\t\t}\n\t}\n\tdoEncode(object, depth) {\n\t\tif (depth > this.maxDepth) throw new Error(`Too deep objects in depth ${depth}`);\n\t\tif (object == null) this.encodeNil();\n\t\telse if (typeof object === \"boolean\") this.encodeBoolean(object);\n\t\telse if (typeof object === \"number\") if (!this.forceIntegerToFloat) this.encodeNumber(object);\n\t\telse this.encodeNumberAsFloat(object);\n\t\telse if (typeof object === \"string\") this.encodeString(object);\n\t\telse if (this.useBigInt64 && typeof object === \"bigint\") this.encodeBigInt64(object);\n\t\telse this.encodeObject(object, depth);\n\t}\n\tensureBufferSizeToWrite(sizeToWrite) {\n\t\tconst requiredSize = this.pos + sizeToWrite;\n\t\tif (this.view.byteLength < requiredSize) this.resizeBuffer(requiredSize * 2);\n\t}\n\tresizeBuffer(newSize) {\n\t\tconst newBuffer = new ArrayBuffer(newSize);\n\t\tconst newBytes = new Uint8Array(newBuffer);\n\t\tconst newView = new DataView(newBuffer);\n\t\tnewBytes.set(this.bytes);\n\t\tthis.view = newView;\n\t\tthis.bytes = newBytes;\n\t}\n\tencodeNil() {\n\t\tthis.writeU8(192);\n\t}\n\tencodeBoolean(object) {\n\t\tif (object === false) this.writeU8(194);\n\t\telse this.writeU8(195);\n\t}\n\tencodeNumber(object) {\n\t\tif (!this.forceIntegerToFloat && Number.isSafeInteger(object)) if (object >= 0) if (object < 128) this.writeU8(object);\n\t\telse if (object < 256) {\n\t\t\tthis.writeU8(204);\n\t\t\tthis.writeU8(object);\n\t\t} else if (object < 65536) {\n\t\t\tthis.writeU8(205);\n\t\t\tthis.writeU16(object);\n\t\t} else if (object < 4294967296) {\n\t\t\tthis.writeU8(206);\n\t\t\tthis.writeU32(object);\n\t\t} else if (!this.useBigInt64) {\n\t\t\tthis.writeU8(207);\n\t\t\tthis.writeU64(object);\n\t\t} else this.encodeNumberAsFloat(object);\n\t\telse if (object >= -32) this.writeU8(224 | object + 32);\n\t\telse if (object >= -128) {\n\t\t\tthis.writeU8(208);\n\t\t\tthis.writeI8(object);\n\t\t} else if (object >= -32768) {\n\t\t\tthis.writeU8(209);\n\t\t\tthis.writeI16(object);\n\t\t} else if (object >= -2147483648) {\n\t\t\tthis.writeU8(210);\n\t\t\tthis.writeI32(object);\n\t\t} else if (!this.useBigInt64) {\n\t\t\tthis.writeU8(211);\n\t\t\tthis.writeI64(object);\n\t\t} else this.encodeNumberAsFloat(object);\n\t\telse this.encodeNumberAsFloat(object);\n\t}\n\tencodeNumberAsFloat(object) {\n\t\tif (this.forceFloat32) {\n\t\t\tthis.writeU8(202);\n\t\t\tthis.writeF32(object);\n\t\t} else {\n\t\t\tthis.writeU8(203);\n\t\t\tthis.writeF64(object);\n\t\t}\n\t}\n\tencodeBigInt64(object) {\n\t\tif (object >= BigInt(0)) {\n\t\t\tthis.writeU8(207);\n\t\t\tthis.writeBigUint64(object);\n\t\t} else {\n\t\t\tthis.writeU8(211);\n\t\t\tthis.writeBigInt64(object);\n\t\t}\n\t}\n\twriteStringHeader(byteLength) {\n\t\tif (byteLength < 32) this.writeU8(160 + byteLength);\n\t\telse if (byteLength < 256) {\n\t\t\tthis.writeU8(217);\n\t\t\tthis.writeU8(byteLength);\n\t\t} else if (byteLength < 65536) {\n\t\t\tthis.writeU8(218);\n\t\t\tthis.writeU16(byteLength);\n\t\t} else if (byteLength < 4294967296) {\n\t\t\tthis.writeU8(219);\n\t\t\tthis.writeU32(byteLength);\n\t\t} else throw new Error(`Too long string: ${byteLength} bytes in UTF-8`);\n\t}\n\tencodeString(object) {\n\t\tconst maxHeaderSize = 5;\n\t\tconst byteLength = utf8Count(object);\n\t\tthis.ensureBufferSizeToWrite(maxHeaderSize + byteLength);\n\t\tthis.writeStringHeader(byteLength);\n\t\tutf8Encode(object, this.bytes, this.pos);\n\t\tthis.pos += byteLength;\n\t}\n\tencodeObject(object, depth) {\n\t\tconst ext = this.extensionCodec.tryToEncode(object, this.context);\n\t\tif (ext != null) this.encodeExtension(ext);\n\t\telse if (Array.isArray(object)) this.encodeArray(object, depth);\n\t\telse if (ArrayBuffer.isView(object)) this.encodeBinary(object);\n\t\telse if (typeof object === \"object\") this.encodeMap(object, depth);\n\t\telse throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(object)}`);\n\t}\n\tencodeBinary(object) {\n\t\tconst size = object.byteLength;\n\t\tif (size < 256) {\n\t\t\tthis.writeU8(196);\n\t\t\tthis.writeU8(size);\n\t\t} else if (size < 65536) {\n\t\t\tthis.writeU8(197);\n\t\t\tthis.writeU16(size);\n\t\t} else if (size < 4294967296) {\n\t\t\tthis.writeU8(198);\n\t\t\tthis.writeU32(size);\n\t\t} else throw new Error(`Too large binary: ${size}`);\n\t\tconst bytes = ensureUint8Array(object);\n\t\tthis.writeU8a(bytes);\n\t}\n\tencodeArray(object, depth) {\n\t\tconst size = object.length;\n\t\tif (size < 16) this.writeU8(144 + size);\n\t\telse if (size < 65536) {\n\t\t\tthis.writeU8(220);\n\t\t\tthis.writeU16(size);\n\t\t} else if (size < 4294967296) {\n\t\t\tthis.writeU8(221);\n\t\t\tthis.writeU32(size);\n\t\t} else throw new Error(`Too large array: ${size}`);\n\t\tfor (const item of object) this.doEncode(item, depth + 1);\n\t}\n\tcountWithoutUndefined(object, keys) {\n\t\tlet count = 0;\n\t\tfor (const key of keys) if (object[key] !== void 0) count++;\n\t\treturn count;\n\t}\n\tencodeMap(object, depth) {\n\t\tconst keys = Object.keys(object);\n\t\tif (this.sortKeys) keys.sort();\n\t\tconst size = this.ignoreUndefined ? this.countWithoutUndefined(object, keys) : keys.length;\n\t\tif (size < 16) this.writeU8(128 + size);\n\t\telse if (size < 65536) {\n\t\t\tthis.writeU8(222);\n\t\t\tthis.writeU16(size);\n\t\t} else if (size < 4294967296) {\n\t\t\tthis.writeU8(223);\n\t\t\tthis.writeU32(size);\n\t\t} else throw new Error(`Too large map object: ${size}`);\n\t\tfor (const key of keys) {\n\t\t\tconst value = object[key];\n\t\t\tif (!(this.ignoreUndefined && value === void 0)) {\n\t\t\t\tthis.encodeString(key);\n\t\t\t\tthis.doEncode(value, depth + 1);\n\t\t\t}\n\t\t}\n\t}\n\tencodeExtension(ext) {\n\t\tif (typeof ext.data === \"function\") {\n\t\t\tconst data = ext.data(this.pos + 6);\n\t\t\tconst size = data.length;\n\t\t\tif (size >= 4294967296) throw new Error(`Too large extension object: ${size}`);\n\t\t\tthis.writeU8(201);\n\t\t\tthis.writeU32(size);\n\t\t\tthis.writeI8(ext.type);\n\t\t\tthis.writeU8a(data);\n\t\t\treturn;\n\t\t}\n\t\tconst size = ext.data.length;\n\t\tif (size === 1) this.writeU8(212);\n\t\telse if (size === 2) this.writeU8(213);\n\t\telse if (size === 4) this.writeU8(214);\n\t\telse if (size === 8) this.writeU8(215);\n\t\telse if (size === 16) this.writeU8(216);\n\t\telse if (size < 256) {\n\t\t\tthis.writeU8(199);\n\t\t\tthis.writeU8(size);\n\t\t} else if (size < 65536) {\n\t\t\tthis.writeU8(200);\n\t\t\tthis.writeU16(size);\n\t\t} else if (size < 4294967296) {\n\t\t\tthis.writeU8(201);\n\t\t\tthis.writeU32(size);\n\t\t} else throw new Error(`Too large extension object: ${size}`);\n\t\tthis.writeI8(ext.type);\n\t\tthis.writeU8a(ext.data);\n\t}\n\twriteU8(value) {\n\t\tthis.ensureBufferSizeToWrite(1);\n\t\tthis.view.setUint8(this.pos, value);\n\t\tthis.pos++;\n\t}\n\twriteU8a(values) {\n\t\tconst size = values.length;\n\t\tthis.ensureBufferSizeToWrite(size);\n\t\tthis.bytes.set(values, this.pos);\n\t\tthis.pos += size;\n\t}\n\twriteI8(value) {\n\t\tthis.ensureBufferSizeToWrite(1);\n\t\tthis.view.setInt8(this.pos, value);\n\t\tthis.pos++;\n\t}\n\twriteU16(value) {\n\t\tthis.ensureBufferSizeToWrite(2);\n\t\tthis.view.setUint16(this.pos, value);\n\t\tthis.pos += 2;\n\t}\n\twriteI16(value) {\n\t\tthis.ensureBufferSizeToWrite(2);\n\t\tthis.view.setInt16(this.pos, value);\n\t\tthis.pos += 2;\n\t}\n\twriteU32(value) {\n\t\tthis.ensureBufferSizeToWrite(4);\n\t\tthis.view.setUint32(this.pos, value);\n\t\tthis.pos += 4;\n\t}\n\twriteI32(value) {\n\t\tthis.ensureBufferSizeToWrite(4);\n\t\tthis.view.setInt32(this.pos, value);\n\t\tthis.pos += 4;\n\t}\n\twriteF32(value) {\n\t\tthis.ensureBufferSizeToWrite(4);\n\t\tthis.view.setFloat32(this.pos, value);\n\t\tthis.pos += 4;\n\t}\n\twriteF64(value) {\n\t\tthis.ensureBufferSizeToWrite(8);\n\t\tthis.view.setFloat64(this.pos, value);\n\t\tthis.pos += 8;\n\t}\n\twriteU64(value) {\n\t\tthis.ensureBufferSizeToWrite(8);\n\t\tsetUint64(this.view, this.pos, value);\n\t\tthis.pos += 8;\n\t}\n\twriteI64(value) {\n\t\tthis.ensureBufferSizeToWrite(8);\n\t\tsetInt64(this.view, this.pos, value);\n\t\tthis.pos += 8;\n\t}\n\twriteBigUint64(value) {\n\t\tthis.ensureBufferSizeToWrite(8);\n\t\tthis.view.setBigUint64(this.pos, value);\n\t\tthis.pos += 8;\n\t}\n\twriteBigInt64(value) {\n\t\tthis.ensureBufferSizeToWrite(8);\n\t\tthis.view.setBigInt64(this.pos, value);\n\t\tthis.pos += 8;\n\t}\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/encode.mjs\n/**\n* It encodes `value` in the MessagePack format and\n* returns a byte buffer.\n*\n* The returned buffer is a slice of a larger `ArrayBuffer`, so you have to use its `#byteOffset` and `#byteLength` in order to convert it to another typed arrays including NodeJS `Buffer`.\n*/\nfunction encode(value, options) {\n\treturn new Encoder(options).encodeSharedRef(value);\n}\n//#endregion\n//#region src/publish/publishers/publishTransportRESTServer.ts\nvar PublishTransportRESTServer = class {\n\toptions;\n\tconstructor(options) {\n\t\tthis.options = options;\n\t}\n\tPublish = async (payload) => {\n\t\ttry {\n\t\t\tif (this.options.showPublishPayload) {\n\t\t\t\tconsole.log(chalk.grey(`PublishTransportRESTServer::Publish() url: [${this.options.url}]`));\n\t\t\t\tconsole.log(payload);\n\t\t\t}\n\t\t\tconst encodedData = encode(payload, { ignoreUndefined: true });\n\t\t\tconst headers = { \"Content-Type\": \"application/octet-stream\" };\n\t\t\tlet retVal = null;\n\t\t\tif (this.options.socketPath) retVal = await axios({\n\t\t\t\tmethod: \"post\",\n\t\t\t\tdata: Buffer.from(encodedData),\n\t\t\t\theaders,\n\t\t\t\tsocketPath: this.options.socketPath\n\t\t\t});\n\t\t\telse if (isNode) if (this.options.agentManager) retVal = await axios(new STSAxiosConfig(this.options.url, \"post\", headers).withData(Buffer.from(encodedData)).withAgentManager(this.options.agentManager).config);\n\t\t\telse retVal = await axios(new STSAxiosConfig(this.options.url, \"post\", headers).withData(Buffer.from(encodedData)).config);\n\t\t\telse {\n\t\t\t\tconst blob = new Blob([new Uint8Array(encodedData)], { type: \"application/octet-stream\" });\n\t\t\t\tretVal = await axios(new STSAxiosConfig(this.options.url, \"post\", headers).withData(blob).config);\n\t\t\t}\n\t\t\tif (retVal.status !== 200) {\n\t\t\t\tif (this.options.showPublishPayload) console.log(chalk.red(`PublishTransportRESTServer::Publish() Error (_PerformPublishRESTAPI:_PerformPublish:#publishmessage): Invalid response from server: [${retVal.status}]`));\n\t\t\t\tthis.options.logger.debug(chalk.red(`Error (_PerformPublishRESTAPI:_PerformPublish:#publishmessage): Invalid response from server: [${retVal.status}]`));\n\t\t\t\treturn false;\n\t\t\t} else if (this.options.showPublishPayload) console.log(chalk.grey(`PublishTransportRESTServer::Publish() _PerformPublishRESTAPI:_PerformPublish:#publishmessage: [${this.options.url}] - Valid response from server: [${retVal.status}]`));\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tif (this.options.showPublishPayload) console.log(chalk.red(`PublishTransportRESTServer::Publish() Error (PublishRESTServer:_PerformPublishRESTAPI:Error: [${error}]`));\n\t\t\treturn false;\n\t\t}\n\t};\n\tasync Close() {\n\t\tif (this.options.agentManager) this.options.agentManager.Terminate();\n\t\treturn true;\n\t}\n};\n//#endregion\n//#region src/publish/publishInstruments.ts\nvar ePublishState$1 = /* @__PURE__ */ function(ePublishState) {\n\tePublishState[ePublishState[\"init\"] = 0] = \"init\";\n\tePublishState[ePublishState[\"started\"] = 1] = \"started\";\n\tePublishState[ePublishState[\"stopping\"] = 2] = \"stopping\";\n\treturn ePublishState;\n}({});\n/**\n* This class managers the creation of instruments and the publication of instrumentation telemetry to the instrument manager service.\n*/\nvar PublishInstruments = class {\n\toptions;\n\t#inPublish = false;\n\t#observer = null;\n\t#publishState = ePublishState$1.init;\n\t#publisherTransport = null;\n\tconstructor(options) {\n\t\tthis.options = options;\n\t\tthis.#publisherTransport = null;\n\t\tswitch (options.publishTransportBaseOptions.transportType) {\n\t\t\tcase TransportType.RESTAPI:\n\t\t\t\tthis.#publisherTransport = new PublishTransportRESTServer(options.publishTransportBaseOptions);\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.#UpdateState(ePublishState$1.init, \"constructor()\");\n\t}\n\tasync Publish() {\n\t\tif (this.#inPublish) return false;\n\t\tif (this.#publisherTransport) try {\n\t\t\tthis.#inPublish = true;\n\t\t\tif (this.options.publishInstrumentController) {\n\t\t\t\tconst instrumentPayload = this.options.publishInstrumentController.GetPayloadData();\n\t\t\t\treturn await this.#publisherTransport.Publish(instrumentPayload);\n\t\t\t}\n\t\t\treturn false;\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\tthis.#inPublish = false;\n\t\t}\n\t\telse return false;\n\t}\n\t#PublishTimeoutLoop(publishInterval) {\n\t\tthis.#observer = setTimeout(async () => {\n\t\t\tconst start = performance.now();\n\t\t\tconst result = await this.Publish();\n\t\t\tconst diff = performance.now() - start;\n\t\t\tif (this.#publishState === ePublishState$1.started) if (result === true) this.#PublishTimeoutLoop(this.options.publishInterval - diff);\n\t\t\telse this.#PublishTimeoutLoop(this.options.publishPostFailInterval - diff);\n\t\t}, publishInterval);\n\t\tif (isNode) this.#observer.unref();\n\t}\n\tasync StartPublish() {\n\t\tif (this.#publishState !== ePublishState$1.init) {\n\t\t\tthis.options.logger.debug(chalk.yellow(`StartPublish:${this.options.processContext.nid}: StartPublish called when not currently in the init state. Current State: [${this.#publishState}]`));\n\t\t\treturn false;\n\t\t}\n\t\tthis.#UpdateState(ePublishState$1.started, \"StartPublish()\");\n\t\tthis.#PublishTimeoutLoop(this.options.publishInterval);\n\t\treturn true;\n\t}\n\t#UpdateState(newState, comment) {\n\t\tconst previousState = this.#publishState;\n\t\tthis.#publishState = newState;\n\t\tthis.options.logger.debug(chalk.yellow(`#UpdateState:${this.options.processContext.nid}: Previous State: [${previousState}]. Current State: [${this.#publishState}]. Comment: [${comment}]`));\n\t}\n\tasync EndPublish() {\n\t\tif (this.#publishState !== ePublishState$1.started) {\n\t\t\tthis.options.logger.debug(chalk.yellow(`EndPublish:${this.options.processContext.nid}: EndPublish called when not within the started state. Current State: [${this.#publishState}]`));\n\t\t\treturn false;\n\t\t}\n\t\tthis.#UpdateState(ePublishState$1.stopping, \"EndPublish() (1)\");\n\t\tif (this.#observer !== null) {\n\t\t\tclearTimeout(this.#observer);\n\t\t\tthis.#observer = null;\n\t\t\tawait this.Publish();\n\t\t}\n\t\tif (this.#publisherTransport) await this.#publisherTransport.Close();\n\t\tthis.#UpdateState(ePublishState$1.init, \"EndPublish() (2)\");\n\t\treturn true;\n\t}\n};\n//#endregion\n//#region src/publish/publishInstrumentController.ts\nvar ePublishState = /* @__PURE__ */ function(ePublishState) {\n\tePublishState[ePublishState[\"init\"] = 0] = \"init\";\n\tePublishState[ePublishState[\"started\"] = 1] = \"started\";\n\tePublishState[ePublishState[\"stopping\"] = 2] = \"stopping\";\n\treturn ePublishState;\n}({});\n/**\n* This class managers the creation of instruments and the publication of instrumentation telemetry to the instrument manager service.\n*/\nvar PublishInstrumentController = class PublishInstrumentController {\n\toptions;\n\t#instruments = {};\n\t#publisher = null;\n\tconstructor(options) {\n\t\tthis.options = options;\n\t\tthis.SetupInstrumentation();\n\t\tthis.#publisher = new PublishInstruments({\n\t\t\tlogger: options.logger,\n\t\t\tprocessContext: { ...options.processContext },\n\t\t\tpublishInterval: options.publishInterval,\n\t\t\tpublishPostFailInterval: options.publishPostFailInterval,\n\t\t\tpublishInstrumentController: this,\n\t\t\tpublishTransportBaseOptions: { ...options.publishTransportBaseOptions }\n\t\t});\n\t\tif (this.options.autoStart === true) this.StartPublish();\n\t}\n\tasync StartPublish() {\n\t\treturn this.#publisher.StartPublish();\n\t}\n\tasync EndPublish() {\n\t\treturn this.#publisher.EndPublish();\n\t}\n\tasync Publish() {\n\t\treturn this.#publisher.Publish();\n\t}\n\tLogEx = (message) => {\n\t\tthis.UpdateInstrument(Gauge.LOGGER, { LogMessage: message });\n\t};\n\t#GetInstrument(instrumentName) {\n\t\treturn this.#instruments[instrumentName];\n\t}\n\t#ProcessTelemetryCommand(instrumentName, telemetry) {\n\t\tconst instrument = this.#GetInstrument(instrumentName);\n\t\tif (instrument) instrument.ProcessTelemetry(telemetry);\n\t}\n\t#CreateInstrument(instrumentType, options) {\n\t\tlet instrument;\n\t\tswitch (instrumentType) {\n\t\t\tcase GaugeTypes.INSTRUMENT_GAUGE:\n\t\t\t\tinstrument = new InstrumentGauge(options);\n\t\t\t\tbreak;\n\t\t\tcase GaugeTypes.INSTRUMENT_HISTOGRAM:\n\t\t\t\tinstrument = new InstrumentHistogram(options);\n\t\t\t\tbreak;\n\t\t\tcase GaugeTypes.INSTRUMENT_LOG:\n\t\t\t\tinstrument = new InstrumentLog(options);\n\t\t\t\tbreak;\n\t\t\tcase GaugeTypes.INSTRUMENT_OBJECT:\n\t\t\t\tinstrument = new InstrumentObject(options);\n\t\t\t\tbreak;\n\t\t\tcase GaugeTypes.INSTRUMENT_TIMER:\n\t\t\t\tinstrument = new InstrumentTimerGauge(options);\n\t\t\t\tbreak;\n\t\t\tcase GaugeTypes.INSTRUMENT_VELOCITY:\n\t\t\t\tinstrument = new InstrumentVelocity(options);\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error(`Gauge type: [${instrumentType} not known.]`);\n\t\t}\n\t\treturn instrument;\n\t}\n\t#CreateInstruments(payload) {\n\t\tpayload.forEach((instrumentDefinition) => {\n\t\t\tconst g = instrumentDefinition[0];\n\t\t\tconst gt = instrumentDefinition[1];\n\t\t\tconst instrumentBaseOptions = instrumentDefinition[2];\n\t\t\tconst instrument = this.#CreateInstrument(gt, instrumentBaseOptions);\n\t\t\tthis.#instruments[g] = instrument;\n\t\t});\n\t}\n\tGetPayloadData() {\n\t\tconst context = this.options.processContext;\n\t\tconst instruments = this.#instruments;\n\t\tconst payloadInstruments = {};\n\t\tfor (const [key, value] of Object.entries(instruments)) if (value instanceof InstrumentLog) payloadInstruments[key] = { ...value.WithUseLatestMessages(true) };\n\t\telse payloadInstruments[key] = { ...value };\n\t\treturn {\n\t\t\tcontext,\n\t\t\tinstruments: payloadInstruments\n\t\t};\n\t}\n\tSetupInstrumentation() {\n\t\tif (!this.options.instrumentDefinitions) {\n\t\t\tthis.options.logger.debug(chalk.yellow(`SetupInstrumentation:${this.options.processContext.nid}: No instrument(s) defined within supplied options.`));\n\t\t\treturn;\n\t\t}\n\t\tif (!this.options.processContext) {\n\t\t\tthis.options.logger.debug(chalk.yellow(`SetupInstrumentation: No context defined within supplied options.`));\n\t\t\treturn;\n\t\t}\n\t\tthis.#CreateInstruments(this.options.instrumentDefinitions);\n\t}\n\t/**\n\t* Check if an instrument exists within the managed instrument collection\n\t* @param instrumentName \n\t* @returns \n\t*/\n\tInstrumentExists(instrumentName) {\n\t\tif (this.#instruments[instrumentName]) return true;\n\t\treturn false;\n\t}\n\t/**\n\t* Update instrument telemetry.\n\t* @param instrumentName \n\t* @param telemetry \n\t*/\n\tUpdateInstrument(instrumentName, telemetry) {\n\t\tif (this.#instruments[instrumentName]) this.#ProcessTelemetryCommand(instrumentName, telemetry);\n\t\telse this.options.logger.debug(chalk.red(`UpdateInstrument:${this.options.processContext.nid}: Attempted to UpdateInstrument before initialised.`));\n\t}\n\t/**\n\t* Add additional instrument publishers. Usually invoked when adding workers to the app and/or async runners within a worker.\n\t* @param processContext \n\t* @returns Returns the newly created PublishInstrumentController\n\t*/\n\tAddPublishInstrumentController(processContext) {\n\t\tconst options = { ...this.options };\n\t\toptions.processContext = processContext;\n\t\treturn new PublishInstrumentController(options);\n\t}\n};\n//#endregion\n//#region src/publish/stsPluginKeys.ts\nvar STSInstrumentControllerPluginKey = Symbol(\"instrumentController\");\n//#endregion\n//#region src/publish/agentinstrumentcontroller.ts\nvar GetSTSInstrumentControllerPluginKey = () => STSInstrumentControllerPluginKey;\nvar CompareSTSInstrumentControllerPluginKey = (val) => val === STSInstrumentControllerPluginKey;\nvar useSTSInstrumentControllerPlugin = () => inject(STSInstrumentControllerPluginKey);\nvar GetSTSInstrumentController = (app) => {\n\treturn app.config.globalProperties.$sts[STSInstrumentControllerPluginKey];\n};\nvar STSInstrumentControllerPlugin = { install: (app, options) => {\n\toptions.logger.debug(chalk.yellow(`STSInstrumentControllerPlugin:install:Start`));\n\tconst aic = new PublishInstrumentController(options);\n\tif (!app.config.globalProperties.$sts) {\n\t\toptions.logger.debug(chalk.cyan(`STSInstrumentControllerPlugin:install: [app.config.globalProperties.$sts] does not exist.`));\n\t\tapp.config.globalProperties.$sts = {};\n\t\toptions.logger.debug(chalk.cyan(`STSInstrumentControllerPlugin:install: created empty [app.config.globalProperties.$sts].`));\n\t} else options.logger.debug(chalk.cyan(`STSInstrumentControllerPlugin:install: [app.config.globalProperties.$sts] already exists.`));\n\tapp.config.globalProperties.$sts.aic = aic;\n\tapp.config.globalProperties.$sts[STSInstrumentControllerPluginKey] = aic;\n\toptions.logger.debug(chalk.cyan(`STSInstrumentControllerPlugin:install: AgentInstrumentController installed into [app.config.globalProperties.$sts] using: [${String(STSInstrumentControllerPluginKey)}].`));\n\tapp.provide(STSInstrumentControllerPluginKey, aic);\n\toptions.logger.debug(chalk.cyan(`STSInstrumentControllerPlugin:install: AgentInstrumentController installed into 'provide' using: [${String(STSInstrumentControllerPluginKey)}].`));\n\toptions.logger.debug(chalk.green(`STSInstrumentControllerPlugin:install:End`));\n} };\n//#endregion\n//#region src/globalServiceDefinitions.ts\nvar influxDBDataType = /* @__PURE__ */ function(influxDBDataType) {\n\tinfluxDBDataType[\"intField\"] = \"intField\";\n\tinfluxDBDataType[\"floatField\"] = \"floatField\";\n\tinfluxDBDataType[\"stringField\"] = \"stringField\";\n\treturn influxDBDataType;\n}({});\nvar instrumentationObservationInterval = 1e3;\nvar instrumentationTimeWindow = 600;\nvar globalServiceDefinitions = {\n\tcoreFieldList: [\n\t\t{\n\t\t\tfieldName: \"requestCount\",\n\t\t\tgauge: Gauge.REQUEST_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"errorCount\",\n\t\t\tgauge: Gauge.ERROR_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"retryCount\",\n\t\t\tgauge: Gauge.RETRY_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"authenticationCount\",\n\t\t\tgauge: Gauge.AUTHENTICATION_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"authenticationErrorCount\",\n\t\t\tgauge: Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"authenticationRetryCount\",\n\t\t\tgauge: Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"velocity\",\n\t\t\tgauge: Gauge.VELOCITY_GAUGE,\n\t\t\tinstrumentProperty: \"va\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_VELOCITY\n\t\t},\n\t\t{\n\t\t\tfieldName: \"activeRequestCount\",\n\t\t\tgauge: Gauge.ACTIVE_REQUEST_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\ttimeSeriesIndex: true,\n\t\t\tquantile: true,\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE,\n\t\t\tinstrumentOptions: {\n\t\t\t\tinterval: instrumentationObservationInterval,\n\t\t\t\tsampleSize: instrumentationTimeWindow\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tfieldName: \"coreCount\",\n\t\t\tgauge: Gauge.CORE_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"rx\",\n\t\t\tgauge: Gauge.NETWORK_RX_GAUGE,\n\t\t\tinstrumentProperty: \"va\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_VELOCITY\n\t\t},\n\t\t{\n\t\t\tfieldName: \"tx\",\n\t\t\tgauge: Gauge.NETWORK_TX_GAUGE,\n\t\t\tinstrumentProperty: \"va\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_VELOCITY\n\t\t},\n\t\t{\n\t\t\tfieldName: \"timer\",\n\t\t\tgauge: Gauge.TIMER_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_TIMER\n\t\t},\n\t\t{\n\t\t\tfieldName: \"duration\",\n\t\t\tgauge: Gauge.DURATION_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\ttimeSeriesIndex: true,\n\t\t\tquantile: true,\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE,\n\t\t\tinstrumentOptions: {\n\t\t\t\tinterval: instrumentationObservationInterval,\n\t\t\t\tsampleSize: instrumentationTimeWindow\n\t\t\t},\n\t\t\thisto: [\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B10\",\n\t\t\t\t\tbucketLimit: 10\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B20\",\n\t\t\t\t\tbucketLimit: 20\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B50\",\n\t\t\t\t\tbucketLimit: 50\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B100\",\n\t\t\t\t\tbucketLimit: 100\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B1000\",\n\t\t\t\t\tbucketLimit: 1e3\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B50000\",\n\t\t\t\t\tbucketLimit: 5e4\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"BInfinity\",\n\t\t\t\t\tbucketLimit: -1\n\t\t\t\t}\n\t\t\t],\n\t\t\thistoGauge: Gauge.DURATION_HISTOGRAM_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"latency\",\n\t\t\tgauge: Gauge.LATENCY_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\ttimeSeriesIndex: true,\n\t\t\tquantile: true,\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE,\n\t\t\tinstrumentOptions: {\n\t\t\t\tinterval: instrumentationObservationInterval,\n\t\t\t\tsampleSize: instrumentationTimeWindow\n\t\t\t},\n\t\t\thisto: [\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B10\",\n\t\t\t\t\tbucketLimit: 10\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B20\",\n\t\t\t\t\tbucketLimit: 20\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B50\",\n\t\t\t\t\tbucketLimit: 50\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B100\",\n\t\t\t\t\tbucketLimit: 100\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B1000\",\n\t\t\t\t\tbucketLimit: 1e3\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B50000\",\n\t\t\t\t\tbucketLimit: 5e4\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"BInfinity\",\n\t\t\t\t\tbucketLimit: -1\n\t\t\t\t}\n\t\t\t],\n\t\t\thistoGauge: Gauge.LATENCY_HISTOGRAM_GAUGE\n\t\t}\n\t],\n\tlogFieldList: [{\n\t\tfieldName: \"log\",\n\t\tgauge: Gauge.LOGGER,\n\t\tinstrumentProperty: \"val\",\n\t\tdataType: \"string\",\n\t\ttimeSeriesIndex: false,\n\t\tquantile: false,\n\t\tinfluxdbDataType: influxDBDataType.stringField,\n\t\tgaugeType: GaugeTypes.INSTRUMENT_LOG,\n\t\tinstrumentOptions: {\n\t\t\tconsoleLogging: false,\n\t\t\tinstrumentLogging: true\n\t\t}\n\t}],\n\tservices: {\n\t\t[\"service\"]: {\n\t\t\tinfluxDBContextTags: [\n\t\t\t\t\"serviceId\",\n\t\t\t\t\"serviceName\",\n\t\t\t\t\"serviceVersion\",\n\t\t\t\t\"serviceInstanceId\",\n\t\t\t\t\"serviceInstanceProcessId\",\n\t\t\t\t\"hostName\",\n\t\t\t\t\"pid\",\n\t\t\t\t\"ppid\"\n\t\t\t],\n\t\t\tredisIndexPrefixDefinitions: {\n\t\t\t\ttimeSeriesIndex: \"idx:serviceIndexTimeSeries\",\n\t\t\t\ttimeSeriesPrefix: \"/serviceTimeSeries:\",\n\t\t\t\tinstantIndex: \"idx:serviceIndexInstant\",\n\t\t\t\tinstantPrefix: \"/serviceInstant:\"\n\t\t\t},\n\t\t\tfieldList: [\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"cpu\",\n\t\t\t\t\tgauge: Gauge.CPU_LOAD_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE,\n\t\t\t\t\tinstrumentOptions: {\n\t\t\t\t\t\tinterval: instrumentationObservationInterval,\n\t\t\t\t\t\tsampleSize: instrumentationTimeWindow\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_COUNT_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE,\n\t\t\t\t\tinstrumentOptions: {\n\t\t\t\t\t\tinterval: instrumentationObservationInterval,\n\t\t\t\t\t\tsampleSize: instrumentationTimeWindow\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionPoolCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_TOTAL_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionIdleCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_IDLE_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionWaitingCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_WAITING_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"systemcpu\",\n\t\t\t\t\tgauge: Gauge.CPU_SYSTEM_LOAD_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"memory\",\n\t\t\t\t\tgauge: Gauge.OBJECT_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"JSON\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.stringField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_OBJECT,\n\t\t\t\t\tinstrumentOptions: { label: \"InstrumentObjectMaster\" }\n\t\t\t\t}\n\t\t\t],\n\t\t\tGetPathFromContext(context) {\n\t\t\t\tconst { serviceId, serviceInstanceId, serviceInstanceProcessId } = context;\n\t\t\t\treturn `/${serviceId}/${serviceInstanceId}/${serviceInstanceProcessId}`;\n\t\t\t},\n\t\t\tredisQueryFilters: {\n\t\t\t\tlevel1ContextField: \"serviceType\",\n\t\t\t\tlevel2ContextField: \"appid\",\n\t\t\t\tlevel3ContextField: \"appinstanceid\"\n\t\t\t},\n\t\t\tsubscriptionTopics: [\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.AllServicesCombined,\n\t\t\t\t\troute: \"/metrics\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.Services,\n\t\t\t\t\troute: \"/metrics/services\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.ServiceInstances,\n\t\t\t\t\troute: \"/metrics/services/:key\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.ServiceInstance,\n\t\t\t\t\troute: \"/metrics/services/:key/:subkey\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t[\"agent\"]: {\n\t\t\tinfluxDBContextTags: [\n\t\t\t\t\"id\",\n\t\t\t\t\"hostName\",\n\t\t\t\t\"agentName\",\n\t\t\t\t\"threadId\",\n\t\t\t\t\"asyncRunnerId\"\n\t\t\t],\n\t\t\tredisIndexPrefixDefinitions: {\n\t\t\t\ttimeSeriesIndex: \"idx:agentIndexTimeSeries\",\n\t\t\t\ttimeSeriesPrefix: \"/agentTimeSeries:\",\n\t\t\t\tinstantIndex: \"idx:agentIndexInstant\",\n\t\t\t\tinstantPrefix: \"/agentInstant:\"\n\t\t\t},\n\t\t\tfieldList: [{\n\t\t\t\tfieldName: \"childCount\",\n\t\t\t\tgauge: Gauge.CHILD_COUNT,\n\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\tdataType: \"number\",\n\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t}],\n\t\t\tGetPathFromContext(context) {\n\t\t\t\tconst { agentName, threadId, asyncRunnerId } = context;\n\t\t\t\treturn `/${agentName}/${threadId}/${asyncRunnerId}`;\n\t\t\t},\n\t\t\tredisQueryFilters: {\n\t\t\t\tlevel1ContextField: \"serviceType\",\n\t\t\t\tlevel2ContextField: \"appid\",\n\t\t\t\tlevel3ContextField: \"appinstanceid\"\n\t\t\t},\n\t\t\tsubscriptionTopics: [\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.AllAgentsCombined,\n\t\t\t\t\troute: \"/metrics\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.Agents,\n\t\t\t\t\troute: \"/metrics/agents\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.AgentWorkers,\n\t\t\t\t\troute: \"/metrics/agents/:key\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.AgentWorker,\n\t\t\t\t\troute: \"/metrics/agents/:key/:subkey\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t[\"lambda\"]: {\n\t\t\tinfluxDBContextTags: [\n\t\t\t\t\"technology\",\n\t\t\t\t\"subTechnology\",\n\t\t\t\t\"lambdaFunctionName\",\n\t\t\t\t\"lambdaInstance\",\n\t\t\t\t\"hostName\",\n\t\t\t\t\"processId\",\n\t\t\t\t\"parentProcessId\",\n\t\t\t\t\"useCase\",\n\t\t\t\t\"pattern\"\n\t\t\t],\n\t\t\tredisIndexPrefixDefinitions: {\n\t\t\t\ttimeSeriesIndex: \"idx:lambdaIndexTimeSeries\",\n\t\t\t\ttimeSeriesPrefix: \"/lambdaTimeSeries:\",\n\t\t\t\tinstantIndex: \"idx:lambdaIndexInstant\",\n\t\t\t\tinstantPrefix: \"/lambdaInstant:\"\n\t\t\t},\n\t\t\tfieldList: [\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"cpu\",\n\t\t\t\t\tgauge: Gauge.CPU_LOAD_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_COUNT_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionPoolCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_TOTAL_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionIdleCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_IDLE_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionWaitingCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_WAITING_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"systemcpu\",\n\t\t\t\t\tgauge: Gauge.CPU_SYSTEM_LOAD_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"memory\",\n\t\t\t\t\tgauge: Gauge.OBJECT_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"JSON\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.stringField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_OBJECT\n\t\t\t\t}\n\t\t\t],\n\t\t\tGetPathFromContext(context) {\n\t\t\t\tconst { technology, subTechnology, lambdaInstance } = context;\n\t\t\t\treturn `/${technology}/${subTechnology}/${lambdaInstance}`;\n\t\t\t},\n\t\t\tredisQueryFilters: {\n\t\t\t\tlevel1ContextField: \"serviceType\",\n\t\t\t\tlevel2ContextField: \"technology\",\n\t\t\t\tlevel3ContextField: \"subTechnology\"\n\t\t\t},\n\t\t\tsubscriptionTopics: [\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.AllLambdasCombined,\n\t\t\t\t\troute: \"/metrics\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.LambdaTechnologies,\n\t\t\t\t\troute: \"/metrics/lambdas\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.LambdaSubTechnologies,\n\t\t\t\t\troute: \"/metrics/lambdas/:key\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.LambdaSubTechnologiesInstance,\n\t\t\t\t\troute: \"/metrics/lambdas/:key/:subkey\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}\n};\nvar GetInstruments = (service) => {\n\tconst fieldList = [\n\t\t...globalServiceDefinitions.coreFieldList,\n\t\t...globalServiceDefinitions.logFieldList,\n\t\t...globalServiceDefinitions.services[service].fieldList\n\t];\n\tconst retVal = [];\n\tfieldList.forEach((v) => {\n\t\tif (v.instrumentOptions) retVal.push([\n\t\t\tv.gauge,\n\t\t\tv.gaugeType,\n\t\t\tv.instrumentOptions\n\t\t]);\n\t\telse retVal.push([v.gauge, v.gaugeType]);\n\t\tif (v.histo) retVal.push([v.histoGauge, GaugeTypes.INSTRUMENT_HISTOGRAM]);\n\t});\n\treturn retVal;\n};\n//#endregion\n//#region src/subscribe/observabilitymodelutils.ts\nvar ObservabilityModelUtils = class ObservabilityModelUtils {\n\tstatic GetModelNode(data) {\n\t\tconst fixedSize = 2;\n\t\tconst padLength = 9;\n\t\ttry {\n\t\t\treturn {\n\t\t\t\tval: data,\n\t\t\t\tvf: parseFloat(data.toString()).toFixed(fixedSize).padStart(padLength, \" \"),\n\t\t\t\tvalue: parseFloat(data.toString()).toFixed(fixedSize)\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tval: 0,\n\t\t\t\tvf: \"\",\n\t\t\t\tvalue: \"\"\n\t\t\t};\n\t\t}\n\t}\n\tstatic GetModelNodeRawStringArray(data) {\n\t\ttry {\n\t\t\treturn { val: data };\n\t\t} catch (error) {\n\t\t\treturn { val: [] };\n\t\t}\n\t}\n\tstatic GetModelNodeObject(data) {\n\t\ttry {\n\t\t\treturn { val: JSON.parse(data) };\n\t\t} catch (error) {\n\t\t\treturn { val: null };\n\t\t}\n\t}\n\tstatic GetModelNodeWithQuantile(data, quantileData) {\n\t\tlet quantile = \"\";\n\t\tconst quantileDataElementArray = [];\n\t\tfor (const [key, val] of Object.entries(quantileData)) {\n\t\t\tquantile += parseFloat(val.toFixed(2)).toString().padStart(8, \" \");\n\t\t\tquantileDataElementArray.push([key, val]);\n\t\t}\n\t\tconst fixedSize = 2;\n\t\tconst padLength = 9;\n\t\ttry {\n\t\t\treturn {\n\t\t\t\tval: data,\n\t\t\t\tvf: parseFloat(data.toString()).toFixed(fixedSize).padStart(padLength, \" \"),\n\t\t\t\tvalue: parseFloat(data.toString()).toFixed(fixedSize),\n\t\t\t\tpercentile: quantileDataElementArray,\n\t\t\t\tpercentileFormatted: quantile\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tval: 0,\n\t\t\t\tvf: \"\",\n\t\t\t\tvalue: \"\",\n\t\t\t\tpercentile: [],\n\t\t\t\tpercentileFormatted: \"\"\n\t\t\t};\n\t\t}\n\t}\n\tstatic GetModelNodeHistFromInfluxData(data) {\n\t\ttry {\n\t\t\tconst histVal = [];\n\t\t\tif (data) for (const [key, val] of Object.entries(data)) {\n\t\t\t\tconst dataElement = [\n\t\t\t\t\tval,\n\t\t\t\t\tkey,\n\t\t\t\t\tparseInt(key)\n\t\t\t\t];\n\t\t\t\thistVal.push(dataElement);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\treturn { hist: histVal };\n\t\t\t} catch (error) {\n\t\t\t\treturn { hist: [] };\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn { hist: [] };\n\t\t}\n\t}\n\tstatic ParseModelNode = (model, data, parseLog, gaugeName, fieldName) => {\n\t\tif (fieldName in data) model.instruments[gaugeName] = this.GetModelNode(data[fieldName]);\n\t\telse {\n\t\t\tparseLog.push(`ObservabilityModelUtils:ParseModelNode(): Field not present: [${fieldName}], default to [0]`);\n\t\t\tmodel.instruments[gaugeName] = this.GetModelNode(0);\n\t\t}\n\t};\n\tstatic ParseModelNodeWithQuantile = (model, data, parseLog, gaugeName, fieldName, quantileFieldName) => {\n\t\tif (fieldName in data && quantileFieldName in data) model.instruments[gaugeName] = this.GetModelNodeWithQuantile(data[fieldName], data[quantileFieldName]);\n\t\telse if (fieldName in data) {\n\t\t\tconst dataVal = data[fieldName];\n\t\t\tparseLog.push(`ObservabilityModelUtils:ParseModelNodeWithQuantile(): QuantileFieldName not present: [${quantileFieldName}], default to [${dataVal},{}]`);\n\t\t\tmodel.instruments[gaugeName] = this.GetModelNodeWithQuantile(dataVal, {});\n\t\t} else {\n\t\t\tparseLog.push(`ObservabilityModelUtils:ParseModelNodeWithQuantile(): Field not present: [${fieldName}], QuantileFieldName not present: [${quantileFieldName}], default to [0,{}]`);\n\t\t\tmodel.instruments[gaugeName] = this.GetModelNodeWithQuantile(0, {});\n\t\t}\n\t};\n\tstatic ParseModelNodeHisto = (model, data, parseLog, gaugeName, fieldName) => {\n\t\tif (fieldName in data) model.instruments[gaugeName] = this.GetModelNodeHistFromInfluxData(data[fieldName]);\n\t\telse {\n\t\t\tparseLog.push(`ObservabilityModelUtils:ParseModelNodeHisto(): Field not present: [${fieldName}], default to [{}]`);\n\t\t\tmodel.instruments[gaugeName] = this.GetModelNodeHistFromInfluxData({});\n\t\t}\n\t};\n\tstatic ParseModelNodeObject = (model, data, parseLog, gaugeName, fieldName) => {\n\t\tif (fieldName in data) model.instruments[gaugeName] = this.GetModelNodeObject(data[fieldName]);\n\t\telse {\n\t\t\tparseLog.push(`ObservabilityModelUtils:ParseModelNodeObject(): Field not present: [${fieldName}], default to [{}]`);\n\t\t\tmodel.instruments[gaugeName] = this.GetModelNodeObject({});\n\t\t}\n\t};\n\tstatic GetModelData(serviceType, model, data, parseLog) {\n\t\t[...globalServiceDefinitions.coreFieldList, ...globalServiceDefinitions.services[serviceType].fieldList].forEach((field) => {\n\t\t\tif (field.quantile) ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, field.gauge, field.fieldName, `${field.fieldName}_quantile`);\n\t\t\telse if (field.gaugeType.localeCompare(GaugeTypes.INSTRUMENT_OBJECT) === 0) ObservabilityModelUtils.ParseModelNodeObject(model, data, parseLog, field.gauge, field.fieldName);\n\t\t\telse ObservabilityModelUtils.ParseModelNode(model, data, parseLog, field.gauge, field.fieldName);\n\t\t\tif (field.histo) ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, field.histoGauge, `${field.fieldName}_histo`);\n\t\t});\n\t}\n\tstatic GetModelForService(id, data, logger) {\n\t\ttry {\n\t\t\tconst parseLog = [];\n\t\t\tconst model = {\n\t\t\t\tid,\n\t\t\t\tinstruments: {}\n\t\t\t};\n\t\t\tthis.GetModelData(\"service\", model, data, parseLog);\n\t\t\tmodel.instruments[Gauge.LOGGER] = ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n\t\t\tif (parseLog.length > 0) parseLog.forEach((logEntry) => logger.debug(logEntry));\n\t\t\treturn model;\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t}\n\tstatic GetModelForLambda(id, data, logger) {\n\t\ttry {\n\t\t\tconst parseLog = [];\n\t\t\tconst model = {\n\t\t\t\tid,\n\t\t\t\tinstruments: {}\n\t\t\t};\n\t\t\tthis.GetModelData(\"lambda\", model, data, parseLog);\n\t\t\tmodel.instruments[Gauge.LOGGER] = ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n\t\t\tif (parseLog.length > 0) parseLog.forEach((logEntry) => logger.debug(logEntry));\n\t\t\treturn model;\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t}\n\tstatic GetModelForAgent(id, data, logger) {\n\t\ttry {\n\t\t\tif (Object.keys(data).length === 0) return null;\n\t\t\tconst parseLog = [];\n\t\t\tconst model = {\n\t\t\t\tid,\n\t\t\t\tinstruments: {}\n\t\t\t};\n\t\t\tthis.GetModelData(\"agent\", model, data, parseLog);\n\t\t\tmodel.instruments[Gauge.LOGGER] = ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n\t\t\tif (parseLog.length > 0) parseLog.forEach((logEntry) => logger.debug(logEntry));\n\t\t\treturn model;\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t}\n};\n//#endregion\n//#region src/subscribe/observabilityPayloadTransformer.ts\nvar runStates = /* @__PURE__ */ function(runStates) {\n\trunStates[\"idle\"] = \"idle\";\n\trunStates[\"started\"] = \"started\";\n\trunStates[\"stopped\"] = \"stopped\";\n\treturn runStates;\n}({});\nvar ObservabilityPayloadTransformer = class {\n\t#serviceModel = {};\n\t#agentModel = {};\n\t#lambdaModel = {};\n\t#options;\n\t#LogDebugMessage(message) {\n\t\tthis.#options.logger.debug(message);\n\t}\n\t#LogErrorMessage(message) {\n\t\tthis.#options.logger.error(message);\n\t}\n\tconstructor(options) {\n\t\tthis.#options = options;\n\t}\n\tget serviceModel() {\n\t\treturn this.#serviceModel;\n\t}\n\tget agentModel() {\n\t\treturn this.#agentModel;\n\t}\n\tget lambdaModel() {\n\t\treturn this.#lambdaModel;\n\t}\n\tTransformSubscriptionPayloadCallback(subscriptionPayload) {\n\t\tswitch (subscriptionPayload.subscriptionKey.topic) {\n\t\t\tcase SubscriptionTopic.AllServicesCombined:\n\t\t\t\tthis.CreateModelAllServicesCombined(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.Services:\n\t\t\t\tthis.CreateModelServices(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.ServiceInstances:\n\t\t\t\tthis.CreateModelServiceInstances(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.ServiceInstance:\n\t\t\t\tthis.CreateModelServiceInstance(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.AllLambdasCombined:\n\t\t\t\tthis.CreateModelAllLambdasCombined(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.LambdaTechnologies:\n\t\t\t\tthis.CreateModelLambdaTechnologies(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.LambdaSubTechnologies:\n\t\t\t\tthis.CreateModelLambdaSubTechnologies(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.LambdaSubTechnologiesInstance:\n\t\t\t\tthis.CreateModelLambdaSubTechnologiesInstance(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.AllAgentsCombined:\n\t\t\t\tthis.CreateModelAllAgentsCombined(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.Agents:\n\t\t\t\tthis.CreateModelAgents(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.AgentWorkers:\n\t\t\t\tthis.CreateModelAgentWorkers(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.AgentWorker:\n\t\t\t\tthis.CreateModelAgentWorker(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tCreateModelAllServicesCombined(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#serviceModel = {};\n\t\t\tif (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined.toString()) === 0) {\n\t\t\t\tthis.#serviceModel[\"STS-Service\"] = ObservabilityModelUtils.GetModelForService(\"STS-Service\", subscriptionPayload.data, this.#options.logger);\n\t\t\t\tif (this.#serviceModel[\"STS-Service\"] === null) this.#LogDebugMessage(chalk.red(`CreateModelAllServicesCombined():Error: GetModelForService() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(error);\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelServices(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#serviceModel = {};\n\t\t\tfor (const [serviceId, serviceTelemetry] of Object.entries(subscriptionPayload.data)) {\n\t\t\t\tthis.#serviceModel[serviceId] = ObservabilityModelUtils.GetModelForService(serviceId, serviceTelemetry, this.#options.logger);\n\t\t\t\tif (this.#serviceModel[serviceId] === null) this.#LogDebugMessage(chalk.red(`CreateModelServices():Error: GetModelForService() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelServiceInstances(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#serviceModel = {};\n\t\t\tfor (const [serviceId, service] of Object.entries(subscriptionPayload.data)) for (const [serviceInstanceId, serviceInstanceTelemetry] of Object.entries(service)) if (serviceInstanceTelemetry.cpu && serviceInstanceTelemetry.cpu > 0) {\n\t\t\t\tthis.#serviceModel[serviceInstanceId] = ObservabilityModelUtils.GetModelForService(serviceInstanceId, serviceInstanceTelemetry, this.#options.logger);\n\t\t\t\tif (this.#serviceModel[serviceInstanceId] !== null) this.#serviceModel[serviceInstanceId].options = { serviceId };\n\t\t\t\telse this.#LogDebugMessage(chalk.red(`CreateModelServiceInstances():Error: GetModelForService() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelServiceInstance(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#serviceModel = {};\n\t\t\tfor (const [serviceId, service] of Object.entries(subscriptionPayload.data)) for (const [serviceInstanceId, serviceInstance] of Object.entries(service)) for (const [serviceInstanceProcessId, serviceInstanceProcessTelemetry] of Object.entries(serviceInstance)) if (serviceInstanceProcessTelemetry.cpu && serviceInstanceProcessTelemetry.cpu > 0) {\n\t\t\t\tthis.#serviceModel[serviceInstanceProcessId] = ObservabilityModelUtils.GetModelForService(serviceInstanceProcessId, serviceInstanceProcessTelemetry, this.#options.logger);\n\t\t\t\tif (this.#serviceModel[serviceInstanceProcessId] !== null) this.#serviceModel[serviceInstanceProcessId].options = {\n\t\t\t\t\tserviceId,\n\t\t\t\t\tserviceInstanceId\n\t\t\t\t};\n\t\t\t\telse this.#LogDebugMessage(chalk.red(`CreateModelServiceInstance():Error: GetModelForService() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelAllAgentsCombined(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#agentModel = {};\n\t\t\tif (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined.toString()) === 0) {\n\t\t\t\tif (Object.keys(subscriptionPayload.data).length !== 0) {\n\t\t\t\t\tthis.#agentModel[\"STS-Agent\"] = ObservabilityModelUtils.GetModelForAgent(\"STS-Agent\", subscriptionPayload.data, this.#options.logger);\n\t\t\t\t\tif (this.#agentModel[\"STS-Agent\"] === null) this.#LogDebugMessage(chalk.red(`CreateModelAllAgentsCombined():Error: GetModelForAgent() returned null`));\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(error);\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelAgents(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#agentModel = {};\n\t\t\tfor (const [agentId, agentInstanceTelemetry] of Object.entries(subscriptionPayload.data)) if (agentInstanceTelemetry.timer) {\n\t\t\t\tthis.#agentModel[agentId] = ObservabilityModelUtils.GetModelForAgent(agentId, agentInstanceTelemetry, this.#options.logger);\n\t\t\t\tif (this.#agentModel[agentId] !== null) {} else this.#LogDebugMessage(chalk.red(`CreateModelAgents():Error: GetModelForAgent() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(chalk.red(`UIControllerAgent:CreateModel(): Error: [${error}]`));\n\t\t}\n\t}\n\tCreateModelAgentWorkers(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#agentModel = {};\n\t\t\tfor (const [agentId, agentWorker] of Object.entries(subscriptionPayload.data)) for (const [agentWorkerId, agentInstanceTelemetry] of Object.entries(agentWorker)) if (agentInstanceTelemetry.timer) {\n\t\t\t\tconst threadKey = `${agentWorkerId}`;\n\t\t\t\tthis.#agentModel[threadKey] = ObservabilityModelUtils.GetModelForAgent(threadKey, agentInstanceTelemetry, this.#options.logger);\n\t\t\t\tif (this.#agentModel[threadKey] !== null) {\n\t\t\t\t\tconst coreCount = this.#agentModel[threadKey].instruments[Gauge.CORE_COUNT_GAUGE].val;\n\t\t\t\t\tthis.#agentModel[threadKey].canNavigate = coreCount > 0;\n\t\t\t\t\tthis.#agentModel[threadKey].options = { agentId };\n\t\t\t\t} else this.#LogDebugMessage(chalk.red(`CreateModelAgentWorkers():Error: GetModelForAgent() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(chalk.red(`UIControllerAgentThreads:CreateModel(): Error: [${error}]`));\n\t\t}\n\t}\n\tCreateModelAgentWorker(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#agentModel = {};\n\t\t\tfor (const [agentId, agentWorker] of Object.entries(subscriptionPayload.data)) for (const [agentWorkerId, asyncRunnerData] of Object.entries(agentWorker)) for (const [asyncRunnerId, agentInstanceTelemetry] of Object.entries(asyncRunnerData)) if (agentInstanceTelemetry.timer) this.#agentModel[asyncRunnerId] = ObservabilityModelUtils.GetModelForAgent(asyncRunnerId, agentInstanceTelemetry, this.#options.logger);\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(chalk.red(`UIControllerAgentThread:CreateModel(): Error: [${error}]`));\n\t\t}\n\t}\n\tCreateModelAllLambdasCombined(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#lambdaModel = {};\n\t\t\tif (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllLambdasCombined.toString()) === 0) {\n\t\t\t\tthis.#lambdaModel[\"STS-Lambda\"] = ObservabilityModelUtils.GetModelForLambda(\"STS-Lambda\", subscriptionPayload.data, this.#options.logger);\n\t\t\t\tif (this.#lambdaModel[\"STS-Lambda\"] === null) this.#LogDebugMessage(chalk.red(`CreateModelAllLambdasCombined():Error: GetModelForLambda() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(error);\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelLambdaTechnologies(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#lambdaModel = {};\n\t\t\tfor (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) {\n\t\t\t\tthis.#lambdaModel[technologyId] = ObservabilityModelUtils.GetModelForLambda(technologyId, technologyTelemetry, this.#options.logger);\n\t\t\t\tif (this.#lambdaModel[technologyId] === null) this.#LogDebugMessage(chalk.red(`CreateModelLambdaTechnologies():Error: GetModelForLambda() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelLambdaSubTechnologies(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#lambdaModel = {};\n\t\t\tfor (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) for (const [subTechnologyId, subTechnologyTelemetry] of Object.entries(technologyTelemetry)) if (subTechnologyTelemetry.cpu && subTechnologyTelemetry.cpu > 0) {\n\t\t\t\tthis.#lambdaModel[subTechnologyId] = ObservabilityModelUtils.GetModelForLambda(subTechnologyId, subTechnologyTelemetry, this.#options.logger);\n\t\t\t\tif (this.#lambdaModel[subTechnologyId] !== null) this.#lambdaModel[subTechnologyId].options = { technologyId };\n\t\t\t\telse this.#LogDebugMessage(chalk.red(`CreateModelLambdaSubTechnologies():Error: GetModelForLambda() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelLambdaSubTechnologiesInstance(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#lambdaModel = {};\n\t\t\tfor (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) for (const [subTechnologyId, subTechnologyTelemetry] of Object.entries(technologyTelemetry)) for (const [subTechnologyInstanceId, subTechnologyInstanceTelemetry] of Object.entries(subTechnologyTelemetry)) if (subTechnologyInstanceTelemetry.cpu && subTechnologyInstanceTelemetry.cpu > 0) {\n\t\t\t\tthis.#lambdaModel[subTechnologyInstanceId] = ObservabilityModelUtils.GetModelForLambda(subTechnologyInstanceId, subTechnologyInstanceTelemetry, this.#options.logger);\n\t\t\t\tif (this.#lambdaModel[subTechnologyInstanceId] !== null) this.#lambdaModel[subTechnologyInstanceId].options = {\n\t\t\t\t\ttechnologyId,\n\t\t\t\t\tsubTechnologyId\n\t\t\t\t};\n\t\t\t\telse this.#LogDebugMessage(chalk.red(`CreateModelLambdaSubTechnologiesInstance():Error: GetModelForLambda() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n};\n//#endregion\n//#region src/subscribe/restClientSubscriber.ts\nvar RESTClientSubscriber = class {\n\t#socketSubscribeKeepAlive = {};\n\t#options;\n\tKeepAliveAckBoundFunction;\n\t#currentSubscriptions = [];\n\tconstructor(options) {\n\t\tthis.#options = options;\n\t}\n\t#LogDebugMessage(message) {\n\t\tthis.#options.logger.debug(message);\n\t}\n\t#LogErrorMessage(message) {\n\t\tthis.#options.logger.error(message);\n\t}\n\tasync Subscribe(subscriptions) {\n\t\tsubscriptions.map(async (subId) => {\n\t\t\tthis.#RemoveKeepAlive(subId);\n\t\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:Subscribe(): Sending subscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n\t\t\ttry {\n\t\t\t\tthis.#AddKeepAlive(subId);\n\t\t\t} catch (error) {\n\t\t\t\tthis.#LogErrorMessage(chalk.red(`RESTClientSubscriber:Subscribe(): Error: response: [${JSON.stringify(error)}]`));\n\t\t\t\tthis.#RemoveKeepAlive(subId);\n\t\t\t}\n\t\t});\n\t}\n\tUnSubscribe(subscriptions) {\n\t\tsubscriptions.map(async (subId) => {\n\t\t\tthis.#RemoveKeepAlive(subId);\n\t\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:UnSubscribe(): Sending unsubscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n\t\t});\n\t}\n\tUpdateModelCursor = (subscriptions) => {\n\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:UnSubscribe(): UpdateModelCursor()`));\n\t\tthis.UnSubscribe(this.#currentSubscriptions);\n\t\tthis.#currentSubscriptions = subscriptions;\n\t\tthis.Subscribe(this.#currentSubscriptions);\n\t};\n\tasync #InvokeRESTAPI(subscription) {\n\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#InvokeRESTAPI(): subscriptionKey: [${subscription.subscriptionKey.id}]`));\n\t\tconst { subscriptionKey } = subscription;\n\t\tlet url = \"\";\n\t\tswitch (subscriptionKey.topic) {\n\t\t\tcase SubscriptionTopic.AllServicesCombined:\n\t\t\t\turl = `/metrics`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.Services:\n\t\t\t\turl = `/metrics/services`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.ServiceInstances: if (subscriptionKey.key) {\n\t\t\t\turl = `/metrics/services/${subscriptionKey.key}`;\n\t\t\t\tbreak;\n\t\t\t} else throw new Error(`#OutputSubscription(Services): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n\t\t\tcase SubscriptionTopic.ServiceInstance:\n\t\t\t\turl = `/metrics/services/${subscriptionKey.key}`;\n\t\t\t\tif (subscriptionKey.key && subscriptionKey.subkey) {\n\t\t\t\t\turl = `/metrics/services/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n\t\t\t\t\tbreak;\n\t\t\t\t} else throw new Error(`#OutputSubscription(Services): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n\t\t\tcase SubscriptionTopic.AllLambdasCombined:\n\t\t\t\turl = `/metrics`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.LambdaTechnologies:\n\t\t\t\turl = `/metrics/lambdas`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.LambdaSubTechnologies: if (subscriptionKey.key) {\n\t\t\t\turl = `/metrics/lambdas/${subscriptionKey.key}`;\n\t\t\t\tbreak;\n\t\t\t} else throw new Error(`#OutputSubscription(Lambdas): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n\t\t\tcase SubscriptionTopic.LambdaSubTechnologiesInstance:\n\t\t\t\turl = `/metrics/lambdas/${subscriptionKey.key}`;\n\t\t\t\tif (subscriptionKey.key && subscriptionKey.subkey) {\n\t\t\t\t\turl = `/metrics/lambdas/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n\t\t\t\t\tbreak;\n\t\t\t\t} else throw new Error(`#OutputSubscription(Lambdas): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n\t\t\tcase SubscriptionTopic.AllAgentsCombined:\n\t\t\t\turl = `/metrics`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.Agents:\n\t\t\t\turl = `/metrics/agents`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.AgentWorkers: if (subscriptionKey.key) {\n\t\t\t\turl = `/metrics/agents/${subscriptionKey.key}`;\n\t\t\t\tbreak;\n\t\t\t} else throw new Error(`#OutputSubscription(Agents): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n\t\t\tcase SubscriptionTopic.AgentWorker: if (subscriptionKey.key && subscriptionKey.subkey) {\n\t\t\t\turl = `/metrics/agents/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n\t\t\t\tbreak;\n\t\t\t} else throw new Error(`#OutputSubscription(Agents): key and/or subkey not provided for subscription: [${JSON.stringify(subscriptionKey.topic)}]`);\n\t\t}\n\t\tif (url.localeCompare(\"\") !== 0) {\n\t\t\tconst endPointUrl = `${this.#options.urlBase}${url}`;\n\t\t\tlet retVal;\n\t\t\tconst start = performance.now();\n\t\t\ttry {\n\t\t\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#InvokeRESTAPI(): axios call: endPointUrl: [${endPointUrl}]`));\n\t\t\t\tif (isNode && this.#options.agentManager) retVal = await axios(new STSAxiosConfig(endPointUrl, \"get\").withDefaultHeaders().withAgentManager(this.#options.agentManager).config);\n\t\t\t\telse retVal = await axios(new STSAxiosConfig(endPointUrl, \"get\").withDefaultHeaders().config);\n\t\t\t\tif (retVal) if (retVal.data) {} else this.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#InvokeRESTAPI(): no retVal.data`));\n\t\t\t\telse this.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#InvokeRESTAPI(): no retVal`));\n\t\t\t\tperformance.now() - start;\n\t\t\t\tif (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined) === 0) return retVal.data[\"services\"];\n\t\t\t\tif (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined) === 0) return retVal.data[\"agents\"];\n\t\t\t\tif (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllLambdasCombined) === 0) return retVal.data[\"lambdas\"];\n\t\t\t\treturn retVal.data;\n\t\t\t} catch (error) {\n\t\t\t\tthis.#LogErrorMessage(chalk.red(`RESTClientSubscriber:#InvokeRESTAPI(): subscriptionKey: [${subscription.subscriptionKey.id}], Error: [${error}]`));\n\t\t\t\treturn null;\n\t\t\t}\n\t\t} else return null;\n\t}\n\t#GetData = async (subscription) => {\n\t\ttry {\n\t\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#GetData(): subscriptionKey: [${JSON.stringify(subscription.subscriptionKey)}`));\n\t\t\tconst retVal = await this.#InvokeRESTAPI(subscription);\n\t\t\tif (retVal) {\n\t\t\t\tconst payload = {\n\t\t\t\t\tsubscriptionKey: subscription.subscriptionKey,\n\t\t\t\t\tdata: retVal\n\t\t\t\t};\n\t\t\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#GetData(): data returned: subscriptionKey: [${JSON.stringify(subscription.subscriptionKey)}`));\n\t\t\t\tsubscription.cb(payload);\n\t\t\t} else this.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#GetData(): No data returned: subscriptionKey: [${JSON.stringify(subscription.subscriptionKey)}`));\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(chalk.red(`RESTClientSubscriber:#AddKeepAlive(): Error response: [${JSON.stringify(error)}]`));\n\t\t\tthis.#RemoveKeepAlive(subscription);\n\t\t}\n\t};\n\t#SetupTimeout(socketSubscribeKeepAlive, subscription, timeout) {\n\t\treturn setTimeout(async () => {\n\t\t\ttry {\n\t\t\t\tconst start = performance.now();\n\t\t\t\tawait this.#GetData(subscription);\n\t\t\t\tif (socketSubscribeKeepAlive.timeout) {\n\t\t\t\t\tconst diff = performance.now() - start;\n\t\t\t\t\tlet timeoutDuration = (this.#options.keepAlive ?? 1e3) - diff;\n\t\t\t\t\tif (timeoutDuration < 500) timeoutDuration = 500;\n\t\t\t\t\tthis.#LogDebugMessage(chalk.yellow(`Total duration for subscription: [${diff}], waiting: [${timeoutDuration}]`));\n\t\t\t\t\tsocketSubscribeKeepAlive.timeout = this.#SetupTimeout(socketSubscribeKeepAlive, subscription, timeoutDuration);\n\t\t\t\t} else this.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber: Subscription removed: [${socketSubscribeKeepAlive.id}]. Processing terminate.`));\n\t\t\t} catch (error) {\n\t\t\t\tthis.#LogErrorMessage(chalk.red(`RESTClientSubscriber:#AddKeepAlive(): Error response: [${JSON.stringify(error)}]`));\n\t\t\t\tthis.#RemoveKeepAlive(subscription);\n\t\t\t}\n\t\t}, timeout);\n\t}\n\t#AddKeepAlive(subscription) {\n\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#AddKeepAlive(): subscriptionKey: [${subscription.subscriptionKey.id}]`));\n\t\tthis.#RemoveKeepAlive(subscription);\n\t\tconst socketSubscribeKeepAlive = { id: subscription.subscriptionKey.id };\n\t\tsocketSubscribeKeepAlive.timeout = this.#SetupTimeout(socketSubscribeKeepAlive, subscription, this.#options.keepAlive ?? 1e3);\n\t\tthis.#socketSubscribeKeepAlive[subscription.subscriptionKey.id] = socketSubscribeKeepAlive;\n\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#AddKeepAlive(): Getting Data: subscriptionKey: [${subscription.subscriptionKey.id}]`));\n\t\tthis.#GetData(subscription);\n\t}\n\t#RemoveKeepAlive(subscription) {\n\t\tif (this.#socketSubscribeKeepAlive[subscription.subscriptionKey.id]) {\n\t\t\tthis.#LogDebugMessage(chalk.gray(`RESTClientSubscriber:#RemoveKeepAlive(): subscriptionKey: [${subscription.subscriptionKey.id}]`));\n\t\t\tclearTimeout(this.#socketSubscribeKeepAlive[subscription.subscriptionKey.id].timeout);\n\t\t\tdelete this.#socketSubscribeKeepAlive[subscription.subscriptionKey.id].timeout;\n\t\t\tdelete this.#socketSubscribeKeepAlive[subscription.subscriptionKey.id];\n\t\t}\n\t}\n};\n//#endregion\n//#region src/subscribe/socketClientSubscriber.ts\nvar SOCKET_NAMESPACE$1 = \"stsinstrumentmanager/stsmonitor\";\nvar SocketClientSubscriber = class extends SocketIoClient {\n\t#options;\n\t#id;\n\t#currentSubscriptions = [];\n\tsubscriptions = {};\n\tconstructor(options) {\n\t\tsuper(\"STSVueTilsTester\");\n\t\tthis.#id = globalThis.crypto.randomUUID();\n\t\tthis.#options = options;\n\t\tthis.LogDebugMessage(chalk.cyan(`${this.logPrefix}Start()`));\n\t\tconst url = `${this.#options.instrumentManagerEndpoint}:${this.#options.instrumentManagerPort}/${SOCKET_NAMESPACE$1}/`;\n\t\tthis.LogDebugMessage(chalk.cyan(`${this.logPrefix}SetupSocket() url: [${url}]`));\n\t\tthis.WithAddress(url).WithLogger(this.#options.logger ?? defaultLogger).SetupSocket();\n\t}\n\tget id() {\n\t\treturn this.#id;\n\t}\n\tget logPrefix() {\n\t\tif (this.#options) return `stsimclient:ObservabilitySubscriberManager[${this.#options.consumeInstrumentationMode}]:`;\n\t\telse return `stsimclient:ObservabilitySubscriberManager:`;\n\t}\n\tUpdateModelCursor = (subscriptions) => {\n\t\tthis.UnSubscribe(this.#currentSubscriptions);\n\t\tthis.#currentSubscriptions = subscriptions;\n\t\tthis.Subscribe(this.#currentSubscriptions);\n\t};\n\tSubscribe(subscriptions) {\n\t\tsubscriptions.map(async (subId) => {\n\t\t\ttry {\n\t\t\t\tif (this.socket) {\n\t\t\t\t\tthis.LogDebugMessage(chalk.yellow(`ObservabilitySocketIOSubscriber:Subscribe(): Sending subscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n\t\t\t\t\tthis.socket.timeout(1e3).emit(\"subscribe\", subId.subscriptionKey, (error, data) => {\n\t\t\t\t\t\tif (error) this.LogErrorMessage(chalk.red(`ObservabilitySocketIOSubscriber:Subscribe(): Error: [${error}], data: [${data}]`));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.LogDebugMessage(chalk.green(`ObservabilitySocketIOSubscriber:Subscribe(): Response: [${JSON.stringify(data)}]`));\n\t\t\t\t\t\t\tthis.subscriptions[subId.subscriptionKey.id] = subId;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.LogErrorMessage(chalk.red(`ObservabilitySocketIOSubscriber:Subscribe(): Error: response: [${JSON.stringify(error)}]`));\n\t\t\t}\n\t\t});\n\t}\n\tUnSubscribe(subscriptions) {\n\t\tsubscriptions.map(async (subId) => {\n\t\t\ttry {\n\t\t\t\tif (this.socket) {\n\t\t\t\t\tthis.LogDebugMessage(chalk.yellow(`ObservabilitySocketIOSubscriber:UnSubscribe(): Sending unsubscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n\t\t\t\t\tthis.socket.timeout(1e3).emit(\"unsubscribe\", subId.subscriptionKey, (error, data) => {\n\t\t\t\t\t\tif (error) this.LogErrorMessage(chalk.red(`ObservabilitySocketIOSubscriber:UnSubscribe(): Error: [${error}], data: [${data}]`));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.LogDebugMessage(chalk.green(`ObservabilitySocketIOSubscriber:UnSubscribe(): Response: [${JSON.stringify(data)}]`));\n\t\t\t\t\t\t\tdelete this.subscriptions[subId.subscriptionKey.id];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.LogErrorMessage(chalk.red(`ObservabilitySocketIOSubscriber:UnSubscribe(): Error response: [${JSON.stringify(error)}]`));\n\t\t\t}\n\t\t});\n\t}\n\tSocketConnect(socket) {\n\t\tthis.LogDebugMessage(chalk.magenta(`${this.logPrefix}SocketConnect(): Socket ID: [${socket.id}]`));\n\t\tthis.UpdateModelCursor(this.#currentSubscriptions);\n\t}\n\tSocketError(error) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketError(): Error: [${error}]`));\n\t}\n\tSetupSocketEvents(socket) {\n\t\tthis.LogDebugMessage(chalk.magenta(`${this.logPrefix}SetupSocketEvents(): Socket ID: [${socket.id}]`));\n\t\tif (this.socket) this.socket.on(\"subscriptionData\", (data, cb) => {\n\t\t\tthis.LogDebugMessage(chalk.magenta(`${this.logPrefix}SetupSocketEvents(): on subscriptionData(): Socket ID: [${socket.id}]`));\n\t\t\tconst subId = data.subscriptionKey.id;\n\t\t\tconst currentSubscriptions = Object.keys(this.subscriptions).toString();\n\t\t\tif (this.subscriptions[subId]) {\n\t\t\t\tthis.subscriptions[subId].cb(data);\n\t\t\t\tcb(`stsuxvue:subscriptionData Response: [${JSON.stringify(data.subscriptionKey)}], Current Subscriptions: [${currentSubscriptions}]`);\n\t\t\t} else cb(`stsuxvue:subscriptionData Response: No subscription found in subscriptions: [${JSON.stringify(data.subscriptionKey)}], Current Subscriptions: [${currentSubscriptions}]`);\n\t\t});\n\t}\n\tSocketConnectError(error) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketConnectError(): Error: [${error}]`));\n\t}\n\tSocketDisconnect(reason) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketDisconnect(): reason: [${reason}]`));\n\t}\n};\n//#endregion\n//#region src/socketBrowserClientLogPublisher.ts\nvar SOCKET_NAMESPACE = \"stsinstrumentmanager/stsmonitor\";\nvar SocketBrowserClientLogPublisher = class extends SocketIoClient {\n\t#id;\n\t#options;\n\tconstructor(options) {\n\t\tsuper(\"stsinstrumentmanagerclient:SocketBrowserClientLogPublisher\");\n\t\tthis.#options = options;\n\t\tthis.#id = globalThis.crypto.randomUUID();\n\t\tthis.LogDebugMessage(chalk.cyan(`${this.logPrefix}Start()`));\n\t\tconst url = `${this.#options.imendpoint}:${this.#options.import}/${SOCKET_NAMESPACE}/`;\n\t\tthis.LogDebugMessage(chalk.cyan(`${this.logPrefix}SetupSocket() url: [${url}]`));\n\t\tthis.WithAddress(url).WithLogger(defaultLogger).SetupSocket();\n\t}\n\tget id() {\n\t\treturn this.#id;\n\t}\n\tget logPrefix() {\n\t\treturn `stsinstrumentmanagerclient:SocketBrowserClientLogPublisher:`;\n\t}\n\tSocketConnect(socket) {\n\t\tthis.LogDebugMessage(chalk.magenta(`${this.logPrefix}SocketConnect(): Socket ID: [${socket.id}], Joining Room: [${this.#options.rooms}]`));\n\t\tsocket.emit(\"__STSjoinRoom\", this.#options.rooms);\n\t}\n\tSocketError(error) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketError(): Error: [${error}]`));\n\t}\n\tSetupSocketEvents(socket) {\n\t\tthis.LogDebugMessage(chalk.magenta(`${this.logPrefix}SetupSocketEvents(): Socket ID: [${socket.id}]`));\n\t}\n\tSocketConnectError(error) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketConnectError(): Error: [${error}]`));\n\t}\n\tSocketDisconnect(reason) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketDisconnect(): reason: [${reason}]`));\n\t}\n};\n//#endregion\n//#region src/stsLoggerSocket.ts\nvar STSLoggerSocket = class {\n\t#options;\n\t#socketIoClient;\n\tconstructor(opts) {\n\t\tthis.#options = opts;\n\t\tthis.#socketIoClient = new SocketBrowserClientLogPublisher({\n\t\t\trooms: this.#options.rooms,\n\t\t\timendpoint: this.#options.imendpoint,\n\t\t\timport: this.#options.import\n\t\t});\n\t\tthis.#socketIoClient.socket?.emit(\"__STSjoinRoom\", this.#options.rooms);\n\t}\n\tJoinRoom = () => {\n\t\tthis.#socketIoClient.socket?.emit(\"__STSjoinRoom\", this.#options.rooms);\n\t};\n\terror(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"error\",\n\t\t\tmessage\n\t\t});\n\t}\n\twarn(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"warn\",\n\t\t\tmessage\n\t\t});\n\t}\n\tinfo(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"info\",\n\t\t\tmessage\n\t\t});\n\t}\n\thttp(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"http\",\n\t\t\tmessage\n\t\t});\n\t}\n\tverbose(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"verbose\",\n\t\t\tmessage\n\t\t});\n\t}\n\tdebug(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"debug\",\n\t\t\tmessage\n\t\t});\n\t}\n\tsilly(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"silly\",\n\t\t\tmessage\n\t\t});\n\t}\n\t#log(info) {\n\t\tthis.#socketIoClient.socket?.emit(\"__STSsendToRoom\", this.#options.rooms, {\n\t\t\tcommand: \"logmessage\",\n\t\t\tpayload: {\n\t\t\t\tlevel: info.level,\n\t\t\t\tmessage: info.message,\n\t\t\t\tdateTime: Date.now()\n\t\t\t}\n\t\t});\n\t}\n};\n//#endregion\nexport { CompareSTSInstrumentControllerPluginKey, GetInstruments, GetSTSInstrumentController, GetSTSInstrumentControllerPluginKey, GetSocketIOSubscriptionKey, GetTransportMode, InstrumentPayloadType, KAFKA_PREFIX, ObservabilityPayloadTransformer, PublishInstrumentController, PublishTransportRESTServer, RESTClientSubscriber, RequestLoggerMiddleware, RequestLoggerMiddlewareEventName, STSInstrumentControllerPlugin, STSInstrumentControllerPluginKey, STSLoggerSocket, SocketBrowserClientLogPublisher, SocketClientSubscriber, SubscriptionTopic, TransportType, ePublishState, globalServiceDefinitions, influxDBDataType, runStates, useSTSInstrumentControllerPlugin };\n\n//# sourceMappingURL=index.mjs.map","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","<template>\n <v-sheet\n theme=\"light\"\n rounded=\"lg\"\n class=\"ma-4 mr-0 pa-2\"\n :elevation=\"10\"\n >\n UXModelNavigator - Path: {{ navigationPath }}\n <v-row no-gutters>\n <v-col>\n <v-tabs\n v-model=\"tab\"\n background-color=\"primary\"\n >\n <v-tab value=\"summary\">\n Summary\n </v-tab>\n <v-tab value=\"detailed\">\n Detailed\n </v-tab>\n </v-tabs>\n <v-window v-model=\"tab\">\n <v-window-item value=\"summary\">\n <UXModelNode\n :model-id=\"props.modelId\"\n :nodeid=\"'_'\"\n :small-mode=\"true\"\n @myclick=\"clicked\"\n />\n </v-window-item>\n <v-window-item value=\"detailed\">\n <UXModelNode\n :model-id=\"props.modelId\"\n :nodeid=\"'_'\"\n :small-mode=\"false\"\n @myclick=\"clicked\"\n />\n </v-window-item>\n </v-window> \n </v-col>\n </v-row>\n <div class=\"d-flex flex-wrap justify-space-between\">\n <v-btn\n color=\"secondary\"\n class=\"ma-1\"\n @click=\"TopLevel\"\n >\n Top Level<v-icon\n end\n icon=\"fa-regular fa-house\"\n />\n </v-btn>\n <v-btn\n class=\"ma-1\"\n color=\"secondary\"\n :disabled=\"BackDisabled\"\n @click=\"GoBack\"\n >\n Go Back<v-icon\n end\n icon=\"fa-solid fa-backward-step\"\n />\n </v-btn>\n </div>\n </v-sheet>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, computed, reactive, onMounted, onBeforeUnmount, toRaw } from 'vue'\n\nimport { ModelStore, _estate } from './../stores/modelStore.js'\n\nimport UXModelNode from './UXModelNode.vue'\n\nimport { ObservabilityPayloadTransformer, IObservabilityPayloadTransformerOptions, SubscriptionTopic, type ISubscriptionPayload, \n type ISubscriptions, type ISubscription } from '@nsshunt/stsinstrumentmanagerclient'\n\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { IObservabilitySubscriberManagerOptions } from './../commonTypes.js'\n\nimport { defaultLogger, Sleep } from '@nsshunt/stsutils';\n\nimport { SocketClientSubscriber, RESTClientSubscriber } from '@nsshunt/stsinstrumentmanagerclient'\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nlet subscriptionOptions: IObservabilitySubscriberManagerOptions\n\nconst props = defineProps<{ \n modelId: string\n}>();\n\nconst store = ModelStore()\n\nlet observabilityPayloadTransformer: ObservabilityPayloadTransformer = new ObservabilityPayloadTransformer({\n logger: defaultLogger,\n maxLogLength: 200\n})\n\nlet metricsSubscriber: SocketClientSubscriber | RESTClientSubscriber | undefined;\n\nconst baseColour = chalk.hex('#57A1A8');\n\nconst LogDebug = (message: any) => {\n defaultLogger.debug(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst LogError = (message: any) => {\n defaultLogger.error(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst LogWarning = (message: any) => {\n defaultLogger.warn(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst TransformSubscriptionPayloadCallback = (subscriptionPayload: ISubscriptionPayload): void => {\n try {\n observabilityPayloadTransformer.TransformSubscriptionPayloadCallback(subscriptionPayload);\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined) === 0) {\n const agentModel = observabilityPayloadTransformer.agentModel;\n store.UpdateAgentModel(props.modelId, agentModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.Services) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.ServiceInstances) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.ServiceInstance) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n } catch (error) {\n LogError(`TransformSubscriptionPayloadCallback(): #modelId: [${props.modelId}], Error: [${error}]`);\n }\n}\n\n// Note: Every call to this function will yield a new id\nconst GetRootLevelSubscriptions = () => [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.AllServicesCombined\n },\n cb: TransformSubscriptionPayloadCallback\n}, {\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.AllAgentsCombined\n },\n cb: TransformSubscriptionPayloadCallback\n}];\n\n// Note: Every call to this function will yield a new id\nconst GetServicesSubscriptions = () => [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.Services\n },\n cb: TransformSubscriptionPayloadCallback\n}];\n\n// Note: Every call to this function will yield a new id\nconst GetServiceInstancesSubscriptions = (serviceId: string) => {\n return [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.ServiceInstances,\n key: serviceId\n },\n cb: TransformSubscriptionPayloadCallback\n }];\n}\n\n// Note: Every call to this function will yield a new id\nconst GetServiceInstanceSubscriptions = (serviceId: string, serviceInstanceId: string) => {\n return [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.ServiceInstance,\n key: serviceId,\n subkey: serviceInstanceId\n },\n cb: TransformSubscriptionPayloadCallback\n }];\n}\n \ninterface INavigationSubscriptions {\n subscriptionHistoryStack: ISubscriptions[]\n currentSubscriptions: ISubscriptions | null\n}\n\nlet navigationSubscriptions: INavigationSubscriptions = {\n subscriptionHistoryStack: [ ],\n currentSubscriptions: null\n}\n\nlet reactiveNavigationSubscriptions: INavigationSubscriptions = reactive(navigationSubscriptions);\n\nconst getPathString = (sub: ISubscription): string => {\n if (sub.subscriptionKey.key && sub.subscriptionKey.subkey) {\n return `${sub.subscriptionKey.topic}[${sub.subscriptionKey.key}/${sub.subscriptionKey.subkey}]`\n }\n if (sub.subscriptionKey.key) {\n return `${sub.subscriptionKey.topic}[${sub.subscriptionKey.key}]`\n }\n return `${sub.subscriptionKey.topic}`\n}\nconst navigationPath = computed(() => {\n let pathString = '';\n let sep = '';\n reactiveNavigationSubscriptions.subscriptionHistoryStack.forEach((s) => {\n pathString += sep + getPathString(s[0])\n sep = '/';\n })\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n return pathString + sep + getPathString(reactiveNavigationSubscriptions.currentSubscriptions[0])\n }\n return pathString;\n})\n\nconst BackDisabled = computed(() => {\n return reactiveNavigationSubscriptions.subscriptionHistoryStack.length < 1\n});\n \nconst modelNode = reactive({\n node: { }\n});\n \nconst modelPos = computed({\n get: () => modelNode.node,\n set: (val) => {\n modelNode.node = val;\n }\n})\n\nconst clicked = function(id: any) {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].serviceModelSubscriptionKey) {\n switch (store._models[props.modelId].serviceModelSubscriptionKey?.topic) {\n case SubscriptionTopic.AllServicesCombined :\n navigate(GetServicesSubscriptions());\n break;\n case SubscriptionTopic.Services :\n navigate(GetServiceInstancesSubscriptions(id));\n break;\n case SubscriptionTopic.ServiceInstances :\n navigate(GetServiceInstanceSubscriptions(store._models[props.modelId].serviceModelSubscriptionKey?.key as string, id));\n break;\n }\n }\n }\n}\n\nconst UpdateModelCursor = () => { \n const subscriptions: ISubscriptions | null = reactiveNavigationSubscriptions.currentSubscriptions;\n if (metricsSubscriber && subscriptions) {\n metricsSubscriber.UpdateModelCursor(subscriptions);\n }\n}\n\nconst navigate = function(subscriptions: ISubscriptions) {\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n reactiveNavigationSubscriptions.subscriptionHistoryStack.push(reactiveNavigationSubscriptions.currentSubscriptions);\n } else {\n LogWarning(`navigate: obj.currentSubscriptions not defined`);\n }\n reactiveNavigationSubscriptions.currentSubscriptions = subscriptions;\n LogDebug(`navigate: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(subscriptions)})`)\n UpdateModelCursor();\n}\n \nconst GoBack = function() {\n if (reactiveNavigationSubscriptions.subscriptionHistoryStack.length > 0) {\n let key = reactiveNavigationSubscriptions.subscriptionHistoryStack.pop();\n if (key) {\n reactiveNavigationSubscriptions.currentSubscriptions = key;\n LogDebug(`GoBack: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)})`)\n UpdateModelCursor();\n } else {\n LogDebug(`GoBack: subscriptions key not defined`) \n }\n } else {\n LogDebug(`GoBack: subscriptions empty`)\n }\n}\n \nconst TopLevel = function() {\n reactiveNavigationSubscriptions.subscriptionHistoryStack = [ ];\n reactiveNavigationSubscriptions.currentSubscriptions = GetRootLevelSubscriptions();\n LogDebug(`TopLevel: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)})`)\n UpdateModelCursor();\n}\n\nonMounted(() => {\n LogDebug(`onMounted()`);\n})\n\nonBeforeUnmount(() => {\n LogDebug(`onBeforeUnmount()`)\n Stop();\n});\n\nlet tab = ref(null);\n\nconst Stop = async () => {\n LogDebug(`Stop()`)\n store.UpdateSate(props.modelId, _estate.STOPPING);\n\n if (metricsSubscriber) {\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n metricsSubscriber.UnSubscribe(reactiveNavigationSubscriptions.currentSubscriptions)\n await Sleep(250); // Given some time for the server to cleanly unsubscribe ...\n }\n if (metricsSubscriber && subscriptionOptions.consumeInstrumentationMode === 'PROXY') {\n const socketClientSubscriber: SocketClientSubscriber = (metricsSubscriber as SocketClientSubscriber);\n if (socketClientSubscriber.socket) {\n socketClientSubscriber.socket.disconnect();\n }\n }\n metricsSubscriber = undefined;\n }\n store.UpdateSate(props.modelId, _estate.IDLE);\n}\n\nconst Start = async (options: IObservabilitySubscriberManagerOptions) => {\n LogDebug(`Start()`)\n store.UpdateSate(props.modelId, _estate.STARTING);\n subscriptionOptions = options;\n LogDebug(`Start(): Options: [${JSON.stringify(subscriptionOptions)}]`)\n if (options.consumeInstrumentationMode === 'PROXY') {\n LogDebug(`Start(): consumeInstrumentationMode: [${options.consumeInstrumentationMode}]`)\n metricsSubscriber = new SocketClientSubscriber({\n instrumentManagerEndpoint: options.instrumentManagerEndpoint,\n instrumentManagerPort: options.instrumentManagerPort,\n consumeInstrumentationMode: options.consumeInstrumentationMode,\n instrumentManagerAPIRoot: options.instrumentManagerAPIRoot,\n modelId: options.modelId\n });\n } else {\n LogDebug(`Start(): consumeInstrumentationMode: [${options.consumeInstrumentationMode}]`)\n metricsSubscriber = new RESTClientSubscriber({\n urlBase: `${options.instrumentManagerEndpoint}:${options.instrumentManagerPort}${options.instrumentManagerAPIRoot}`,\n logger: defaultLogger,\n keepAlive: 1000,\n })\n }\n\n reactiveNavigationSubscriptions.currentSubscriptions = GetRootLevelSubscriptions();\n LogDebug(`Start(): observabilitySubscriberManager().UpdateModelCursor(): Mode: [${options.consumeInstrumentationMode}] rootLevelSubscriptions: [(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)}]`)\n UpdateModelCursor();\n \n store.UpdateSate(props.modelId, _estate.STARTED);\n}\n\ndefineExpose({\n Start,\n Stop\n})\n\n</script>\n\n<style>\n.brown {\n background-color: brown\n}\n</style>\n\n","<template>\n <v-sheet\n theme=\"light\"\n rounded=\"lg\"\n class=\"ma-4 mr-0 pa-2\"\n :elevation=\"10\"\n >\n UXModelNavigator - Path: {{ navigationPath }}\n <v-row no-gutters>\n <v-col>\n <v-tabs\n v-model=\"tab\"\n background-color=\"primary\"\n >\n <v-tab value=\"summary\">\n Summary\n </v-tab>\n <v-tab value=\"detailed\">\n Detailed\n </v-tab>\n </v-tabs>\n <v-window v-model=\"tab\">\n <v-window-item value=\"summary\">\n <UXModelNode\n :model-id=\"props.modelId\"\n :nodeid=\"'_'\"\n :small-mode=\"true\"\n @myclick=\"clicked\"\n />\n </v-window-item>\n <v-window-item value=\"detailed\">\n <UXModelNode\n :model-id=\"props.modelId\"\n :nodeid=\"'_'\"\n :small-mode=\"false\"\n @myclick=\"clicked\"\n />\n </v-window-item>\n </v-window> \n </v-col>\n </v-row>\n <div class=\"d-flex flex-wrap justify-space-between\">\n <v-btn\n color=\"secondary\"\n class=\"ma-1\"\n @click=\"TopLevel\"\n >\n Top Level<v-icon\n end\n icon=\"fa-regular fa-house\"\n />\n </v-btn>\n <v-btn\n class=\"ma-1\"\n color=\"secondary\"\n :disabled=\"BackDisabled\"\n @click=\"GoBack\"\n >\n Go Back<v-icon\n end\n icon=\"fa-solid fa-backward-step\"\n />\n </v-btn>\n </div>\n </v-sheet>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, computed, reactive, onMounted, onBeforeUnmount, toRaw } from 'vue'\n\nimport { ModelStore, _estate } from './../stores/modelStore.js'\n\nimport UXModelNode from './UXModelNode.vue'\n\nimport { ObservabilityPayloadTransformer, IObservabilityPayloadTransformerOptions, SubscriptionTopic, type ISubscriptionPayload, \n type ISubscriptions, type ISubscription } from '@nsshunt/stsinstrumentmanagerclient'\n\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { IObservabilitySubscriberManagerOptions } from './../commonTypes.js'\n\nimport { defaultLogger, Sleep } from '@nsshunt/stsutils';\n\nimport { SocketClientSubscriber, RESTClientSubscriber } from '@nsshunt/stsinstrumentmanagerclient'\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nlet subscriptionOptions: IObservabilitySubscriberManagerOptions\n\nconst props = defineProps<{ \n modelId: string\n}>();\n\nconst store = ModelStore()\n\nlet observabilityPayloadTransformer: ObservabilityPayloadTransformer = new ObservabilityPayloadTransformer({\n logger: defaultLogger,\n maxLogLength: 200\n})\n\nlet metricsSubscriber: SocketClientSubscriber | RESTClientSubscriber | undefined;\n\nconst baseColour = chalk.hex('#57A1A8');\n\nconst LogDebug = (message: any) => {\n defaultLogger.debug(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst LogError = (message: any) => {\n defaultLogger.error(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst LogWarning = (message: any) => {\n defaultLogger.warn(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst TransformSubscriptionPayloadCallback = (subscriptionPayload: ISubscriptionPayload): void => {\n try {\n observabilityPayloadTransformer.TransformSubscriptionPayloadCallback(subscriptionPayload);\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined) === 0) {\n const agentModel = observabilityPayloadTransformer.agentModel;\n store.UpdateAgentModel(props.modelId, agentModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.Services) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.ServiceInstances) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.ServiceInstance) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n } catch (error) {\n LogError(`TransformSubscriptionPayloadCallback(): #modelId: [${props.modelId}], Error: [${error}]`);\n }\n}\n\n// Note: Every call to this function will yield a new id\nconst GetRootLevelSubscriptions = () => [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.AllServicesCombined\n },\n cb: TransformSubscriptionPayloadCallback\n}, {\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.AllAgentsCombined\n },\n cb: TransformSubscriptionPayloadCallback\n}];\n\n// Note: Every call to this function will yield a new id\nconst GetServicesSubscriptions = () => [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.Services\n },\n cb: TransformSubscriptionPayloadCallback\n}];\n\n// Note: Every call to this function will yield a new id\nconst GetServiceInstancesSubscriptions = (serviceId: string) => {\n return [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.ServiceInstances,\n key: serviceId\n },\n cb: TransformSubscriptionPayloadCallback\n }];\n}\n\n// Note: Every call to this function will yield a new id\nconst GetServiceInstanceSubscriptions = (serviceId: string, serviceInstanceId: string) => {\n return [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.ServiceInstance,\n key: serviceId,\n subkey: serviceInstanceId\n },\n cb: TransformSubscriptionPayloadCallback\n }];\n}\n \ninterface INavigationSubscriptions {\n subscriptionHistoryStack: ISubscriptions[]\n currentSubscriptions: ISubscriptions | null\n}\n\nlet navigationSubscriptions: INavigationSubscriptions = {\n subscriptionHistoryStack: [ ],\n currentSubscriptions: null\n}\n\nlet reactiveNavigationSubscriptions: INavigationSubscriptions = reactive(navigationSubscriptions);\n\nconst getPathString = (sub: ISubscription): string => {\n if (sub.subscriptionKey.key && sub.subscriptionKey.subkey) {\n return `${sub.subscriptionKey.topic}[${sub.subscriptionKey.key}/${sub.subscriptionKey.subkey}]`\n }\n if (sub.subscriptionKey.key) {\n return `${sub.subscriptionKey.topic}[${sub.subscriptionKey.key}]`\n }\n return `${sub.subscriptionKey.topic}`\n}\nconst navigationPath = computed(() => {\n let pathString = '';\n let sep = '';\n reactiveNavigationSubscriptions.subscriptionHistoryStack.forEach((s) => {\n pathString += sep + getPathString(s[0])\n sep = '/';\n })\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n return pathString + sep + getPathString(reactiveNavigationSubscriptions.currentSubscriptions[0])\n }\n return pathString;\n})\n\nconst BackDisabled = computed(() => {\n return reactiveNavigationSubscriptions.subscriptionHistoryStack.length < 1\n});\n \nconst modelNode = reactive({\n node: { }\n});\n \nconst modelPos = computed({\n get: () => modelNode.node,\n set: (val) => {\n modelNode.node = val;\n }\n})\n\nconst clicked = function(id: any) {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].serviceModelSubscriptionKey) {\n switch (store._models[props.modelId].serviceModelSubscriptionKey?.topic) {\n case SubscriptionTopic.AllServicesCombined :\n navigate(GetServicesSubscriptions());\n break;\n case SubscriptionTopic.Services :\n navigate(GetServiceInstancesSubscriptions(id));\n break;\n case SubscriptionTopic.ServiceInstances :\n navigate(GetServiceInstanceSubscriptions(store._models[props.modelId].serviceModelSubscriptionKey?.key as string, id));\n break;\n }\n }\n }\n}\n\nconst UpdateModelCursor = () => { \n const subscriptions: ISubscriptions | null = reactiveNavigationSubscriptions.currentSubscriptions;\n if (metricsSubscriber && subscriptions) {\n metricsSubscriber.UpdateModelCursor(subscriptions);\n }\n}\n\nconst navigate = function(subscriptions: ISubscriptions) {\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n reactiveNavigationSubscriptions.subscriptionHistoryStack.push(reactiveNavigationSubscriptions.currentSubscriptions);\n } else {\n LogWarning(`navigate: obj.currentSubscriptions not defined`);\n }\n reactiveNavigationSubscriptions.currentSubscriptions = subscriptions;\n LogDebug(`navigate: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(subscriptions)})`)\n UpdateModelCursor();\n}\n \nconst GoBack = function() {\n if (reactiveNavigationSubscriptions.subscriptionHistoryStack.length > 0) {\n let key = reactiveNavigationSubscriptions.subscriptionHistoryStack.pop();\n if (key) {\n reactiveNavigationSubscriptions.currentSubscriptions = key;\n LogDebug(`GoBack: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)})`)\n UpdateModelCursor();\n } else {\n LogDebug(`GoBack: subscriptions key not defined`) \n }\n } else {\n LogDebug(`GoBack: subscriptions empty`)\n }\n}\n \nconst TopLevel = function() {\n reactiveNavigationSubscriptions.subscriptionHistoryStack = [ ];\n reactiveNavigationSubscriptions.currentSubscriptions = GetRootLevelSubscriptions();\n LogDebug(`TopLevel: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)})`)\n UpdateModelCursor();\n}\n\nonMounted(() => {\n LogDebug(`onMounted()`);\n})\n\nonBeforeUnmount(() => {\n LogDebug(`onBeforeUnmount()`)\n Stop();\n});\n\nlet tab = ref(null);\n\nconst Stop = async () => {\n LogDebug(`Stop()`)\n store.UpdateSate(props.modelId, _estate.STOPPING);\n\n if (metricsSubscriber) {\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n metricsSubscriber.UnSubscribe(reactiveNavigationSubscriptions.currentSubscriptions)\n await Sleep(250); // Given some time for the server to cleanly unsubscribe ...\n }\n if (metricsSubscriber && subscriptionOptions.consumeInstrumentationMode === 'PROXY') {\n const socketClientSubscriber: SocketClientSubscriber = (metricsSubscriber as SocketClientSubscriber);\n if (socketClientSubscriber.socket) {\n socketClientSubscriber.socket.disconnect();\n }\n }\n metricsSubscriber = undefined;\n }\n store.UpdateSate(props.modelId, _estate.IDLE);\n}\n\nconst Start = async (options: IObservabilitySubscriberManagerOptions) => {\n LogDebug(`Start()`)\n store.UpdateSate(props.modelId, _estate.STARTING);\n subscriptionOptions = options;\n LogDebug(`Start(): Options: [${JSON.stringify(subscriptionOptions)}]`)\n if (options.consumeInstrumentationMode === 'PROXY') {\n LogDebug(`Start(): consumeInstrumentationMode: [${options.consumeInstrumentationMode}]`)\n metricsSubscriber = new SocketClientSubscriber({\n instrumentManagerEndpoint: options.instrumentManagerEndpoint,\n instrumentManagerPort: options.instrumentManagerPort,\n consumeInstrumentationMode: options.consumeInstrumentationMode,\n instrumentManagerAPIRoot: options.instrumentManagerAPIRoot,\n modelId: options.modelId\n });\n } else {\n LogDebug(`Start(): consumeInstrumentationMode: [${options.consumeInstrumentationMode}]`)\n metricsSubscriber = new RESTClientSubscriber({\n urlBase: `${options.instrumentManagerEndpoint}:${options.instrumentManagerPort}${options.instrumentManagerAPIRoot}`,\n logger: defaultLogger,\n keepAlive: 1000,\n })\n }\n\n reactiveNavigationSubscriptions.currentSubscriptions = GetRootLevelSubscriptions();\n LogDebug(`Start(): observabilitySubscriberManager().UpdateModelCursor(): Mode: [${options.consumeInstrumentationMode}] rootLevelSubscriptions: [(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)}]`)\n UpdateModelCursor();\n \n store.UpdateSate(props.modelId, _estate.STARTED);\n}\n\ndefineExpose({\n Start,\n Stop\n})\n\n</script>\n\n<style>\n.brown {\n background-color: brown\n}\n</style>\n\n","<template>\n <v-container class=\"yellowgreen\">\n <v-row>\n <div>\n UXTestForm\n </div>\n <v-divider /> \n </v-row>\n\n <v-row v-if=\"showFormValues\">\n <v-col\n cols=\"12\"\n >\n <v-row\n v-for=\"(formDataElement, index) in formData\"\n :key=\"index\"\n class=\"ml-1 text-caption\"\n >\n {{ formDataElement.model }}\n </v-row>\n </v-col>\n </v-row>\n\n <v-row>\n <v-divider />\n </v-row>\n\n <v-row\n v-for=\"(formDataElement, index) in formData\"\n :key=\"index\"\n >\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('divider') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-divider />\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('radio') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-radio-group\n v-model=\"formDataElement.model\"\n :hide-details=\"true\"\n >\n <v-radio\n v-for=\"n in formDataElement.radioGroup\"\n :key=\"n.key\"\n :label=\"`${n.label}`\"\n :value=\"n.value\"\n />\n </v-radio-group>\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('textField') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-text-field\n v-model=\"formDataElement.model\"\n :label=\"formDataElement.label\"\n required\n :hint=\"formDataElement.hint\"\n persistent-hint\n />\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('checkbox') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-checkbox\n v-model=\"formDataElement.model\"\n :hide-details=\"true\"\n >\n <template #label>\n <div class=\"text-wrap\">\n {{ formDataElement.description }}\n </div>\n </template>\n </v-checkbox>\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('slider') === 0\"\n cols=\"12\"\n class=\"mx-3\"\n style=\"padding: 0 10px 0 0;\"\n >\n <div class=\"ml-0 text-caption\">\n {{ formDataElement.description }}\n </div>\n <v-slider\n v-model=\"(formDataElement.model as number)\"\n class=\"align-center\"\n max=\"5\"\n min=\"1\"\n step=\"1\"\n show-ticks=\"always\"\n tick-size=\"6\"\n hide-details\n >\n <template #append>\n <v-text-field\n v-model=\"formDataElement.model\"\n hide-details\n single-line\n density=\"compact\"\n type=\"number\"\n style=\"width: 110px\"\n variant=\"outlined\"\n />\n </template>\n </v-slider>\n </v-col>\n </v-row>\n </v-container>\n</template>\n\n<script setup lang=\"ts\">\n//import 'vuetify/styles'\n\n//import * as directives from 'vuetify/directives'\n//import * as VSlider from 'vuetify/components/VSlider'\n//import * as VTextField from 'vuetify/components/VTextField'\n\nimport { ref, onMounted } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\n\nimport chalk from 'chalk';\n\nimport { IFormData } from './../commonTypes.js'\n\n//const props = withDefaults(defineProps<{\nwithDefaults(defineProps<{\n showFormValues?: boolean\n}>(), {\n showFormValues: true,\n})\n\n/*\nconst radioGroup = computed({\n get: () => { return applicationStore.testProfiles[cursor.value].profileName; },\n set: (value) => { \n //locate(value);\n emit('profileSelected', value);\n }\n});\n*/\n\n//const formData = computed(() => applicationStore.testProfiles[cursor.value]);\n\nonMounted(() => {\n //radioGroup.value = applicationStore.testProfiles[0].profileName;\n console.log(chalk.green('onMounted'))\n});\n\nconst formData = ref<IFormData>([\n {\n elementType: 'textField',\n model: 'My test Profile',\n label: 'Profile Name',\n hint: 'Profile name. Used as output file name.'\n },\n {\n elementType: 'radio',\n model: 'so2',\n radioGroup: [{\n key: 'o1',\n label:'Option One',\n value: 'so1'\n },\n {\n key: 'o2',\n label:'Option Two',\n value: 'so2'\n }] \n },\n {\n elementType: 'slider',\n model: 5,\n description: 'Some description for the slider one.'\n },\n {\n elementType: 'slider',\n model: 2,\n description: 'Some description for the slider two.'\n },\n {\n elementType: 'checkbox',\n model: true,\n description: 'Some description for checkbox 1'\n },\n {\n elementType: 'divider'\n },\n {\n elementType: 'checkbox',\n model: false,\n description: 'Some description for checkbox 2'\n }\n]);\n\ndefineExpose({\n formData\n})\n\n</script>\n\n<style>\n.yellowgreen {\n background-color: yellowgreen;\n}\n.cyan {\n background-color: cyan;\n}\n</style>\n","<template>\n <v-container class=\"yellowgreen\">\n <v-row>\n <div>\n UXTestForm\n </div>\n <v-divider /> \n </v-row>\n\n <v-row v-if=\"showFormValues\">\n <v-col\n cols=\"12\"\n >\n <v-row\n v-for=\"(formDataElement, index) in formData\"\n :key=\"index\"\n class=\"ml-1 text-caption\"\n >\n {{ formDataElement.model }}\n </v-row>\n </v-col>\n </v-row>\n\n <v-row>\n <v-divider />\n </v-row>\n\n <v-row\n v-for=\"(formDataElement, index) in formData\"\n :key=\"index\"\n >\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('divider') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-divider />\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('radio') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-radio-group\n v-model=\"formDataElement.model\"\n :hide-details=\"true\"\n >\n <v-radio\n v-for=\"n in formDataElement.radioGroup\"\n :key=\"n.key\"\n :label=\"`${n.label}`\"\n :value=\"n.value\"\n />\n </v-radio-group>\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('textField') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-text-field\n v-model=\"formDataElement.model\"\n :label=\"formDataElement.label\"\n required\n :hint=\"formDataElement.hint\"\n persistent-hint\n />\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('checkbox') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-checkbox\n v-model=\"formDataElement.model\"\n :hide-details=\"true\"\n >\n <template #label>\n <div class=\"text-wrap\">\n {{ formDataElement.description }}\n </div>\n </template>\n </v-checkbox>\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('slider') === 0\"\n cols=\"12\"\n class=\"mx-3\"\n style=\"padding: 0 10px 0 0;\"\n >\n <div class=\"ml-0 text-caption\">\n {{ formDataElement.description }}\n </div>\n <v-slider\n v-model=\"(formDataElement.model as number)\"\n class=\"align-center\"\n max=\"5\"\n min=\"1\"\n step=\"1\"\n show-ticks=\"always\"\n tick-size=\"6\"\n hide-details\n >\n <template #append>\n <v-text-field\n v-model=\"formDataElement.model\"\n hide-details\n single-line\n density=\"compact\"\n type=\"number\"\n style=\"width: 110px\"\n variant=\"outlined\"\n />\n </template>\n </v-slider>\n </v-col>\n </v-row>\n </v-container>\n</template>\n\n<script setup lang=\"ts\">\n//import 'vuetify/styles'\n\n//import * as directives from 'vuetify/directives'\n//import * as VSlider from 'vuetify/components/VSlider'\n//import * as VTextField from 'vuetify/components/VTextField'\n\nimport { ref, onMounted } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\n\nimport chalk from 'chalk';\n\nimport { IFormData } from './../commonTypes.js'\n\n//const props = withDefaults(defineProps<{\nwithDefaults(defineProps<{\n showFormValues?: boolean\n}>(), {\n showFormValues: true,\n})\n\n/*\nconst radioGroup = computed({\n get: () => { return applicationStore.testProfiles[cursor.value].profileName; },\n set: (value) => { \n //locate(value);\n emit('profileSelected', value);\n }\n});\n*/\n\n//const formData = computed(() => applicationStore.testProfiles[cursor.value]);\n\nonMounted(() => {\n //radioGroup.value = applicationStore.testProfiles[0].profileName;\n console.log(chalk.green('onMounted'))\n});\n\nconst formData = ref<IFormData>([\n {\n elementType: 'textField',\n model: 'My test Profile',\n label: 'Profile Name',\n hint: 'Profile name. Used as output file name.'\n },\n {\n elementType: 'radio',\n model: 'so2',\n radioGroup: [{\n key: 'o1',\n label:'Option One',\n value: 'so1'\n },\n {\n key: 'o2',\n label:'Option Two',\n value: 'so2'\n }] \n },\n {\n elementType: 'slider',\n model: 5,\n description: 'Some description for the slider one.'\n },\n {\n elementType: 'slider',\n model: 2,\n description: 'Some description for the slider two.'\n },\n {\n elementType: 'checkbox',\n model: true,\n description: 'Some description for checkbox 1'\n },\n {\n elementType: 'divider'\n },\n {\n elementType: 'checkbox',\n model: false,\n description: 'Some description for checkbox 2'\n }\n]);\n\ndefineExpose({\n formData\n})\n\n</script>\n\n<style>\n.yellowgreen {\n background-color: yellowgreen;\n}\n.cyan {\n background-color: cyan;\n}\n</style>\n"],"x_google_ignoreList":[10,11,12,13,14,15,16,17,18,19,22,23,24,25,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87],"mappings":"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P,OAAM;IACL,SAAS,QAAA;IACT,QAAQ,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,iBAAiB;GACjB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB,mBAAmB;IAClB,UAAU;IACV,YAAY;IACZ;GACD;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,iBAAiB;GACjB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB,mBAAmB;IAClB,UAAU;IACV,YAAY;IACZ;GACD,OAAO;IACN;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;GACD,YAAY,MAAM;GAClB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,iBAAiB;GACjB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB,mBAAmB;IAClB,UAAU;IACV,YAAY;IACZ;GACD,OAAO;IACN;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;GACD,YAAY,MAAM;GAClB;EACD;CACD,cAAc,CAAC;EACd,WAAW;EACX,OAAO,MAAM;EACb,oBAAoB;EACpB,UAAU;EACV,iBAAiB;EACjB,UAAU;EACV,kBAAkB,iBAAiB;EACnC,WAAW,WAAW;EACtB,mBAAmB;GAClB,gBAAgB;GAChB,mBAAmB;GACnB;EACD,CAAC;CACF,UAAU;GACR,YAAY;GACZ,qBAAqB;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD,6BAA6B;IAC5B,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf;GACD,WAAW;IACV;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,iBAAiB;KACjB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB,mBAAmB;MAClB,UAAU;MACV,YAAY;MACZ;KACD;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,iBAAiB;KACjB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB,mBAAmB;MAClB,UAAU;MACV,YAAY;MACZ;KACD;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,iBAAiB;KACjB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB,mBAAmB,EAAE,OAAO,0BAA0B;KACtD;IACD;GACD,mBAAmB,SAAS;IAC3B,MAAM,EAAE,WAAW,mBAAmB,6BAA6B;AACnE,WAAO,IAAI,UAAU,GAAG,kBAAkB,GAAG;;GAE9C,mBAAmB;IAClB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB;GACD,oBAAoB;IACnB;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;GACD;GACA,UAAU;GACV,qBAAqB;IACpB;IACA;IACA;IACA;IACA;IACA;GACD,6BAA6B;IAC5B,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf;GACD,WAAW,CAAC;IACX,WAAW;IACX,OAAO,MAAM;IACb,oBAAoB;IACpB,UAAU;IACV,kBAAkB,iBAAiB;IACnC,WAAW,WAAW;IACtB,CAAC;GACF,mBAAmB,SAAS;IAC3B,MAAM,EAAE,WAAW,UAAU,kBAAkB;AAC/C,WAAO,IAAI,UAAU,GAAG,SAAS,GAAG;;GAErC,mBAAmB;IAClB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB;GACD,oBAAoB;IACnB;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;GACD;GACA,WAAW;GACX,qBAAqB;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD,6BAA6B;IAC5B,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf;GACD,WAAW;IACV;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,iBAAiB;KACjB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,iBAAiB;KACjB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,iBAAiB;KACjB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;GACD,mBAAmB,SAAS;IAC3B,MAAM,EAAE,YAAY,eAAe,mBAAmB;AACtD,WAAO,IAAI,WAAW,GAAG,cAAc,GAAG;;GAE3C,mBAAmB;IAClB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB;GACD,oBAAoB;IACnB;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;KACC,mBAAmB,kBAAkB;KACrC,OAAO;KACP;IACD;GACD;EACD;CACD;AAqBD,IAAI,0BAA0B,MAAM,wBAAwB;CAC3D,OAAO,aAAa,MAAM;EACzB,MAAM,YAAY;EAClB,MAAM,YAAY;AAClB,MAAI;AACH,UAAO;IACN,KAAK;IACL,IAAI,WAAW,KAAK,UAAU,CAAC,CAAC,QAAQ,UAAU,CAAC,SAAS,WAAW,IAAI;IAC3E,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,QAAQ,UAAU;IACrD;WACO,OAAO;AACf,UAAO;IACN,KAAK;IACL,IAAI;IACJ,OAAO;IACP;;;CAGH,OAAO,2BAA2B,MAAM;AACvC,MAAI;AACH,UAAO,EAAE,KAAK,MAAM;WACZ,OAAO;AACf,UAAO,EAAE,KAAK,EAAE,EAAE;;;CAGpB,OAAO,mBAAmB,MAAM;AAC/B,MAAI;AACH,UAAO,EAAE,KAAK,KAAK,MAAM,KAAK,EAAE;WACxB,OAAO;AACf,UAAO,EAAE,KAAK,MAAM;;;CAGtB,OAAO,yBAAyB,MAAM,cAAc;EACnD,IAAI,WAAW;EACf,MAAM,2BAA2B,EAAE;AACnC,OAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,aAAa,EAAE;AACtD,eAAY,WAAW,IAAI,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI;AAClE,4BAAyB,KAAK,CAAC,KAAK,IAAI,CAAC;;EAE1C,MAAM,YAAY;EAClB,MAAM,YAAY;AAClB,MAAI;AACH,UAAO;IACN,KAAK;IACL,IAAI,WAAW,KAAK,UAAU,CAAC,CAAC,QAAQ,UAAU,CAAC,SAAS,WAAW,IAAI;IAC3E,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,QAAQ,UAAU;IACrD,YAAY;IACZ,qBAAqB;IACrB;WACO,OAAO;AACf,UAAO;IACN,KAAK;IACL,IAAI;IACJ,OAAO;IACP,YAAY,EAAE;IACd,qBAAqB;IACrB;;;CAGH,OAAO,+BAA+B,MAAM;AAC3C,MAAI;GACH,MAAM,UAAU,EAAE;AAClB,OAAI,KAAM,MAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,KAAK,EAAE;IACxD,MAAM,cAAc;KACnB;KACA;KACA,SAAS,IAAI;KACb;AACD,YAAQ,KAAK,YAAY;;AAE1B,OAAI;AACH,WAAO,EAAE,MAAM,SAAS;YAChB,OAAO;AACf,WAAO,EAAE,MAAM,EAAE,EAAE;;WAEZ,OAAO;AACf,UAAO,EAAE,MAAM,EAAE,EAAE;;;CAGrB,OAAO,kBAAkB,OAAO,MAAM,UAAU,WAAW,cAAc;AACxE,MAAI,aAAa,KAAM,OAAM,YAAY,aAAa,KAAK,aAAa,KAAK,WAAW;OACnF;AACJ,YAAS,KAAK,iEAAiE,UAAU,mBAAmB;AAC5G,SAAM,YAAY,aAAa,KAAK,aAAa,EAAE;;;CAGrD,OAAO,8BAA8B,OAAO,MAAM,UAAU,WAAW,WAAW,sBAAsB;AACvG,MAAI,aAAa,QAAQ,qBAAqB,KAAM,OAAM,YAAY,aAAa,KAAK,yBAAyB,KAAK,YAAY,KAAK,mBAAmB;WACjJ,aAAa,MAAM;GAC3B,MAAM,UAAU,KAAK;AACrB,YAAS,KAAK,yFAAyF,kBAAkB,iBAAiB,QAAQ,MAAM;AACxJ,SAAM,YAAY,aAAa,KAAK,yBAAyB,SAAS,EAAE,CAAC;SACnE;AACN,YAAS,KAAK,8EAA8E,UAAU,qCAAqC,kBAAkB,sBAAsB;AACnL,SAAM,YAAY,aAAa,KAAK,yBAAyB,GAAG,EAAE,CAAC;;;CAGrE,OAAO,uBAAuB,OAAO,MAAM,UAAU,WAAW,cAAc;AAC7E,MAAI,aAAa,KAAM,OAAM,YAAY,aAAa,KAAK,+BAA+B,KAAK,WAAW;OACrG;AACJ,YAAS,KAAK,sEAAsE,UAAU,oBAAoB;AAClH,SAAM,YAAY,aAAa,KAAK,+BAA+B,EAAE,CAAC;;;CAGxE,OAAO,wBAAwB,OAAO,MAAM,UAAU,WAAW,cAAc;AAC9E,MAAI,aAAa,KAAM,OAAM,YAAY,aAAa,KAAK,mBAAmB,KAAK,WAAW;OACzF;AACJ,YAAS,KAAK,uEAAuE,UAAU,oBAAoB;AACnH,SAAM,YAAY,aAAa,KAAK,mBAAmB,EAAE,CAAC;;;CAG5D,OAAO,aAAa,aAAa,OAAO,MAAM,UAAU;AACvD,GAAC,GAAG,yBAAyB,eAAe,GAAG,yBAAyB,SAAS,aAAa,UAAU,CAAC,SAAS,UAAU;AAC3H,OAAI,MAAM,SAAU,yBAAwB,2BAA2B,OAAO,MAAM,UAAU,MAAM,OAAO,MAAM,WAAW,GAAG,MAAM,UAAU,WAAW;YACjJ,MAAM,UAAU,cAAc,WAAW,kBAAkB,KAAK,EAAG,yBAAwB,qBAAqB,OAAO,MAAM,UAAU,MAAM,OAAO,MAAM,UAAU;OACxK,yBAAwB,eAAe,OAAO,MAAM,UAAU,MAAM,OAAO,MAAM,UAAU;AAChG,OAAI,MAAM,MAAO,yBAAwB,oBAAoB,OAAO,MAAM,UAAU,MAAM,YAAY,GAAG,MAAM,UAAU,QAAQ;IAChI;;CAEH,OAAO,mBAAmB,IAAI,MAAM,QAAQ;AAC3C,MAAI;GACH,MAAM,WAAW,EAAE;GACnB,MAAM,QAAQ;IACb;IACA,aAAa,EAAE;IACf;AACD,QAAK,aAAa,WAAW,OAAO,MAAM,SAAS;AACnD,SAAM,YAAY,MAAM,UAAU,wBAAwB,2BAA2B,KAAK,eAAe;AACzG,OAAI,SAAS,SAAS,EAAG,UAAS,SAAS,aAAa,OAAO,MAAM,SAAS,CAAC;AAC/E,UAAO;WACC,OAAO;AACf,UAAO;;;CAGT,OAAO,kBAAkB,IAAI,MAAM,QAAQ;AAC1C,MAAI;GACH,MAAM,WAAW,EAAE;GACnB,MAAM,QAAQ;IACb;IACA,aAAa,EAAE;IACf;AACD,QAAK,aAAa,UAAU,OAAO,MAAM,SAAS;AAClD,SAAM,YAAY,MAAM,UAAU,wBAAwB,2BAA2B,KAAK,eAAe;AACzG,OAAI,SAAS,SAAS,EAAG,UAAS,SAAS,aAAa,OAAO,MAAM,SAAS,CAAC;AAC/E,UAAO;WACC,OAAO;AACf,UAAO;;;CAGT,OAAO,iBAAiB,IAAI,MAAM,QAAQ;AACzC,MAAI;AACH,OAAI,OAAO,KAAK,KAAK,CAAC,WAAW,EAAG,QAAO;GAC3C,MAAM,WAAW,EAAE;GACnB,MAAM,QAAQ;IACb;IACA,aAAa,EAAE;IACf;AACD,QAAK,aAAa,SAAS,OAAO,MAAM,SAAS;AACjD,SAAM,YAAY,MAAM,UAAU,wBAAwB,2BAA2B,KAAK,eAAe;AACzG,OAAI,SAAS,SAAS,EAAG,UAAS,SAAS,aAAa,OAAO,MAAM,SAAS,CAAC;AAC/E,UAAO;WACC,OAAO;AACf,UAAO;;;;AAYV,IAAI,kCAAkC,MAAM;CAC3C,gBAAgB,EAAE;CAClB,cAAc,EAAE;CAChB,eAAe,EAAE;CACjB;CACA,iBAAiB,SAAS;AACzB,QAAA,QAAc,OAAO,MAAM,QAAQ;;CAEpC,iBAAiB,SAAS;AACzB,QAAA,QAAc,OAAO,MAAM,QAAQ;;CAEpC,YAAY,SAAS;AACpB,QAAA,UAAgB;;CAEjB,IAAI,eAAe;AAClB,SAAO,MAAA;;CAER,IAAI,aAAa;AAChB,SAAO,MAAA;;CAER,IAAI,cAAc;AACjB,SAAO,MAAA;;CAER,qCAAqC,qBAAqB;AACzD,UAAQ,oBAAoB,gBAAgB,OAA5C;GACC,KAAK,kBAAkB;AACtB,SAAK,+BAA+B,oBAAoB;AACxD;GACD,KAAK,kBAAkB;AACtB,SAAK,oBAAoB,oBAAoB;AAC7C;GACD,KAAK,kBAAkB;AACtB,SAAK,4BAA4B,oBAAoB;AACrD;GACD,KAAK,kBAAkB;AACtB,SAAK,2BAA2B,oBAAoB;AACpD;GACD,KAAK,kBAAkB;AACtB,SAAK,8BAA8B,oBAAoB;AACvD;GACD,KAAK,kBAAkB;AACtB,SAAK,8BAA8B,oBAAoB;AACvD;GACD,KAAK,kBAAkB;AACtB,SAAK,iCAAiC,oBAAoB;AAC1D;GACD,KAAK,kBAAkB;AACtB,SAAK,yCAAyC,oBAAoB;AAClE;GACD,KAAK,kBAAkB;AACtB,SAAK,6BAA6B,oBAAoB;AACtD;GACD,KAAK,kBAAkB;AACtB,SAAK,kBAAkB,oBAAoB;AAC3C;GACD,KAAK,kBAAkB;AACtB,SAAK,wBAAwB,oBAAoB;AACjD;GACD,KAAK,kBAAkB;AACtB,SAAK,uBAAuB,oBAAoB;AAChD;;;CAGH,+BAA+B,qBAAqB;AACnD,MAAI;AACH,SAAA,eAAqB,EAAE;AACvB,OAAI,oBAAoB,gBAAgB,MAAM,cAAc,kBAAkB,oBAAoB,UAAU,CAAC,KAAK,GAAG;AACpH,UAAA,aAAmB,iBAAiB,wBAAwB,mBAAmB,eAAe,oBAAoB,MAAM,MAAA,QAAc,OAAO;AAC7I,QAAI,MAAA,aAAmB,mBAAmB,KAAM,OAAA,gBAAsB,MAAM,IAAI,6EAA6E,CAAC;;WAEvJ,OAAO;AACf,SAAA,gBAAsB,MAAM;AAC5B;;;CAGF,oBAAoB,qBAAqB;AACxC,MAAI;AACH,SAAA,eAAqB,EAAE;AACvB,QAAK,MAAM,CAAC,WAAW,qBAAqB,OAAO,QAAQ,oBAAoB,KAAK,EAAE;AACrF,UAAA,aAAmB,aAAa,wBAAwB,mBAAmB,WAAW,kBAAkB,MAAA,QAAc,OAAO;AAC7H,QAAI,MAAA,aAAmB,eAAe,KAAM,OAAA,gBAAsB,MAAM,IAAI,kEAAkE,CAAC;;WAExI,OAAO;AACf;;;CAGF,4BAA4B,qBAAqB;AAChD,MAAI;AACH,SAAA,eAAqB,EAAE;AACvB,QAAK,MAAM,CAAC,WAAW,YAAY,OAAO,QAAQ,oBAAoB,KAAK,CAAE,MAAK,MAAM,CAAC,mBAAmB,6BAA6B,OAAO,QAAQ,QAAQ,CAAE,KAAI,yBAAyB,OAAO,yBAAyB,MAAM,GAAG;AACvO,UAAA,aAAmB,qBAAqB,wBAAwB,mBAAmB,mBAAmB,0BAA0B,MAAA,QAAc,OAAO;AACrJ,QAAI,MAAA,aAAmB,uBAAuB,KAAM,OAAA,aAAmB,mBAAmB,UAAU,EAAE,WAAW;QAC5G,OAAA,gBAAsB,MAAM,IAAI,0EAA0E,CAAC;;WAEzG,OAAO;AACf;;;CAGF,2BAA2B,qBAAqB;AAC/C,MAAI;AACH,SAAA,eAAqB,EAAE;AACvB,QAAK,MAAM,CAAC,WAAW,YAAY,OAAO,QAAQ,oBAAoB,KAAK,CAAE,MAAK,MAAM,CAAC,mBAAmB,oBAAoB,OAAO,QAAQ,QAAQ,CAAE,MAAK,MAAM,CAAC,0BAA0B,oCAAoC,OAAO,QAAQ,gBAAgB,CAAE,KAAI,gCAAgC,OAAO,gCAAgC,MAAM,GAAG;AACvV,UAAA,aAAmB,4BAA4B,wBAAwB,mBAAmB,0BAA0B,iCAAiC,MAAA,QAAc,OAAO;AAC1K,QAAI,MAAA,aAAmB,8BAA8B,KAAM,OAAA,aAAmB,0BAA0B,UAAU;KACjH;KACA;KACA;QACI,OAAA,gBAAsB,MAAM,IAAI,yEAAyE,CAAC;;WAExG,OAAO;AACf;;;CAGF,6BAA6B,qBAAqB;AACjD,MAAI;AACH,SAAA,aAAmB,EAAE;AACrB,OAAI,oBAAoB,gBAAgB,MAAM,cAAc,kBAAkB,kBAAkB,UAAU,CAAC,KAAK;QAC3G,OAAO,KAAK,oBAAoB,KAAK,CAAC,WAAW,GAAG;AACvD,WAAA,WAAiB,eAAe,wBAAwB,iBAAiB,aAAa,oBAAoB,MAAM,MAAA,QAAc,OAAO;AACrI,SAAI,MAAA,WAAiB,iBAAiB,KAAM,OAAA,gBAAsB,MAAM,IAAI,yEAAyE,CAAC;;;WAGhJ,OAAO;AACf,SAAA,gBAAsB,MAAM;AAC5B;;;CAGF,kBAAkB,qBAAqB;AACtC,MAAI;AACH,SAAA,aAAmB,EAAE;AACrB,QAAK,MAAM,CAAC,SAAS,2BAA2B,OAAO,QAAQ,oBAAoB,KAAK,CAAE,KAAI,uBAAuB,OAAO;AAC3H,UAAA,WAAiB,WAAW,wBAAwB,iBAAiB,SAAS,wBAAwB,MAAA,QAAc,OAAO;AAC3H,QAAI,MAAA,WAAiB,aAAa,MAAM,OAAQ,OAAA,gBAAsB,MAAM,IAAI,8DAA8D,CAAC;;WAExI,OAAO;AACf,SAAA,gBAAsB,MAAM,IAAI,4CAA4C,MAAM,GAAG,CAAC;;;CAGxF,wBAAwB,qBAAqB;AAC5C,MAAI;AACH,SAAA,aAAmB,EAAE;AACrB,QAAK,MAAM,CAAC,SAAS,gBAAgB,OAAO,QAAQ,oBAAoB,KAAK,CAAE,MAAK,MAAM,CAAC,eAAe,2BAA2B,OAAO,QAAQ,YAAY,CAAE,KAAI,uBAAuB,OAAO;IACnM,MAAM,YAAY,GAAG;AACrB,UAAA,WAAiB,aAAa,wBAAwB,iBAAiB,WAAW,wBAAwB,MAAA,QAAc,OAAO;AAC/H,QAAI,MAAA,WAAiB,eAAe,MAAM;KACzC,MAAM,YAAY,MAAA,WAAiB,WAAW,YAAY,MAAM,kBAAkB;AAClF,WAAA,WAAiB,WAAW,cAAc,YAAY;AACtD,WAAA,WAAiB,WAAW,UAAU,EAAE,SAAS;UAC3C,OAAA,gBAAsB,MAAM,IAAI,oEAAoE,CAAC;;WAErG,OAAO;AACf,SAAA,gBAAsB,MAAM,IAAI,mDAAmD,MAAM,GAAG,CAAC;;;CAG/F,uBAAuB,qBAAqB;AAC3C,MAAI;AACH,SAAA,aAAmB,EAAE;AACrB,QAAK,MAAM,CAAC,SAAS,gBAAgB,OAAO,QAAQ,oBAAoB,KAAK,CAAE,MAAK,MAAM,CAAC,eAAe,oBAAoB,OAAO,QAAQ,YAAY,CAAE,MAAK,MAAM,CAAC,eAAe,2BAA2B,OAAO,QAAQ,gBAAgB,CAAE,KAAI,uBAAuB,MAAO,OAAA,WAAiB,iBAAiB,wBAAwB,iBAAiB,eAAe,wBAAwB,MAAA,QAAc,OAAO;WACnZ,OAAO;AACf,SAAA,gBAAsB,MAAM,IAAI,kDAAkD,MAAM,GAAG,CAAC;;;CAG9F,8BAA8B,qBAAqB;AAClD,MAAI;AACH,SAAA,cAAoB,EAAE;AACtB,OAAI,oBAAoB,gBAAgB,MAAM,cAAc,kBAAkB,mBAAmB,UAAU,CAAC,KAAK,GAAG;AACnH,UAAA,YAAkB,gBAAgB,wBAAwB,kBAAkB,cAAc,oBAAoB,MAAM,MAAA,QAAc,OAAO;AACzI,QAAI,MAAA,YAAkB,kBAAkB,KAAM,OAAA,gBAAsB,MAAM,IAAI,2EAA2E,CAAC;;WAEnJ,OAAO;AACf,SAAA,gBAAsB,MAAM;AAC5B;;;CAGF,8BAA8B,qBAAqB;AAClD,MAAI;AACH,SAAA,cAAoB,EAAE;AACtB,QAAK,MAAM,CAAC,cAAc,wBAAwB,OAAO,QAAQ,oBAAoB,KAAK,EAAE;AAC3F,UAAA,YAAkB,gBAAgB,wBAAwB,kBAAkB,cAAc,qBAAqB,MAAA,QAAc,OAAO;AACpI,QAAI,MAAA,YAAkB,kBAAkB,KAAM,OAAA,gBAAsB,MAAM,IAAI,2EAA2E,CAAC;;WAEnJ,OAAO;AACf;;;CAGF,iCAAiC,qBAAqB;AACrD,MAAI;AACH,SAAA,cAAoB,EAAE;AACtB,QAAK,MAAM,CAAC,cAAc,wBAAwB,OAAO,QAAQ,oBAAoB,KAAK,CAAE,MAAK,MAAM,CAAC,iBAAiB,2BAA2B,OAAO,QAAQ,oBAAoB,CAAE,KAAI,uBAAuB,OAAO,uBAAuB,MAAM,GAAG;AAC1P,UAAA,YAAkB,mBAAmB,wBAAwB,kBAAkB,iBAAiB,wBAAwB,MAAA,QAAc,OAAO;AAC7I,QAAI,MAAA,YAAkB,qBAAqB,KAAM,OAAA,YAAkB,iBAAiB,UAAU,EAAE,cAAc;QACzG,OAAA,gBAAsB,MAAM,IAAI,8EAA8E,CAAC;;WAE7G,OAAO;AACf;;;CAGF,yCAAyC,qBAAqB;AAC7D,MAAI;AACH,SAAA,cAAoB,EAAE;AACtB,QAAK,MAAM,CAAC,cAAc,wBAAwB,OAAO,QAAQ,oBAAoB,KAAK,CAAE,MAAK,MAAM,CAAC,iBAAiB,2BAA2B,OAAO,QAAQ,oBAAoB,CAAE,MAAK,MAAM,CAAC,yBAAyB,mCAAmC,OAAO,QAAQ,uBAAuB,CAAE,KAAI,+BAA+B,OAAO,+BAA+B,MAAM,GAAG;AAC1X,UAAA,YAAkB,2BAA2B,wBAAwB,kBAAkB,yBAAyB,gCAAgC,MAAA,QAAc,OAAO;AACrK,QAAI,MAAA,YAAkB,6BAA6B,KAAM,OAAA,YAAkB,yBAAyB,UAAU;KAC7G;KACA;KACA;QACI,OAAA,gBAAsB,MAAM,IAAI,sFAAsF,CAAC;;WAErH,OAAO;AACf;;;;AAMH,IAAI,uBAAuB,MAAM;CAChC,4BAA4B,EAAE;CAC9B;CACA;CACA,wBAAwB,EAAE;CAC1B,YAAY,SAAS;AACpB,QAAA,UAAgB;;CAEjB,iBAAiB,SAAS;AACzB,QAAA,QAAc,OAAO,MAAM,QAAQ;;CAEpC,iBAAiB,SAAS;AACzB,QAAA,QAAc,OAAO,MAAM,QAAQ;;CAEpC,MAAM,UAAU,eAAe;AAC9B,gBAAc,IAAI,OAAO,UAAU;AAClC,SAAA,gBAAsB,MAAM;AAC5B,SAAA,gBAAsB,MAAM,OAAO,0EAA0E,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC1I,OAAI;AACH,UAAA,aAAmB,MAAM;YACjB,OAAO;AACf,UAAA,gBAAsB,MAAM,IAAI,uDAAuD,KAAK,UAAU,MAAM,CAAC,GAAG,CAAC;AACjH,UAAA,gBAAsB,MAAM;;IAE5B;;CAEH,YAAY,eAAe;AAC1B,gBAAc,IAAI,OAAO,UAAU;AAClC,SAAA,gBAAsB,MAAM;AAC5B,SAAA,gBAAsB,MAAM,OAAO,8EAA8E,MAAM,gBAAgB,GAAG,GAAG,CAAC;IAC7I;;CAEH,qBAAqB,kBAAkB;AACtC,QAAA,gBAAsB,MAAM,OAAO,0DAA0D,CAAC;AAC9F,OAAK,YAAY,MAAA,qBAA2B;AAC5C,QAAA,uBAA6B;AAC7B,OAAK,UAAU,MAAA,qBAA2B;;CAE3C,OAAA,cAAqB,cAAc;AAClC,QAAA,gBAAsB,MAAM,OAAO,4DAA4D,aAAa,gBAAgB,GAAG,GAAG,CAAC;EACnI,MAAM,EAAE,oBAAoB;EAC5B,IAAI,MAAM;AACV,UAAQ,gBAAgB,OAAxB;GACC,KAAK,kBAAkB;AACtB,UAAM;AACN;GACD,KAAK,kBAAkB;AACtB,UAAM;AACN;GACD,KAAK,kBAAkB,iBAAkB,KAAI,gBAAgB,KAAK;AACjE,UAAM,qBAAqB,gBAAgB;AAC3C;SACM,OAAM,IAAI,MAAM,sEAAsE,KAAK,UAAU,gBAAgB,CAAC,GAAG;GAChI,KAAK,kBAAkB;AACtB,UAAM,qBAAqB,gBAAgB;AAC3C,QAAI,gBAAgB,OAAO,gBAAgB,QAAQ;AAClD,WAAM,qBAAqB,gBAAgB,IAAI,GAAG,gBAAgB;AAClE;UACM,OAAM,IAAI,MAAM,sEAAsE,KAAK,UAAU,gBAAgB,CAAC,GAAG;GACjI,KAAK,kBAAkB;AACtB,UAAM;AACN;GACD,KAAK,kBAAkB;AACtB,UAAM;AACN;GACD,KAAK,kBAAkB,sBAAuB,KAAI,gBAAgB,KAAK;AACtE,UAAM,oBAAoB,gBAAgB;AAC1C;SACM,OAAM,IAAI,MAAM,qEAAqE,KAAK,UAAU,gBAAgB,CAAC,GAAG;GAC/H,KAAK,kBAAkB;AACtB,UAAM,oBAAoB,gBAAgB;AAC1C,QAAI,gBAAgB,OAAO,gBAAgB,QAAQ;AAClD,WAAM,oBAAoB,gBAAgB,IAAI,GAAG,gBAAgB;AACjE;UACM,OAAM,IAAI,MAAM,qEAAqE,KAAK,UAAU,gBAAgB,CAAC,GAAG;GAChI,KAAK,kBAAkB;AACtB,UAAM;AACN;GACD,KAAK,kBAAkB;AACtB,UAAM;AACN;GACD,KAAK,kBAAkB,aAAc,KAAI,gBAAgB,KAAK;AAC7D,UAAM,mBAAmB,gBAAgB;AACzC;SACM,OAAM,IAAI,MAAM,oEAAoE,KAAK,UAAU,gBAAgB,CAAC,GAAG;GAC9H,KAAK,kBAAkB,YAAa,KAAI,gBAAgB,OAAO,gBAAgB,QAAQ;AACtF,UAAM,mBAAmB,gBAAgB,IAAI,GAAG,gBAAgB;AAChE;SACM,OAAM,IAAI,MAAM,kFAAkF,KAAK,UAAU,gBAAgB,MAAM,CAAC,GAAG;;AAEnJ,MAAI,IAAI,cAAc,GAAG,KAAK,GAAG;GAChC,MAAM,cAAc,GAAG,MAAA,QAAc,UAAU;GAC/C,IAAI;GACJ,MAAM,QAAQ,YAAY,KAAK;AAC/B,OAAI;AACH,UAAA,gBAAsB,MAAM,OAAO,oEAAoE,YAAY,GAAG,CAAC;AACvH,QAAIa,kBAAAA,UAAU,MAAA,QAAc,aAAc,UAAS,MAAM,MAAM,IAAIC,kBAAAA,eAAe,aAAa,MAAM,CAAC,oBAAoB,CAAC,iBAAiB,MAAA,QAAc,aAAa,CAAC,OAAO;QAC1K,UAAS,MAAM,MAAM,IAAIA,kBAAAA,eAAe,aAAa,MAAM,CAAC,oBAAoB,CAAC,OAAO;AAC7F,QAAI,OAAQ,KAAI,OAAO,MAAM,OAAQ,OAAA,gBAAsB,MAAM,OAAO,wDAAwD,CAAC;QAC5H,OAAA,gBAAsB,MAAM,OAAO,mDAAmD,CAAC;AAC5F,gBAAY,KAAK,GAAG;AACpB,QAAI,gBAAgB,MAAM,cAAc,kBAAkB,oBAAoB,KAAK,EAAG,QAAO,OAAO,KAAK;AACzG,QAAI,gBAAgB,MAAM,cAAc,kBAAkB,kBAAkB,KAAK,EAAG,QAAO,OAAO,KAAK;AACvG,QAAI,gBAAgB,MAAM,cAAc,kBAAkB,mBAAmB,KAAK,EAAG,QAAO,OAAO,KAAK;AACxG,WAAO,OAAO;YACN,OAAO;AACf,UAAA,gBAAsB,MAAM,IAAI,4DAA4D,aAAa,gBAAgB,GAAG,aAAa,MAAM,GAAG,CAAC;AACnJ,WAAO;;QAEF,QAAO;;CAEf,WAAW,OAAO,iBAAiB;AAClC,MAAI;AACH,SAAA,gBAAsB,MAAM,OAAO,sDAAsD,KAAK,UAAU,aAAa,gBAAgB,GAAG,CAAC;GACzI,MAAM,SAAS,MAAM,MAAA,cAAoB,aAAa;AACtD,OAAI,QAAQ;IACX,MAAM,UAAU;KACf,iBAAiB,aAAa;KAC9B,MAAM;KACN;AACD,UAAA,gBAAsB,MAAM,OAAO,qEAAqE,KAAK,UAAU,aAAa,gBAAgB,GAAG,CAAC;AACxJ,iBAAa,GAAG,QAAQ;SAClB,OAAA,gBAAsB,MAAM,OAAO,wEAAwE,KAAK,UAAU,aAAa,gBAAgB,GAAG,CAAC;WAC1J,OAAO;AACf,SAAA,gBAAsB,MAAM,IAAI,0DAA0D,KAAK,UAAU,MAAM,CAAC,GAAG,CAAC;AACpH,SAAA,gBAAsB,aAAa;;;CAGrC,cAAc,0BAA0B,cAAc,SAAS;AAC9D,SAAO,WAAW,YAAY;AAC7B,OAAI;IACH,MAAM,QAAQ,YAAY,KAAK;AAC/B,UAAM,MAAA,QAAc,aAAa;AACjC,QAAI,yBAAyB,SAAS;KACrC,MAAM,OAAO,YAAY,KAAK,GAAG;KACjC,IAAI,mBAAmB,MAAA,QAAc,aAAa,OAAO;AACzD,SAAI,kBAAkB,IAAK,mBAAkB;AAC7C,WAAA,gBAAsB,MAAM,OAAO,qCAAqC,KAAK,eAAe,gBAAgB,GAAG,CAAC;AAChH,8BAAyB,UAAU,MAAA,aAAmB,0BAA0B,cAAc,gBAAgB;UACxG,OAAA,gBAAsB,MAAM,OAAO,gDAAgD,yBAAyB,GAAG,0BAA0B,CAAC;YACzI,OAAO;AACf,UAAA,gBAAsB,MAAM,IAAI,0DAA0D,KAAK,UAAU,MAAM,CAAC,GAAG,CAAC;AACpH,UAAA,gBAAsB,aAAa;;KAElC,QAAQ;;CAEZ,cAAc,cAAc;AAC3B,QAAA,gBAAsB,MAAM,OAAO,2DAA2D,aAAa,gBAAgB,GAAG,GAAG,CAAC;AAClI,QAAA,gBAAsB,aAAa;EACnC,MAAM,2BAA2B,EAAE,IAAI,aAAa,gBAAgB,IAAI;AACxE,2BAAyB,UAAU,MAAA,aAAmB,0BAA0B,cAAc,MAAA,QAAc,aAAa,IAAI;AAC7H,QAAA,yBAA+B,aAAa,gBAAgB,MAAM;AAClE,QAAA,gBAAsB,MAAM,OAAO,yEAAyE,aAAa,gBAAgB,GAAG,GAAG,CAAC;AAChJ,QAAA,QAAc,aAAa;;CAE5B,iBAAiB,cAAc;AAC9B,MAAI,MAAA,yBAA+B,aAAa,gBAAgB,KAAK;AACpE,SAAA,gBAAsB,MAAM,KAAK,8DAA8D,aAAa,gBAAgB,GAAG,GAAG,CAAC;AACnI,gBAAa,MAAA,yBAA+B,aAAa,gBAAgB,IAAI,QAAQ;AACrF,UAAO,MAAA,yBAA+B,aAAa,gBAAgB,IAAI;AACvE,UAAO,MAAA,yBAA+B,aAAa,gBAAgB;;;;AAMtE,IAAI,qBAAqB;AACzB,IAAI,yBAAyB,cAAc,eAAe;CACzD;CACA;CACA,wBAAwB,EAAE;CAC1B,gBAAgB,EAAE;CAClB,YAAY,SAAS;AACpB,QAAM,mBAAmB;AACzB,QAAA,KAAW,WAAW,OAAO,YAAY;AACzC,QAAA,UAAgB;AAChB,OAAK,gBAAgB,MAAM,KAAK,GAAG,KAAK,UAAU,SAAS,CAAC;EAC5D,MAAM,MAAM,GAAG,MAAA,QAAc,0BAA0B,GAAG,MAAA,QAAc,sBAAsB,GAAG,mBAAmB;AACpH,OAAK,gBAAgB,MAAM,KAAK,GAAG,KAAK,UAAU,sBAAsB,IAAI,GAAG,CAAC;AAChF,OAAK,YAAY,IAAI,CAAC,WAAW,MAAA,QAAc,UAAUK,kBAAAA,cAAc,CAAC,aAAa;;CAEtF,IAAI,KAAK;AACR,SAAO,MAAA;;CAER,IAAI,YAAY;AACf,MAAI,MAAA,QAAe,QAAO,8CAA8C,MAAA,QAAc,2BAA2B;MAC5G,QAAO;;CAEb,qBAAqB,kBAAkB;AACtC,OAAK,YAAY,MAAA,qBAA2B;AAC5C,QAAA,uBAA6B;AAC7B,OAAK,UAAU,MAAA,qBAA2B;;CAE3C,UAAU,eAAe;AACxB,gBAAc,IAAI,OAAO,UAAU;AAClC,OAAI;AACH,QAAI,KAAK,QAAQ;AAChB,UAAK,gBAAgB,MAAM,OAAO,qFAAqF,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpJ,UAAK,OAAO,QAAQ,IAAI,CAAC,KAAK,aAAa,MAAM,kBAAkB,OAAO,SAAS;AAClF,UAAI,MAAO,MAAK,gBAAgB,MAAM,IAAI,wDAAwD,MAAM,YAAY,KAAK,GAAG,CAAC;WACxH;AACJ,YAAK,gBAAgB,MAAM,MAAM,2DAA2D,KAAK,UAAU,KAAK,CAAC,GAAG,CAAC;AACrH,YAAK,cAAc,MAAM,gBAAgB,MAAM;;OAE/C;;YAEK,OAAO;AACf,SAAK,gBAAgB,MAAM,IAAI,kEAAkE,KAAK,UAAU,MAAM,CAAC,GAAG,CAAC;;IAE3H;;CAEH,YAAY,eAAe;AAC1B,gBAAc,IAAI,OAAO,UAAU;AAClC,OAAI;AACH,QAAI,KAAK,QAAQ;AAChB,UAAK,gBAAgB,MAAM,OAAO,yFAAyF,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACxJ,UAAK,OAAO,QAAQ,IAAI,CAAC,KAAK,eAAe,MAAM,kBAAkB,OAAO,SAAS;AACpF,UAAI,MAAO,MAAK,gBAAgB,MAAM,IAAI,0DAA0D,MAAM,YAAY,KAAK,GAAG,CAAC;WAC1H;AACJ,YAAK,gBAAgB,MAAM,MAAM,6DAA6D,KAAK,UAAU,KAAK,CAAC,GAAG,CAAC;AACvH,cAAO,KAAK,cAAc,MAAM,gBAAgB;;OAEhD;;YAEK,OAAO;AACf,SAAK,gBAAgB,MAAM,IAAI,mEAAmE,KAAK,UAAU,MAAM,CAAC,GAAG,CAAC;;IAE5H;;CAEH,cAAc,QAAQ;AACrB,OAAK,gBAAgB,MAAM,QAAQ,GAAG,KAAK,UAAU,+BAA+B,OAAO,GAAG,GAAG,CAAC;AAClG,OAAK,kBAAkB,MAAA,qBAA2B;;CAEnD,YAAY,OAAO;AAClB,OAAK,gBAAgB,MAAM,IAAI,GAAG,KAAK,UAAU,yBAAyB,MAAM,GAAG,CAAC;;CAErF,kBAAkB,QAAQ;AACzB,OAAK,gBAAgB,MAAM,QAAQ,GAAG,KAAK,UAAU,mCAAmC,OAAO,GAAG,GAAG,CAAC;AACtG,MAAI,KAAK,OAAQ,MAAK,OAAO,GAAG,qBAAqB,MAAM,OAAO;AACjE,QAAK,gBAAgB,MAAM,QAAQ,GAAG,KAAK,UAAU,0DAA0D,OAAO,GAAG,GAAG,CAAC;GAC7H,MAAM,QAAQ,KAAK,gBAAgB;GACnC,MAAM,uBAAuB,OAAO,KAAK,KAAK,cAAc,CAAC,UAAU;AACvE,OAAI,KAAK,cAAc,QAAQ;AAC9B,SAAK,cAAc,OAAO,GAAG,KAAK;AAClC,OAAG,wCAAwC,KAAK,UAAU,KAAK,gBAAgB,CAAC,6BAA6B,qBAAqB,GAAG;SAC/H,IAAG,gFAAgF,KAAK,UAAU,KAAK,gBAAgB,CAAC,6BAA6B,qBAAqB,GAAG;IACnL;;CAEH,mBAAmB,OAAO;AACzB,OAAK,gBAAgB,MAAM,IAAI,GAAG,KAAK,UAAU,gCAAgC,MAAM,GAAG,CAAC;;CAE5F,iBAAiB,QAAQ;AACxB,OAAK,gBAAgB,MAAM,IAAI,GAAG,KAAK,UAAU,+BAA+B,OAAO,GAAG,CAAC;;;;;AC1jI7F,IAAM,YAAY,EAAE;AACpB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,EACvB,WAAU,MAAM,IAAI,KAAO,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC;AAErD,SAAgB,gBAAgB,KAAK,SAAS,GAAG;AAC7C,SAAQ,UAAU,IAAI,SAAS,MAC3B,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,MACvB,UAAU,IAAI,SAAS,MACvB,MACA,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,OACvB,UAAU,IAAI,SAAS,MAAM,aAAa;;;;ACzBlD,IAAI;AACJ,IAAM,QAAQ,IAAI,WAAW,GAAG;AAChC,SAAwB,MAAM;AAC1B,KAAI,CAAC,iBAAiB;AAClB,MAAI,OAAO,WAAW,eAAe,CAAC,OAAO,gBACzC,OAAM,IAAI,MAAM,2GAA2G;AAE/H,oBAAkB,OAAO,gBAAgB,KAAK,OAAO;;AAEzD,QAAO,gBAAgB,MAAM;;ACRjC,IAAA,iBAAe,EAAE,YADE,OAAO,WAAW,eAAe,OAAO,cAAc,OAAO,WAAW,KAAK,OAAO,EAC1E;;;ACE7B,SAAS,IAAI,SAAS,KAAK,QAAQ;AAC/B,WAAU,WAAW,EAAE;CACvB,MAAM,OAAO,QAAQ,UAAU,QAAQ,OAAO,IAAI,KAAK;AACvD,KAAI,KAAK,SAAS,GACd,OAAM,IAAI,MAAM,oCAAoC;AAExD,MAAK,KAAM,KAAK,KAAK,KAAQ;AAC7B,MAAK,KAAM,KAAK,KAAK,KAAQ;AAC7B,KAAI,KAAK;AACL,WAAS,UAAU;AACnB,MAAI,SAAS,KAAK,SAAS,KAAK,IAAI,OAChC,OAAM,IAAI,WAAW,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAA0B;AAE5F,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACtB,KAAI,SAAS,KAAK,KAAK;AAE3B,SAAO;;AAEX,QAAO,gBAAgB,KAAK;;AAEhC,SAAS,GAAG,SAAS,KAAK,QAAQ;AAC9B,KAAIC,eAAO,cAAc,CAAC,OAAO,CAAC,QAC9B,QAAOA,eAAO,YAAY;AAE9B,QAAO,IAAI,SAAS,KAAK,OAAO;;;;;;;;;;;AC6DpC,UAAM,QAAQ;EAEd,IAAI;EAEJ,MAAM,QAAQ;EAId,MAAM,QAAQ,YAAW;EAEzB,IAAI,kCAAmE,IAAI,gCAAgC;GACvG,QAAQ,kBAAA;GACR,cAAc;GACjB,CAAA;EAED,IAAI;EAEJ,MAAM,aAAa,QAAM,IAAI,UAAU;EAEvC,MAAM,YAAY,YAAiB;AAC/B,qBAAA,cAAc,MAAM,WAAW,6BAA6B,UAAU,CAAC;;EAG3E,MAAM,YAAY,YAAiB;AAC/B,qBAAA,cAAc,MAAM,WAAW,6BAA6B,UAAU,CAAC;;EAG3E,MAAM,cAAc,YAAiB;AACjC,qBAAA,cAAc,KAAK,WAAW,6BAA6B,UAAU,CAAC;;EAG1E,MAAM,wCAAwC,wBAAoD;AAC9F,OAAI;AACA,oCAAgC,qCAAqC,oBAAoB;AAEzF,QAAI,oBAAoB,gBAAgB,MAAM,cAAc,kBAAkB,kBAAkB,KAAK,GAAG;KACpG,MAAM,aAAa,gCAAgC;AACnD,WAAM,iBAAiB,MAAM,SAAS,YAAY,oBAAoB,gBAAgB;;AAG1F,QAAI,oBAAoB,gBAAgB,MAAM,cAAc,kBAAkB,oBAAoB,KAAK,GAAG;KACtG,MAAM,eAAe,gCAAgC;AACrD,WAAM,mBAAmB,MAAM,SAAS,cAAc,oBAAoB,gBAAgB;;AAG9F,QAAI,oBAAoB,gBAAgB,MAAM,cAAc,kBAAkB,SAAS,KAAK,GAAG;KAC3F,MAAM,eAAe,gCAAgC;AACrD,WAAM,mBAAmB,MAAM,SAAS,cAAc,oBAAoB,gBAAgB;;AAG9F,QAAI,oBAAoB,gBAAgB,MAAM,cAAc,kBAAkB,iBAAiB,KAAK,GAAG;KACnG,MAAM,eAAe,gCAAgC;AACrD,WAAM,mBAAmB,MAAM,SAAS,cAAc,oBAAoB,gBAAgB;;AAG9F,QAAI,oBAAoB,gBAAgB,MAAM,cAAc,kBAAkB,gBAAgB,KAAK,GAAG;KAClG,MAAM,eAAe,gCAAgC;AACrD,WAAM,mBAAmB,MAAM,SAAS,cAAc,oBAAoB,gBAAgB;;YAEzF,OAAO;AACZ,aAAS,sDAAsD,MAAM,QAAQ,aAAa,MAAM,GAAG;;;EAK3G,MAAM,kCAAkC,CAAC;GACrC,iBAAiB;IACb,IAAI,IAAQ;IACZ,OAAO,kBAAkB;IAC5B;GACD,IAAI;GACP,EAAE;GACC,iBAAiB;IACb,IAAI,IAAQ;IACZ,OAAO,kBAAkB;IAC5B;GACD,IAAI;GACP,CAAC;EAGF,MAAM,iCAAiC,CAAC;GACpC,iBAAiB;IACb,IAAI,IAAQ;IACZ,OAAO,kBAAkB;IAC5B;GACD,IAAI;GACP,CAAC;EAGF,MAAM,oCAAoC,cAAsB;AAC5D,UAAO,CAAC;IACJ,iBAAiB;KACb,IAAI,IAAQ;KACZ,OAAO,kBAAkB;KACzB,KAAK;KACR;IACD,IAAI;IACP,CAAC;;EAIN,MAAM,mCAAmC,WAAmB,sBAA8B;AACtF,UAAO,CAAC;IACJ,iBAAiB;KACb,IAAI,IAAQ;KACZ,OAAO,kBAAkB;KACzB,KAAK;KACL,QAAQ;KACX;IACD,IAAI;IACP,CAAC;;EAaN,IAAI,mCAAA,GAAA,IAAA,UALoD;GACpD,0BAA0B,EAAG;GAC7B,sBAAsB;GAC1B,CAEiG;EAEjG,MAAM,iBAAiB,QAA+B;AAClD,OAAI,IAAI,gBAAgB,OAAO,IAAI,gBAAgB,OAC/C,QAAO,GAAG,IAAI,gBAAgB,MAAM,GAAG,IAAI,gBAAgB,IAAI,GAAG,IAAI,gBAAgB,OAAO;AAEjG,OAAI,IAAI,gBAAgB,IACpB,QAAO,GAAG,IAAI,gBAAgB,MAAM,GAAG,IAAI,gBAAgB,IAAI;AAEnE,UAAO,GAAG,IAAI,gBAAgB;;EAElC,MAAM,kBAAA,GAAA,IAAA,gBAAgC;GAClC,IAAI,aAAa;GACjB,IAAI,MAAM;AACV,mCAAgC,yBAAyB,SAAS,MAAM;AACpE,kBAAc,MAAM,cAAc,EAAE,GAAE;AACtC,UAAM;KACT;AACD,OAAI,gCAAgC,qBAChC,QAAO,aAAa,MAAM,cAAc,gCAAgC,qBAAqB,GAAE;AAEnG,UAAO;IACV;EAED,MAAM,gBAAA,GAAA,IAAA,gBAA8B;AAChC,UAAO,gCAAgC,yBAAyB,SAAS;IAC3E;EAEF,MAAM,aAAA,GAAA,IAAA,UAAqB,EACvB,MAAM,EAAE,EACX,CAAC;AAEe,GAAA,GAAA,IAAA,UAAS;GACtB,WAAW,UAAU;GACrB,MAAM,QAAQ;AACV,cAAU,OAAO;;GAExB,CAAA;EAED,MAAM,UAAU,SAAS,IAAS;AAC9B,OAAI,MAAM,QAAQ,MAAM;QAChB,MAAM,QAAQ,MAAM,SAAS,4BAC7B,SAAQ,MAAM,QAAQ,MAAM,SAAS,6BAA6B,OAAlE;KACA,KAAK,kBAAkB;AACnB,eAAS,0BAA0B,CAAC;AACpC;KACJ,KAAK,kBAAkB;AACnB,eAAS,iCAAiC,GAAG,CAAC;AAC9C;KACJ,KAAK,kBAAkB;AACnB,eAAS,gCAAgC,MAAM,QAAQ,MAAM,SAAS,6BAA6B,KAAe,GAAG,CAAC;AACtH;;;;EAMhB,MAAM,0BAA0B;GAC5B,MAAM,gBAAuC,gCAAgC;AAC7E,OAAI,qBAAqB,cACrB,mBAAkB,kBAAkB,cAAc;;EAI1D,MAAM,WAAW,SAAS,eAA+B;AACrD,OAAI,gCAAgC,qBAChC,iCAAgC,yBAAyB,KAAK,gCAAgC,qBAAqB;OAEnH,YAAW,iDAAiD;AAEhE,mCAAgC,uBAAuB;AACvD,YAAS,gEAAgE,KAAK,UAAU,cAAc,CAAC,GAAE;AACzG,sBAAmB;;EAGvB,MAAM,SAAS,WAAW;AACtB,OAAI,gCAAgC,yBAAyB,SAAS,GAAG;IACrE,IAAI,MAAM,gCAAgC,yBAAyB,KAAK;AACxE,QAAI,KAAK;AACL,qCAAgC,uBAAuB;AACvD,cAAS,8DAA8D,KAAK,UAAU,gCAAgC,qBAAqB,CAAC,GAAE;AAC9I,wBAAmB;UAEnB,UAAS,wCAAwC;SAGrD,UAAS,8BAA6B;;EAI9C,MAAM,WAAW,WAAW;AACxB,mCAAgC,2BAA2B,EAAG;AAC9D,mCAAgC,uBAAuB,2BAA2B;AAClF,YAAS,gEAAgE,KAAK,UAAU,gCAAgC,qBAAqB,CAAC,GAAE;AAChJ,sBAAmB;;AAGvB,GAAA,GAAA,IAAA,iBAAgB;AACZ,YAAS,cAAc;IAC1B;AAED,GAAA,GAAA,IAAA,uBAAsB;AAClB,YAAS,oBAAmB;AAC5B,SAAM;IACR;EAEF,IAAI,OAAA,GAAA,IAAA,KAAU,KAAK;EAEnB,MAAM,OAAO,YAAY;AACrB,YAAS,SAAQ;AACjB,SAAM,WAAW,MAAM,SAAS,QAAQ,SAAS;AAEjD,OAAI,mBAAmB;AACnB,QAAI,gCAAgC,sBAAsB;AACtD,uBAAkB,YAAY,gCAAgC,qBAAoB;AAClF,YAAA,GAAA,kBAAA,OAAY,IAAI;;AAEpB,QAAI,qBAAqB,oBAAoB,+BAA+B,SAAS;KACjF,MAAM,yBAAkD;AACxD,SAAI,uBAAuB,OACvB,wBAAuB,OAAO,YAAY;;AAGlD,wBAAoB,KAAA;;AAExB,SAAM,WAAW,MAAM,SAAS,QAAQ,KAAK;;EAGjD,MAAM,QAAQ,OAAO,YAAoD;AACrE,YAAS,UAAS;AAClB,SAAM,WAAW,MAAM,SAAS,QAAQ,SAAS;AACjD,yBAAsB;AACtB,YAAS,sBAAsB,KAAK,UAAU,oBAAoB,CAAC,GAAE;AACrE,OAAI,QAAQ,+BAA+B,SAAS;AAChD,aAAS,yCAAyC,QAAQ,2BAA2B,GAAE;AACvF,wBAAoB,IAAI,uBAAuB;KAC3C,2BAA2B,QAAQ;KACnC,uBAAuB,QAAQ;KAC/B,4BAA4B,QAAQ;KACpC,0BAA0B,QAAQ;KAClC,SAAS,QAAQ;KACpB,CAAC;UACC;AACH,aAAS,yCAAyC,QAAQ,2BAA2B,GAAE;AACvF,wBAAoB,IAAI,qBAAqB;KACzC,SAAS,GAAG,QAAQ,0BAA0B,GAAG,QAAQ,wBAAwB,QAAQ;KACzF,QAAQ,kBAAA;KACR,WAAW;KACd,CAAA;;AAGL,mCAAgC,uBAAuB,2BAA2B;AAClF,YAAS,yEAAyE,QAAQ,2BAA2B,8BAA8B,KAAK,UAAU,gCAAgC,qBAAqB,CAAC,GAAE;AAC1N,sBAAmB;AAEnB,SAAM,WAAW,MAAM,SAAS,QAAQ,QAAQ;;AAGpD,WAAa;GACT;GACA;GACH,CAAA;;;;;;;;;;;qDApTa,oBAAA;IA9DN,OAAM;IACN,SAAQ;IACR,OAAM;IACL,WAAW;;oCAEa;8BAD5B,gCAAA,GAAA,IAAA,iBAC+B,eAAA,MAAc,GAAG,KAC7C,EAAA;0BAgCQ,kBAAA,EAhCD,cAAA,IAAU,EAAA;sCA+BL,EAAA,GAAA,IAAA,aAAA,kBAAA,MAAA;uCAnBK,EAAA,GAAA,IAAA,aAAA,mBAAA;mCATI,IAAG;+FAAA,QAAA,SAAA,MAAA;QACZ,oBAAiB;;wCAIT,EAAA,GAAA,IAAA,aAAA,kBAAA,EAFD,OAAM,WAAS,EAAA;yCAEtB,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,EAAA,GAAA,IAAA,iBAFuB,aAEvB,GAAA,CAAA,EAAA,CAAA;;iCAGQ,kBAAA,EAFD,OAAM,YAAU,EAAA;yCAEvB,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,EAAA,GAAA,IAAA,iBAFwB,cAExB,GAAA,CAAA,EAAA,CAAA;;;;mDAmBO,qBAAA;mCAjBQ,IAAG;+FAAA,QAAA,SAAA,MAAA;;wCAQF,EAAA,GAAA,IAAA,aAAA,0BAAA,EAPD,OAAM,WAAS,EAAA;yCAMxB,EAAA,GAAA,IAAA,aAAA,qBAAA;UAJG,YAAU,MAAM;UAChB,QAAQ;UACR,cAAY;UACZ,WAAS;;;iCAUF,0BAAA,EAPD,OAAM,YAAU,EAAA;yCAMzB,EAAA,GAAA,IAAA,aAAA,qBAAA;UAJG,YAAU,MAAM;UAChB,QAAQ;UACR,cAAY;UACZ,WAAS;;;;;;;;;;iCA4BxB,OAtBN,cAsBM,EAAA,GAAA,IAAA,aAZM,kBAAA;MARJ,OAAM;MACN,OAAM;MACL,SAAO;;sCAEC,CAAA,OAAA,OAAA,OAAA,MAAA,GAAA,IAAA,iBADZ,cACY,GAAA,IAAA,GAAA,IAAA,aAGP,mBAAA;OAFE,KAAA;OACA,MAAK;;;8BAaL,kBAAA;MATJ,OAAM;MACN,OAAM;MACL,UAAU,aAAA;MACV,SAAO;;sCAED,CAAA,OAAA,OAAA,OAAA,MAAA,GAAA,IAAA,iBADV,YACU,GAAA,IAAA,GAAA,IAAA,aAGL,mBAAA;OAFE,KAAA;OACA,MAAK;;;;;;;;;;;;;;;;;;;;;;;AE4FzB,GAAA,GAAA,IAAA,iBAAgB;AAEZ,WAAQ,IAAI,QAAM,MAAM,YAAY,CAAA;IACtC;EAEF,MAAM,YAAA,GAAA,IAAA,KAA0B;GAC5B;IACI,aAAa;IACb,OAAO;IACP,OAAO;IACP,MAAM;IACT;GACD;IACI,aAAa;IACb,OAAO;IACP,YAAY,CAAC;KACT,KAAK;KACL,OAAM;KACN,OAAO;KACV,EACD;KACI,KAAK;KACL,OAAM;KACN,OAAO;KACV,CAAC;IACL;GACD;IACI,aAAa;IACb,OAAO;IACP,aAAa;IAChB;GACD;IACI,aAAa;IACb,OAAO;IACP,aAAa;IAChB;GACD;IACI,aAAa;IACb,OAAO;IACP,aAAa;IAChB;GACD,EACI,aAAa,WAChB;GACD;IACI,aAAa;IACb,OAAO;IACP,aAAa;IACjB;GACH,CAAC;AAEF,WAAa,EACT,UACH,CAAA;;;;;;;;;;;qDAxFiB,wBAAA,EApHD,OAAM,eAAa,EAAA;oCAMpB;0BAAA,kBAAA,MAAA;sCAFE,CAAA,OAAA,OAAA,OAAA,MAAA,GAAA,IAAA,oBAAA,OAAA,MAFD,gBAEL,GAAA,IAAA,GAAA,IAAA,aACa,qBAAA,CAAA,CAAA;;;KAGJ,QAAA,mBAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,aAYL,kBAAA,EAAA,KAAA,GAAA,EAAA;sCADI,EAAA,GAAA,IAAA,aAAA,kBAAA,EATJ,MAAK,MAAI,EAAA;uCAGuC,GAAA,GAAA,IAAA,WAAA,KAAA,GAAA,GAAA,IAAA,oBAKxC,IAAA,UAAA,OAAA,GAAA,IAAA,YAL+B,SAAA,QAA3B,iBAAiB,UAAK;0DAK1B,kBAAA;SAJH,KAAK;SACN,OAAM;;yCAEqB,EAAA,GAAA,IAAA,kBAAA,GAAA,IAAA,iBAAxB,gBAAgB,MAAK,EAAA,EAAA,CAAA,CAAA;;;;;;;;0BAO5B,kBAAA,MAAA;sCADS,EAAA,GAAA,IAAA,aAAA,qBAAA,CAAA,CAAA;;;4DA4FT,IAAA,UAAA,OAAA,GAAA,IAAA,YAxF+B,SAAA,QAA3B,iBAAiB,UAAK;wDAwF1B,kBAAA,EAvFH,KAAK,OAAK,EAAA;uCAQH;QALE,gBAAgB,YAAY,cAAa,UAAA,KAAA,MAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,aAK3C,kBAAA;;SAJJ,MAAK;SACL,OAAM;;yCAEO,EAAA,GAAA,IAAA,aAAA,qBAAA,CAAA,CAAA;;;QAGP,gBAAgB,YAAY,cAAa,QAAA,KAAA,MAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,aAe3C,kBAAA;;SAdJ,MAAK;SACL,OAAM;;yCAYU,EAAA,GAAA,IAAA,aAAA,0BAAA;sBATH,gBAAgB;6DAAA,QAAK;UAC7B,gBAAc;;0CAG4B,GAAA,GAAA,IAAA,WAAA,KAAA,GAAA,GAAA,IAAA,oBAIzC,IAAA,UAAA,OAAA,GAAA,IAAA,YAJc,gBAAgB,aAArB,MAAC;6DAIV,oBAAA;YAHG,KAAK,EAAE;YACP,OAAK,GAAK,EAAE;YACZ,OAAO,EAAE;;;;;;;QAKZ,gBAAgB,YAAY,cAAa,YAAA,KAAA,MAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,aAW3C,kBAAA;;SAVJ,MAAK;SACL,OAAM;;yCAQJ,EAAA,GAAA,IAAA,aAAA,yBAAA;sBALW,gBAAgB;6DAAA,QAAK;UAC7B,OAAO,gBAAgB;UACxB,UAAA;UACC,MAAM,gBAAgB;UACvB,mBAAA;;;;;;;;;QAIE,gBAAgB,YAAY,cAAa,WAAA,KAAA,MAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,aAc3C,kBAAA;;SAbJ,MAAK;SACL,OAAM;;yCAWO,EAAA,GAAA,IAAA,aAAA,uBAAA;sBARA,gBAAgB;6DAAA,QAAK;UAC7B,gBAAc;;UAEJ,QAAA,GAAA,IAAA,eAGD,EAAA,GAAA,IAAA,oBAAA,OAFN,aAAA,GAAA,IAAA,iBACO,gBAAgB,YAAW,EAAA,EAAA,CAAA,CAAA;;;;;QAMpC,gBAAgB,YAAY,cAAa,SAAA,KAAA,MAAA,GAAA,IAAA,YAAA,GAAA,GAAA,IAAA,aA8B3C,kBAAA;;SA7BJ,MAAK;SACL,OAAM;SACN,OAAA,EAAA,WAAA,cAA4B;;yCAItB,EAAA,GAAA,IAAA,oBAAA,OAFN,aAAA,GAAA,IAAA,iBACO,gBAAgB,YAAW,EAAA,EAAA,GAAA,GAAA,IAAA,aAuBvB,qBAAA;sBApBG,gBAAgB;6DAAA,QAAK;UAC/B,OAAM;UACN,KAAI;UACJ,KAAI;UACJ,MAAK;UACL,cAAW;UACX,aAAU;UACV,gBAAA;;UAEW,SAAA,GAAA,IAAA,eASL,EAAA,GAAA,IAAA,aAAA,yBAAA;uBAPW,gBAAgB;8DAAA,QAAK;WAC9B,gBAAA;WACA,eAAA;WACA,SAAQ;WACR,MAAK;WACL,OAAA,EAAA,SAAA,SAAoB;WACpB,SAAQ"}
|
|
1
|
+
{"version":3,"file":"stsuxvue.cjs","names":["getPrototypeOf","getGlobal","ANSI_BACKGROUND_OFFSET","wrapAnsi16","wrapAnsi256","wrapAnsi16m","styles","foregroundColorNames","backgroundColorNames","assembleStyles","ansiStyles","level","colorSupport","supportsColor","stringReplaceAll","stringEncaseCRLFWithFirstIndex","stdoutColor","stderrColor","supportsColor","GENERATOR","STYLER","IS_EMPTY","levelMapping","styles","applyOptions","chalkFactory","createChalk","ansiStyles","createBuilder","createStyler","getModelAnsi","proto","applyStyle","stringReplaceAll","stringEncaseCRLFWithFirstIndex","chalk","isFunction","utils","utils","encode","utils","utils","platform","platform","utils","utils","utils","transitionalDefaults","platform","utils","utils","parseHeaders","utils","platform","platform","utils","utils","utils","platform","isURLSameOrigin","cookies","resolveConfig","transitionalDefaults","utils","platform","utils","utils","ReadableStream","TextEncoder","platform","resolveConfig","xhrAdapter","fetchAdapter.getFetch","utils","adapters","validators","validator","utils","transitionalDefaults","utils","utils","adapters","__commonJSMin","import_tiny_emitter","#name","#logger","#reconnectTimeout","#agentManager","#address","#authToken","#socketIoCustomPath","#socket","#EstablishSocketConnect","isNode","#options","#label","#data","#serviceModel","#agentModel","#lambdaModel","#LogDebugMessage","#LogErrorMessage","#RemoveKeepAlive","#AddKeepAlive","#currentSubscriptions","#InvokeRESTAPI","isNode","STSAxiosConfig","#GetData","#SetupTimeout","#socketSubscribeKeepAlive","#id","defaultLogger","native"],"sources":["../src/stores/modelStore.ts","../src/commonTypes.ts","../src/components/UXBarChart.vue","../src/components/UXBarChart.vue","../src/components/UXLineChart.vue","../src/components/UXLineChart.vue","../src/components/UXMultiBarChart.vue","../src/components/UXMultiBarChart.vue","../src/components/UXRadialChart.vue","../src/components/UXRadialChart.vue","../node_modules/ansi-to-html/node_modules/entities/lib/maps/entities.json","../node_modules/ansi-to-html/node_modules/entities/lib/maps/legacy.json","../node_modules/ansi-to-html/node_modules/entities/lib/maps/xml.json","../node_modules/ansi-to-html/node_modules/entities/lib/maps/decode.json","../node_modules/ansi-to-html/node_modules/entities/lib/decode_codepoint.js","../node_modules/ansi-to-html/node_modules/entities/lib/decode.js","../node_modules/ansi-to-html/node_modules/entities/lib/encode.js","../node_modules/ansi-to-html/node_modules/entities/lib/index.js","../node_modules/ansi-to-html/lib/ansi_to_html.js","../node_modules/dompurify/dist/purify.es.mjs","../src/components/UXModelInstrumentAgentCommon.vue","../src/components/UXModelInstrumentAgentCommon.vue","../node_modules/chalk/source/vendor/ansi-styles/index.js","../node_modules/chalk/source/vendor/supports-color/browser.js","../node_modules/chalk/source/utilities.js","../node_modules/chalk/source/index.js","../src/components/UXModelInstrumentServiceCommon.vue","../src/components/UXModelInstrumentServiceCommon.vue","../src/components/UXModelInstrumentServiceSmall.vue","../src/components/UXModelInstrumentServiceSmall.vue","../src/components/UXModelNode.vue","../src/components/UXModelNode.vue","../node_modules/tiny-emitter/index.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/@nsshunt/stssocketioutils/dist/tiny-emitter-DB59cw42.js","../node_modules/@nsshunt/stssocketioutils/dist/index.mjs","../node_modules/@nsshunt/stsinstrumentmanagerclient/dist/index.mjs","../node_modules/uuid/dist/stringify.js","../node_modules/uuid/dist/rng.js","../node_modules/uuid/dist/native.js","../node_modules/uuid/dist/v4.js","../src/components/UXModelNavigator.vue","../src/components/UXModelNavigator.vue","../src/components/UXTestForm.vue","../src/components/UXTestForm.vue"],"sourcesContent":["/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { defineStore } from 'pinia'\nimport _cloneDeep from 'lodash.clonedeep'\n\nimport { type ISubscriptionKey } from '@nsshunt/stsinstrumentmanagerclient'\nimport { type JSONObject } from '@nsshunt/stsutils'\n\n//import { ObservabilitySubscriberManager } from './../plugins/observabilitySubscriberManager'\n\n// https://pinia.vuejs.org/\n// https://seb-l.github.io/pinia-plugin-persist/\n\nexport interface IModelMeta {\n\tdetailView: boolean\n}\n\nexport interface IModelStore {\n serviceModel: JSONObject\n agentModel: JSONObject\n modelMeta: Record<string, IModelMeta>\n serviceModelSubscriptionKey: ISubscriptionKey | null\n agentModelSubscriptionKey: ISubscriptionKey | null\n friendlyName: Record<string, string>\n friendNameIndex: number\n state: string\n}\nexport interface IModelStores {\n _models: Record<string, IModelStore>\n _state: Record<string, string>\n //_observabilitySubscriberManager: Record<string, ObservabilitySubscriberManager | null>\n}\n\nexport enum _estate {\n IDLE = \"idle\",\n STARTING = \"starting\",\n STARTED = \"started\",\n STOPPING = \"stopping\",\n DELAYED_START = \"delayed_start\"\n}\n\nexport const ModelStore = defineStore('__sts__ModelStore', {\n // State\n // https://pinia.vuejs.org/core-concepts/state.html\n state: (): IModelStores => {\n return {\n _models: { },\n _state: { },\n //_observabilitySubscriberManager: { }\n };\n /*\n serviceModel: { },\n agentModel: { },\n modelMeta: { },\n serviceModelSubscriptionKey: null,\n agentModelSubscriptionKey: null,\n friendlyName: { },\n friendNameIndex: 1\n */\n },\n\n // Getters\n // https://pinia.vuejs.org/core-concepts/getters.html\n\n // Actions\n // https://pinia.vuejs.org/core-concepts/actions.html\n actions: {\n /*\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n UpdateModel(model: MasterModel): void {\n //this.masterModel.serviceModel = _cloneDeep(model.serviceModel.model);\n //this.masterModel.agentModel = _cloneDeep(model.agentModel.model);\n },\n UpdateLogDataDirect(modeNode: any, logData: string[]): void {\n if (modeNode.instruments) {\n modeNode.instruments[Gauge.LOGGER] = {\n '_': 'd',\n val: _cloneDeep(logData)\n } as any\n modeNode.instruments[Gauge.LOGGER_COPY] = {\n '_': 'd',\n val: _cloneDeep(logData)\n } as any\n }\n },\n UpdateLogData(modeNode: any, logData: string[]): void {\n this.UpdateLogDataDirect(modeNode, [ ]);\n if (modeNode.instruments && modeNode.children) {\n for (const [k, v] of Object.entries(modeNode.children) as any) {\n this.UpdateLogDataDirect(v, [ ]);\n }\n }\n },\n UpdateModelEx(model: ModelNode): void {\n try {\n this.model = _cloneDeep((model as any).data);\n if (!this.model.context?.serviceInstanceId) {\n // Remove aggregated logs (legacy instruments when logs part of payload) for non serviceInstanceId 'levels'\n this.UpdateLogData(this.model, [ ]);\n }\n } catch (error) {\n console.error(chalk.red(`${error}`));\n //console.error(chalk.red(`${JSON.stringify(this.model)}`));\n }\n },\n UpdateModelLogs(nodeId: string, logMessages: string[]): void {\n const topicSplit = nodeId.split('_');\n const serviceInstanceId = `${topicSplit[0]}@${topicSplit[1]}`;\n const serviceInstanceProcessId = `${topicSplit[2]}@${topicSplit[3]}`;\n\n //topic = (serviceInstanceId + '_' + serviceInstanceProcessId).replace(/@/g, '_');\n if (this.model.children) {\n for (const [k, v] of Object.entries(this.model.children) as any) {\n if (v.context.serviceInstanceId.localeCompare(serviceInstanceId) === 0) {\n if (v.context.serviceInstanceProcessId.localeCompare(serviceInstanceProcessId) === 0) {\n this.UpdateLogDataDirect(v, logMessages);\n }\n }\n }\n }\n },\n */\n\n GetSate(modelId: string): string {\n if (!this._state[modelId]) {\n this._state[modelId] = _estate.IDLE\n }\n return this._state[modelId];\n },\n\n UpdateSate(modelId: string, newSate: string): void {\n this._state[modelId] = newSate;\n },\n\n /*\n UpdateObservabilitySubscriberManager(modelId: string, observabilitySubscriberManager: ObservabilitySubscriberManager | null): void {\n if (observabilitySubscriberManager === null) {\n delete this._observabilitySubscriberManager[modelId];\n } else {\n this._observabilitySubscriberManager[modelId] = observabilitySubscriberManager;\n }\n },\n */\n\n SetupNewModelId(modelId: string): void {\n this._models[modelId] = {\n serviceModel: { },\n agentModel: { },\n modelMeta: { },\n serviceModelSubscriptionKey: null,\n agentModelSubscriptionKey: null,\n friendlyName: { },\n friendNameIndex: 1,\n state: 'idle'\n };\n },\n\n UpdateServiceModel(modelId: string, model: JSONObject, subscriptionKey: ISubscriptionKey): void {\n try {\n if (!this._models[modelId]) {\n this.SetupNewModelId(modelId);\n }\n this._models[modelId].serviceModel = _cloneDeep(model);\n this._models[modelId].serviceModelSubscriptionKey = subscriptionKey;\n } catch (error) {\n console.error(error);\n }\n },\n\n UpdateAgentModel(modelId: string, model: JSONObject, subscriptionKey: ISubscriptionKey): void {\n if (!this._models[modelId]) {\n this.SetupNewModelId(modelId);\n }\n this._models[modelId].agentModel = _cloneDeep(model);\n this._models[modelId].agentModelSubscriptionKey = subscriptionKey;\n //console.log(`agentModel: ${this.agentModel}`);\n //console.log(`agentModelSubscriptionKey: ${JSON.stringify(this.agentModelSubscriptionKey)}`);\n },\n\n GetFriendName(modelId: string, id: string): string {\n try {\n if (!this._models[modelId]) {\n this.SetupNewModelId(modelId);\n }\n if (!this._models[modelId].friendlyName[id]) {\n this._models[modelId].friendlyName[id] = `FN${this._models[modelId].friendNameIndex++}@${id.split('@')[1]}`;\n }\n return this._models[modelId].friendlyName[id];\n } catch (error) {\n return `Error: ${error}`\n }\n }\n }\n});\n","export const URI_BASE_STSUXVUE: string = '/';\n\nexport interface IRadioGroupElement {\n key: string\n label: string\n value: string\n}\n\nexport interface IFormDataElement {\n elementType: string\n model?: string | number | boolean\n label?: string\n hint?: string\n description?: string\n radioGroup?: IRadioGroupElement[]\n}\n\nexport type IFormData = IFormDataElement[];\n\nexport interface IObservabilitySubscriberManagerOptions {\n modelId: string\n consumeInstrumentationMode: string\n instrumentManagerEndpoint: string\n instrumentManagerPort: string\n instrumentManagerAPIRoot: string\n}\n","<script setup lang=\"ts\">\nimport { ref, defineAsyncComponent } from 'vue'\n\n//import VueApexCharts from 'vue3-apexcharts'\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n//const VueApexCharts = () => import('vue3-apexcharts')\n\nconst series = [{\n name: 'Duration (ms)',\n data: [0, 0, 0, 0, 0, 0, 0]\n}, {\n name: 'Latency (ms)',\n data: [0, 0, 0, 0, 0, 0, 0]\n}]\n\nconst options = {\n chart: {\n type: 'bar',\n height: 350,\n animations: {\n enabled: false\n },\n toolbar: {\n show: false\n },\n },\n plotOptions: {\n bar: {\n horizontal: false,\n columnWidth: '55%',\n endingShape: 'rounded'\n },\n },\n dataLabels: {\n enabled: false\n },\n stroke: {\n show: true,\n width: 2,\n colors: ['transparent']\n },\n xaxis: {\n categories: ['10', '20', '50', '100', '1000', '5000', 'EE'],\n },\n yaxis: {\n title: {\n text: 'count'\n }\n },\n fill: {\n opacity: 1\n },\n tooltip: {\n enabled: false,\n y: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formatter: function (val: any) {\n return \"$ \" + val + \" thousands\"\n }\n }\n }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any \n} as any\n\nconst barChart = ref(null);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst UpdateGraph = (durationSeries: any[], latencySeries: any[]) => {\n series[0].data = durationSeries.map((v) => v[0]);\n series[1].data = latencySeries.map((v) => v[0]);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (barChart.value as any).updateSeries(series, true);\n}\n\ndefineExpose({\n UpdateGraph\n})\n\n</script>\n \n<template>\n <div>\n <VueApexCharts\n ref=\"barChart\"\n height=\"250\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, defineAsyncComponent } from 'vue'\n\n//import VueApexCharts from 'vue3-apexcharts'\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n//const VueApexCharts = () => import('vue3-apexcharts')\n\nconst series = [{\n name: 'Duration (ms)',\n data: [0, 0, 0, 0, 0, 0, 0]\n}, {\n name: 'Latency (ms)',\n data: [0, 0, 0, 0, 0, 0, 0]\n}]\n\nconst options = {\n chart: {\n type: 'bar',\n height: 350,\n animations: {\n enabled: false\n },\n toolbar: {\n show: false\n },\n },\n plotOptions: {\n bar: {\n horizontal: false,\n columnWidth: '55%',\n endingShape: 'rounded'\n },\n },\n dataLabels: {\n enabled: false\n },\n stroke: {\n show: true,\n width: 2,\n colors: ['transparent']\n },\n xaxis: {\n categories: ['10', '20', '50', '100', '1000', '5000', 'EE'],\n },\n yaxis: {\n title: {\n text: 'count'\n }\n },\n fill: {\n opacity: 1\n },\n tooltip: {\n enabled: false,\n y: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formatter: function (val: any) {\n return \"$ \" + val + \" thousands\"\n }\n }\n }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any \n} as any\n\nconst barChart = ref(null);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst UpdateGraph = (durationSeries: any[], latencySeries: any[]) => {\n series[0].data = durationSeries.map((v) => v[0]);\n series[1].data = latencySeries.map((v) => v[0]);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (barChart.value as any).updateSeries(series, true);\n}\n\ndefineExpose({\n UpdateGraph\n})\n\n</script>\n \n<template>\n <div>\n <VueApexCharts\n ref=\"barChart\"\n height=\"250\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { reactive, defineAsyncComponent } from 'vue'\n//import ApexCharts, { type ApexOptions } from \"apexcharts\";\n\n//import VueApexCharts from 'vue3-apexcharts'\n//const VueApexCharts = () => import('vue3-apexcharts')\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\nlet interval = 0;\n\ninterface dataPoint {\n x: number\n y: number\n}\ninterface series {\n data: dataPoint[]\n}\n\nconst series: series[] = reactive([ { data: [ ] } ]);\n\nconst UpdateGraph = (val: number) => {\n series[0].data.push({\n x: interval++,\n y: val\n });\n if (series[0].data.length > 50) {\n series[0].data.shift();\n }\n}\n\nconst options = {\n chart: {\n id: 'realtime',\n height: 50,\n type: 'area',\n animations: {\n enabled: false,\n easing: 'linear',\n dynamicAnimation: {\n speed: 1000\n }\n },\n toolbar: {\n show: false\n },\n zoom: {\n enabled: false\n },\n sparkline: {\n enabled: false,\n }\n },\n dataLabels: {\n enabled: false\n },\n stroke: {\n curve: 'smooth',\n width: 3,\n colors: [ '#6e1db5' ]\n },\n markers: {\n size: 0\n },\n fill: {\n //colors: ['#BDD5F5'],\n //gradientToColors: ['#EE2A17'],\n type: \"gradient\",\n gradient: {\n shadeIntensity: 1,\n opacityFrom: 0.7,\n opacityTo: 0.9,\n stops: [0, 100, 100]\n }\n }, \n tooltip: {\n enabled: false,\n },\n xaxis: {\n //type: \"datetime\",\n //range: 777600000\n type: \"numeric\",\n range: 25,\n tickAmount: 8,\n labels: {\n show: false\n }\n }, \n yaxis: {\n min: 0,\n //max: 100,\n tickAmount: 5,\n labels: {\n formatter: function(val: any, index: any) {\n return val.toFixed(2);\n }\n }\n },\n legend: {\n show: false\n }\n \n} as any\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n \n<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"250\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { reactive, defineAsyncComponent } from 'vue'\n//import ApexCharts, { type ApexOptions } from \"apexcharts\";\n\n//import VueApexCharts from 'vue3-apexcharts'\n//const VueApexCharts = () => import('vue3-apexcharts')\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\nlet interval = 0;\n\ninterface dataPoint {\n x: number\n y: number\n}\ninterface series {\n data: dataPoint[]\n}\n\nconst series: series[] = reactive([ { data: [ ] } ]);\n\nconst UpdateGraph = (val: number) => {\n series[0].data.push({\n x: interval++,\n y: val\n });\n if (series[0].data.length > 50) {\n series[0].data.shift();\n }\n}\n\nconst options = {\n chart: {\n id: 'realtime',\n height: 50,\n type: 'area',\n animations: {\n enabled: false,\n easing: 'linear',\n dynamicAnimation: {\n speed: 1000\n }\n },\n toolbar: {\n show: false\n },\n zoom: {\n enabled: false\n },\n sparkline: {\n enabled: false,\n }\n },\n dataLabels: {\n enabled: false\n },\n stroke: {\n curve: 'smooth',\n width: 3,\n colors: [ '#6e1db5' ]\n },\n markers: {\n size: 0\n },\n fill: {\n //colors: ['#BDD5F5'],\n //gradientToColors: ['#EE2A17'],\n type: \"gradient\",\n gradient: {\n shadeIntensity: 1,\n opacityFrom: 0.7,\n opacityTo: 0.9,\n stops: [0, 100, 100]\n }\n }, \n tooltip: {\n enabled: false,\n },\n xaxis: {\n //type: \"datetime\",\n //range: 777600000\n type: \"numeric\",\n range: 25,\n tickAmount: 8,\n labels: {\n show: false\n }\n }, \n yaxis: {\n min: 0,\n //max: 100,\n tickAmount: 5,\n labels: {\n formatter: function(val: any, index: any) {\n return val.toFixed(2);\n }\n }\n },\n legend: {\n show: false\n }\n \n} as any\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n \n<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"250\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n","<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"100\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n style=\"background: red\"\n />\n </div>\n</template>\n \n<script setup lang=\"ts\">\nimport { defineAsyncComponent } from 'vue'\n\nimport type { JSONObject } from '@nsshunt/stsutils';\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst props = defineProps<{ \n series: JSONObject[]\n labels: string[]\n }>();\n\nconst UpdateGraph = () => {\n\n /*\n series[0] = (activeRequests / maxNum) * 100.0;\n series[1] = (TCPConnecitons / maxNum) * 100.0;\n series[2] = (connectionPoolTotal / maxNum) * 100.0;\n\n labels[0] = `AR: ${activeRequests}`;\n labels[1] = `TCP: ${TCPConnecitons}`;\n labels[2] = `Pool: ${connectionPoolTotal}`;\n\n //console.log(series);\n */\n}\n\nconst options = {\n chart: {\n id: 'multibarrealtime',\n //height: 0,\n type: 'bar',\n animations: {\n enabled: false\n } ,\n toolbar: {\n show: false\n },\n offsetX: 0,\n offsetY: 0,\n parentHeightOffset: 0\n },\n plotOptions: {\n bar: {\n barHeight: '100%',\n distributed: true,\n horizontal: true,\n /*\n dataLabels: {\n position: 'left',\n }\n */\n }\n },\n colors: ['#eba834', '#34b1eb', '#6beb34'],\n dataLabels: {\n enabled: true,\n textAnchor: 'start',\n //distributed: true,\n style: {\n colors: ['#fff']\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n formatter: function (val: any, opt: any) {\n //return opt.w.globals.labels[opt.dataPointIndex] + \": \" + val\n return val;\n },\n offsetX: -10,\n offsetY: 0,\n dropShadow: {\n enabled: true\n }\n },\n stroke: {\n width: 1,\n colors: ['#fff']\n },\n xaxis: {\n categories: ['AR', 'TCP', 'Pool'],\n },\n yaxis: {\n labels: {\n show: true\n }\n },\n legend: {\n show: false\n },\n tooltip: {\n enabled: false\n },\n grid: {\n show: true,\n padding: {\n top: -20,\n right: 20,\n bottom: -5,\n left: 5\n }, \n }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n} as any\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n","<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"100\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n style=\"background: red\"\n />\n </div>\n</template>\n \n<script setup lang=\"ts\">\nimport { defineAsyncComponent } from 'vue'\n\nimport type { JSONObject } from '@nsshunt/stsutils';\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst props = defineProps<{ \n series: JSONObject[]\n labels: string[]\n }>();\n\nconst UpdateGraph = () => {\n\n /*\n series[0] = (activeRequests / maxNum) * 100.0;\n series[1] = (TCPConnecitons / maxNum) * 100.0;\n series[2] = (connectionPoolTotal / maxNum) * 100.0;\n\n labels[0] = `AR: ${activeRequests}`;\n labels[1] = `TCP: ${TCPConnecitons}`;\n labels[2] = `Pool: ${connectionPoolTotal}`;\n\n //console.log(series);\n */\n}\n\nconst options = {\n chart: {\n id: 'multibarrealtime',\n //height: 0,\n type: 'bar',\n animations: {\n enabled: false\n } ,\n toolbar: {\n show: false\n },\n offsetX: 0,\n offsetY: 0,\n parentHeightOffset: 0\n },\n plotOptions: {\n bar: {\n barHeight: '100%',\n distributed: true,\n horizontal: true,\n /*\n dataLabels: {\n position: 'left',\n }\n */\n }\n },\n colors: ['#eba834', '#34b1eb', '#6beb34'],\n dataLabels: {\n enabled: true,\n textAnchor: 'start',\n //distributed: true,\n style: {\n colors: ['#fff']\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n formatter: function (val: any, opt: any) {\n //return opt.w.globals.labels[opt.dataPointIndex] + \": \" + val\n return val;\n },\n offsetX: -10,\n offsetY: 0,\n dropShadow: {\n enabled: true\n }\n },\n stroke: {\n width: 1,\n colors: ['#fff']\n },\n xaxis: {\n categories: ['AR', 'TCP', 'Pool'],\n },\n yaxis: {\n labels: {\n show: true\n }\n },\n legend: {\n show: false\n },\n tooltip: {\n enabled: false\n },\n grid: {\n show: true,\n padding: {\n top: -20,\n right: 20,\n bottom: -5,\n left: 5\n }, \n }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n} as any\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n","<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"140\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n \n<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent } from 'vue'\n\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\n \nconst props = defineProps<{ \n series: number[],\n labels: string[]\n }>();\n\nconst UpdateGraph = () => {\n\n /*\n series[0] = (activeRequests / maxNum) * 100.0;\n series[1] = (TCPConnecitons / maxNum) * 100.0;\n series[2] = (connectionPoolTotal / maxNum) * 100.0;\n\n labels[0] = `AR: ${activeRequests}`;\n labels[1] = `TCP: ${TCPConnecitons}`;\n labels[2] = `Pool: ${connectionPoolTotal}`;\n\n //console.log(series);\n */\n}\n\nconst options = computed(() => {\n return {\n chart: {\n id: 'realtime',\n //height: 0,\n type: 'radialBar'\n },\n plotOptions: {\n radialBar: {\n offsetY: 0,\n startAngle: 0,\n endAngle: 270,\n hollow: {\n margin: 5,\n size: '30%',\n background: 'transparent',\n image: undefined,\n },\n dataLabels: {\n name: {\n show: false,\n },\n value: {\n show: false,\n }\n }\n }\n },\n colors: ['#eba834', '#34b1eb', '#6beb34'],\n labels: props.labels,\n legend: {\n show: true,\n floating: true,\n fontSize: '14px',\n position: 'left',\n offsetX: 180,\n offsetY: 6,\n labels: {\n useSeriesColors: true,\n },\n markers: {\n size: 0\n },\n //formatter: function(seriesName: string, opts: JSONObject) {\n //return seriesName + \": \" + opts.w.globals.series[opts.seriesIndex]\n //},\n itemMargin: {\n vertical: 0\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any\n});\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n","<template>\n <div>\n <VueApexCharts\n ref=\"chart\"\n height=\"140\"\n width=\"100%\"\n :options=\"options\"\n :series=\"series\"\n />\n </div>\n</template>\n \n<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent } from 'vue'\n\nconst VueApexCharts = defineAsyncComponent(() => import(\"vue3-apexcharts\"));\n\n \nconst props = defineProps<{ \n series: number[],\n labels: string[]\n }>();\n\nconst UpdateGraph = () => {\n\n /*\n series[0] = (activeRequests / maxNum) * 100.0;\n series[1] = (TCPConnecitons / maxNum) * 100.0;\n series[2] = (connectionPoolTotal / maxNum) * 100.0;\n\n labels[0] = `AR: ${activeRequests}`;\n labels[1] = `TCP: ${TCPConnecitons}`;\n labels[2] = `Pool: ${connectionPoolTotal}`;\n\n //console.log(series);\n */\n}\n\nconst options = computed(() => {\n return {\n chart: {\n id: 'realtime',\n //height: 0,\n type: 'radialBar'\n },\n plotOptions: {\n radialBar: {\n offsetY: 0,\n startAngle: 0,\n endAngle: 270,\n hollow: {\n margin: 5,\n size: '30%',\n background: 'transparent',\n image: undefined,\n },\n dataLabels: {\n name: {\n show: false,\n },\n value: {\n show: false,\n }\n }\n }\n },\n colors: ['#eba834', '#34b1eb', '#6beb34'],\n labels: props.labels,\n legend: {\n show: true,\n floating: true,\n fontSize: '14px',\n position: 'left',\n offsetX: 180,\n offsetY: 6,\n labels: {\n useSeriesColors: true,\n },\n markers: {\n size: 0\n },\n //formatter: function(seriesName: string, opts: JSONObject) {\n //return seriesName + \": \" + opts.w.globals.series[opts.seriesIndex]\n //},\n itemMargin: {\n vertical: 0\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any\n});\n\ndefineExpose({\n UpdateGraph\n})\n</script>\n","{\"Aacute\":\"Á\",\"aacute\":\"á\",\"Abreve\":\"Ă\",\"abreve\":\"ă\",\"ac\":\"∾\",\"acd\":\"∿\",\"acE\":\"∾̳\",\"Acirc\":\"Â\",\"acirc\":\"â\",\"acute\":\"´\",\"Acy\":\"А\",\"acy\":\"а\",\"AElig\":\"Æ\",\"aelig\":\"æ\",\"af\":\"\",\"Afr\":\"𝔄\",\"afr\":\"𝔞\",\"Agrave\":\"À\",\"agrave\":\"à\",\"alefsym\":\"ℵ\",\"aleph\":\"ℵ\",\"Alpha\":\"Α\",\"alpha\":\"α\",\"Amacr\":\"Ā\",\"amacr\":\"ā\",\"amalg\":\"⨿\",\"amp\":\"&\",\"AMP\":\"&\",\"andand\":\"⩕\",\"And\":\"⩓\",\"and\":\"∧\",\"andd\":\"⩜\",\"andslope\":\"⩘\",\"andv\":\"⩚\",\"ang\":\"∠\",\"ange\":\"⦤\",\"angle\":\"∠\",\"angmsdaa\":\"⦨\",\"angmsdab\":\"⦩\",\"angmsdac\":\"⦪\",\"angmsdad\":\"⦫\",\"angmsdae\":\"⦬\",\"angmsdaf\":\"⦭\",\"angmsdag\":\"⦮\",\"angmsdah\":\"⦯\",\"angmsd\":\"∡\",\"angrt\":\"∟\",\"angrtvb\":\"⊾\",\"angrtvbd\":\"⦝\",\"angsph\":\"∢\",\"angst\":\"Å\",\"angzarr\":\"⍼\",\"Aogon\":\"Ą\",\"aogon\":\"ą\",\"Aopf\":\"𝔸\",\"aopf\":\"𝕒\",\"apacir\":\"⩯\",\"ap\":\"≈\",\"apE\":\"⩰\",\"ape\":\"≊\",\"apid\":\"≋\",\"apos\":\"'\",\"ApplyFunction\":\"\",\"approx\":\"≈\",\"approxeq\":\"≊\",\"Aring\":\"Å\",\"aring\":\"å\",\"Ascr\":\"𝒜\",\"ascr\":\"𝒶\",\"Assign\":\"≔\",\"ast\":\"*\",\"asymp\":\"≈\",\"asympeq\":\"≍\",\"Atilde\":\"Ã\",\"atilde\":\"ã\",\"Auml\":\"Ä\",\"auml\":\"ä\",\"awconint\":\"∳\",\"awint\":\"⨑\",\"backcong\":\"≌\",\"backepsilon\":\"϶\",\"backprime\":\"‵\",\"backsim\":\"∽\",\"backsimeq\":\"⋍\",\"Backslash\":\"∖\",\"Barv\":\"⫧\",\"barvee\":\"⊽\",\"barwed\":\"⌅\",\"Barwed\":\"⌆\",\"barwedge\":\"⌅\",\"bbrk\":\"⎵\",\"bbrktbrk\":\"⎶\",\"bcong\":\"≌\",\"Bcy\":\"Б\",\"bcy\":\"б\",\"bdquo\":\"„\",\"becaus\":\"∵\",\"because\":\"∵\",\"Because\":\"∵\",\"bemptyv\":\"⦰\",\"bepsi\":\"϶\",\"bernou\":\"ℬ\",\"Bernoullis\":\"ℬ\",\"Beta\":\"Β\",\"beta\":\"β\",\"beth\":\"ℶ\",\"between\":\"≬\",\"Bfr\":\"𝔅\",\"bfr\":\"𝔟\",\"bigcap\":\"⋂\",\"bigcirc\":\"◯\",\"bigcup\":\"⋃\",\"bigodot\":\"⨀\",\"bigoplus\":\"⨁\",\"bigotimes\":\"⨂\",\"bigsqcup\":\"⨆\",\"bigstar\":\"★\",\"bigtriangledown\":\"▽\",\"bigtriangleup\":\"△\",\"biguplus\":\"⨄\",\"bigvee\":\"⋁\",\"bigwedge\":\"⋀\",\"bkarow\":\"⤍\",\"blacklozenge\":\"⧫\",\"blacksquare\":\"▪\",\"blacktriangle\":\"▴\",\"blacktriangledown\":\"▾\",\"blacktriangleleft\":\"◂\",\"blacktriangleright\":\"▸\",\"blank\":\"␣\",\"blk12\":\"▒\",\"blk14\":\"░\",\"blk34\":\"▓\",\"block\":\"█\",\"bne\":\"=⃥\",\"bnequiv\":\"≡⃥\",\"bNot\":\"⫭\",\"bnot\":\"⌐\",\"Bopf\":\"𝔹\",\"bopf\":\"𝕓\",\"bot\":\"⊥\",\"bottom\":\"⊥\",\"bowtie\":\"⋈\",\"boxbox\":\"⧉\",\"boxdl\":\"┐\",\"boxdL\":\"╕\",\"boxDl\":\"╖\",\"boxDL\":\"╗\",\"boxdr\":\"┌\",\"boxdR\":\"╒\",\"boxDr\":\"╓\",\"boxDR\":\"╔\",\"boxh\":\"─\",\"boxH\":\"═\",\"boxhd\":\"┬\",\"boxHd\":\"╤\",\"boxhD\":\"╥\",\"boxHD\":\"╦\",\"boxhu\":\"┴\",\"boxHu\":\"╧\",\"boxhU\":\"╨\",\"boxHU\":\"╩\",\"boxminus\":\"⊟\",\"boxplus\":\"⊞\",\"boxtimes\":\"⊠\",\"boxul\":\"┘\",\"boxuL\":\"╛\",\"boxUl\":\"╜\",\"boxUL\":\"╝\",\"boxur\":\"└\",\"boxuR\":\"╘\",\"boxUr\":\"╙\",\"boxUR\":\"╚\",\"boxv\":\"│\",\"boxV\":\"║\",\"boxvh\":\"┼\",\"boxvH\":\"╪\",\"boxVh\":\"╫\",\"boxVH\":\"╬\",\"boxvl\":\"┤\",\"boxvL\":\"╡\",\"boxVl\":\"╢\",\"boxVL\":\"╣\",\"boxvr\":\"├\",\"boxvR\":\"╞\",\"boxVr\":\"╟\",\"boxVR\":\"╠\",\"bprime\":\"‵\",\"breve\":\"˘\",\"Breve\":\"˘\",\"brvbar\":\"¦\",\"bscr\":\"𝒷\",\"Bscr\":\"ℬ\",\"bsemi\":\"⁏\",\"bsim\":\"∽\",\"bsime\":\"⋍\",\"bsolb\":\"⧅\",\"bsol\":\"\\\\\",\"bsolhsub\":\"⟈\",\"bull\":\"•\",\"bullet\":\"•\",\"bump\":\"≎\",\"bumpE\":\"⪮\",\"bumpe\":\"≏\",\"Bumpeq\":\"≎\",\"bumpeq\":\"≏\",\"Cacute\":\"Ć\",\"cacute\":\"ć\",\"capand\":\"⩄\",\"capbrcup\":\"⩉\",\"capcap\":\"⩋\",\"cap\":\"∩\",\"Cap\":\"⋒\",\"capcup\":\"⩇\",\"capdot\":\"⩀\",\"CapitalDifferentialD\":\"ⅅ\",\"caps\":\"∩︀\",\"caret\":\"⁁\",\"caron\":\"ˇ\",\"Cayleys\":\"ℭ\",\"ccaps\":\"⩍\",\"Ccaron\":\"Č\",\"ccaron\":\"č\",\"Ccedil\":\"Ç\",\"ccedil\":\"ç\",\"Ccirc\":\"Ĉ\",\"ccirc\":\"ĉ\",\"Cconint\":\"∰\",\"ccups\":\"⩌\",\"ccupssm\":\"⩐\",\"Cdot\":\"Ċ\",\"cdot\":\"ċ\",\"cedil\":\"¸\",\"Cedilla\":\"¸\",\"cemptyv\":\"⦲\",\"cent\":\"¢\",\"centerdot\":\"·\",\"CenterDot\":\"·\",\"cfr\":\"𝔠\",\"Cfr\":\"ℭ\",\"CHcy\":\"Ч\",\"chcy\":\"ч\",\"check\":\"✓\",\"checkmark\":\"✓\",\"Chi\":\"Χ\",\"chi\":\"χ\",\"circ\":\"ˆ\",\"circeq\":\"≗\",\"circlearrowleft\":\"↺\",\"circlearrowright\":\"↻\",\"circledast\":\"⊛\",\"circledcirc\":\"⊚\",\"circleddash\":\"⊝\",\"CircleDot\":\"⊙\",\"circledR\":\"®\",\"circledS\":\"Ⓢ\",\"CircleMinus\":\"⊖\",\"CirclePlus\":\"⊕\",\"CircleTimes\":\"⊗\",\"cir\":\"○\",\"cirE\":\"⧃\",\"cire\":\"≗\",\"cirfnint\":\"⨐\",\"cirmid\":\"⫯\",\"cirscir\":\"⧂\",\"ClockwiseContourIntegral\":\"∲\",\"CloseCurlyDoubleQuote\":\"”\",\"CloseCurlyQuote\":\"’\",\"clubs\":\"♣\",\"clubsuit\":\"♣\",\"colon\":\":\",\"Colon\":\"∷\",\"Colone\":\"⩴\",\"colone\":\"≔\",\"coloneq\":\"≔\",\"comma\":\",\",\"commat\":\"@\",\"comp\":\"∁\",\"compfn\":\"∘\",\"complement\":\"∁\",\"complexes\":\"ℂ\",\"cong\":\"≅\",\"congdot\":\"⩭\",\"Congruent\":\"≡\",\"conint\":\"∮\",\"Conint\":\"∯\",\"ContourIntegral\":\"∮\",\"copf\":\"𝕔\",\"Copf\":\"ℂ\",\"coprod\":\"∐\",\"Coproduct\":\"∐\",\"copy\":\"©\",\"COPY\":\"©\",\"copysr\":\"℗\",\"CounterClockwiseContourIntegral\":\"∳\",\"crarr\":\"↵\",\"cross\":\"✗\",\"Cross\":\"⨯\",\"Cscr\":\"𝒞\",\"cscr\":\"𝒸\",\"csub\":\"⫏\",\"csube\":\"⫑\",\"csup\":\"⫐\",\"csupe\":\"⫒\",\"ctdot\":\"⋯\",\"cudarrl\":\"⤸\",\"cudarrr\":\"⤵\",\"cuepr\":\"⋞\",\"cuesc\":\"⋟\",\"cularr\":\"↶\",\"cularrp\":\"⤽\",\"cupbrcap\":\"⩈\",\"cupcap\":\"⩆\",\"CupCap\":\"≍\",\"cup\":\"∪\",\"Cup\":\"⋓\",\"cupcup\":\"⩊\",\"cupdot\":\"⊍\",\"cupor\":\"⩅\",\"cups\":\"∪︀\",\"curarr\":\"↷\",\"curarrm\":\"⤼\",\"curlyeqprec\":\"⋞\",\"curlyeqsucc\":\"⋟\",\"curlyvee\":\"⋎\",\"curlywedge\":\"⋏\",\"curren\":\"¤\",\"curvearrowleft\":\"↶\",\"curvearrowright\":\"↷\",\"cuvee\":\"⋎\",\"cuwed\":\"⋏\",\"cwconint\":\"∲\",\"cwint\":\"∱\",\"cylcty\":\"⌭\",\"dagger\":\"†\",\"Dagger\":\"‡\",\"daleth\":\"ℸ\",\"darr\":\"↓\",\"Darr\":\"↡\",\"dArr\":\"⇓\",\"dash\":\"‐\",\"Dashv\":\"⫤\",\"dashv\":\"⊣\",\"dbkarow\":\"⤏\",\"dblac\":\"˝\",\"Dcaron\":\"Ď\",\"dcaron\":\"ď\",\"Dcy\":\"Д\",\"dcy\":\"д\",\"ddagger\":\"‡\",\"ddarr\":\"⇊\",\"DD\":\"ⅅ\",\"dd\":\"ⅆ\",\"DDotrahd\":\"⤑\",\"ddotseq\":\"⩷\",\"deg\":\"°\",\"Del\":\"∇\",\"Delta\":\"Δ\",\"delta\":\"δ\",\"demptyv\":\"⦱\",\"dfisht\":\"⥿\",\"Dfr\":\"𝔇\",\"dfr\":\"𝔡\",\"dHar\":\"⥥\",\"dharl\":\"⇃\",\"dharr\":\"⇂\",\"DiacriticalAcute\":\"´\",\"DiacriticalDot\":\"˙\",\"DiacriticalDoubleAcute\":\"˝\",\"DiacriticalGrave\":\"`\",\"DiacriticalTilde\":\"˜\",\"diam\":\"⋄\",\"diamond\":\"⋄\",\"Diamond\":\"⋄\",\"diamondsuit\":\"♦\",\"diams\":\"♦\",\"die\":\"¨\",\"DifferentialD\":\"ⅆ\",\"digamma\":\"ϝ\",\"disin\":\"⋲\",\"div\":\"÷\",\"divide\":\"÷\",\"divideontimes\":\"⋇\",\"divonx\":\"⋇\",\"DJcy\":\"Ђ\",\"djcy\":\"ђ\",\"dlcorn\":\"⌞\",\"dlcrop\":\"⌍\",\"dollar\":\"$\",\"Dopf\":\"𝔻\",\"dopf\":\"𝕕\",\"Dot\":\"¨\",\"dot\":\"˙\",\"DotDot\":\"⃜\",\"doteq\":\"≐\",\"doteqdot\":\"≑\",\"DotEqual\":\"≐\",\"dotminus\":\"∸\",\"dotplus\":\"∔\",\"dotsquare\":\"⊡\",\"doublebarwedge\":\"⌆\",\"DoubleContourIntegral\":\"∯\",\"DoubleDot\":\"¨\",\"DoubleDownArrow\":\"⇓\",\"DoubleLeftArrow\":\"⇐\",\"DoubleLeftRightArrow\":\"⇔\",\"DoubleLeftTee\":\"⫤\",\"DoubleLongLeftArrow\":\"⟸\",\"DoubleLongLeftRightArrow\":\"⟺\",\"DoubleLongRightArrow\":\"⟹\",\"DoubleRightArrow\":\"⇒\",\"DoubleRightTee\":\"⊨\",\"DoubleUpArrow\":\"⇑\",\"DoubleUpDownArrow\":\"⇕\",\"DoubleVerticalBar\":\"∥\",\"DownArrowBar\":\"⤓\",\"downarrow\":\"↓\",\"DownArrow\":\"↓\",\"Downarrow\":\"⇓\",\"DownArrowUpArrow\":\"⇵\",\"DownBreve\":\"̑\",\"downdownarrows\":\"⇊\",\"downharpoonleft\":\"⇃\",\"downharpoonright\":\"⇂\",\"DownLeftRightVector\":\"⥐\",\"DownLeftTeeVector\":\"⥞\",\"DownLeftVectorBar\":\"⥖\",\"DownLeftVector\":\"↽\",\"DownRightTeeVector\":\"⥟\",\"DownRightVectorBar\":\"⥗\",\"DownRightVector\":\"⇁\",\"DownTeeArrow\":\"↧\",\"DownTee\":\"⊤\",\"drbkarow\":\"⤐\",\"drcorn\":\"⌟\",\"drcrop\":\"⌌\",\"Dscr\":\"𝒟\",\"dscr\":\"𝒹\",\"DScy\":\"Ѕ\",\"dscy\":\"ѕ\",\"dsol\":\"⧶\",\"Dstrok\":\"Đ\",\"dstrok\":\"đ\",\"dtdot\":\"⋱\",\"dtri\":\"▿\",\"dtrif\":\"▾\",\"duarr\":\"⇵\",\"duhar\":\"⥯\",\"dwangle\":\"⦦\",\"DZcy\":\"Џ\",\"dzcy\":\"џ\",\"dzigrarr\":\"⟿\",\"Eacute\":\"É\",\"eacute\":\"é\",\"easter\":\"⩮\",\"Ecaron\":\"Ě\",\"ecaron\":\"ě\",\"Ecirc\":\"Ê\",\"ecirc\":\"ê\",\"ecir\":\"≖\",\"ecolon\":\"≕\",\"Ecy\":\"Э\",\"ecy\":\"э\",\"eDDot\":\"⩷\",\"Edot\":\"Ė\",\"edot\":\"ė\",\"eDot\":\"≑\",\"ee\":\"ⅇ\",\"efDot\":\"≒\",\"Efr\":\"𝔈\",\"efr\":\"𝔢\",\"eg\":\"⪚\",\"Egrave\":\"È\",\"egrave\":\"è\",\"egs\":\"⪖\",\"egsdot\":\"⪘\",\"el\":\"⪙\",\"Element\":\"∈\",\"elinters\":\"⏧\",\"ell\":\"ℓ\",\"els\":\"⪕\",\"elsdot\":\"⪗\",\"Emacr\":\"Ē\",\"emacr\":\"ē\",\"empty\":\"∅\",\"emptyset\":\"∅\",\"EmptySmallSquare\":\"◻\",\"emptyv\":\"∅\",\"EmptyVerySmallSquare\":\"▫\",\"emsp13\":\" \",\"emsp14\":\" \",\"emsp\":\" \",\"ENG\":\"Ŋ\",\"eng\":\"ŋ\",\"ensp\":\" \",\"Eogon\":\"Ę\",\"eogon\":\"ę\",\"Eopf\":\"𝔼\",\"eopf\":\"𝕖\",\"epar\":\"⋕\",\"eparsl\":\"⧣\",\"eplus\":\"⩱\",\"epsi\":\"ε\",\"Epsilon\":\"Ε\",\"epsilon\":\"ε\",\"epsiv\":\"ϵ\",\"eqcirc\":\"≖\",\"eqcolon\":\"≕\",\"eqsim\":\"≂\",\"eqslantgtr\":\"⪖\",\"eqslantless\":\"⪕\",\"Equal\":\"⩵\",\"equals\":\"=\",\"EqualTilde\":\"≂\",\"equest\":\"≟\",\"Equilibrium\":\"⇌\",\"equiv\":\"≡\",\"equivDD\":\"⩸\",\"eqvparsl\":\"⧥\",\"erarr\":\"⥱\",\"erDot\":\"≓\",\"escr\":\"ℯ\",\"Escr\":\"ℰ\",\"esdot\":\"≐\",\"Esim\":\"⩳\",\"esim\":\"≂\",\"Eta\":\"Η\",\"eta\":\"η\",\"ETH\":\"Ð\",\"eth\":\"ð\",\"Euml\":\"Ë\",\"euml\":\"ë\",\"euro\":\"€\",\"excl\":\"!\",\"exist\":\"∃\",\"Exists\":\"∃\",\"expectation\":\"ℰ\",\"exponentiale\":\"ⅇ\",\"ExponentialE\":\"ⅇ\",\"fallingdotseq\":\"≒\",\"Fcy\":\"Ф\",\"fcy\":\"ф\",\"female\":\"♀\",\"ffilig\":\"ffi\",\"fflig\":\"ff\",\"ffllig\":\"ffl\",\"Ffr\":\"𝔉\",\"ffr\":\"𝔣\",\"filig\":\"fi\",\"FilledSmallSquare\":\"◼\",\"FilledVerySmallSquare\":\"▪\",\"fjlig\":\"fj\",\"flat\":\"♭\",\"fllig\":\"fl\",\"fltns\":\"▱\",\"fnof\":\"ƒ\",\"Fopf\":\"𝔽\",\"fopf\":\"𝕗\",\"forall\":\"∀\",\"ForAll\":\"∀\",\"fork\":\"⋔\",\"forkv\":\"⫙\",\"Fouriertrf\":\"ℱ\",\"fpartint\":\"⨍\",\"frac12\":\"½\",\"frac13\":\"⅓\",\"frac14\":\"¼\",\"frac15\":\"⅕\",\"frac16\":\"⅙\",\"frac18\":\"⅛\",\"frac23\":\"⅔\",\"frac25\":\"⅖\",\"frac34\":\"¾\",\"frac35\":\"⅗\",\"frac38\":\"⅜\",\"frac45\":\"⅘\",\"frac56\":\"⅚\",\"frac58\":\"⅝\",\"frac78\":\"⅞\",\"frasl\":\"⁄\",\"frown\":\"⌢\",\"fscr\":\"𝒻\",\"Fscr\":\"ℱ\",\"gacute\":\"ǵ\",\"Gamma\":\"Γ\",\"gamma\":\"γ\",\"Gammad\":\"Ϝ\",\"gammad\":\"ϝ\",\"gap\":\"⪆\",\"Gbreve\":\"Ğ\",\"gbreve\":\"ğ\",\"Gcedil\":\"Ģ\",\"Gcirc\":\"Ĝ\",\"gcirc\":\"ĝ\",\"Gcy\":\"Г\",\"gcy\":\"г\",\"Gdot\":\"Ġ\",\"gdot\":\"ġ\",\"ge\":\"≥\",\"gE\":\"≧\",\"gEl\":\"⪌\",\"gel\":\"⋛\",\"geq\":\"≥\",\"geqq\":\"≧\",\"geqslant\":\"⩾\",\"gescc\":\"⪩\",\"ges\":\"⩾\",\"gesdot\":\"⪀\",\"gesdoto\":\"⪂\",\"gesdotol\":\"⪄\",\"gesl\":\"⋛︀\",\"gesles\":\"⪔\",\"Gfr\":\"𝔊\",\"gfr\":\"𝔤\",\"gg\":\"≫\",\"Gg\":\"⋙\",\"ggg\":\"⋙\",\"gimel\":\"ℷ\",\"GJcy\":\"Ѓ\",\"gjcy\":\"ѓ\",\"gla\":\"⪥\",\"gl\":\"≷\",\"glE\":\"⪒\",\"glj\":\"⪤\",\"gnap\":\"⪊\",\"gnapprox\":\"⪊\",\"gne\":\"⪈\",\"gnE\":\"≩\",\"gneq\":\"⪈\",\"gneqq\":\"≩\",\"gnsim\":\"⋧\",\"Gopf\":\"𝔾\",\"gopf\":\"𝕘\",\"grave\":\"`\",\"GreaterEqual\":\"≥\",\"GreaterEqualLess\":\"⋛\",\"GreaterFullEqual\":\"≧\",\"GreaterGreater\":\"⪢\",\"GreaterLess\":\"≷\",\"GreaterSlantEqual\":\"⩾\",\"GreaterTilde\":\"≳\",\"Gscr\":\"𝒢\",\"gscr\":\"ℊ\",\"gsim\":\"≳\",\"gsime\":\"⪎\",\"gsiml\":\"⪐\",\"gtcc\":\"⪧\",\"gtcir\":\"⩺\",\"gt\":\">\",\"GT\":\">\",\"Gt\":\"≫\",\"gtdot\":\"⋗\",\"gtlPar\":\"⦕\",\"gtquest\":\"⩼\",\"gtrapprox\":\"⪆\",\"gtrarr\":\"⥸\",\"gtrdot\":\"⋗\",\"gtreqless\":\"⋛\",\"gtreqqless\":\"⪌\",\"gtrless\":\"≷\",\"gtrsim\":\"≳\",\"gvertneqq\":\"≩︀\",\"gvnE\":\"≩︀\",\"Hacek\":\"ˇ\",\"hairsp\":\" \",\"half\":\"½\",\"hamilt\":\"ℋ\",\"HARDcy\":\"Ъ\",\"hardcy\":\"ъ\",\"harrcir\":\"⥈\",\"harr\":\"↔\",\"hArr\":\"⇔\",\"harrw\":\"↭\",\"Hat\":\"^\",\"hbar\":\"ℏ\",\"Hcirc\":\"Ĥ\",\"hcirc\":\"ĥ\",\"hearts\":\"♥\",\"heartsuit\":\"♥\",\"hellip\":\"…\",\"hercon\":\"⊹\",\"hfr\":\"𝔥\",\"Hfr\":\"ℌ\",\"HilbertSpace\":\"ℋ\",\"hksearow\":\"⤥\",\"hkswarow\":\"⤦\",\"hoarr\":\"⇿\",\"homtht\":\"∻\",\"hookleftarrow\":\"↩\",\"hookrightarrow\":\"↪\",\"hopf\":\"𝕙\",\"Hopf\":\"ℍ\",\"horbar\":\"―\",\"HorizontalLine\":\"─\",\"hscr\":\"𝒽\",\"Hscr\":\"ℋ\",\"hslash\":\"ℏ\",\"Hstrok\":\"Ħ\",\"hstrok\":\"ħ\",\"HumpDownHump\":\"≎\",\"HumpEqual\":\"≏\",\"hybull\":\"⁃\",\"hyphen\":\"‐\",\"Iacute\":\"Í\",\"iacute\":\"í\",\"ic\":\"\",\"Icirc\":\"Î\",\"icirc\":\"î\",\"Icy\":\"И\",\"icy\":\"и\",\"Idot\":\"İ\",\"IEcy\":\"Е\",\"iecy\":\"е\",\"iexcl\":\"¡\",\"iff\":\"⇔\",\"ifr\":\"𝔦\",\"Ifr\":\"ℑ\",\"Igrave\":\"Ì\",\"igrave\":\"ì\",\"ii\":\"ⅈ\",\"iiiint\":\"⨌\",\"iiint\":\"∭\",\"iinfin\":\"⧜\",\"iiota\":\"℩\",\"IJlig\":\"IJ\",\"ijlig\":\"ij\",\"Imacr\":\"Ī\",\"imacr\":\"ī\",\"image\":\"ℑ\",\"ImaginaryI\":\"ⅈ\",\"imagline\":\"ℐ\",\"imagpart\":\"ℑ\",\"imath\":\"ı\",\"Im\":\"ℑ\",\"imof\":\"⊷\",\"imped\":\"Ƶ\",\"Implies\":\"⇒\",\"incare\":\"℅\",\"in\":\"∈\",\"infin\":\"∞\",\"infintie\":\"⧝\",\"inodot\":\"ı\",\"intcal\":\"⊺\",\"int\":\"∫\",\"Int\":\"∬\",\"integers\":\"ℤ\",\"Integral\":\"∫\",\"intercal\":\"⊺\",\"Intersection\":\"⋂\",\"intlarhk\":\"⨗\",\"intprod\":\"⨼\",\"InvisibleComma\":\"\",\"InvisibleTimes\":\"\",\"IOcy\":\"Ё\",\"iocy\":\"ё\",\"Iogon\":\"Į\",\"iogon\":\"į\",\"Iopf\":\"𝕀\",\"iopf\":\"𝕚\",\"Iota\":\"Ι\",\"iota\":\"ι\",\"iprod\":\"⨼\",\"iquest\":\"¿\",\"iscr\":\"𝒾\",\"Iscr\":\"ℐ\",\"isin\":\"∈\",\"isindot\":\"⋵\",\"isinE\":\"⋹\",\"isins\":\"⋴\",\"isinsv\":\"⋳\",\"isinv\":\"∈\",\"it\":\"\",\"Itilde\":\"Ĩ\",\"itilde\":\"ĩ\",\"Iukcy\":\"І\",\"iukcy\":\"і\",\"Iuml\":\"Ï\",\"iuml\":\"ï\",\"Jcirc\":\"Ĵ\",\"jcirc\":\"ĵ\",\"Jcy\":\"Й\",\"jcy\":\"й\",\"Jfr\":\"𝔍\",\"jfr\":\"𝔧\",\"jmath\":\"ȷ\",\"Jopf\":\"𝕁\",\"jopf\":\"𝕛\",\"Jscr\":\"𝒥\",\"jscr\":\"𝒿\",\"Jsercy\":\"Ј\",\"jsercy\":\"ј\",\"Jukcy\":\"Є\",\"jukcy\":\"є\",\"Kappa\":\"Κ\",\"kappa\":\"κ\",\"kappav\":\"ϰ\",\"Kcedil\":\"Ķ\",\"kcedil\":\"ķ\",\"Kcy\":\"К\",\"kcy\":\"к\",\"Kfr\":\"𝔎\",\"kfr\":\"𝔨\",\"kgreen\":\"ĸ\",\"KHcy\":\"Х\",\"khcy\":\"х\",\"KJcy\":\"Ќ\",\"kjcy\":\"ќ\",\"Kopf\":\"𝕂\",\"kopf\":\"𝕜\",\"Kscr\":\"𝒦\",\"kscr\":\"𝓀\",\"lAarr\":\"⇚\",\"Lacute\":\"Ĺ\",\"lacute\":\"ĺ\",\"laemptyv\":\"⦴\",\"lagran\":\"ℒ\",\"Lambda\":\"Λ\",\"lambda\":\"λ\",\"lang\":\"⟨\",\"Lang\":\"⟪\",\"langd\":\"⦑\",\"langle\":\"⟨\",\"lap\":\"⪅\",\"Laplacetrf\":\"ℒ\",\"laquo\":\"«\",\"larrb\":\"⇤\",\"larrbfs\":\"⤟\",\"larr\":\"←\",\"Larr\":\"↞\",\"lArr\":\"⇐\",\"larrfs\":\"⤝\",\"larrhk\":\"↩\",\"larrlp\":\"↫\",\"larrpl\":\"⤹\",\"larrsim\":\"⥳\",\"larrtl\":\"↢\",\"latail\":\"⤙\",\"lAtail\":\"⤛\",\"lat\":\"⪫\",\"late\":\"⪭\",\"lates\":\"⪭︀\",\"lbarr\":\"⤌\",\"lBarr\":\"⤎\",\"lbbrk\":\"❲\",\"lbrace\":\"{\",\"lbrack\":\"[\",\"lbrke\":\"⦋\",\"lbrksld\":\"⦏\",\"lbrkslu\":\"⦍\",\"Lcaron\":\"Ľ\",\"lcaron\":\"ľ\",\"Lcedil\":\"Ļ\",\"lcedil\":\"ļ\",\"lceil\":\"⌈\",\"lcub\":\"{\",\"Lcy\":\"Л\",\"lcy\":\"л\",\"ldca\":\"⤶\",\"ldquo\":\"“\",\"ldquor\":\"„\",\"ldrdhar\":\"⥧\",\"ldrushar\":\"⥋\",\"ldsh\":\"↲\",\"le\":\"≤\",\"lE\":\"≦\",\"LeftAngleBracket\":\"⟨\",\"LeftArrowBar\":\"⇤\",\"leftarrow\":\"←\",\"LeftArrow\":\"←\",\"Leftarrow\":\"⇐\",\"LeftArrowRightArrow\":\"⇆\",\"leftarrowtail\":\"↢\",\"LeftCeiling\":\"⌈\",\"LeftDoubleBracket\":\"⟦\",\"LeftDownTeeVector\":\"⥡\",\"LeftDownVectorBar\":\"⥙\",\"LeftDownVector\":\"⇃\",\"LeftFloor\":\"⌊\",\"leftharpoondown\":\"↽\",\"leftharpoonup\":\"↼\",\"leftleftarrows\":\"⇇\",\"leftrightarrow\":\"↔\",\"LeftRightArrow\":\"↔\",\"Leftrightarrow\":\"⇔\",\"leftrightarrows\":\"⇆\",\"leftrightharpoons\":\"⇋\",\"leftrightsquigarrow\":\"↭\",\"LeftRightVector\":\"⥎\",\"LeftTeeArrow\":\"↤\",\"LeftTee\":\"⊣\",\"LeftTeeVector\":\"⥚\",\"leftthreetimes\":\"⋋\",\"LeftTriangleBar\":\"⧏\",\"LeftTriangle\":\"⊲\",\"LeftTriangleEqual\":\"⊴\",\"LeftUpDownVector\":\"⥑\",\"LeftUpTeeVector\":\"⥠\",\"LeftUpVectorBar\":\"⥘\",\"LeftUpVector\":\"↿\",\"LeftVectorBar\":\"⥒\",\"LeftVector\":\"↼\",\"lEg\":\"⪋\",\"leg\":\"⋚\",\"leq\":\"≤\",\"leqq\":\"≦\",\"leqslant\":\"⩽\",\"lescc\":\"⪨\",\"les\":\"⩽\",\"lesdot\":\"⩿\",\"lesdoto\":\"⪁\",\"lesdotor\":\"⪃\",\"lesg\":\"⋚︀\",\"lesges\":\"⪓\",\"lessapprox\":\"⪅\",\"lessdot\":\"⋖\",\"lesseqgtr\":\"⋚\",\"lesseqqgtr\":\"⪋\",\"LessEqualGreater\":\"⋚\",\"LessFullEqual\":\"≦\",\"LessGreater\":\"≶\",\"lessgtr\":\"≶\",\"LessLess\":\"⪡\",\"lesssim\":\"≲\",\"LessSlantEqual\":\"⩽\",\"LessTilde\":\"≲\",\"lfisht\":\"⥼\",\"lfloor\":\"⌊\",\"Lfr\":\"𝔏\",\"lfr\":\"𝔩\",\"lg\":\"≶\",\"lgE\":\"⪑\",\"lHar\":\"⥢\",\"lhard\":\"↽\",\"lharu\":\"↼\",\"lharul\":\"⥪\",\"lhblk\":\"▄\",\"LJcy\":\"Љ\",\"ljcy\":\"љ\",\"llarr\":\"⇇\",\"ll\":\"≪\",\"Ll\":\"⋘\",\"llcorner\":\"⌞\",\"Lleftarrow\":\"⇚\",\"llhard\":\"⥫\",\"lltri\":\"◺\",\"Lmidot\":\"Ŀ\",\"lmidot\":\"ŀ\",\"lmoustache\":\"⎰\",\"lmoust\":\"⎰\",\"lnap\":\"⪉\",\"lnapprox\":\"⪉\",\"lne\":\"⪇\",\"lnE\":\"≨\",\"lneq\":\"⪇\",\"lneqq\":\"≨\",\"lnsim\":\"⋦\",\"loang\":\"⟬\",\"loarr\":\"⇽\",\"lobrk\":\"⟦\",\"longleftarrow\":\"⟵\",\"LongLeftArrow\":\"⟵\",\"Longleftarrow\":\"⟸\",\"longleftrightarrow\":\"⟷\",\"LongLeftRightArrow\":\"⟷\",\"Longleftrightarrow\":\"⟺\",\"longmapsto\":\"⟼\",\"longrightarrow\":\"⟶\",\"LongRightArrow\":\"⟶\",\"Longrightarrow\":\"⟹\",\"looparrowleft\":\"↫\",\"looparrowright\":\"↬\",\"lopar\":\"⦅\",\"Lopf\":\"𝕃\",\"lopf\":\"𝕝\",\"loplus\":\"⨭\",\"lotimes\":\"⨴\",\"lowast\":\"∗\",\"lowbar\":\"_\",\"LowerLeftArrow\":\"↙\",\"LowerRightArrow\":\"↘\",\"loz\":\"◊\",\"lozenge\":\"◊\",\"lozf\":\"⧫\",\"lpar\":\"(\",\"lparlt\":\"⦓\",\"lrarr\":\"⇆\",\"lrcorner\":\"⌟\",\"lrhar\":\"⇋\",\"lrhard\":\"⥭\",\"lrm\":\"\",\"lrtri\":\"⊿\",\"lsaquo\":\"‹\",\"lscr\":\"𝓁\",\"Lscr\":\"ℒ\",\"lsh\":\"↰\",\"Lsh\":\"↰\",\"lsim\":\"≲\",\"lsime\":\"⪍\",\"lsimg\":\"⪏\",\"lsqb\":\"[\",\"lsquo\":\"‘\",\"lsquor\":\"‚\",\"Lstrok\":\"Ł\",\"lstrok\":\"ł\",\"ltcc\":\"⪦\",\"ltcir\":\"⩹\",\"lt\":\"<\",\"LT\":\"<\",\"Lt\":\"≪\",\"ltdot\":\"⋖\",\"lthree\":\"⋋\",\"ltimes\":\"⋉\",\"ltlarr\":\"⥶\",\"ltquest\":\"⩻\",\"ltri\":\"◃\",\"ltrie\":\"⊴\",\"ltrif\":\"◂\",\"ltrPar\":\"⦖\",\"lurdshar\":\"⥊\",\"luruhar\":\"⥦\",\"lvertneqq\":\"≨︀\",\"lvnE\":\"≨︀\",\"macr\":\"¯\",\"male\":\"♂\",\"malt\":\"✠\",\"maltese\":\"✠\",\"Map\":\"⤅\",\"map\":\"↦\",\"mapsto\":\"↦\",\"mapstodown\":\"↧\",\"mapstoleft\":\"↤\",\"mapstoup\":\"↥\",\"marker\":\"▮\",\"mcomma\":\"⨩\",\"Mcy\":\"М\",\"mcy\":\"м\",\"mdash\":\"—\",\"mDDot\":\"∺\",\"measuredangle\":\"∡\",\"MediumSpace\":\" \",\"Mellintrf\":\"ℳ\",\"Mfr\":\"𝔐\",\"mfr\":\"𝔪\",\"mho\":\"℧\",\"micro\":\"µ\",\"midast\":\"*\",\"midcir\":\"⫰\",\"mid\":\"∣\",\"middot\":\"·\",\"minusb\":\"⊟\",\"minus\":\"−\",\"minusd\":\"∸\",\"minusdu\":\"⨪\",\"MinusPlus\":\"∓\",\"mlcp\":\"⫛\",\"mldr\":\"…\",\"mnplus\":\"∓\",\"models\":\"⊧\",\"Mopf\":\"𝕄\",\"mopf\":\"𝕞\",\"mp\":\"∓\",\"mscr\":\"𝓂\",\"Mscr\":\"ℳ\",\"mstpos\":\"∾\",\"Mu\":\"Μ\",\"mu\":\"μ\",\"multimap\":\"⊸\",\"mumap\":\"⊸\",\"nabla\":\"∇\",\"Nacute\":\"Ń\",\"nacute\":\"ń\",\"nang\":\"∠⃒\",\"nap\":\"≉\",\"napE\":\"⩰̸\",\"napid\":\"≋̸\",\"napos\":\"ʼn\",\"napprox\":\"≉\",\"natural\":\"♮\",\"naturals\":\"ℕ\",\"natur\":\"♮\",\"nbsp\":\" \",\"nbump\":\"≎̸\",\"nbumpe\":\"≏̸\",\"ncap\":\"⩃\",\"Ncaron\":\"Ň\",\"ncaron\":\"ň\",\"Ncedil\":\"Ņ\",\"ncedil\":\"ņ\",\"ncong\":\"≇\",\"ncongdot\":\"⩭̸\",\"ncup\":\"⩂\",\"Ncy\":\"Н\",\"ncy\":\"н\",\"ndash\":\"–\",\"nearhk\":\"⤤\",\"nearr\":\"↗\",\"neArr\":\"⇗\",\"nearrow\":\"↗\",\"ne\":\"≠\",\"nedot\":\"≐̸\",\"NegativeMediumSpace\":\"\",\"NegativeThickSpace\":\"\",\"NegativeThinSpace\":\"\",\"NegativeVeryThinSpace\":\"\",\"nequiv\":\"≢\",\"nesear\":\"⤨\",\"nesim\":\"≂̸\",\"NestedGreaterGreater\":\"≫\",\"NestedLessLess\":\"≪\",\"NewLine\":\"\\n\",\"nexist\":\"∄\",\"nexists\":\"∄\",\"Nfr\":\"𝔑\",\"nfr\":\"𝔫\",\"ngE\":\"≧̸\",\"nge\":\"≱\",\"ngeq\":\"≱\",\"ngeqq\":\"≧̸\",\"ngeqslant\":\"⩾̸\",\"nges\":\"⩾̸\",\"nGg\":\"⋙̸\",\"ngsim\":\"≵\",\"nGt\":\"≫⃒\",\"ngt\":\"≯\",\"ngtr\":\"≯\",\"nGtv\":\"≫̸\",\"nharr\":\"↮\",\"nhArr\":\"⇎\",\"nhpar\":\"⫲\",\"ni\":\"∋\",\"nis\":\"⋼\",\"nisd\":\"⋺\",\"niv\":\"∋\",\"NJcy\":\"Њ\",\"njcy\":\"њ\",\"nlarr\":\"↚\",\"nlArr\":\"⇍\",\"nldr\":\"‥\",\"nlE\":\"≦̸\",\"nle\":\"≰\",\"nleftarrow\":\"↚\",\"nLeftarrow\":\"⇍\",\"nleftrightarrow\":\"↮\",\"nLeftrightarrow\":\"⇎\",\"nleq\":\"≰\",\"nleqq\":\"≦̸\",\"nleqslant\":\"⩽̸\",\"nles\":\"⩽̸\",\"nless\":\"≮\",\"nLl\":\"⋘̸\",\"nlsim\":\"≴\",\"nLt\":\"≪⃒\",\"nlt\":\"≮\",\"nltri\":\"⋪\",\"nltrie\":\"⋬\",\"nLtv\":\"≪̸\",\"nmid\":\"∤\",\"NoBreak\":\"\",\"NonBreakingSpace\":\" \",\"nopf\":\"𝕟\",\"Nopf\":\"ℕ\",\"Not\":\"⫬\",\"not\":\"¬\",\"NotCongruent\":\"≢\",\"NotCupCap\":\"≭\",\"NotDoubleVerticalBar\":\"∦\",\"NotElement\":\"∉\",\"NotEqual\":\"≠\",\"NotEqualTilde\":\"≂̸\",\"NotExists\":\"∄\",\"NotGreater\":\"≯\",\"NotGreaterEqual\":\"≱\",\"NotGreaterFullEqual\":\"≧̸\",\"NotGreaterGreater\":\"≫̸\",\"NotGreaterLess\":\"≹\",\"NotGreaterSlantEqual\":\"⩾̸\",\"NotGreaterTilde\":\"≵\",\"NotHumpDownHump\":\"≎̸\",\"NotHumpEqual\":\"≏̸\",\"notin\":\"∉\",\"notindot\":\"⋵̸\",\"notinE\":\"⋹̸\",\"notinva\":\"∉\",\"notinvb\":\"⋷\",\"notinvc\":\"⋶\",\"NotLeftTriangleBar\":\"⧏̸\",\"NotLeftTriangle\":\"⋪\",\"NotLeftTriangleEqual\":\"⋬\",\"NotLess\":\"≮\",\"NotLessEqual\":\"≰\",\"NotLessGreater\":\"≸\",\"NotLessLess\":\"≪̸\",\"NotLessSlantEqual\":\"⩽̸\",\"NotLessTilde\":\"≴\",\"NotNestedGreaterGreater\":\"⪢̸\",\"NotNestedLessLess\":\"⪡̸\",\"notni\":\"∌\",\"notniva\":\"∌\",\"notnivb\":\"⋾\",\"notnivc\":\"⋽\",\"NotPrecedes\":\"⊀\",\"NotPrecedesEqual\":\"⪯̸\",\"NotPrecedesSlantEqual\":\"⋠\",\"NotReverseElement\":\"∌\",\"NotRightTriangleBar\":\"⧐̸\",\"NotRightTriangle\":\"⋫\",\"NotRightTriangleEqual\":\"⋭\",\"NotSquareSubset\":\"⊏̸\",\"NotSquareSubsetEqual\":\"⋢\",\"NotSquareSuperset\":\"⊐̸\",\"NotSquareSupersetEqual\":\"⋣\",\"NotSubset\":\"⊂⃒\",\"NotSubsetEqual\":\"⊈\",\"NotSucceeds\":\"⊁\",\"NotSucceedsEqual\":\"⪰̸\",\"NotSucceedsSlantEqual\":\"⋡\",\"NotSucceedsTilde\":\"≿̸\",\"NotSuperset\":\"⊃⃒\",\"NotSupersetEqual\":\"⊉\",\"NotTilde\":\"≁\",\"NotTildeEqual\":\"≄\",\"NotTildeFullEqual\":\"≇\",\"NotTildeTilde\":\"≉\",\"NotVerticalBar\":\"∤\",\"nparallel\":\"∦\",\"npar\":\"∦\",\"nparsl\":\"⫽⃥\",\"npart\":\"∂̸\",\"npolint\":\"⨔\",\"npr\":\"⊀\",\"nprcue\":\"⋠\",\"nprec\":\"⊀\",\"npreceq\":\"⪯̸\",\"npre\":\"⪯̸\",\"nrarrc\":\"⤳̸\",\"nrarr\":\"↛\",\"nrArr\":\"⇏\",\"nrarrw\":\"↝̸\",\"nrightarrow\":\"↛\",\"nRightarrow\":\"⇏\",\"nrtri\":\"⋫\",\"nrtrie\":\"⋭\",\"nsc\":\"⊁\",\"nsccue\":\"⋡\",\"nsce\":\"⪰̸\",\"Nscr\":\"𝒩\",\"nscr\":\"𝓃\",\"nshortmid\":\"∤\",\"nshortparallel\":\"∦\",\"nsim\":\"≁\",\"nsime\":\"≄\",\"nsimeq\":\"≄\",\"nsmid\":\"∤\",\"nspar\":\"∦\",\"nsqsube\":\"⋢\",\"nsqsupe\":\"⋣\",\"nsub\":\"⊄\",\"nsubE\":\"⫅̸\",\"nsube\":\"⊈\",\"nsubset\":\"⊂⃒\",\"nsubseteq\":\"⊈\",\"nsubseteqq\":\"⫅̸\",\"nsucc\":\"⊁\",\"nsucceq\":\"⪰̸\",\"nsup\":\"⊅\",\"nsupE\":\"⫆̸\",\"nsupe\":\"⊉\",\"nsupset\":\"⊃⃒\",\"nsupseteq\":\"⊉\",\"nsupseteqq\":\"⫆̸\",\"ntgl\":\"≹\",\"Ntilde\":\"Ñ\",\"ntilde\":\"ñ\",\"ntlg\":\"≸\",\"ntriangleleft\":\"⋪\",\"ntrianglelefteq\":\"⋬\",\"ntriangleright\":\"⋫\",\"ntrianglerighteq\":\"⋭\",\"Nu\":\"Ν\",\"nu\":\"ν\",\"num\":\"#\",\"numero\":\"№\",\"numsp\":\" \",\"nvap\":\"≍⃒\",\"nvdash\":\"⊬\",\"nvDash\":\"⊭\",\"nVdash\":\"⊮\",\"nVDash\":\"⊯\",\"nvge\":\"≥⃒\",\"nvgt\":\">⃒\",\"nvHarr\":\"⤄\",\"nvinfin\":\"⧞\",\"nvlArr\":\"⤂\",\"nvle\":\"≤⃒\",\"nvlt\":\"<⃒\",\"nvltrie\":\"⊴⃒\",\"nvrArr\":\"⤃\",\"nvrtrie\":\"⊵⃒\",\"nvsim\":\"∼⃒\",\"nwarhk\":\"⤣\",\"nwarr\":\"↖\",\"nwArr\":\"⇖\",\"nwarrow\":\"↖\",\"nwnear\":\"⤧\",\"Oacute\":\"Ó\",\"oacute\":\"ó\",\"oast\":\"⊛\",\"Ocirc\":\"Ô\",\"ocirc\":\"ô\",\"ocir\":\"⊚\",\"Ocy\":\"О\",\"ocy\":\"о\",\"odash\":\"⊝\",\"Odblac\":\"Ő\",\"odblac\":\"ő\",\"odiv\":\"⨸\",\"odot\":\"⊙\",\"odsold\":\"⦼\",\"OElig\":\"Œ\",\"oelig\":\"œ\",\"ofcir\":\"⦿\",\"Ofr\":\"𝔒\",\"ofr\":\"𝔬\",\"ogon\":\"˛\",\"Ograve\":\"Ò\",\"ograve\":\"ò\",\"ogt\":\"⧁\",\"ohbar\":\"⦵\",\"ohm\":\"Ω\",\"oint\":\"∮\",\"olarr\":\"↺\",\"olcir\":\"⦾\",\"olcross\":\"⦻\",\"oline\":\"‾\",\"olt\":\"⧀\",\"Omacr\":\"Ō\",\"omacr\":\"ō\",\"Omega\":\"Ω\",\"omega\":\"ω\",\"Omicron\":\"Ο\",\"omicron\":\"ο\",\"omid\":\"⦶\",\"ominus\":\"⊖\",\"Oopf\":\"𝕆\",\"oopf\":\"𝕠\",\"opar\":\"⦷\",\"OpenCurlyDoubleQuote\":\"“\",\"OpenCurlyQuote\":\"‘\",\"operp\":\"⦹\",\"oplus\":\"⊕\",\"orarr\":\"↻\",\"Or\":\"⩔\",\"or\":\"∨\",\"ord\":\"⩝\",\"order\":\"ℴ\",\"orderof\":\"ℴ\",\"ordf\":\"ª\",\"ordm\":\"º\",\"origof\":\"⊶\",\"oror\":\"⩖\",\"orslope\":\"⩗\",\"orv\":\"⩛\",\"oS\":\"Ⓢ\",\"Oscr\":\"𝒪\",\"oscr\":\"ℴ\",\"Oslash\":\"Ø\",\"oslash\":\"ø\",\"osol\":\"⊘\",\"Otilde\":\"Õ\",\"otilde\":\"õ\",\"otimesas\":\"⨶\",\"Otimes\":\"⨷\",\"otimes\":\"⊗\",\"Ouml\":\"Ö\",\"ouml\":\"ö\",\"ovbar\":\"⌽\",\"OverBar\":\"‾\",\"OverBrace\":\"⏞\",\"OverBracket\":\"⎴\",\"OverParenthesis\":\"⏜\",\"para\":\"¶\",\"parallel\":\"∥\",\"par\":\"∥\",\"parsim\":\"⫳\",\"parsl\":\"⫽\",\"part\":\"∂\",\"PartialD\":\"∂\",\"Pcy\":\"П\",\"pcy\":\"п\",\"percnt\":\"%\",\"period\":\".\",\"permil\":\"‰\",\"perp\":\"⊥\",\"pertenk\":\"‱\",\"Pfr\":\"𝔓\",\"pfr\":\"𝔭\",\"Phi\":\"Φ\",\"phi\":\"φ\",\"phiv\":\"ϕ\",\"phmmat\":\"ℳ\",\"phone\":\"☎\",\"Pi\":\"Π\",\"pi\":\"π\",\"pitchfork\":\"⋔\",\"piv\":\"ϖ\",\"planck\":\"ℏ\",\"planckh\":\"ℎ\",\"plankv\":\"ℏ\",\"plusacir\":\"⨣\",\"plusb\":\"⊞\",\"pluscir\":\"⨢\",\"plus\":\"+\",\"plusdo\":\"∔\",\"plusdu\":\"⨥\",\"pluse\":\"⩲\",\"PlusMinus\":\"±\",\"plusmn\":\"±\",\"plussim\":\"⨦\",\"plustwo\":\"⨧\",\"pm\":\"±\",\"Poincareplane\":\"ℌ\",\"pointint\":\"⨕\",\"popf\":\"𝕡\",\"Popf\":\"ℙ\",\"pound\":\"£\",\"prap\":\"⪷\",\"Pr\":\"⪻\",\"pr\":\"≺\",\"prcue\":\"≼\",\"precapprox\":\"⪷\",\"prec\":\"≺\",\"preccurlyeq\":\"≼\",\"Precedes\":\"≺\",\"PrecedesEqual\":\"⪯\",\"PrecedesSlantEqual\":\"≼\",\"PrecedesTilde\":\"≾\",\"preceq\":\"⪯\",\"precnapprox\":\"⪹\",\"precneqq\":\"⪵\",\"precnsim\":\"⋨\",\"pre\":\"⪯\",\"prE\":\"⪳\",\"precsim\":\"≾\",\"prime\":\"′\",\"Prime\":\"″\",\"primes\":\"ℙ\",\"prnap\":\"⪹\",\"prnE\":\"⪵\",\"prnsim\":\"⋨\",\"prod\":\"∏\",\"Product\":\"∏\",\"profalar\":\"⌮\",\"profline\":\"⌒\",\"profsurf\":\"⌓\",\"prop\":\"∝\",\"Proportional\":\"∝\",\"Proportion\":\"∷\",\"propto\":\"∝\",\"prsim\":\"≾\",\"prurel\":\"⊰\",\"Pscr\":\"𝒫\",\"pscr\":\"𝓅\",\"Psi\":\"Ψ\",\"psi\":\"ψ\",\"puncsp\":\" \",\"Qfr\":\"𝔔\",\"qfr\":\"𝔮\",\"qint\":\"⨌\",\"qopf\":\"𝕢\",\"Qopf\":\"ℚ\",\"qprime\":\"⁗\",\"Qscr\":\"𝒬\",\"qscr\":\"𝓆\",\"quaternions\":\"ℍ\",\"quatint\":\"⨖\",\"quest\":\"?\",\"questeq\":\"≟\",\"quot\":\"\\\"\",\"QUOT\":\"\\\"\",\"rAarr\":\"⇛\",\"race\":\"∽̱\",\"Racute\":\"Ŕ\",\"racute\":\"ŕ\",\"radic\":\"√\",\"raemptyv\":\"⦳\",\"rang\":\"⟩\",\"Rang\":\"⟫\",\"rangd\":\"⦒\",\"range\":\"⦥\",\"rangle\":\"⟩\",\"raquo\":\"»\",\"rarrap\":\"⥵\",\"rarrb\":\"⇥\",\"rarrbfs\":\"⤠\",\"rarrc\":\"⤳\",\"rarr\":\"→\",\"Rarr\":\"↠\",\"rArr\":\"⇒\",\"rarrfs\":\"⤞\",\"rarrhk\":\"↪\",\"rarrlp\":\"↬\",\"rarrpl\":\"⥅\",\"rarrsim\":\"⥴\",\"Rarrtl\":\"⤖\",\"rarrtl\":\"↣\",\"rarrw\":\"↝\",\"ratail\":\"⤚\",\"rAtail\":\"⤜\",\"ratio\":\"∶\",\"rationals\":\"ℚ\",\"rbarr\":\"⤍\",\"rBarr\":\"⤏\",\"RBarr\":\"⤐\",\"rbbrk\":\"❳\",\"rbrace\":\"}\",\"rbrack\":\"]\",\"rbrke\":\"⦌\",\"rbrksld\":\"⦎\",\"rbrkslu\":\"⦐\",\"Rcaron\":\"Ř\",\"rcaron\":\"ř\",\"Rcedil\":\"Ŗ\",\"rcedil\":\"ŗ\",\"rceil\":\"⌉\",\"rcub\":\"}\",\"Rcy\":\"Р\",\"rcy\":\"р\",\"rdca\":\"⤷\",\"rdldhar\":\"⥩\",\"rdquo\":\"”\",\"rdquor\":\"”\",\"rdsh\":\"↳\",\"real\":\"ℜ\",\"realine\":\"ℛ\",\"realpart\":\"ℜ\",\"reals\":\"ℝ\",\"Re\":\"ℜ\",\"rect\":\"▭\",\"reg\":\"®\",\"REG\":\"®\",\"ReverseElement\":\"∋\",\"ReverseEquilibrium\":\"⇋\",\"ReverseUpEquilibrium\":\"⥯\",\"rfisht\":\"⥽\",\"rfloor\":\"⌋\",\"rfr\":\"𝔯\",\"Rfr\":\"ℜ\",\"rHar\":\"⥤\",\"rhard\":\"⇁\",\"rharu\":\"⇀\",\"rharul\":\"⥬\",\"Rho\":\"Ρ\",\"rho\":\"ρ\",\"rhov\":\"ϱ\",\"RightAngleBracket\":\"⟩\",\"RightArrowBar\":\"⇥\",\"rightarrow\":\"→\",\"RightArrow\":\"→\",\"Rightarrow\":\"⇒\",\"RightArrowLeftArrow\":\"⇄\",\"rightarrowtail\":\"↣\",\"RightCeiling\":\"⌉\",\"RightDoubleBracket\":\"⟧\",\"RightDownTeeVector\":\"⥝\",\"RightDownVectorBar\":\"⥕\",\"RightDownVector\":\"⇂\",\"RightFloor\":\"⌋\",\"rightharpoondown\":\"⇁\",\"rightharpoonup\":\"⇀\",\"rightleftarrows\":\"⇄\",\"rightleftharpoons\":\"⇌\",\"rightrightarrows\":\"⇉\",\"rightsquigarrow\":\"↝\",\"RightTeeArrow\":\"↦\",\"RightTee\":\"⊢\",\"RightTeeVector\":\"⥛\",\"rightthreetimes\":\"⋌\",\"RightTriangleBar\":\"⧐\",\"RightTriangle\":\"⊳\",\"RightTriangleEqual\":\"⊵\",\"RightUpDownVector\":\"⥏\",\"RightUpTeeVector\":\"⥜\",\"RightUpVectorBar\":\"⥔\",\"RightUpVector\":\"↾\",\"RightVectorBar\":\"⥓\",\"RightVector\":\"⇀\",\"ring\":\"˚\",\"risingdotseq\":\"≓\",\"rlarr\":\"⇄\",\"rlhar\":\"⇌\",\"rlm\":\"\",\"rmoustache\":\"⎱\",\"rmoust\":\"⎱\",\"rnmid\":\"⫮\",\"roang\":\"⟭\",\"roarr\":\"⇾\",\"robrk\":\"⟧\",\"ropar\":\"⦆\",\"ropf\":\"𝕣\",\"Ropf\":\"ℝ\",\"roplus\":\"⨮\",\"rotimes\":\"⨵\",\"RoundImplies\":\"⥰\",\"rpar\":\")\",\"rpargt\":\"⦔\",\"rppolint\":\"⨒\",\"rrarr\":\"⇉\",\"Rrightarrow\":\"⇛\",\"rsaquo\":\"›\",\"rscr\":\"𝓇\",\"Rscr\":\"ℛ\",\"rsh\":\"↱\",\"Rsh\":\"↱\",\"rsqb\":\"]\",\"rsquo\":\"’\",\"rsquor\":\"’\",\"rthree\":\"⋌\",\"rtimes\":\"⋊\",\"rtri\":\"▹\",\"rtrie\":\"⊵\",\"rtrif\":\"▸\",\"rtriltri\":\"⧎\",\"RuleDelayed\":\"⧴\",\"ruluhar\":\"⥨\",\"rx\":\"℞\",\"Sacute\":\"Ś\",\"sacute\":\"ś\",\"sbquo\":\"‚\",\"scap\":\"⪸\",\"Scaron\":\"Š\",\"scaron\":\"š\",\"Sc\":\"⪼\",\"sc\":\"≻\",\"sccue\":\"≽\",\"sce\":\"⪰\",\"scE\":\"⪴\",\"Scedil\":\"Ş\",\"scedil\":\"ş\",\"Scirc\":\"Ŝ\",\"scirc\":\"ŝ\",\"scnap\":\"⪺\",\"scnE\":\"⪶\",\"scnsim\":\"⋩\",\"scpolint\":\"⨓\",\"scsim\":\"≿\",\"Scy\":\"С\",\"scy\":\"с\",\"sdotb\":\"⊡\",\"sdot\":\"⋅\",\"sdote\":\"⩦\",\"searhk\":\"⤥\",\"searr\":\"↘\",\"seArr\":\"⇘\",\"searrow\":\"↘\",\"sect\":\"§\",\"semi\":\";\",\"seswar\":\"⤩\",\"setminus\":\"∖\",\"setmn\":\"∖\",\"sext\":\"✶\",\"Sfr\":\"𝔖\",\"sfr\":\"𝔰\",\"sfrown\":\"⌢\",\"sharp\":\"♯\",\"SHCHcy\":\"Щ\",\"shchcy\":\"щ\",\"SHcy\":\"Ш\",\"shcy\":\"ш\",\"ShortDownArrow\":\"↓\",\"ShortLeftArrow\":\"←\",\"shortmid\":\"∣\",\"shortparallel\":\"∥\",\"ShortRightArrow\":\"→\",\"ShortUpArrow\":\"↑\",\"shy\":\"\",\"Sigma\":\"Σ\",\"sigma\":\"σ\",\"sigmaf\":\"ς\",\"sigmav\":\"ς\",\"sim\":\"∼\",\"simdot\":\"⩪\",\"sime\":\"≃\",\"simeq\":\"≃\",\"simg\":\"⪞\",\"simgE\":\"⪠\",\"siml\":\"⪝\",\"simlE\":\"⪟\",\"simne\":\"≆\",\"simplus\":\"⨤\",\"simrarr\":\"⥲\",\"slarr\":\"←\",\"SmallCircle\":\"∘\",\"smallsetminus\":\"∖\",\"smashp\":\"⨳\",\"smeparsl\":\"⧤\",\"smid\":\"∣\",\"smile\":\"⌣\",\"smt\":\"⪪\",\"smte\":\"⪬\",\"smtes\":\"⪬︀\",\"SOFTcy\":\"Ь\",\"softcy\":\"ь\",\"solbar\":\"⌿\",\"solb\":\"⧄\",\"sol\":\"/\",\"Sopf\":\"𝕊\",\"sopf\":\"𝕤\",\"spades\":\"♠\",\"spadesuit\":\"♠\",\"spar\":\"∥\",\"sqcap\":\"⊓\",\"sqcaps\":\"⊓︀\",\"sqcup\":\"⊔\",\"sqcups\":\"⊔︀\",\"Sqrt\":\"√\",\"sqsub\":\"⊏\",\"sqsube\":\"⊑\",\"sqsubset\":\"⊏\",\"sqsubseteq\":\"⊑\",\"sqsup\":\"⊐\",\"sqsupe\":\"⊒\",\"sqsupset\":\"⊐\",\"sqsupseteq\":\"⊒\",\"square\":\"□\",\"Square\":\"□\",\"SquareIntersection\":\"⊓\",\"SquareSubset\":\"⊏\",\"SquareSubsetEqual\":\"⊑\",\"SquareSuperset\":\"⊐\",\"SquareSupersetEqual\":\"⊒\",\"SquareUnion\":\"⊔\",\"squarf\":\"▪\",\"squ\":\"□\",\"squf\":\"▪\",\"srarr\":\"→\",\"Sscr\":\"𝒮\",\"sscr\":\"𝓈\",\"ssetmn\":\"∖\",\"ssmile\":\"⌣\",\"sstarf\":\"⋆\",\"Star\":\"⋆\",\"star\":\"☆\",\"starf\":\"★\",\"straightepsilon\":\"ϵ\",\"straightphi\":\"ϕ\",\"strns\":\"¯\",\"sub\":\"⊂\",\"Sub\":\"⋐\",\"subdot\":\"⪽\",\"subE\":\"⫅\",\"sube\":\"⊆\",\"subedot\":\"⫃\",\"submult\":\"⫁\",\"subnE\":\"⫋\",\"subne\":\"⊊\",\"subplus\":\"⪿\",\"subrarr\":\"⥹\",\"subset\":\"⊂\",\"Subset\":\"⋐\",\"subseteq\":\"⊆\",\"subseteqq\":\"⫅\",\"SubsetEqual\":\"⊆\",\"subsetneq\":\"⊊\",\"subsetneqq\":\"⫋\",\"subsim\":\"⫇\",\"subsub\":\"⫕\",\"subsup\":\"⫓\",\"succapprox\":\"⪸\",\"succ\":\"≻\",\"succcurlyeq\":\"≽\",\"Succeeds\":\"≻\",\"SucceedsEqual\":\"⪰\",\"SucceedsSlantEqual\":\"≽\",\"SucceedsTilde\":\"≿\",\"succeq\":\"⪰\",\"succnapprox\":\"⪺\",\"succneqq\":\"⪶\",\"succnsim\":\"⋩\",\"succsim\":\"≿\",\"SuchThat\":\"∋\",\"sum\":\"∑\",\"Sum\":\"∑\",\"sung\":\"♪\",\"sup1\":\"¹\",\"sup2\":\"²\",\"sup3\":\"³\",\"sup\":\"⊃\",\"Sup\":\"⋑\",\"supdot\":\"⪾\",\"supdsub\":\"⫘\",\"supE\":\"⫆\",\"supe\":\"⊇\",\"supedot\":\"⫄\",\"Superset\":\"⊃\",\"SupersetEqual\":\"⊇\",\"suphsol\":\"⟉\",\"suphsub\":\"⫗\",\"suplarr\":\"⥻\",\"supmult\":\"⫂\",\"supnE\":\"⫌\",\"supne\":\"⊋\",\"supplus\":\"⫀\",\"supset\":\"⊃\",\"Supset\":\"⋑\",\"supseteq\":\"⊇\",\"supseteqq\":\"⫆\",\"supsetneq\":\"⊋\",\"supsetneqq\":\"⫌\",\"supsim\":\"⫈\",\"supsub\":\"⫔\",\"supsup\":\"⫖\",\"swarhk\":\"⤦\",\"swarr\":\"↙\",\"swArr\":\"⇙\",\"swarrow\":\"↙\",\"swnwar\":\"⤪\",\"szlig\":\"ß\",\"Tab\":\"\\t\",\"target\":\"⌖\",\"Tau\":\"Τ\",\"tau\":\"τ\",\"tbrk\":\"⎴\",\"Tcaron\":\"Ť\",\"tcaron\":\"ť\",\"Tcedil\":\"Ţ\",\"tcedil\":\"ţ\",\"Tcy\":\"Т\",\"tcy\":\"т\",\"tdot\":\"⃛\",\"telrec\":\"⌕\",\"Tfr\":\"𝔗\",\"tfr\":\"𝔱\",\"there4\":\"∴\",\"therefore\":\"∴\",\"Therefore\":\"∴\",\"Theta\":\"Θ\",\"theta\":\"θ\",\"thetasym\":\"ϑ\",\"thetav\":\"ϑ\",\"thickapprox\":\"≈\",\"thicksim\":\"∼\",\"ThickSpace\":\" \",\"ThinSpace\":\" \",\"thinsp\":\" \",\"thkap\":\"≈\",\"thksim\":\"∼\",\"THORN\":\"Þ\",\"thorn\":\"þ\",\"tilde\":\"˜\",\"Tilde\":\"∼\",\"TildeEqual\":\"≃\",\"TildeFullEqual\":\"≅\",\"TildeTilde\":\"≈\",\"timesbar\":\"⨱\",\"timesb\":\"⊠\",\"times\":\"×\",\"timesd\":\"⨰\",\"tint\":\"∭\",\"toea\":\"⤨\",\"topbot\":\"⌶\",\"topcir\":\"⫱\",\"top\":\"⊤\",\"Topf\":\"𝕋\",\"topf\":\"𝕥\",\"topfork\":\"⫚\",\"tosa\":\"⤩\",\"tprime\":\"‴\",\"trade\":\"™\",\"TRADE\":\"™\",\"triangle\":\"▵\",\"triangledown\":\"▿\",\"triangleleft\":\"◃\",\"trianglelefteq\":\"⊴\",\"triangleq\":\"≜\",\"triangleright\":\"▹\",\"trianglerighteq\":\"⊵\",\"tridot\":\"◬\",\"trie\":\"≜\",\"triminus\":\"⨺\",\"TripleDot\":\"⃛\",\"triplus\":\"⨹\",\"trisb\":\"⧍\",\"tritime\":\"⨻\",\"trpezium\":\"⏢\",\"Tscr\":\"𝒯\",\"tscr\":\"𝓉\",\"TScy\":\"Ц\",\"tscy\":\"ц\",\"TSHcy\":\"Ћ\",\"tshcy\":\"ћ\",\"Tstrok\":\"Ŧ\",\"tstrok\":\"ŧ\",\"twixt\":\"≬\",\"twoheadleftarrow\":\"↞\",\"twoheadrightarrow\":\"↠\",\"Uacute\":\"Ú\",\"uacute\":\"ú\",\"uarr\":\"↑\",\"Uarr\":\"↟\",\"uArr\":\"⇑\",\"Uarrocir\":\"⥉\",\"Ubrcy\":\"Ў\",\"ubrcy\":\"ў\",\"Ubreve\":\"Ŭ\",\"ubreve\":\"ŭ\",\"Ucirc\":\"Û\",\"ucirc\":\"û\",\"Ucy\":\"У\",\"ucy\":\"у\",\"udarr\":\"⇅\",\"Udblac\":\"Ű\",\"udblac\":\"ű\",\"udhar\":\"⥮\",\"ufisht\":\"⥾\",\"Ufr\":\"𝔘\",\"ufr\":\"𝔲\",\"Ugrave\":\"Ù\",\"ugrave\":\"ù\",\"uHar\":\"⥣\",\"uharl\":\"↿\",\"uharr\":\"↾\",\"uhblk\":\"▀\",\"ulcorn\":\"⌜\",\"ulcorner\":\"⌜\",\"ulcrop\":\"⌏\",\"ultri\":\"◸\",\"Umacr\":\"Ū\",\"umacr\":\"ū\",\"uml\":\"¨\",\"UnderBar\":\"_\",\"UnderBrace\":\"⏟\",\"UnderBracket\":\"⎵\",\"UnderParenthesis\":\"⏝\",\"Union\":\"⋃\",\"UnionPlus\":\"⊎\",\"Uogon\":\"Ų\",\"uogon\":\"ų\",\"Uopf\":\"𝕌\",\"uopf\":\"𝕦\",\"UpArrowBar\":\"⤒\",\"uparrow\":\"↑\",\"UpArrow\":\"↑\",\"Uparrow\":\"⇑\",\"UpArrowDownArrow\":\"⇅\",\"updownarrow\":\"↕\",\"UpDownArrow\":\"↕\",\"Updownarrow\":\"⇕\",\"UpEquilibrium\":\"⥮\",\"upharpoonleft\":\"↿\",\"upharpoonright\":\"↾\",\"uplus\":\"⊎\",\"UpperLeftArrow\":\"↖\",\"UpperRightArrow\":\"↗\",\"upsi\":\"υ\",\"Upsi\":\"ϒ\",\"upsih\":\"ϒ\",\"Upsilon\":\"Υ\",\"upsilon\":\"υ\",\"UpTeeArrow\":\"↥\",\"UpTee\":\"⊥\",\"upuparrows\":\"⇈\",\"urcorn\":\"⌝\",\"urcorner\":\"⌝\",\"urcrop\":\"⌎\",\"Uring\":\"Ů\",\"uring\":\"ů\",\"urtri\":\"◹\",\"Uscr\":\"𝒰\",\"uscr\":\"𝓊\",\"utdot\":\"⋰\",\"Utilde\":\"Ũ\",\"utilde\":\"ũ\",\"utri\":\"▵\",\"utrif\":\"▴\",\"uuarr\":\"⇈\",\"Uuml\":\"Ü\",\"uuml\":\"ü\",\"uwangle\":\"⦧\",\"vangrt\":\"⦜\",\"varepsilon\":\"ϵ\",\"varkappa\":\"ϰ\",\"varnothing\":\"∅\",\"varphi\":\"ϕ\",\"varpi\":\"ϖ\",\"varpropto\":\"∝\",\"varr\":\"↕\",\"vArr\":\"⇕\",\"varrho\":\"ϱ\",\"varsigma\":\"ς\",\"varsubsetneq\":\"⊊︀\",\"varsubsetneqq\":\"⫋︀\",\"varsupsetneq\":\"⊋︀\",\"varsupsetneqq\":\"⫌︀\",\"vartheta\":\"ϑ\",\"vartriangleleft\":\"⊲\",\"vartriangleright\":\"⊳\",\"vBar\":\"⫨\",\"Vbar\":\"⫫\",\"vBarv\":\"⫩\",\"Vcy\":\"В\",\"vcy\":\"в\",\"vdash\":\"⊢\",\"vDash\":\"⊨\",\"Vdash\":\"⊩\",\"VDash\":\"⊫\",\"Vdashl\":\"⫦\",\"veebar\":\"⊻\",\"vee\":\"∨\",\"Vee\":\"⋁\",\"veeeq\":\"≚\",\"vellip\":\"⋮\",\"verbar\":\"|\",\"Verbar\":\"‖\",\"vert\":\"|\",\"Vert\":\"‖\",\"VerticalBar\":\"∣\",\"VerticalLine\":\"|\",\"VerticalSeparator\":\"❘\",\"VerticalTilde\":\"≀\",\"VeryThinSpace\":\" \",\"Vfr\":\"𝔙\",\"vfr\":\"𝔳\",\"vltri\":\"⊲\",\"vnsub\":\"⊂⃒\",\"vnsup\":\"⊃⃒\",\"Vopf\":\"𝕍\",\"vopf\":\"𝕧\",\"vprop\":\"∝\",\"vrtri\":\"⊳\",\"Vscr\":\"𝒱\",\"vscr\":\"𝓋\",\"vsubnE\":\"⫋︀\",\"vsubne\":\"⊊︀\",\"vsupnE\":\"⫌︀\",\"vsupne\":\"⊋︀\",\"Vvdash\":\"⊪\",\"vzigzag\":\"⦚\",\"Wcirc\":\"Ŵ\",\"wcirc\":\"ŵ\",\"wedbar\":\"⩟\",\"wedge\":\"∧\",\"Wedge\":\"⋀\",\"wedgeq\":\"≙\",\"weierp\":\"℘\",\"Wfr\":\"𝔚\",\"wfr\":\"𝔴\",\"Wopf\":\"𝕎\",\"wopf\":\"𝕨\",\"wp\":\"℘\",\"wr\":\"≀\",\"wreath\":\"≀\",\"Wscr\":\"𝒲\",\"wscr\":\"𝓌\",\"xcap\":\"⋂\",\"xcirc\":\"◯\",\"xcup\":\"⋃\",\"xdtri\":\"▽\",\"Xfr\":\"𝔛\",\"xfr\":\"𝔵\",\"xharr\":\"⟷\",\"xhArr\":\"⟺\",\"Xi\":\"Ξ\",\"xi\":\"ξ\",\"xlarr\":\"⟵\",\"xlArr\":\"⟸\",\"xmap\":\"⟼\",\"xnis\":\"⋻\",\"xodot\":\"⨀\",\"Xopf\":\"𝕏\",\"xopf\":\"𝕩\",\"xoplus\":\"⨁\",\"xotime\":\"⨂\",\"xrarr\":\"⟶\",\"xrArr\":\"⟹\",\"Xscr\":\"𝒳\",\"xscr\":\"𝓍\",\"xsqcup\":\"⨆\",\"xuplus\":\"⨄\",\"xutri\":\"△\",\"xvee\":\"⋁\",\"xwedge\":\"⋀\",\"Yacute\":\"Ý\",\"yacute\":\"ý\",\"YAcy\":\"Я\",\"yacy\":\"я\",\"Ycirc\":\"Ŷ\",\"ycirc\":\"ŷ\",\"Ycy\":\"Ы\",\"ycy\":\"ы\",\"yen\":\"¥\",\"Yfr\":\"𝔜\",\"yfr\":\"𝔶\",\"YIcy\":\"Ї\",\"yicy\":\"ї\",\"Yopf\":\"𝕐\",\"yopf\":\"𝕪\",\"Yscr\":\"𝒴\",\"yscr\":\"𝓎\",\"YUcy\":\"Ю\",\"yucy\":\"ю\",\"yuml\":\"ÿ\",\"Yuml\":\"Ÿ\",\"Zacute\":\"Ź\",\"zacute\":\"ź\",\"Zcaron\":\"Ž\",\"zcaron\":\"ž\",\"Zcy\":\"З\",\"zcy\":\"з\",\"Zdot\":\"Ż\",\"zdot\":\"ż\",\"zeetrf\":\"ℨ\",\"ZeroWidthSpace\":\"\",\"Zeta\":\"Ζ\",\"zeta\":\"ζ\",\"zfr\":\"𝔷\",\"Zfr\":\"ℨ\",\"ZHcy\":\"Ж\",\"zhcy\":\"ж\",\"zigrarr\":\"⇝\",\"zopf\":\"𝕫\",\"Zopf\":\"ℤ\",\"Zscr\":\"𝒵\",\"zscr\":\"𝓏\",\"zwj\":\"\",\"zwnj\":\"\"}\n","{\"Aacute\":\"Á\",\"aacute\":\"á\",\"Acirc\":\"Â\",\"acirc\":\"â\",\"acute\":\"´\",\"AElig\":\"Æ\",\"aelig\":\"æ\",\"Agrave\":\"À\",\"agrave\":\"à\",\"amp\":\"&\",\"AMP\":\"&\",\"Aring\":\"Å\",\"aring\":\"å\",\"Atilde\":\"Ã\",\"atilde\":\"ã\",\"Auml\":\"Ä\",\"auml\":\"ä\",\"brvbar\":\"¦\",\"Ccedil\":\"Ç\",\"ccedil\":\"ç\",\"cedil\":\"¸\",\"cent\":\"¢\",\"copy\":\"©\",\"COPY\":\"©\",\"curren\":\"¤\",\"deg\":\"°\",\"divide\":\"÷\",\"Eacute\":\"É\",\"eacute\":\"é\",\"Ecirc\":\"Ê\",\"ecirc\":\"ê\",\"Egrave\":\"È\",\"egrave\":\"è\",\"ETH\":\"Ð\",\"eth\":\"ð\",\"Euml\":\"Ë\",\"euml\":\"ë\",\"frac12\":\"½\",\"frac14\":\"¼\",\"frac34\":\"¾\",\"gt\":\">\",\"GT\":\">\",\"Iacute\":\"Í\",\"iacute\":\"í\",\"Icirc\":\"Î\",\"icirc\":\"î\",\"iexcl\":\"¡\",\"Igrave\":\"Ì\",\"igrave\":\"ì\",\"iquest\":\"¿\",\"Iuml\":\"Ï\",\"iuml\":\"ï\",\"laquo\":\"«\",\"lt\":\"<\",\"LT\":\"<\",\"macr\":\"¯\",\"micro\":\"µ\",\"middot\":\"·\",\"nbsp\":\" \",\"not\":\"¬\",\"Ntilde\":\"Ñ\",\"ntilde\":\"ñ\",\"Oacute\":\"Ó\",\"oacute\":\"ó\",\"Ocirc\":\"Ô\",\"ocirc\":\"ô\",\"Ograve\":\"Ò\",\"ograve\":\"ò\",\"ordf\":\"ª\",\"ordm\":\"º\",\"Oslash\":\"Ø\",\"oslash\":\"ø\",\"Otilde\":\"Õ\",\"otilde\":\"õ\",\"Ouml\":\"Ö\",\"ouml\":\"ö\",\"para\":\"¶\",\"plusmn\":\"±\",\"pound\":\"£\",\"quot\":\"\\\"\",\"QUOT\":\"\\\"\",\"raquo\":\"»\",\"reg\":\"®\",\"REG\":\"®\",\"sect\":\"§\",\"shy\":\"\",\"sup1\":\"¹\",\"sup2\":\"²\",\"sup3\":\"³\",\"szlig\":\"ß\",\"THORN\":\"Þ\",\"thorn\":\"þ\",\"times\":\"×\",\"Uacute\":\"Ú\",\"uacute\":\"ú\",\"Ucirc\":\"Û\",\"ucirc\":\"û\",\"Ugrave\":\"Ù\",\"ugrave\":\"ù\",\"uml\":\"¨\",\"Uuml\":\"Ü\",\"uuml\":\"ü\",\"Yacute\":\"Ý\",\"yacute\":\"ý\",\"yen\":\"¥\",\"yuml\":\"ÿ\"}\n","{\"amp\":\"&\",\"apos\":\"'\",\"gt\":\">\",\"lt\":\"<\",\"quot\":\"\\\"\"}\n","{\"0\":65533,\"128\":8364,\"130\":8218,\"131\":402,\"132\":8222,\"133\":8230,\"134\":8224,\"135\":8225,\"136\":710,\"137\":8240,\"138\":352,\"139\":8249,\"140\":338,\"142\":381,\"145\":8216,\"146\":8217,\"147\":8220,\"148\":8221,\"149\":8226,\"150\":8211,\"151\":8212,\"152\":732,\"153\":8482,\"154\":353,\"155\":8250,\"156\":339,\"158\":382,\"159\":376}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint(codePoint);\n}\nexports.default = decodeCodePoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var replace = getReplacer(map);\n return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n // TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return map[str.slice(1, -1)] || str;\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `#`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n function (str) { return str.codePointAt(0); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c) {\n return (c.charCodeAt(0) - 0xd800) * 0x400 +\n c.charCodeAt(1) -\n 0xdc00 +\n 0x10000;\n };\nfunction singleCharReplacer(c) {\n return \"&#x\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n .toString(16)\n .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n}\nexports.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `ü`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n}\nexports.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n return function (data) {\n return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return encode_2.escapeUTF8; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar entities = require('entities');\n\nvar defaults = {\n fg: '#FFF',\n bg: '#000',\n newline: false,\n escapeXML: false,\n stream: false,\n colors: getDefaultColors()\n};\n\nfunction getDefaultColors() {\n var colors = {\n 0: '#000',\n 1: '#A00',\n 2: '#0A0',\n 3: '#A50',\n 4: '#00A',\n 5: '#A0A',\n 6: '#0AA',\n 7: '#AAA',\n 8: '#555',\n 9: '#F55',\n 10: '#5F5',\n 11: '#FF5',\n 12: '#55F',\n 13: '#F5F',\n 14: '#5FF',\n 15: '#FFF'\n };\n range(0, 5).forEach(function (red) {\n range(0, 5).forEach(function (green) {\n range(0, 5).forEach(function (blue) {\n return setStyleColor(red, green, blue, colors);\n });\n });\n });\n range(0, 23).forEach(function (gray) {\n var c = gray + 232;\n var l = toHexString(gray * 10 + 8);\n colors[c] = '#' + l + l + l;\n });\n return colors;\n}\n/**\n * @param {number} red\n * @param {number} green\n * @param {number} blue\n * @param {object} colors\n */\n\n\nfunction setStyleColor(red, green, blue, colors) {\n var c = 16 + red * 36 + green * 6 + blue;\n var r = red > 0 ? red * 40 + 55 : 0;\n var g = green > 0 ? green * 40 + 55 : 0;\n var b = blue > 0 ? blue * 40 + 55 : 0;\n colors[c] = toColorHexString([r, g, b]);\n}\n/**\n * Converts from a number like 15 to a hex string like 'F'\n * @param {number} num\n * @returns {string}\n */\n\n\nfunction toHexString(num) {\n var str = num.toString(16);\n\n while (str.length < 2) {\n str = '0' + str;\n }\n\n return str;\n}\n/**\n * Converts from an array of numbers like [15, 15, 15] to a hex string like 'FFF'\n * @param {[red, green, blue]} ref\n * @returns {string}\n */\n\n\nfunction toColorHexString(ref) {\n var results = [];\n\n var _iterator = _createForOfIteratorHelper(ref),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var r = _step.value;\n results.push(toHexString(r));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return '#' + results.join('');\n}\n/**\n * @param {Array} stack\n * @param {string} token\n * @param {*} data\n * @param {object} options\n */\n\n\nfunction generateOutput(stack, token, data, options) {\n var result;\n\n if (token === 'text') {\n result = pushText(data, options);\n } else if (token === 'display') {\n result = handleDisplay(stack, data, options);\n } else if (token === 'xterm256Foreground') {\n result = pushForegroundColor(stack, options.colors[data]);\n } else if (token === 'xterm256Background') {\n result = pushBackgroundColor(stack, options.colors[data]);\n } else if (token === 'rgb') {\n result = handleRgb(stack, data);\n }\n\n return result;\n}\n/**\n * @param {Array} stack\n * @param {string} data\n * @returns {*}\n */\n\n\nfunction handleRgb(stack, data) {\n data = data.substring(2).slice(0, -1);\n var operation = +data.substr(0, 2);\n var color = data.substring(5).split(';');\n var rgb = color.map(function (value) {\n return ('0' + Number(value).toString(16)).substr(-2);\n }).join('');\n return pushStyle(stack, (operation === 38 ? 'color:#' : 'background-color:#') + rgb);\n}\n/**\n * @param {Array} stack\n * @param {number} code\n * @param {object} options\n * @returns {*}\n */\n\n\nfunction handleDisplay(stack, code, options) {\n code = parseInt(code, 10);\n var codeMap = {\n '-1': function _() {\n return '<br/>';\n },\n 0: function _() {\n return stack.length && resetStyles(stack);\n },\n 1: function _() {\n return pushTag(stack, 'b');\n },\n 3: function _() {\n return pushTag(stack, 'i');\n },\n 4: function _() {\n return pushTag(stack, 'u');\n },\n 8: function _() {\n return pushStyle(stack, 'display:none');\n },\n 9: function _() {\n return pushTag(stack, 'strike');\n },\n 22: function _() {\n return pushStyle(stack, 'font-weight:normal;text-decoration:none;font-style:normal');\n },\n 23: function _() {\n return closeTag(stack, 'i');\n },\n 24: function _() {\n return closeTag(stack, 'u');\n },\n 39: function _() {\n return pushForegroundColor(stack, options.fg);\n },\n 49: function _() {\n return pushBackgroundColor(stack, options.bg);\n },\n 53: function _() {\n return pushStyle(stack, 'text-decoration:overline');\n }\n };\n var result;\n\n if (codeMap[code]) {\n result = codeMap[code]();\n } else if (4 < code && code < 7) {\n result = pushTag(stack, 'blink');\n } else if (29 < code && code < 38) {\n result = pushForegroundColor(stack, options.colors[code - 30]);\n } else if (39 < code && code < 48) {\n result = pushBackgroundColor(stack, options.colors[code - 40]);\n } else if (89 < code && code < 98) {\n result = pushForegroundColor(stack, options.colors[8 + (code - 90)]);\n } else if (99 < code && code < 108) {\n result = pushBackgroundColor(stack, options.colors[8 + (code - 100)]);\n }\n\n return result;\n}\n/**\n * Clear all the styles\n * @returns {string}\n */\n\n\nfunction resetStyles(stack) {\n var stackClone = stack.slice(0);\n stack.length = 0;\n return stackClone.reverse().map(function (tag) {\n return '</' + tag + '>';\n }).join('');\n}\n/**\n * Creates an array of numbers ranging from low to high\n * @param {number} low\n * @param {number} high\n * @returns {Array}\n * @example range(3, 7); // creates [3, 4, 5, 6, 7]\n */\n\n\nfunction range(low, high) {\n var results = [];\n\n for (var j = low; j <= high; j++) {\n results.push(j);\n }\n\n return results;\n}\n/**\n * Returns a new function that is true if value is NOT the same category\n * @param {string} category\n * @returns {function}\n */\n\n\nfunction notCategory(category) {\n return function (e) {\n return (category === null || e.category !== category) && category !== 'all';\n };\n}\n/**\n * Converts a code into an ansi token type\n * @param {number} code\n * @returns {string}\n */\n\n\nfunction categoryForCode(code) {\n code = parseInt(code, 10);\n var result = null;\n\n if (code === 0) {\n result = 'all';\n } else if (code === 1) {\n result = 'bold';\n } else if (2 < code && code < 5) {\n result = 'underline';\n } else if (4 < code && code < 7) {\n result = 'blink';\n } else if (code === 8) {\n result = 'hide';\n } else if (code === 9) {\n result = 'strike';\n } else if (29 < code && code < 38 || code === 39 || 89 < code && code < 98) {\n result = 'foreground-color';\n } else if (39 < code && code < 48 || code === 49 || 99 < code && code < 108) {\n result = 'background-color';\n }\n\n return result;\n}\n/**\n * @param {string} text\n * @param {object} options\n * @returns {string}\n */\n\n\nfunction pushText(text, options) {\n if (options.escapeXML) {\n return entities.encodeXML(text);\n }\n\n return text;\n}\n/**\n * @param {Array} stack\n * @param {string} tag\n * @param {string} [style='']\n * @returns {string}\n */\n\n\nfunction pushTag(stack, tag, style) {\n if (!style) {\n style = '';\n }\n\n stack.push(tag);\n return \"<\".concat(tag).concat(style ? \" style=\\\"\".concat(style, \"\\\"\") : '', \">\");\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction pushStyle(stack, style) {\n return pushTag(stack, 'span', style);\n}\n\nfunction pushForegroundColor(stack, color) {\n return pushTag(stack, 'span', 'color:' + color);\n}\n\nfunction pushBackgroundColor(stack, color) {\n return pushTag(stack, 'span', 'background-color:' + color);\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction closeTag(stack, style) {\n var last;\n\n if (stack.slice(-1)[0] === style) {\n last = stack.pop();\n }\n\n if (last) {\n return '</' + style + '>';\n }\n}\n/**\n * @param {string} text\n * @param {object} options\n * @param {function} callback\n * @returns {Array}\n */\n\n\nfunction tokenize(text, options, callback) {\n var ansiMatch = false;\n var ansiHandler = 3;\n\n function remove() {\n return '';\n }\n\n function removeXterm256Foreground(m, g1) {\n callback('xterm256Foreground', g1);\n return '';\n }\n\n function removeXterm256Background(m, g1) {\n callback('xterm256Background', g1);\n return '';\n }\n\n function newline(m) {\n if (options.newline) {\n callback('display', -1);\n } else {\n callback('text', m);\n }\n\n return '';\n }\n\n function ansiMess(m, g1) {\n ansiMatch = true;\n\n if (g1.trim().length === 0) {\n g1 = '0';\n }\n\n g1 = g1.trimRight(';').split(';');\n\n var _iterator2 = _createForOfIteratorHelper(g1),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var g = _step2.value;\n callback('display', g);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return '';\n }\n\n function realText(m) {\n callback('text', m);\n return '';\n }\n\n function rgb(m) {\n callback('rgb', m);\n return '';\n }\n /* eslint no-control-regex:0 */\n\n\n var tokens = [{\n pattern: /^\\x08+/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[012]?K/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[\\(B/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[34]8;2;\\d+;\\d+;\\d+m/,\n sub: rgb\n }, {\n pattern: /^\\x1b\\[38;5;(\\d+)m/,\n sub: removeXterm256Foreground\n }, {\n pattern: /^\\x1b\\[48;5;(\\d+)m/,\n sub: removeXterm256Background\n }, {\n pattern: /^\\n/,\n sub: newline\n }, {\n pattern: /^\\r+\\n/,\n sub: newline\n }, {\n pattern: /^\\r/,\n sub: newline\n }, {\n pattern: /^\\x1b\\[((?:\\d{1,3};?)+|)m/,\n sub: ansiMess\n }, {\n // CSI n J\n // ED - Erase in Display Clears part of the screen.\n // If n is 0 (or missing), clear from cursor to end of screen.\n // If n is 1, clear from cursor to beginning of the screen.\n // If n is 2, clear entire screen (and moves cursor to upper left on DOS ANSI.SYS).\n // If n is 3, clear entire screen and delete all lines saved in the scrollback buffer\n // (this feature was added for xterm and is supported by other terminal applications).\n pattern: /^\\x1b\\[\\d?J/,\n sub: remove\n }, {\n // CSI n ; m f\n // HVP - Horizontal Vertical Position Same as CUP\n pattern: /^\\x1b\\[\\d{0,3};\\d{0,3}f/,\n sub: remove\n }, {\n // catch-all for CSI sequences?\n pattern: /^\\x1b\\[?[\\d;]{0,3}/,\n sub: remove\n }, {\n /**\n * extracts real text - not containing:\n * - `\\x1b' - ESC - escape (Ascii 27)\n * - '\\x08' - BS - backspace (Ascii 8)\n * - `\\n` - Newline - linefeed (LF) (ascii 10)\n * - `\\r` - Windows Carriage Return (CR)\n */\n pattern: /^(([^\\x1b\\x08\\r\\n])+)/,\n sub: realText\n }];\n\n function process(handler, i) {\n if (i > ansiHandler && ansiMatch) {\n return;\n }\n\n ansiMatch = false;\n text = text.replace(handler.pattern, handler.sub);\n }\n\n var results1 = [];\n var _text = text,\n length = _text.length;\n\n outer: while (length > 0) {\n for (var i = 0, o = 0, len = tokens.length; o < len; i = ++o) {\n var handler = tokens[i];\n process(handler, i);\n\n if (text.length !== length) {\n // We matched a token and removed it from the text. We need to\n // start matching *all* tokens against the new text.\n length = text.length;\n continue outer;\n }\n }\n\n if (text.length === length) {\n break;\n }\n\n results1.push(0);\n length = text.length;\n }\n\n return results1;\n}\n/**\n * If streaming, then the stack is \"sticky\"\n *\n * @param {Array} stickyStack\n * @param {string} token\n * @param {*} data\n * @returns {Array}\n */\n\n\nfunction updateStickyStack(stickyStack, token, data) {\n if (token !== 'text') {\n stickyStack = stickyStack.filter(notCategory(categoryForCode(data)));\n stickyStack.push({\n token: token,\n data: data,\n category: categoryForCode(data)\n });\n }\n\n return stickyStack;\n}\n\nvar Filter = /*#__PURE__*/function () {\n /**\n * @param {object} options\n * @param {string=} options.fg The default foreground color used when reset color codes are encountered.\n * @param {string=} options.bg The default background color used when reset color codes are encountered.\n * @param {boolean=} options.newline Convert newline characters to `<br/>`.\n * @param {boolean=} options.escapeXML Generate HTML/XML entities.\n * @param {boolean=} options.stream Save style state across invocations of `toHtml()`.\n * @param {(string[] | {[code: number]: string})=} options.colors Can override specific colors or the entire ANSI palette.\n */\n function Filter(options) {\n _classCallCheck(this, Filter);\n\n options = options || {};\n\n if (options.colors) {\n options.colors = Object.assign({}, defaults.colors, options.colors);\n }\n\n this.options = Object.assign({}, defaults, options);\n this.stack = [];\n this.stickyStack = [];\n }\n /**\n * @param {string | string[]} input\n * @returns {string}\n */\n\n\n _createClass(Filter, [{\n key: \"toHtml\",\n value: function toHtml(input) {\n var _this = this;\n\n input = typeof input === 'string' ? [input] : input;\n var stack = this.stack,\n options = this.options;\n var buf = [];\n this.stickyStack.forEach(function (element) {\n var output = generateOutput(stack, element.token, element.data, options);\n\n if (output) {\n buf.push(output);\n }\n });\n tokenize(input.join(''), options, function (token, data) {\n var output = generateOutput(stack, token, data, options);\n\n if (output) {\n buf.push(output);\n }\n\n if (options.stream) {\n _this.stickyStack = updateStickyStack(_this.stickyStack, token, data);\n }\n });\n\n if (stack.length) {\n buf.push(resetStyles(stack));\n }\n\n return buf.join('');\n }\n }]);\n\n return Filter;\n}();\n\nmodule.exports = Filter;\n//# sourceMappingURL=ansi_to_html.js.map","/*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.3';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = create(null);\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Prevent function-based ADD_ATTR / ADD_TAGS from leaking across calls */\n if (!objectHasOwnProperty(cfg, 'ADD_TAGS')) {\n EXTRA_ELEMENT_HANDLING.tagCheck = null;\n }\n if (!objectHasOwnProperty(cfg, 'ADD_ATTR')) {\n EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n if (FORBID_ATTR[lcName]) {\n return false;\n }\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","<!--\n [Gauge.REQUEST_COUNT_GAUGE]: this.GetModelNode(data.requestCount),\n [Gauge.ERROR_COUNT_GAUGE]: this.GetModelNode(data.errorCount),\n [Gauge.RETRY_COUNT_GAUGE]: this.GetModelNode(data.retryCount),\n [Gauge.AUTHENTICATION_COUNT_GAUGE]: this.GetModelNode(data.authenticationCount),\n [Gauge.VELOCITY_GAUGE]: this.GetModelNode(data.velocity),\n [Gauge.ACTIVE_REQUEST_GAUGE]: this.GetModelNode(data.activeRequestCount),\n [Gauge.CORE_COUNT_GAUGE]: this.GetModelNode(data.coreCount),\n [Gauge.TIMER_GAUGE]: this.GetModelNode(data.timer),\n [Gauge.DURATION_GAUGE]: this.GetModelNodeWithQuantile(data.duration, data.duration_quantile),\n [Gauge.DURATION_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.duration_histo),\n [Gauge.LATENCY_GAUGE]: this.GetModelNodeWithQuantile(data.latency, data.latency_quantile),\n [Gauge.LATENCY_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.latency_histo),\n-->\n<template>\n <v-container>\n <v-card\n class=\"ma-2 pa-2\"\n color=\"#002255\"\n theme=\"dark\"\n prepend-icon=\"mdi-desktop-tower\"\n :title=\"`${title}`\"\n >\n <template #text>\n [{{ nodeid }}]\n <v-switch\n v-model=\"detailMode\"\n :label=\"`Detailed Mode: ${detailMode.toString()}`\"\n />\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Duration\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ round2Places(instrumentData[`${Gauge.DURATION_GAUGE}`].val) }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round2PlacesArray(instrumentData[`${Gauge.DURATION_GAUGE}`].percentile) }}\n </span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Duration Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div\n v-for=\"(histo, index) in instrumentData[`${Gauge.DURATION_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Latency\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ round2Places(instrumentData[`${Gauge.LATENCY_GAUGE}`].val) }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round2PlacesArray(instrumentData[`${Gauge.LATENCY_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Latency Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div\n v-for=\"(histo, index) in instrumentData[`${Gauge.LATENCY_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"12\">\n <div><UXBarChart ref=\"barChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Request Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.REQUEST_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentData[`${Gauge.ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentData[`${Gauge.RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Authentication Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay ml-6\">{{ instrumentData[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentData[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentData[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Velocity\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].va) }} <span class=\"subDisplay ml-1\">[{{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].velocity) }}]</span></span>\n <span class=\"instDisplay ml-6\">Delta: {{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].delta) }}</span>\n <span class=\"instDisplay ml-6\">Max: {{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].maxVelocity) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Active Request Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentData[`${Gauge.ACTIVE_REQUEST_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Core Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.CORE_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Time\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ convertMS(instrumentData[`${Gauge.TIMER_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Logs\n </v-col>\n <v-col md=\"10\">\n <div\n class=\"overflow-x-auto\"\n style=\"max-height: 400px\"\n >\n <div v-if=\"isLeafNode\">\n <div\n v-for=\"(logLine, index) in LogDataCopy\"\n :key=\"`ln-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n <div v-else>\n <div\n v-for=\"(logLine, index) in LogData\"\n :key=\"`nlf-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n </template>\n </v-card>\n </v-container>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport Convert from 'ansi-to-html'\nimport { ModelStore } from './../stores/modelStore.js'\nimport UXBarChart from './UXBarChart.vue';\n\n// Alternatives;\n// https://www.npmjs.com/package/sanitize-html\n// Use this is node\n// https://www.npmjs.com/package/isomorphic-dompurify\n// import DOMPurify2 from 'isomorphic-dompurify';\nimport DOMPurify from 'dompurify'\n\nconst convert = new Convert();\n \nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n if (!props.isLeafNode) {\n emit('myclick', id);\n }\n}\n\nconst props = defineProps<{ \n \n modelId: string\n instrumentData: any\n contextData: any\n isLeafNode: boolean\n nodeid: string\n title: string\n }>();\n\nconst LogData = computed(() => {\n if (props.instrumentData[`${Gauge.LOGGER}`]) {\n return props.instrumentData[`${Gauge.LOGGER}`].val;\n } else {\n return [];\n }\n});\n\nconst LogDataCopy = computed(() => {\n if (props.instrumentData[`${Gauge.LOGGER_COPY}`]) {\n return props.instrumentData[`${Gauge.LOGGER_COPY}`].val;\n } else {\n return [];\n }\n});\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n};\n\nconst round2Places = function(value: number): string{\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n};\n\nconst round0PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n retVal += `${sep}${value[i][0]}/${value[i][1]}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n}\n\nconst round2PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n const bp = (Math.round(value[i][0] as number * 10000) / 100) as number;\n const val = (Math.round(value[i][1] as number * 100) / 100) as number;\n retVal += `${sep}${bp}/${val.toFixed(2)}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n\n\n let numArray = value.map((value) => (Math.round(value[1] * 100) / 100).toFixed(2));\n let sep = '';\n return '[' + numArray.reduce((prev, current) => {\n const retVal = prev += (sep + current);\n sep = ', ';\n return retVal;\n }, '') + ']'\n}\n\nconst convertMS = function(ms: number): string {\n //let d, h, m, s;\n let s = Math.floor(ms / 1000);\n let m = Math.floor(s / 60);\n s = s % 60;\n let h = Math.floor(m / 60);\n m = m % 60;\n const d = Math.floor(h / 24);\n h = h % 24;\n\n const pad: (n: number) => string = function(n: number) { return n < 10 ? '0' + n : n.toString(); };\n\n return (d + '.' + pad(h) + ':' + pad(m) + ':' + pad(s)).padStart(12);\n}\n\nconst convertHtml = function(value: string): string {\n return DOMPurify.sanitize(convert.toHtml(value));\n}\n\nconst detailMode = computed<boolean>({\n get: () => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid] && store._models[props.modelId].modelMeta[props.nodeid].detailView) {\n return store._models[props.modelId].modelMeta[props.nodeid].detailView;\n }\n }\n return false;\n },\n set: (val) => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid]) {\n store._models[props.modelId].modelMeta[props.nodeid].detailView = val;\n } else {\n store._models[props.modelId].modelMeta[props.nodeid] = {\n detailView: val\n }\n }\n }\n }\n})\n\nconst barChartEx = ref<typeof UXBarChart>(); //@@ was ref(null);\n//const radialChartEx = ref<typeof UXRadialChart>(); //@@ was ref(null);\n\nlet barUpdate = 0;\n\n \nwatch(() => props.instrumentData, (val) => {\n if (barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentData[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentData[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n</script>\n\n<style scoped>\n .stdWidth {\n width: 70px;\n }\n .instDisplay {\n display: inline-block;\n width: 70px;\n }\n .instDisplayWide {\n display: inline-block;\n width: 300px;\n max-width: 400px;\n }\n .instDisplayXWide {\n width: 300px;\n max-width: 400px;\n }\n .subDisplay {\n font-size: smaller;\n }\n</style>","<!--\n [Gauge.REQUEST_COUNT_GAUGE]: this.GetModelNode(data.requestCount),\n [Gauge.ERROR_COUNT_GAUGE]: this.GetModelNode(data.errorCount),\n [Gauge.RETRY_COUNT_GAUGE]: this.GetModelNode(data.retryCount),\n [Gauge.AUTHENTICATION_COUNT_GAUGE]: this.GetModelNode(data.authenticationCount),\n [Gauge.VELOCITY_GAUGE]: this.GetModelNode(data.velocity),\n [Gauge.ACTIVE_REQUEST_GAUGE]: this.GetModelNode(data.activeRequestCount),\n [Gauge.CORE_COUNT_GAUGE]: this.GetModelNode(data.coreCount),\n [Gauge.TIMER_GAUGE]: this.GetModelNode(data.timer),\n [Gauge.DURATION_GAUGE]: this.GetModelNodeWithQuantile(data.duration, data.duration_quantile),\n [Gauge.DURATION_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.duration_histo),\n [Gauge.LATENCY_GAUGE]: this.GetModelNodeWithQuantile(data.latency, data.latency_quantile),\n [Gauge.LATENCY_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.latency_histo),\n-->\n<template>\n <v-container>\n <v-card\n class=\"ma-2 pa-2\"\n color=\"#002255\"\n theme=\"dark\"\n prepend-icon=\"mdi-desktop-tower\"\n :title=\"`${title}`\"\n >\n <template #text>\n [{{ nodeid }}]\n <v-switch\n v-model=\"detailMode\"\n :label=\"`Detailed Mode: ${detailMode.toString()}`\"\n />\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Duration\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ round2Places(instrumentData[`${Gauge.DURATION_GAUGE}`].val) }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round2PlacesArray(instrumentData[`${Gauge.DURATION_GAUGE}`].percentile) }}\n </span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Duration Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div\n v-for=\"(histo, index) in instrumentData[`${Gauge.DURATION_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Latency\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ round2Places(instrumentData[`${Gauge.LATENCY_GAUGE}`].val) }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round2PlacesArray(instrumentData[`${Gauge.LATENCY_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Latency Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div\n v-for=\"(histo, index) in instrumentData[`${Gauge.LATENCY_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"12\">\n <div><UXBarChart ref=\"barChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Request Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.REQUEST_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentData[`${Gauge.ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentData[`${Gauge.RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Authentication Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay ml-6\">{{ instrumentData[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentData[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentData[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Velocity\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].va) }} <span class=\"subDisplay ml-1\">[{{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].velocity) }}]</span></span>\n <span class=\"instDisplay ml-6\">Delta: {{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].delta) }}</span>\n <span class=\"instDisplay ml-6\">Max: {{ velocityFormat(instrumentData[`${Gauge.VELOCITY_GAUGE}`].maxVelocity) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Active Request Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val }}</span>\n <span\n v-if=\"isLeafNode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentData[`${Gauge.ACTIVE_REQUEST_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Core Count\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ instrumentData[`${Gauge.CORE_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Time\n </v-col>\n <v-col md=\"10\">\n <span class=\"instDisplay text-right\">{{ convertMS(instrumentData[`${Gauge.TIMER_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row cols=\"12\">\n <v-col md=\"2\">\n Logs\n </v-col>\n <v-col md=\"10\">\n <div\n class=\"overflow-x-auto\"\n style=\"max-height: 400px\"\n >\n <div v-if=\"isLeafNode\">\n <div\n v-for=\"(logLine, index) in LogDataCopy\"\n :key=\"`ln-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n <div v-else>\n <div\n v-for=\"(logLine, index) in LogData\"\n :key=\"`nlf-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n </template>\n </v-card>\n </v-container>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport Convert from 'ansi-to-html'\nimport { ModelStore } from './../stores/modelStore.js'\nimport UXBarChart from './UXBarChart.vue';\n\n// Alternatives;\n// https://www.npmjs.com/package/sanitize-html\n// Use this is node\n// https://www.npmjs.com/package/isomorphic-dompurify\n// import DOMPurify2 from 'isomorphic-dompurify';\nimport DOMPurify from 'dompurify'\n\nconst convert = new Convert();\n \nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n if (!props.isLeafNode) {\n emit('myclick', id);\n }\n}\n\nconst props = defineProps<{ \n \n modelId: string\n instrumentData: any\n contextData: any\n isLeafNode: boolean\n nodeid: string\n title: string\n }>();\n\nconst LogData = computed(() => {\n if (props.instrumentData[`${Gauge.LOGGER}`]) {\n return props.instrumentData[`${Gauge.LOGGER}`].val;\n } else {\n return [];\n }\n});\n\nconst LogDataCopy = computed(() => {\n if (props.instrumentData[`${Gauge.LOGGER_COPY}`]) {\n return props.instrumentData[`${Gauge.LOGGER_COPY}`].val;\n } else {\n return [];\n }\n});\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n};\n\nconst round2Places = function(value: number): string{\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n};\n\nconst round0PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n retVal += `${sep}${value[i][0]}/${value[i][1]}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n}\n\nconst round2PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n const bp = (Math.round(value[i][0] as number * 10000) / 100) as number;\n const val = (Math.round(value[i][1] as number * 100) / 100) as number;\n retVal += `${sep}${bp}/${val.toFixed(2)}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n\n\n let numArray = value.map((value) => (Math.round(value[1] * 100) / 100).toFixed(2));\n let sep = '';\n return '[' + numArray.reduce((prev, current) => {\n const retVal = prev += (sep + current);\n sep = ', ';\n return retVal;\n }, '') + ']'\n}\n\nconst convertMS = function(ms: number): string {\n //let d, h, m, s;\n let s = Math.floor(ms / 1000);\n let m = Math.floor(s / 60);\n s = s % 60;\n let h = Math.floor(m / 60);\n m = m % 60;\n const d = Math.floor(h / 24);\n h = h % 24;\n\n const pad: (n: number) => string = function(n: number) { return n < 10 ? '0' + n : n.toString(); };\n\n return (d + '.' + pad(h) + ':' + pad(m) + ':' + pad(s)).padStart(12);\n}\n\nconst convertHtml = function(value: string): string {\n return DOMPurify.sanitize(convert.toHtml(value));\n}\n\nconst detailMode = computed<boolean>({\n get: () => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid] && store._models[props.modelId].modelMeta[props.nodeid].detailView) {\n return store._models[props.modelId].modelMeta[props.nodeid].detailView;\n }\n }\n return false;\n },\n set: (val) => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid]) {\n store._models[props.modelId].modelMeta[props.nodeid].detailView = val;\n } else {\n store._models[props.modelId].modelMeta[props.nodeid] = {\n detailView: val\n }\n }\n }\n }\n})\n\nconst barChartEx = ref<typeof UXBarChart>(); //@@ was ref(null);\n//const radialChartEx = ref<typeof UXRadialChart>(); //@@ was ref(null);\n\nlet barUpdate = 0;\n\n \nwatch(() => props.instrumentData, (val) => {\n if (barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentData[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentData[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n</script>\n\n<style scoped>\n .stdWidth {\n width: 70px;\n }\n .instDisplay {\n display: inline-block;\n width: 70px;\n }\n .instDisplayWide {\n display: inline-block;\n width: 300px;\n max-width: 400px;\n }\n .instDisplayXWide {\n width: 300px;\n max-width: 400px;\n }\n .subDisplay {\n font-size: smaller;\n }\n</style>","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","/* eslint-env browser */\n\nconst level = (() => {\n\tif (!('navigator' in globalThis)) {\n\t\treturn 0;\n\t}\n\n\tif (globalThis.navigator.userAgentData) {\n\t\tconst brand = navigator.userAgentData.brands.find(({brand}) => brand === 'Chromium');\n\t\tif (brand && brand.version > 93) {\n\t\t\treturn 3;\n\t\t}\n\t}\n\n\tif (/\\b(Chrome|Chromium)\\//.test(globalThis.navigator.userAgent)) {\n\t\treturn 1;\n\t}\n\n\treturn 0;\n})();\n\nconst colorSupport = level !== 0 && {\n\tlevel,\n\thasBasic: true,\n\thas256: level >= 2,\n\thas16m: level >= 3,\n};\n\nconst supportsColor = {\n\tstdout: colorSupport,\n\tstderr: colorSupport,\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","<!--\n[Gauge.REQUEST_COUNT_GAUGE]: this.GetModelNode(data.requestCount),\n[Gauge.ERROR_COUNT_GAUGE]: this.GetModelNode(data.errorCount),\n[Gauge.RETRY_COUNT_GAUGE]: this.GetModelNode(data.retryCount),\n[Gauge.AUTHENTICATION_COUNT_GAUGE]: this.GetModelNode(data.authenticationCount),\n[Gauge.VELOCITY_GAUGE]: this.GetModelNode(data.velocity),\n[Gauge.CPU_LOAD_GAUGE]: this.GetModelNodeWithQuantile(data.cpu, data.cpu_quantile),\n[Gauge.CPU_SYSTEM_LOAD_GAUGE]: this.GetModelNodeWithQuantile(data.systemcpu, data.systemcpu_quantile),\n[Gauge.ACTIVE_REQUEST_GAUGE]: this.GetModelNode(data.activeRequestCount),\n[Gauge.CONNECTION_COUNT_GAUGE]: this.GetModelNode(data.connectionCount),\n[Gauge.CONNECTION_POOL_TOTAL_GAUGE]: this.GetModelNode(data.connectionPoolCount),\n[Gauge.CONNECTION_POOL_IDLE_GAUGE]: this.GetModelNode(data.connectionIdleCount),\n[Gauge.CONNECTION_POOL_WAITING_GAUGE]: this.GetModelNode(data.connectionWaitingCount),\n[Gauge.CORE_COUNT_GAUGE]: this.GetModelNode(data.coreCount),\n[Gauge.TIMER_GAUGE]: this.GetModelNode(data.timer),\n[Gauge.DURATION_GAUGE]: this.GetModelNodeWithQuantile(data.duration, data.duration_quantile),\n[Gauge.LATENCY_GAUGE]: this.GetModelNodeWithQuantile(data.latency, data.latency_quantile),\n[Gauge.DURATION_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.duration_histo),\n[Gauge.LATENCY_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.latency_histo),\n[Gauge.OBJECT_GAUGE]: this.GetModelNodeObject(data.memory)\n-->\n\n<template>\n <v-sheet\n variant=\"outlined\"\n theme=\"light\"\n rounded=\"lg\"\n class=\"mx-2 mt-2 mb-4 pa-2 pr-4\"\n :elevation=\"10\"\n @click=\"clicked(nodeid)\"\n >\n <div class=\"ststitle\">\n {{ friendlyTitle(title) }}\n <div\n v-if=\"title.length > 30\"\n class=\"stssubtitle\"\n >\n {{ title.split('@')[0] }}\n <div>\n {{ title.split('@')[1] }}\n </div>\n </div>\n </div>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"mt-1\"\n >\n <v-col cols=\"2\">\n CPU\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div class=\"instDisplay text-right\">\n {{ CPU }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n\n\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col\n cols=\"12\"\n style=\"margin-top: -20px;\"\n >\n <div><UXLineChart ref=\"lineChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"pt-1\"\n style=\"border-top: 2px solid lightgray;\"\n >\n <v-col cols=\"2\">\n Duration\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div class=\"instDisplay text-right\">\n {{ round2Places(instrumentdata[`${Gauge.DURATION_GAUGE}`].val) }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.DURATION_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col cols=\"2\">\n Duration Histo\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-nowrap\">\n <div\n v-for=\"(histo, index) in instrumentdata[`${Gauge.DURATION_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"2\">\n Latency\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row\">\n <div class=\"instDisplay text-right\">\n {{ round2Places(instrumentdata[`${Gauge.LATENCY_GAUGE}`].val) }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.LATENCY_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"2\">\n Latency Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-nowrap\">\n <div\n v-for=\"(histo, index) in instrumentdata[`${Gauge.LATENCY_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n style=\"margin-top: -15px;\"\n >\n <v-col md=\"12\">\n <div><UXBarChart ref=\"barChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"pt-1\"\n style=\"margin-top: -10px; border-top: 2px solid lightgray;\"\n >\n <v-col md=\"3\">\n Rx (MB/s)\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ Rx }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Tx (MB/s)\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ Tx }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Request Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentdata[`${Gauge.ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentdata[`${Gauge.RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Authentication Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentdata[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentdata[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Velocity\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ velocityFormat(instrumentdata[`${Gauge.VELOCITY_GAUGE}`].val) }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Active Request Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val }}</span>\n <span\n v-if=\"isleafnode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Core Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CORE_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n TCP Connections\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val }}</span>\n <span\n v-if=\"isleafnode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Connection Pool\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Idle: {{ velocityFormat(instrumentdata[`${Gauge.CONNECTION_POOL_IDLE_GAUGE}`].val) }}</span>\n <span class=\"instDisplay ml-6\">Wait: {{ velocityFormat(instrumentdata[`${Gauge.CONNECTION_POOL_WAITING_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Time\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ convertMS(instrumentdata[`${Gauge.TIMER_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Logs\n </v-col>\n <v-col md=\"9\">\n <div\n class=\"overflow-x-auto\"\n style=\"max-height: 400px\"\n >\n <div v-if=\"isleafnode\">\n <div\n v-for=\"(logLine, index) in LogDataCopy\"\n :key=\"`ln-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n <div v-else>\n <div\n v-for=\"(logLine, index) in LogData\"\n :key=\"`nlf-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n </v-sheet>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport Convert from 'ansi-to-html'\nimport { ModelStore } from './../stores/modelStore.js'\n\nimport UXLineChart from './UXLineChart.vue';\nimport UXBarChart from './UXBarChart.vue';\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\n//import UXRadialChart from './UXRadialChart.vue';\n\n// Alternatives;\n// https://www.npmjs.com/package/sanitize-html\n// Use this is node\n// https://www.npmjs.com/package/isomorphic-dompurify\n// import DOMPurify2 from 'isomorphic-dompurify';\nimport DOMPurify from 'dompurify'\n\nconst friendlyTitle = (id: string) => {\n if (id.length > 30) {\n return store.GetFriendName(props.modelId, id);\n } else {\n return id;\n }\n}\n\nconst convert = new Convert();\n \nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n if (!props.isleafnode) {\n emit('myclick', id);\n }\n}\n\nconst props = defineProps<{ \n \n modelId: string\n instrumentdata: any\n contextdata: any\n isleafnode: boolean\n nodeid: string\n title: string\n }>();\n\nconst CPU = computed(() => {\n const cpuVal = props.instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].val;\n return round2Places(cpuVal);\n});\n\nconst LogData = computed(() => {\n if (props.instrumentdata[`${Gauge.LOGGER}`]) {\n return props.instrumentdata[`${Gauge.LOGGER}`].val;\n } else {\n return [];\n }\n});\n\nconst Rx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_RX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Tx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_TX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst LogDataCopy = computed(() => {\n if (props.instrumentdata[`${Gauge.LOGGER_COPY}`]) {\n return props.instrumentdata[`${Gauge.LOGGER_COPY}`].val;\n } else {\n return [];\n }\n});\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n};\n\nconst round2Places = function(value: number): string{\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n};\n\nconst round0PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n retVal += `${sep}${value[i][0]}/${value[i][1]}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n}\n\nconst round2PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n const bp = (Math.round(value[i][0] as number * 10000) / 100) as number;\n const val = (Math.round(value[i][1] as number * 100) / 100) as number;\n retVal += `${sep}${bp}/${val.toFixed(2)}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n\n\n let numArray = value.map((value) => (Math.round(value[1] * 100) / 100).toFixed(2));\n let sep = '';\n return '[' + numArray.reduce((prev, current) => {\n const retVal = prev += (sep + current);\n sep = ', ';\n return retVal;\n }, '') + ']'\n}\n\nconst convertMS = function(ms: number): string {\n //let d, h, m, s;\n let s = Math.floor(ms / 1000);\n let m = Math.floor(s / 60);\n s = s % 60;\n let h = Math.floor(m / 60);\n m = m % 60;\n const d = Math.floor(h / 24);\n h = h % 24;\n\n const pad: (n: number) => string = function(n: number) { return n < 10 ? '0' + n : n.toString(); };\n\n return (d + '.' + pad(h) + ':' + pad(m) + ':' + pad(s)).padStart(12);\n}\n\nconst convertHtml = function(value: string): string {\n return DOMPurify.sanitize(convert.toHtml(value));\n}\n\nconst detailMode = computed<boolean>({\n get: () => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid] && store._models[props.modelId].modelMeta[props.nodeid].detailView) {\n return store._models[props.modelId].modelMeta[props.nodeid].detailView;\n }\n }\n return false;\n },\n set: (val) => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid]) {\n store._models[props.modelId].modelMeta[props.nodeid].detailView = val;\n } else {\n store._models[props.modelId].modelMeta[props.nodeid] = {\n detailView: val\n }\n }\n }\n }\n})\n\nconst lineChartEx = ref<typeof UXLineChart>(); //@@ was ref(null);\nconst barChartEx = ref<typeof UXBarChart>(); //@@ was ref(null);\n//const radialChartEx = ref<typeof UXRadialChart>(); //@@ was ref(null);\n\nlet barUpdate = 0;\n\n \nwatch(() => props.instrumentdata, (val) => {\n if (lineChartEx.value) {\n lineChartEx.value.UpdateGraph(props.instrumentdata[Gauge.CPU_LOAD_GAUGE].val);\n }\n /*\n if (radialChartEx.value) {\n radialChartEx.value.UpdateGraph(props.instrumentData[Gauge.ACTIVE_REQUEST_GAUGE].val,\n props.instrumentData[Gauge.CONNECTION_COUNT_GAUGE].val, // TCP Connections\n props.instrumentData[Gauge.CONNECTION_POOL_TOTAL_GAUGE].val);\n\n console.log(JSON.stringify(props.instrumentData[Gauge.CONNECTION_COUNT_GAUGE]));\n }\n */\n if (barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentdata[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentdata[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n</script>\n\n<style scoped>\n .stdWidth {\n width: 70px;\n }\n .instDisplay {\n display: inline-block;\n width: 70px;\n }\n .instDisplayWide {\n display: inline-block;\n width: 300px;\n max-width: 400px;\n }\n .instDisplayXWide {\n width: 300px;\n max-width: 400px;\n }\n .subDisplay {\n font-size: smaller;\n }\n</style>","<!--\n[Gauge.REQUEST_COUNT_GAUGE]: this.GetModelNode(data.requestCount),\n[Gauge.ERROR_COUNT_GAUGE]: this.GetModelNode(data.errorCount),\n[Gauge.RETRY_COUNT_GAUGE]: this.GetModelNode(data.retryCount),\n[Gauge.AUTHENTICATION_COUNT_GAUGE]: this.GetModelNode(data.authenticationCount),\n[Gauge.VELOCITY_GAUGE]: this.GetModelNode(data.velocity),\n[Gauge.CPU_LOAD_GAUGE]: this.GetModelNodeWithQuantile(data.cpu, data.cpu_quantile),\n[Gauge.CPU_SYSTEM_LOAD_GAUGE]: this.GetModelNodeWithQuantile(data.systemcpu, data.systemcpu_quantile),\n[Gauge.ACTIVE_REQUEST_GAUGE]: this.GetModelNode(data.activeRequestCount),\n[Gauge.CONNECTION_COUNT_GAUGE]: this.GetModelNode(data.connectionCount),\n[Gauge.CONNECTION_POOL_TOTAL_GAUGE]: this.GetModelNode(data.connectionPoolCount),\n[Gauge.CONNECTION_POOL_IDLE_GAUGE]: this.GetModelNode(data.connectionIdleCount),\n[Gauge.CONNECTION_POOL_WAITING_GAUGE]: this.GetModelNode(data.connectionWaitingCount),\n[Gauge.CORE_COUNT_GAUGE]: this.GetModelNode(data.coreCount),\n[Gauge.TIMER_GAUGE]: this.GetModelNode(data.timer),\n[Gauge.DURATION_GAUGE]: this.GetModelNodeWithQuantile(data.duration, data.duration_quantile),\n[Gauge.LATENCY_GAUGE]: this.GetModelNodeWithQuantile(data.latency, data.latency_quantile),\n[Gauge.DURATION_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.duration_histo),\n[Gauge.LATENCY_HISTOGRAM_GAUGE]: this.GetModelNodeHistFromInfluxData(data.latency_histo),\n[Gauge.OBJECT_GAUGE]: this.GetModelNodeObject(data.memory)\n-->\n\n<template>\n <v-sheet\n variant=\"outlined\"\n theme=\"light\"\n rounded=\"lg\"\n class=\"mx-2 mt-2 mb-4 pa-2 pr-4\"\n :elevation=\"10\"\n @click=\"clicked(nodeid)\"\n >\n <div class=\"ststitle\">\n {{ friendlyTitle(title) }}\n <div\n v-if=\"title.length > 30\"\n class=\"stssubtitle\"\n >\n {{ title.split('@')[0] }}\n <div>\n {{ title.split('@')[1] }}\n </div>\n </div>\n </div>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"mt-1\"\n >\n <v-col cols=\"2\">\n CPU\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div class=\"instDisplay text-right\">\n {{ CPU }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n\n\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col\n cols=\"12\"\n style=\"margin-top: -20px;\"\n >\n <div><UXLineChart ref=\"lineChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"pt-1\"\n style=\"border-top: 2px solid lightgray;\"\n >\n <v-col cols=\"2\">\n Duration\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-wrap\">\n <div class=\"instDisplay text-right\">\n {{ round2Places(instrumentdata[`${Gauge.DURATION_GAUGE}`].val) }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.DURATION_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col cols=\"2\">\n Duration Histo\n </v-col>\n <v-col cols=\"10\">\n <div class=\"d-flex flex-row flex-nowrap\">\n <div\n v-for=\"(histo, index) in instrumentdata[`${Gauge.DURATION_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"2\">\n Latency\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row\">\n <div class=\"instDisplay text-right\">\n {{ round2Places(instrumentdata[`${Gauge.LATENCY_GAUGE}`].val) }}\n </div>\n <div\n v-for=\"(perc, index) in instrumentdata[`${Gauge.LATENCY_GAUGE}`].percentile\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ perc[0] as number }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ (perc[1] as number).toFixed(2) }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"2\">\n Latency Histo\n </v-col>\n <v-col md=\"10\">\n <div class=\"d-flex flex-row flex-nowrap\">\n <div\n v-for=\"(histo, index) in instrumentdata[`${Gauge.LATENCY_HISTOGRAM_GAUGE}`].hist\"\n :key=\"index\"\n >\n <div class=\"stdWidth text-right\">\n {{ histo[1] }}\n </div>\n <div class=\"stdWidth text-right\">\n {{ histo[0] }}\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n style=\"margin-top: -15px;\"\n >\n <v-col md=\"12\">\n <div><UXBarChart ref=\"barChartEx\" /></div> \n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n class=\"pt-1\"\n style=\"margin-top: -10px; border-top: 2px solid lightgray;\"\n >\n <v-col md=\"3\">\n Rx (MB/s)\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ Rx }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Tx (MB/s)\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ Tx }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Request Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentdata[`${Gauge.ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentdata[`${Gauge.RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Authentication Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Error: {{ instrumentdata[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Retry: {{ instrumentdata[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Velocity\n </v-col>\n <v-col md=\"9\">\n <div class=\"instDisplay text-right\">\n {{ velocityFormat(instrumentdata[`${Gauge.VELOCITY_GAUGE}`].val) }}\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Active Request Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val }}</span>\n <span\n v-if=\"isleafnode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Core Count\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CORE_COUNT_GAUGE}`].val }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n TCP Connections\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val }}</span>\n <span\n v-if=\"isleafnode === false\"\n class=\"instDisplayWide ml-6\"\n >{{ round0PlacesArray(instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].percentile) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Connection Pool\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ instrumentdata[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE}`].val }}</span>\n <span class=\"instDisplay ml-6\">Idle: {{ velocityFormat(instrumentdata[`${Gauge.CONNECTION_POOL_IDLE_GAUGE}`].val) }}</span>\n <span class=\"instDisplay ml-6\">Wait: {{ velocityFormat(instrumentdata[`${Gauge.CONNECTION_POOL_WAITING_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Time\n </v-col>\n <v-col md=\"9\">\n <span class=\"instDisplay text-right\">{{ convertMS(instrumentdata[`${Gauge.TIMER_GAUGE}`].val) }}</span>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n cols=\"12\"\n >\n <v-col md=\"3\">\n Logs\n </v-col>\n <v-col md=\"9\">\n <div\n class=\"overflow-x-auto\"\n style=\"max-height: 400px\"\n >\n <div v-if=\"isleafnode\">\n <div\n v-for=\"(logLine, index) in LogDataCopy\"\n :key=\"`ln-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n <div v-else>\n <div\n v-for=\"(logLine, index) in LogData\"\n :key=\"`nlf-${index}`\"\n class=\"instDisplayXWide\"\n >\n <!--eslint-disable-next-line vue/no-v-html -->\n <span v-html=\"convertHtml(logLine)\" />\n </div>\n </div>\n </div>\n </v-col>\n </v-row>\n </v-sheet>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport Convert from 'ansi-to-html'\nimport { ModelStore } from './../stores/modelStore.js'\n\nimport UXLineChart from './UXLineChart.vue';\nimport UXBarChart from './UXBarChart.vue';\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\n//import UXRadialChart from './UXRadialChart.vue';\n\n// Alternatives;\n// https://www.npmjs.com/package/sanitize-html\n// Use this is node\n// https://www.npmjs.com/package/isomorphic-dompurify\n// import DOMPurify2 from 'isomorphic-dompurify';\nimport DOMPurify from 'dompurify'\n\nconst friendlyTitle = (id: string) => {\n if (id.length > 30) {\n return store.GetFriendName(props.modelId, id);\n } else {\n return id;\n }\n}\n\nconst convert = new Convert();\n \nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n if (!props.isleafnode) {\n emit('myclick', id);\n }\n}\n\nconst props = defineProps<{ \n \n modelId: string\n instrumentdata: any\n contextdata: any\n isleafnode: boolean\n nodeid: string\n title: string\n }>();\n\nconst CPU = computed(() => {\n const cpuVal = props.instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].val;\n return round2Places(cpuVal);\n});\n\nconst LogData = computed(() => {\n if (props.instrumentdata[`${Gauge.LOGGER}`]) {\n return props.instrumentdata[`${Gauge.LOGGER}`].val;\n } else {\n return [];\n }\n});\n\nconst Rx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_RX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Tx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_TX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst LogDataCopy = computed(() => {\n if (props.instrumentdata[`${Gauge.LOGGER_COPY}`]) {\n return props.instrumentdata[`${Gauge.LOGGER_COPY}`].val;\n } else {\n return [];\n }\n});\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n};\n\nconst round2Places = function(value: number): string{\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n};\n\nconst round0PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n retVal += `${sep}${value[i][0]}/${value[i][1]}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n}\n\nconst round2PlacesArray = function(value: any[][]): string {\n try {\n let sep = '';\n let retVal = '';\n for (let i=0; i < value.length; i++) {\n const bp = (Math.round(value[i][0] as number * 10000) / 100) as number;\n const val = (Math.round(value[i][1] as number * 100) / 100) as number;\n retVal += `${sep}${bp}/${val.toFixed(2)}`\n sep = ', ';\n }\n return retVal;\n } catch (error) {\n return ''\n }\n\n\n let numArray = value.map((value) => (Math.round(value[1] * 100) / 100).toFixed(2));\n let sep = '';\n return '[' + numArray.reduce((prev, current) => {\n const retVal = prev += (sep + current);\n sep = ', ';\n return retVal;\n }, '') + ']'\n}\n\nconst convertMS = function(ms: number): string {\n //let d, h, m, s;\n let s = Math.floor(ms / 1000);\n let m = Math.floor(s / 60);\n s = s % 60;\n let h = Math.floor(m / 60);\n m = m % 60;\n const d = Math.floor(h / 24);\n h = h % 24;\n\n const pad: (n: number) => string = function(n: number) { return n < 10 ? '0' + n : n.toString(); };\n\n return (d + '.' + pad(h) + ':' + pad(m) + ':' + pad(s)).padStart(12);\n}\n\nconst convertHtml = function(value: string): string {\n return DOMPurify.sanitize(convert.toHtml(value));\n}\n\nconst detailMode = computed<boolean>({\n get: () => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid] && store._models[props.modelId].modelMeta[props.nodeid].detailView) {\n return store._models[props.modelId].modelMeta[props.nodeid].detailView;\n }\n }\n return false;\n },\n set: (val) => {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].modelMeta[props.nodeid]) {\n store._models[props.modelId].modelMeta[props.nodeid].detailView = val;\n } else {\n store._models[props.modelId].modelMeta[props.nodeid] = {\n detailView: val\n }\n }\n }\n }\n})\n\nconst lineChartEx = ref<typeof UXLineChart>(); //@@ was ref(null);\nconst barChartEx = ref<typeof UXBarChart>(); //@@ was ref(null);\n//const radialChartEx = ref<typeof UXRadialChart>(); //@@ was ref(null);\n\nlet barUpdate = 0;\n\n \nwatch(() => props.instrumentdata, (val) => {\n if (lineChartEx.value) {\n lineChartEx.value.UpdateGraph(props.instrumentdata[Gauge.CPU_LOAD_GAUGE].val);\n }\n /*\n if (radialChartEx.value) {\n radialChartEx.value.UpdateGraph(props.instrumentData[Gauge.ACTIVE_REQUEST_GAUGE].val,\n props.instrumentData[Gauge.CONNECTION_COUNT_GAUGE].val, // TCP Connections\n props.instrumentData[Gauge.CONNECTION_POOL_TOTAL_GAUGE].val);\n\n console.log(JSON.stringify(props.instrumentData[Gauge.CONNECTION_COUNT_GAUGE]));\n }\n */\n if (barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentdata[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentdata[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n</script>\n\n<style scoped>\n .stdWidth {\n width: 70px;\n }\n .instDisplay {\n display: inline-block;\n width: 70px;\n }\n .instDisplayWide {\n display: inline-block;\n width: 300px;\n max-width: 400px;\n }\n .instDisplayXWide {\n width: 300px;\n max-width: 400px;\n }\n .subDisplay {\n font-size: smaller;\n }\n</style>","<template>\n <v-sheet\n variant=\"outlined\"\n theme=\"light\"\n rounded=\"lg\"\n class=\"mx-2 mt-2 mb-4 pa-2\"\n :elevation=\"10\"\n @click=\"clicked(nodeid)\"\n >\n <div class=\"ststitle\">\n {{ friendlyTitle(title) }}\n <div\n v-if=\"title.length > 30\"\n class=\"stssubtitle\"\n >\n {{ title.split('@')[0] }}\n <div>\n {{ title.split('@')[1] }}\n </div>\n </div>\n </div>\n <v-row\n no-gutters\n class=\"mb-3\"\n >\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n CPU\n </div>\n <div class=\"stsbiginfo\">\n {{ round2Places(CPU) }}%\n <v-progress-circular\n class=\"mb-1\"\n :rotate=\"360\"\n :size=\"20\"\n :width=\"CPUWidth\"\n :model-value=\"CPU\"\n :color=\"CPUColor\"\n />\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Velocity\n </div>\n <div class=\"stsbiginfo\">\n {{ velocityFormat(Velocity) }}\n <v-progress-circular\n class=\"mb-1\"\n :rotate=\"360\"\n :size=\"18\"\n :width=\"VelocityWidth\"\n :model-value=\"VelocityPerc\"\n :color=\"VelocityColor\"\n />\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n class=\"mb-3\"\n >\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Active Rx Count\n </div>\n <div class=\"stsbiginfo\">\n {{ ActiveRequestCount }}\n <v-progress-circular\n :rotate=\"360\"\n :size=\"18\"\n :width=\"ActiveRequestWidth\"\n :model-value=\"ActiveRequestCountPerc\"\n :color=\"ActiveRequestColor\"\n /> \n </div>\n </v-col>\n\n\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Connections\n </div>\n <div class=\"stsbiginfo\">\n {{ ConnectionCount }}\n <v-progress-circular\n :rotate=\"360\"\n :size=\"18\"\n :width=\"ConnectionCountWidth\"\n :model-value=\"ConnectionCountPercentage\"\n :color=\"ConnectionCountColor\"\n />\n </div>\n </v-col>\n </v-row>\n\n <v-row\n no-gutters\n style=\"border-top: 2px solid lightgray;\"\n >\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Request (c/e/r):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ RequestCountErrorRetry }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Timer:\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Timer }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Duration (ms):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Duration }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Latency (ms):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Latency }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Receive-Rx (MBs):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Rx }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Transmit-Tx (MBs):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Tx }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Pool (tot/idle/wait):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ ConnectionPool }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n vCPU:\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ CoreCount }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Auth (c/e/r):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ AuthErrorRetry }}\n </div>\n </v-col>\n </v-row>\n </v-sheet>\n</template>\n \n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed, onMounted, onBeforeUnmount } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport UXLineChart from './UXLineChart.vue';\nimport UXBarChart from './UXBarChart.vue';\nimport { ModelStore } from './../stores/modelStore.js'\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n emit('myclick', id);\n}\n\nconst props = defineProps<{\n \n modelId: string\n instrumentdata: any\n contextdata: any\n isleafnode: boolean\n nodeid: string\n title: string\n }>();\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n}\n\nconst round2Places = function(value: number): string {\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n}\n\nconst lineChartEx = ref<typeof UXLineChart>(); // ref(null);\nconst barChartEx = ref<typeof UXBarChart>(); // ref(null);\n\nlet barUpdate = 0;\n\nconst friendlyTitle = (id: string) => {\n if (id.length > 30) {\n return store.GetFriendName(props.modelId, id);\n } else {\n return id;\n }\n}\n\nconst KafkaTopic = () => {\n const context = props.contextdata;\n\n let topic = '';\n if (context.serviceInstanceId && context.serviceInstanceProcessId) {\n topic = (context.serviceInstanceId + '_' + context.serviceInstanceProcessId).replace(/@/g, '_');\n }\n return topic;\n}\n\nconst KafkaTopicEx = computed(() => {\n const context = props.contextdata;\n\n let topic = '';\n if (context.serviceInstanceId && context.serviceInstanceProcessId) {\n topic = (context.serviceInstanceId + '_' + context.serviceInstanceProcessId).replace(/@/g, '_');\n }\n return topic;\n})\n\nonMounted(() => {\n console.log(chalk.magenta(`onMounted`));\n})\n\nonBeforeUnmount(() => {\n console.log(chalk.magenta(`onBeforeUnmount`));\n})\n\nwatch(() => props.instrumentdata, (val) => {\n if (lineChartEx.value && lineChartEx.value) {\n lineChartEx.value.UpdateGraph(props.instrumentdata[Gauge.CPU_LOAD_GAUGE].val);\n }\n if (barChartEx.value && barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentdata[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentdata[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n\nconst CPUBreakPoints = [\n { bp: 90, col: '#ff0000'},\n { bp: 60, col: '#9900cc'},\n { bp: 40, col: '#ff9900'},\n { bp: 20, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst VelocityBreakPoints = [\n { bp: 1000, col: '#ff0000'},\n { bp: 500, col: '#9900cc'},\n { bp: 250, col: '#ff9900'},\n { bp: 50, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst ActiveRequestCountBreakPoints = [\n { bp: 20, col: '#ff0000'},\n { bp: 10, col: '#9900cc'},\n { bp: 5, col: '#ff9900'},\n { bp: 2, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst CPU = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst ActiveRequestCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst RequestCountErrorRetry = computed<string>(() => {\n try {\n //return props.instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val;\n return `${props.instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.ERROR_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.RETRY_COUNT_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return '0/0/0';\n }\n});\n\nconst CoreCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CORE_COUNT_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst Timer = computed<number>(() => {\n try {\n return Math.round(props.instrumentdata[`${Gauge.TIMER_GAUGE}`].val);\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst Duration = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.DURATION_GAUGE}`].val * 100) / 100.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\"\n }\n});\n\nconst Rx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_RX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Tx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_TX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Latency = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.LATENCY_GAUGE}`].val * 100) / 100.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst ConnectionPool = computed<string>(() => {\n try {\n return `${props.instrumentdata[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE}`].val}/${props.instrumentdata[`${Gauge.CONNECTION_POOL_IDLE_GAUGE}`].val}/${props.instrumentdata[`${Gauge.CONNECTION_POOL_WAITING_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"[Unknown]\";\n }\n});\n\nconst AuthErrorRetry = computed<string>(() => {\n try {\n return `${props.instrumentdata[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"[Unknown]\";\n }\n});\n\nconst ActiveRequestCountPerc = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val / 20) * 100.0;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst ConnectionCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val \n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst ConnectionCountPercentage = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val / 20) * 100.0; // We are at 100% if we have 20 connections\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst Velocity = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.VELOCITY_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst VelocityPerc = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.VELOCITY_GAUGE}`].va / 1000.0) * 100.0;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\n \nconst GetColFromBP = (value: number, bpList: any[]): string => {\n for (let i=0; i < bpList.length; i++) {\n if (value >= bpList[i].bp) {\n return bpList[i].col;\n }\n }\n return bpList[bpList.length-1].col;\n}\n\nconst CPUColor = computed<string>(() => {\n return GetColFromBP(CPU.value, CPUBreakPoints);\n});\n\nconst ActiveRequestColor = computed<string>(() => {\n return GetColFromBP(ActiveRequestCount.value, ActiveRequestCountBreakPoints);\n});\n\nconst VelocityColor = computed<string>(() => {\n return GetColFromBP(Velocity.value, VelocityBreakPoints);\n});\n\nconst ConnectionCountColor = computed<string>(() => {\n return GetColFromBP(Velocity.value, ActiveRequestCountBreakPoints);\n});\n\nconst CircleWidth = (value: number, maxVal: number): number => {\n if (value > maxVal) {\n return 4\n } else {\n return 2\n }\n};\n\nconst CPUWidth = computed<number>(() => {\n return CircleWidth(CPU.value, 200);\n});\n\nconst ActiveRequestWidth = computed<number>(() => {\n return CircleWidth(ActiveRequestCountPerc.value, 200);\n});\n\nconst VelocityWidth = computed<number>(() => {\n return CircleWidth(VelocityPerc.value, 200);\n});\n\nconst ConnectionCountWidth = computed<number>(() => {\n return CircleWidth(ConnectionCountPercentage.value, 100);\n});\n\n</script>\n\n<style scoped>\n .stsinfo { \n\n }\n .stsbiginfo { \n font-size: x-large;\n font-weight: bold;\n text-align: right;\n width: 130px;\n }\n .stsbiginfolabel { \n text-align: right;\n white-space: nowrap;\n width: 130px;\n }\n .ststitle { \n font-size: large;\n font-weight: bold;\n text-align: center;\n border-bottom: 2px solid lightgray;\n margin-bottom: 5px;\n }\n .stssubtitle { \n font-size: small;\n font-weight: bold;\n text-align: center;\n }\n</style>\n\n","<template>\n <v-sheet\n variant=\"outlined\"\n theme=\"light\"\n rounded=\"lg\"\n class=\"mx-2 mt-2 mb-4 pa-2\"\n :elevation=\"10\"\n @click=\"clicked(nodeid)\"\n >\n <div class=\"ststitle\">\n {{ friendlyTitle(title) }}\n <div\n v-if=\"title.length > 30\"\n class=\"stssubtitle\"\n >\n {{ title.split('@')[0] }}\n <div>\n {{ title.split('@')[1] }}\n </div>\n </div>\n </div>\n <v-row\n no-gutters\n class=\"mb-3\"\n >\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n CPU\n </div>\n <div class=\"stsbiginfo\">\n {{ round2Places(CPU) }}%\n <v-progress-circular\n class=\"mb-1\"\n :rotate=\"360\"\n :size=\"20\"\n :width=\"CPUWidth\"\n :model-value=\"CPU\"\n :color=\"CPUColor\"\n />\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Velocity\n </div>\n <div class=\"stsbiginfo\">\n {{ velocityFormat(Velocity) }}\n <v-progress-circular\n class=\"mb-1\"\n :rotate=\"360\"\n :size=\"18\"\n :width=\"VelocityWidth\"\n :model-value=\"VelocityPerc\"\n :color=\"VelocityColor\"\n />\n </div>\n </v-col>\n </v-row>\n <v-row\n no-gutters\n class=\"mb-3\"\n >\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Active Rx Count\n </div>\n <div class=\"stsbiginfo\">\n {{ ActiveRequestCount }}\n <v-progress-circular\n :rotate=\"360\"\n :size=\"18\"\n :width=\"ActiveRequestWidth\"\n :model-value=\"ActiveRequestCountPerc\"\n :color=\"ActiveRequestColor\"\n /> \n </div>\n </v-col>\n\n\n <v-col cols=\"6\">\n <div class=\"stsbiginfolabel\">\n Connections\n </div>\n <div class=\"stsbiginfo\">\n {{ ConnectionCount }}\n <v-progress-circular\n :rotate=\"360\"\n :size=\"18\"\n :width=\"ConnectionCountWidth\"\n :model-value=\"ConnectionCountPercentage\"\n :color=\"ConnectionCountColor\"\n />\n </div>\n </v-col>\n </v-row>\n\n <v-row\n no-gutters\n style=\"border-top: 2px solid lightgray;\"\n >\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Request (c/e/r):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ RequestCountErrorRetry }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Timer:\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Timer }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Duration (ms):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Duration }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Latency (ms):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Latency }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Receive-Rx (MBs):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Rx }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Transmit-Tx (MBs):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ Tx }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Pool (tot/idle/wait):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ ConnectionPool }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n vCPU:\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ CoreCount }}\n </div>\n </v-col>\n </v-row>\n <v-row no-gutters>\n <v-col cols=\"6\">\n <div style=\"white-space: nowrap; text-align: right;\">\n Auth (c/e/r):\n </div>\n </v-col>\n <v-col cols=\"6\">\n <div\n class=\"stsinfo\"\n style=\"text-align: right; padding-left: 15px;\"\n >\n {{ AuthErrorRetry }}\n </div>\n </v-col>\n </v-row>\n </v-sheet>\n</template>\n \n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, watch, computed, onMounted, onBeforeUnmount } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\nimport { Gauge } from '@nsshunt/stsobservability'\nimport UXLineChart from './UXLineChart.vue';\nimport UXBarChart from './UXBarChart.vue';\nimport { ModelStore } from './../stores/modelStore.js'\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nconst store = ModelStore();\n\nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n }>()\n\n \nconst clicked = function(id: any) {\n emit('myclick', id);\n}\n\nconst props = defineProps<{\n \n modelId: string\n instrumentdata: any\n contextdata: any\n isleafnode: boolean\n nodeid: string\n title: string\n }>();\n\nconst velocityFormat = function(value: number): string {\n return ('' + Math.round(value));\n}\n\nconst round2Places = function(value: number): string {\n return '' + (Math.round(value * 100) / 100).toFixed(2);\n}\n\nconst lineChartEx = ref<typeof UXLineChart>(); // ref(null);\nconst barChartEx = ref<typeof UXBarChart>(); // ref(null);\n\nlet barUpdate = 0;\n\nconst friendlyTitle = (id: string) => {\n if (id.length > 30) {\n return store.GetFriendName(props.modelId, id);\n } else {\n return id;\n }\n}\n\nconst KafkaTopic = () => {\n const context = props.contextdata;\n\n let topic = '';\n if (context.serviceInstanceId && context.serviceInstanceProcessId) {\n topic = (context.serviceInstanceId + '_' + context.serviceInstanceProcessId).replace(/@/g, '_');\n }\n return topic;\n}\n\nconst KafkaTopicEx = computed(() => {\n const context = props.contextdata;\n\n let topic = '';\n if (context.serviceInstanceId && context.serviceInstanceProcessId) {\n topic = (context.serviceInstanceId + '_' + context.serviceInstanceProcessId).replace(/@/g, '_');\n }\n return topic;\n})\n\nonMounted(() => {\n console.log(chalk.magenta(`onMounted`));\n})\n\nonBeforeUnmount(() => {\n console.log(chalk.magenta(`onBeforeUnmount`));\n})\n\nwatch(() => props.instrumentdata, (val) => {\n if (lineChartEx.value && lineChartEx.value) {\n lineChartEx.value.UpdateGraph(props.instrumentdata[Gauge.CPU_LOAD_GAUGE].val);\n }\n if (barChartEx.value && barChartEx.value) {\n const now = performance.now();\n if (now - barUpdate > 4500) {\n barUpdate = now;\n barChartEx.value.UpdateGraph(props.instrumentdata[Gauge.DURATION_HISTOGRAM_GAUGE].hist, props.instrumentdata[Gauge.LATENCY_HISTOGRAM_GAUGE ].hist);\n }\n }\n}, { deep: true });\n\nconst CPUBreakPoints = [\n { bp: 90, col: '#ff0000'},\n { bp: 60, col: '#9900cc'},\n { bp: 40, col: '#ff9900'},\n { bp: 20, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst VelocityBreakPoints = [\n { bp: 1000, col: '#ff0000'},\n { bp: 500, col: '#9900cc'},\n { bp: 250, col: '#ff9900'},\n { bp: 50, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst ActiveRequestCountBreakPoints = [\n { bp: 20, col: '#ff0000'},\n { bp: 10, col: '#9900cc'},\n { bp: 5, col: '#ff9900'},\n { bp: 2, col: '#009900'},\n { bp: 0, col: '#00cc00'}\n];\n\nconst CPU = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CPU_LOAD_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst ActiveRequestCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst RequestCountErrorRetry = computed<string>(() => {\n try {\n //return props.instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val;\n return `${props.instrumentdata[`${Gauge.REQUEST_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.ERROR_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.RETRY_COUNT_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return '0/0/0';\n }\n});\n\nconst CoreCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CORE_COUNT_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst Timer = computed<number>(() => {\n try {\n return Math.round(props.instrumentdata[`${Gauge.TIMER_GAUGE}`].val);\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst Duration = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.DURATION_GAUGE}`].val * 100) / 100.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\"\n }\n});\n\nconst Rx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_RX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Tx = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.NETWORK_TX_GAUGE}`].val) / 1000000.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst Latency = computed<string>(() => {\n try {\n return ((props.instrumentdata[`${Gauge.LATENCY_GAUGE}`].val * 100) / 100.0).toFixed(2)\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"0.0\";\n }\n});\n\nconst ConnectionPool = computed<string>(() => {\n try {\n return `${props.instrumentdata[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE}`].val}/${props.instrumentdata[`${Gauge.CONNECTION_POOL_IDLE_GAUGE}`].val}/${props.instrumentdata[`${Gauge.CONNECTION_POOL_WAITING_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"[Unknown]\";\n }\n});\n\nconst AuthErrorRetry = computed<string>(() => {\n try {\n return `${props.instrumentdata[`${Gauge.AUTHENTICATION_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE}`].val}/${props.instrumentdata[`${Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE}`].val}`;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return \"[Unknown]\";\n }\n});\n\nconst ActiveRequestCountPerc = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val / 20) * 100.0;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst ConnectionCount = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val \n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst ConnectionCountPercentage = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.CONNECTION_COUNT_GAUGE}`].val / 20) * 100.0; // We are at 100% if we have 20 connections\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\nconst Velocity = computed<number>(() => {\n try {\n return props.instrumentdata[`${Gauge.VELOCITY_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0;\n }\n});\n\nconst VelocityPerc = computed<number>(() => {\n try {\n return (props.instrumentdata[`${Gauge.VELOCITY_GAUGE}`].va / 1000.0) * 100.0;\n } catch (error) {\n console.log(chalk.red(`${props.instrumentdata}`));\n return 0.0;\n }\n});\n\n \nconst GetColFromBP = (value: number, bpList: any[]): string => {\n for (let i=0; i < bpList.length; i++) {\n if (value >= bpList[i].bp) {\n return bpList[i].col;\n }\n }\n return bpList[bpList.length-1].col;\n}\n\nconst CPUColor = computed<string>(() => {\n return GetColFromBP(CPU.value, CPUBreakPoints);\n});\n\nconst ActiveRequestColor = computed<string>(() => {\n return GetColFromBP(ActiveRequestCount.value, ActiveRequestCountBreakPoints);\n});\n\nconst VelocityColor = computed<string>(() => {\n return GetColFromBP(Velocity.value, VelocityBreakPoints);\n});\n\nconst ConnectionCountColor = computed<string>(() => {\n return GetColFromBP(Velocity.value, ActiveRequestCountBreakPoints);\n});\n\nconst CircleWidth = (value: number, maxVal: number): number => {\n if (value > maxVal) {\n return 4\n } else {\n return 2\n }\n};\n\nconst CPUWidth = computed<number>(() => {\n return CircleWidth(CPU.value, 200);\n});\n\nconst ActiveRequestWidth = computed<number>(() => {\n return CircleWidth(ActiveRequestCountPerc.value, 200);\n});\n\nconst VelocityWidth = computed<number>(() => {\n return CircleWidth(VelocityPerc.value, 200);\n});\n\nconst ConnectionCountWidth = computed<number>(() => {\n return CircleWidth(ConnectionCountPercentage.value, 100);\n});\n\n</script>\n\n<style scoped>\n .stsinfo { \n\n }\n .stsbiginfo { \n font-size: x-large;\n font-weight: bold;\n text-align: right;\n width: 130px;\n }\n .stsbiginfolabel { \n text-align: right;\n white-space: nowrap;\n width: 130px;\n }\n .ststitle { \n font-size: large;\n font-weight: bold;\n text-align: center;\n border-bottom: 2px solid lightgray;\n margin-bottom: 5px;\n }\n .stssubtitle { \n font-size: small;\n font-weight: bold;\n text-align: center;\n }\n</style>\n\n","<template>\n <div\n v-for=\"(svc, svcIndex) in serviceModel\"\n :key=\"svcIndex\"\n :value=\"svc\"\n class=\"d-inline-flex align-center justify-center ma-0 pa-0\"\n >\n <div v-if=\"cpu(svc) > 0.0\">\n <component\n :is=\"smallMode ? UXModelInstrumentServiceSmall : UXModelInstrumentServiceCommon\"\n :isleafnode=\"false\"\n :model-id=\"props.modelId\"\n :nodeid=\"svc.id\"\n :contextdata=\"svc.context\"\n :instrumentdata=\"svc.instruments\"\n :title=\"svc.id\"\n @myclick=\"navigate\"\n />\n </div>\n </div>\n</template>\n \n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\n \nimport UXModelInstrumentServiceCommon from './UXModelInstrumentServiceCommon.vue'\n\nimport UXModelInstrumentServiceSmall from './UXModelInstrumentServiceSmall.vue'\n\nimport { ModelStore } from './../stores/modelStore.js'\nimport { Gauge } from '@nsshunt/stsobservability'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nconst store = ModelStore();\n\n \nconst props = defineProps<{\n modelId: string\n nodeid: string,\n smallMode: boolean\n}>()\n \nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n}>()\n\nconst agentModel = computed(() => {\n if (store._models[props.modelId]) {\n return store._models[props.modelId].agentModel;\n } else {\n return { };\n }\n})\n\nconst serviceModel = computed(() => {\n if (store._models[props.modelId]) {\n return store._models[props.modelId].serviceModel;\n } else {\n return { };\n }\n})\n\nconst cpu = (model: JSONObject) => {\n try {\n return model.instruments[`${Gauge.CPU_LOAD_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${error}`));\n }\n};\n\nconst navigate = function(id: string) {\n emit('myclick', id);\n}\n\n/*\nconst CPU = computed((): number => {\n if (modelNode.value && modelNode.value.instruments) {\n return modelNode.value.instruments[`${Gauge.CPU_LOAD_GAUGE}`].val as number;\n } else {\n return 0;\n }\n});\n\nconst maxARC = 50;\nconst maxTCP = 50;\nconst maxPool = 50;\n\nconst Series = computed(() => {\n if (modelNode.value && modelNode.value.instruments) {\n return [\n (modelNode.value.instruments[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val as number / maxARC) * 100.0,\n (modelNode.value.instruments[`${Gauge.CONNECTION_COUNT_GAUGE}`].val as number / maxTCP) * 100.0,\n (modelNode.value.instruments[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE }`].val as number / maxPool) * 100.0\n ]\n } else {\n return [ 0, 0, 0];\n }\n})\n\nconst Series2 = computed(() => {\n if (modelNode.value && modelNode.value.instruments) {\n return [{\n data: [\n modelNode.value.instruments[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val as number,\n modelNode.value.instruments[`${Gauge.CONNECTION_COUNT_GAUGE}`].val as number,\n modelNode.value.instruments[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE }`].val as number\n ]\n }]\n } else {\n return [{\n data: [ 0, 0, 0]\n }]\n }\n})\n\nconst Labels = computed(() => {\n return [ 'AR', 'TCP', 'Pool' ];\n})\n*/\n\n</script>\n","<template>\n <div\n v-for=\"(svc, svcIndex) in serviceModel\"\n :key=\"svcIndex\"\n :value=\"svc\"\n class=\"d-inline-flex align-center justify-center ma-0 pa-0\"\n >\n <div v-if=\"cpu(svc) > 0.0\">\n <component\n :is=\"smallMode ? UXModelInstrumentServiceSmall : UXModelInstrumentServiceCommon\"\n :isleafnode=\"false\"\n :model-id=\"props.modelId\"\n :nodeid=\"svc.id\"\n :contextdata=\"svc.context\"\n :instrumentdata=\"svc.instruments\"\n :title=\"svc.id\"\n @myclick=\"navigate\"\n />\n </div>\n </div>\n</template>\n \n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { computed } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\n \nimport UXModelInstrumentServiceCommon from './UXModelInstrumentServiceCommon.vue'\n\nimport UXModelInstrumentServiceSmall from './UXModelInstrumentServiceSmall.vue'\n\nimport { ModelStore } from './../stores/modelStore.js'\nimport { Gauge } from '@nsshunt/stsobservability'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nconst store = ModelStore();\n\n \nconst props = defineProps<{\n modelId: string\n nodeid: string,\n smallMode: boolean\n}>()\n \nconst emit = defineEmits<{\n (e: 'myclick', id: string): void\n}>()\n\nconst agentModel = computed(() => {\n if (store._models[props.modelId]) {\n return store._models[props.modelId].agentModel;\n } else {\n return { };\n }\n})\n\nconst serviceModel = computed(() => {\n if (store._models[props.modelId]) {\n return store._models[props.modelId].serviceModel;\n } else {\n return { };\n }\n})\n\nconst cpu = (model: JSONObject) => {\n try {\n return model.instruments[`${Gauge.CPU_LOAD_GAUGE}`].val;\n } catch (error) {\n console.log(chalk.red(`${error}`));\n }\n};\n\nconst navigate = function(id: string) {\n emit('myclick', id);\n}\n\n/*\nconst CPU = computed((): number => {\n if (modelNode.value && modelNode.value.instruments) {\n return modelNode.value.instruments[`${Gauge.CPU_LOAD_GAUGE}`].val as number;\n } else {\n return 0;\n }\n});\n\nconst maxARC = 50;\nconst maxTCP = 50;\nconst maxPool = 50;\n\nconst Series = computed(() => {\n if (modelNode.value && modelNode.value.instruments) {\n return [\n (modelNode.value.instruments[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val as number / maxARC) * 100.0,\n (modelNode.value.instruments[`${Gauge.CONNECTION_COUNT_GAUGE}`].val as number / maxTCP) * 100.0,\n (modelNode.value.instruments[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE }`].val as number / maxPool) * 100.0\n ]\n } else {\n return [ 0, 0, 0];\n }\n})\n\nconst Series2 = computed(() => {\n if (modelNode.value && modelNode.value.instruments) {\n return [{\n data: [\n modelNode.value.instruments[`${Gauge.ACTIVE_REQUEST_GAUGE}`].val as number,\n modelNode.value.instruments[`${Gauge.CONNECTION_COUNT_GAUGE}`].val as number,\n modelNode.value.instruments[`${Gauge.CONNECTION_POOL_TOTAL_GAUGE }`].val as number\n ]\n }]\n } else {\n return [{\n data: [ 0, 0, 0]\n }]\n }\n})\n\nconst Labels = computed(() => {\n return [ 'AR', 'TCP', 'Pool' ];\n})\n*/\n\n</script>\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (FormDataCtor && thing instanceof FormDataCtor) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array<unknown>} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== 'undefined') return globalThis;\n return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\n const targetKey = (caseless && findKey(result, key)) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xfeff) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype,\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n // eslint-disable-next-line func-names\n return (thing) => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n };\n }\n });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach((value) => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if (!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n \n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true\n });\n \n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\n .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\n );\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n ) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : key + '[]',\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable,\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\n .join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain counterparts (`:`, `$`, `,`, `+`).\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val)\n .replace(/%3A/gi, ':')\n .replace(/%24/g, '$')\n .replace(/%2C/gi, ',')\n .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = utils.isURLSearchParams(params)\n ? params.toString()\n : new AxiosURLSearchParams(params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null,\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false,\n legacyInterceptorReqResOrdering: true,\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n","import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob,\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\n};\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function (value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options,\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map((match) => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n },\n ],\n\n transformResponse: [\n function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !this.responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n },\n ],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob,\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n Accept: 'application/json, text/plain, */*',\n 'Content-Type': undefined,\n },\n },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n 'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders &&\n rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value)\n ? value.map(normalizeValue)\n : String(value).replace(/[\\r\\n]+$/, '');\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header\n .trim()\n .toLowerCase()\n .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach((methodName) => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function (arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true,\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null &&\n value !== false &&\n (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals =\n (this[$internals] =\n this[$internals] =\n {\n accessors: {},\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n },\n };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\n );\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return (match && match[1]) || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? loaded / total : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n },\n }\n : // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {},\n };\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n if (typeof url !== 'string') {\n return false;\n }\n\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({ caseless }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request,\n };\n\n settle(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = (cancel) => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const body = new ReadableStream();\n\n const hasContentType = new Request(platform.origin, {\n body,\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n body.cancel();\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length\n ? reasons.length > 1\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n : ' ' + renderReason(reasons[0])\n : 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object<string, Function|Object>}\n */\n adapters: knownAdapters,\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(config, config.transformRequest);\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\n function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n }\n );\n}\n","export const VERSION = \"1.14.0\";","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators,\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager(),\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const { transitional, paramsSerializer, headers } = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\n );\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\n });\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\n );\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then((cancel) => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = (onfulfilled) => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise((resolve) => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel,\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n // Copy context to instance\n utils.extend(instance, context, null, { allOwnKeys: true });\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n","//#region \\0rolldown/runtime.js\nvar __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);\n//#endregion\n//#region node_modules/tiny-emitter/index.js\nvar require_tiny_emitter = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tfunction E() {}\n\tE.prototype = {\n\t\ton: function(name, callback, ctx) {\n\t\t\tvar e = this.e || (this.e = {});\n\t\t\t(e[name] || (e[name] = [])).push({\n\t\t\t\tfn: callback,\n\t\t\t\tctx\n\t\t\t});\n\t\t\treturn this;\n\t\t},\n\t\tonce: function(name, callback, ctx) {\n\t\t\tvar self = this;\n\t\t\tfunction listener() {\n\t\t\t\tself.off(name, listener);\n\t\t\t\tcallback.apply(ctx, arguments);\n\t\t\t}\n\t\t\tlistener._ = callback;\n\t\t\treturn this.on(name, listener, ctx);\n\t\t},\n\t\temit: function(name) {\n\t\t\tvar data = [].slice.call(arguments, 1);\n\t\t\tvar evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n\t\t\tvar i = 0;\n\t\t\tvar len = evtArr.length;\n\t\t\tfor (; i < len; i++) evtArr[i].fn.apply(evtArr[i].ctx, data);\n\t\t\treturn this;\n\t\t},\n\t\toff: function(name, callback) {\n\t\t\tvar e = this.e || (this.e = {});\n\t\t\tvar evts = e[name];\n\t\t\tvar liveEvents = [];\n\t\t\tif (evts && callback) {\n\t\t\t\tfor (var i = 0, len = evts.length; i < len; i++) if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n\t\t\t}\n\t\t\tliveEvents.length ? e[name] = liveEvents : delete e[name];\n\t\t\treturn this;\n\t\t}\n\t};\n\tmodule.exports = E;\n\tmodule.exports.TinyEmitter = E;\n}));\n//#endregion\nexport { require_tiny_emitter as t };\n\n//# sourceMappingURL=tiny-emitter-DB59cw42.js.map","import { t as require_tiny_emitter } from \"./tiny-emitter-DB59cw42.js\";\nimport { io } from \"socket.io-client\";\nimport { isNode } from \"@nsshunt/stsutils\";\n//#region src/commonTypes.ts\nvar STSNamespace = /* @__PURE__ */ function(STSNamespace) {\n\tSTSNamespace[\"STSMonitor\"] = \"stsinstrumentmanager/stsmonitor\";\n\tSTSNamespace[\"STSControl\"] = \"stsinstrumentmanager/stscontrol\";\n\tSTSNamespace[\"STSTestingNamespace\"] = \"ststestingnamespace/ststesting\";\n\treturn STSNamespace;\n}({});\nvar STSRoom = /* @__PURE__ */ function(STSRoom) {\n\tSTSRoom[\"STSInstrumentDataRoom\"] = \"stsinstrumentdataroom\";\n\tSTSRoom[\"STSInstrumentDataSubscriptionRoom\"] = \"stsinstrumentdatasubscriptionroom\";\n\tSTSRoom[\"STSRunnerRoom\"] = \"stsrunnerroom\";\n\tSTSRoom[\"STSNodeRunnerRoom\"] = \"stsnoderunnerroom\";\n\treturn STSRoom;\n}({});\nvar STSEvent = /* @__PURE__ */ function(STSEvent) {\n\tSTSEvent[\"STSInstrumentData\"] = \"stsinstrumentdata\";\n\tSTSEvent[\"STSSubInstrumentData\"] = \"stssubinstrumentdata\";\n\tSTSEvent[\"STSResetInstrumentData\"] = \"stsresetinstrumentdata\";\n\tSTSEvent[\"STSStartLoggingInstrumentData\"] = \"stsStartLoggingInstrumentData\";\n\tSTSEvent[\"STSStopLoggingInstrumentData\"] = \"stsStopLoggingInstrumentData\";\n\tSTSEvent[\"STSStart\"] = \"stsstart\";\n\tSTSEvent[\"STSStop\"] = \"stsstop\";\n\tSTSEvent[\"STSPause\"] = \"stspause\";\n\tSTSEvent[\"STSResume\"] = \"stsresume\";\n\tSTSEvent[\"STSTerminate\"] = \"ststerminate\";\n\tSTSEvent[\"STSUpdateStaticConfig\"] = \"stsupdatestaticconfig\";\n\tSTSEvent[\"STSUpdateDynamicConfig\"] = \"stsupdatedynamicconfig\";\n\tSTSEvent[\"STSSendToRoom\"] = \"sendToRoom\";\n\tSTSEvent[\"connect\"] = \"connect\";\n\treturn STSEvent;\n}({});\n//#endregion\n//#region src/socketIoClient.ts\nvar import_tiny_emitter = require_tiny_emitter();\nvar SocketIoClient = class extends import_tiny_emitter.TinyEmitter {\n\t#agentManager;\n\t#logger;\n\t#name;\n\t#address;\n\t#socketIoCustomPath;\n\t#authToken;\n\t#socket;\n\t#reconnectTimeout = 2e3;\n\tconstructor(name) {\n\t\tsuper();\n\t\tthis.#name = name;\n\t}\n\tget logPrefix() {\n\t\treturn `SocketIoClient[${this.#name}]:`;\n\t}\n\tLogDebugMessage(message) {\n\t\tif (this.#logger) this.#logger.debug(`${this.logPrefix}${message}`);\n\t}\n\tLogErrorMessage(message) {\n\t\tif (this.#logger) this.#logger.error(`${this.logPrefix}${message}`);\n\t}\n\tLogWarningMessage(message) {\n\t\tif (this.#logger) this.#logger.warn(`${this.logPrefix}${message}`);\n\t}\n\tget name() {\n\t\treturn this.#name;\n\t}\n\tget reconnectTimeout() {\n\t\treturn this.#reconnectTimeout;\n\t}\n\tget agentManager() {\n\t\treturn this.#agentManager;\n\t}\n\tget logger() {\n\t\treturn this.#logger;\n\t}\n\tget address() {\n\t\treturn this.#address;\n\t}\n\tget authToken() {\n\t\treturn this.#authToken;\n\t}\n\tget socketIoCustomPath() {\n\t\treturn this.#socketIoCustomPath;\n\t}\n\tget socket() {\n\t\treturn this.#socket;\n\t}\n\tWithAddress(address) {\n\t\tthis.#address = address;\n\t\treturn this;\n\t}\n\tWithAuthToken(authToken) {\n\t\tthis.#authToken = authToken;\n\t\treturn this;\n\t}\n\tWithSocketIoCustomPath(socketIoCustomPath) {\n\t\tthis.#socketIoCustomPath = socketIoCustomPath;\n\t\treturn this;\n\t}\n\tWithLogger(logger) {\n\t\tthis.#logger = logger;\n\t\treturn this;\n\t}\n\tWithAgentManager(agentManager) {\n\t\tthis.#agentManager = agentManager;\n\t\treturn this;\n\t}\n\tWithReconnectTimeout(reconnectTimeout) {\n\t\tthis.#reconnectTimeout = reconnectTimeout;\n\t\treturn this;\n\t}\n\tSetupSocket() {\n\t\tif (!this.#address) throw new Error(`SocketIoClientHelper:SetupSocket(): Error: [address not provided]`);\n\t\tthis.#EstablishSocketConnect();\n\t\treturn this;\n\t}\n\tEngineError(error) {}\n\tEngineReconnectError(error) {}\n\tEngineConnectError(error) {}\n\tEngineReconnect(attempt) {}\n\t#EstablishSocketConnect() {\n\t\tif (this.#socket !== void 0) {\n\t\t\tif (this.#socket.connected === true) this.#socket.disconnect();\n\t\t\tthis.#socket = void 0;\n\t\t\tif (isNode) setTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout).unref();\n\t\t\telse setTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout);\n\t\t\treturn;\n\t\t}\n\t\tlet socketOptions;\n\t\tif (isNode) {\n\t\t\tsocketOptions = { transports: [\"websocket\"] };\n\t\t\tif (this.#agentManager) {\n\t\t\t\tif (!this.#address) throw new Error(`SocketIoClient:SetupSocket(): Error: [address not provided when using agentManager]`);\n\t\t\t\tsocketOptions.agent = this.#agentManager.GetAgent(this.#address);\n\t\t\t}\n\t\t} else socketOptions = { transports: [\"websocket\"] };\n\t\tif (this.#authToken) socketOptions.auth = (cb) => {\n\t\t\tcb({ token: this.#authToken });\n\t\t};\n\t\tif (this.#socketIoCustomPath && this.#socketIoCustomPath.localeCompare(\"\") !== 0) socketOptions.path = this.#socketIoCustomPath;\n\t\tthis.#socket = io(this.#address, socketOptions);\n\t\tthis.#socket.io.on(\"error\", (err) => {\n\t\t\tthis.LogErrorMessage(`socketDetail.socket.io.on('error'): [${err}] Address: [${this.#address}]`);\n\t\t\tthis.EngineError(err);\n\t\t});\n\t\tthis.#socket.io.on(\"reconnect_error\", (err) => {\n\t\t\tthis.LogErrorMessage(`socketDetail.socket.io.on('reconnect_error'): [${err}] Address: [${this.#address}]`);\n\t\t\tthis.EngineReconnectError(err);\n\t\t});\n\t\tthis.#socket.on(\"connect_error\", (err) => {\n\t\t\tthis.LogErrorMessage(`socketDetail.socket.on('connect_error'): [${err}] Address: [${this.#address}]`);\n\t\t\tthis.EngineConnectError(err);\n\t\t});\n\t\tthis.#socket.io.on(\"reconnect\", (attempt) => {\n\t\t\tthis.LogErrorMessage(`socketDetail.socket.io.on('reconnect'): Number: [${attempt}] Address: [${this.#address}]`);\n\t\t\tthis.EngineReconnect(attempt);\n\t\t});\n\t\tthis.#socket.on(\"connect\", () => {\n\t\t\tif (this.#socket) {\n\t\t\t\tthis.LogDebugMessage(`Socket: [${this.#socket.id}]: connected, Address: [${this.#address}]`);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.SocketConnect(this.#socket);\n\t\t\t\t}, 0);\n\t\t\t\tthis.SetupSocketEvents(this.#socket);\n\t\t\t} else {\n\t\t\t\tconst errorMessage = \"Could not get socket object from socket.io, Address: [${socketDetail.address}]\";\n\t\t\t\tthis.LogErrorMessage(errorMessage);\n\t\t\t\tthis.SocketConnectError(new Error(errorMessage));\n\t\t\t}\n\t\t});\n\t\tthis.#socket.on(\"disconnect\", (reason) => {\n\t\t\tthis.LogDebugMessage(\"socket disconnect: \" + reason);\n\t\t\tthis.SocketDisconnect(reason);\n\t\t\tswitch (reason) {\n\t\t\t\tcase \"io server disconnect\":\n\t\t\t\t\tthis.LogDebugMessage(\"The server disconnected using disconnectSockets, i.e. normal safe shutdown from explicit disconnection by the server.\");\n\t\t\t\t\tthis.LogDebugMessage(\"The connection will be re-established when the server becomes available.\");\n\t\t\t\t\tthis.#socket = void 0;\n\t\t\t\t\tif (isNode) {\n\t\t\t\t\t\tif (this.#agentManager) this.#agentManager.ResetAgent();\n\t\t\t\t\t\tsetTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout).unref();\n\t\t\t\t\t} else setTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"io client disconnect\":\n\t\t\t\t\tthis.LogDebugMessage(\"The client disconnected using disconnectSockets, i.e. normal safe disconnection from explicit disconnection by the client.\");\n\t\t\t\t\tthis.LogDebugMessage(\"The connection will not be re-established automatically.\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"transport close\":\n\t\t\t\tcase \"ping timeout\":\n\t\t\t\tcase \"transport error\":\n\t\t\t\t\tthis.LogDebugMessage(`Server unexpectedly disconnected. Reason: [${reason}]`);\n\t\t\t\t\tthis.LogDebugMessage(\"The connection will be re-established when the server becomes available.\");\n\t\t\t\t\tif (this.#socket) this.#socket.disconnect();\n\t\t\t\t\tthis.#socket = void 0;\n\t\t\t\t\tif (isNode) {\n\t\t\t\t\t\tif (this.#agentManager) this.#agentManager?.ResetAgent();\n\t\t\t\t\t\tsetTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout).unref();\n\t\t\t\t\t} else setTimeout(() => this.#EstablishSocketConnect(), this.#reconnectTimeout);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n};\n//#endregion\nexport { STSEvent, STSNamespace, STSRoom, SocketIoClient };\n\n//# sourceMappingURL=index.mjs.map","import { TinyEmitter } from \"tiny-emitter\";\nimport _cloneDeep from \"lodash.clonedeep\";\nimport { STSAxiosConfig, defaultLogger, isNode } from \"@nsshunt/stsutils\";\nimport axios from \"axios\";\nimport { inject } from \"vue\";\nimport { SocketIoClient } from \"@nsshunt/stssocketioutils\";\n//#region src/commonTypes.ts\nvar SubscriptionTopic = /* @__PURE__ */ function(SubscriptionTopic) {\n\tSubscriptionTopic[\"AllServicesCombined\"] = \"AllServicesCombined\";\n\tSubscriptionTopic[\"Services\"] = \"Services\";\n\tSubscriptionTopic[\"ServiceInstances\"] = \"ServiceInstances\";\n\tSubscriptionTopic[\"ServiceInstance\"] = \"ServiceInstance\";\n\tSubscriptionTopic[\"AllAgentsCombined\"] = \"AllAgentsCombined\";\n\tSubscriptionTopic[\"Agents\"] = \"Agents\";\n\tSubscriptionTopic[\"AgentWorkers\"] = \"AgentWorkers\";\n\tSubscriptionTopic[\"AgentWorker\"] = \"AgentWorker\";\n\tSubscriptionTopic[\"AllLambdasCombined\"] = \"AllLambdasCombined\";\n\tSubscriptionTopic[\"LambdaTechnologies\"] = \"LambdaTechnologies\";\n\tSubscriptionTopic[\"LambdaSubTechnologies\"] = \"LambdaSubTechnologies\";\n\tSubscriptionTopic[\"LambdaSubTechnologiesInstance\"] = \"LambdaSubTechnologiesInstance\";\n\tSubscriptionTopic[\"LogProcessing\"] = \"LogProcessing\";\n\treturn SubscriptionTopic;\n}({});\nvar GetSocketIOSubscriptionKey = (subscriptionKey) => {\n\treturn `SubscriptionData_${subscriptionKey.id}`;\n};\nvar KAFKA_PREFIX = \"__STS__\";\nvar TransportType = /* @__PURE__ */ function(TransportType) {\n\tTransportType[TransportType[\"none\"] = 0] = \"none\";\n\tTransportType[TransportType[\"IPC\"] = 1] = \"IPC\";\n\tTransportType[TransportType[\"websocket\"] = 2] = \"websocket\";\n\tTransportType[TransportType[\"RESTAPI\"] = 4] = \"RESTAPI\";\n\tTransportType[TransportType[\"redis\"] = 8] = \"redis\";\n\tTransportType[TransportType[\"kafka\"] = 16] = \"kafka\";\n\tTransportType[TransportType[\"influxdb\"] = 32] = \"influxdb\";\n\tTransportType[TransportType[\"prometheus\"] = 64] = \"prometheus\";\n\tTransportType[TransportType[\"gRPC\"] = 128] = \"gRPC\";\n\tTransportType[TransportType[\"unixsocket\"] = 256] = \"unixsocket\";\n\tTransportType[TransportType[\"socketio\"] = 512] = \"socketio\";\n\tTransportType[TransportType[\"otelcollector\"] = 1024] = \"otelcollector\";\n\tTransportType[TransportType[\"messageport\"] = 2048] = \"messageport\";\n\tTransportType[TransportType[\"jsonrpc\"] = 4096] = \"jsonrpc\";\n\tTransportType[TransportType[\"postgresql\"] = 8192] = \"postgresql\";\n\tTransportType[TransportType[\"grafanaloki\"] = 16384] = \"grafanaloki\";\n\tTransportType[TransportType[\"logstash\"] = 32768] = \"logstash\";\n\tTransportType[TransportType[\"fluentbit\"] = 65536] = \"fluentbit\";\n\tTransportType[TransportType[\"fluentd\"] = 131072] = \"fluentd\";\n\tTransportType[TransportType[\"inmemory\"] = 262144] = \"inmemory\";\n\treturn TransportType;\n}({});\nfunction GetTransportMode(transport) {\n\tlet trans = 0;\n\ttry {\n\t\ttransport.split(\"|\").forEach((item) => {\n\t\t\tswitch (item) {\n\t\t\t\tcase \"IPC\":\n\t\t\t\t\ttrans |= TransportType.IPC;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"websocket\":\n\t\t\t\t\ttrans |= TransportType.websocket;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"RESTAPI\":\n\t\t\t\t\ttrans |= TransportType.RESTAPI;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"redis\":\n\t\t\t\t\ttrans |= TransportType.redis;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"kafka\":\n\t\t\t\t\ttrans |= TransportType.kafka;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"influxdb\":\n\t\t\t\t\ttrans |= TransportType.influxdb;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"prometheus\":\n\t\t\t\t\ttrans |= TransportType.prometheus;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gRPC\":\n\t\t\t\t\ttrans |= TransportType.gRPC;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"unixsocket\":\n\t\t\t\t\ttrans |= TransportType.unixsocket;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"socketio\":\n\t\t\t\t\ttrans |= TransportType.socketio;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"otelcollector\":\n\t\t\t\t\ttrans |= TransportType.otelcollector;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"messageport\":\n\t\t\t\t\ttrans |= TransportType.messageport;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"jsonrpc\":\n\t\t\t\t\ttrans |= TransportType.jsonrpc;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"postgresql\":\n\t\t\t\t\ttrans |= TransportType.postgresql;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"grafanaloki\":\n\t\t\t\t\ttrans |= TransportType.grafanaloki;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"logstash\":\n\t\t\t\t\ttrans |= TransportType.logstash;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"fluentbit\":\n\t\t\t\t\ttrans |= TransportType.fluentbit;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"fluentd\":\n\t\t\t\t\ttrans |= TransportType.fluentd;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inmemory\":\n\t\t\t\t\ttrans |= TransportType.inmemory;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tthrow new Error(`GetTransportMode(): Error: [${error}]`);\n\t}\n\treturn trans;\n}\nvar InstrumentPayloadType = /* @__PURE__ */ function(InstrumentPayloadType) {\n\tInstrumentPayloadType[\"agent\"] = \"agent\";\n\tInstrumentPayloadType[\"service\"] = \"service\";\n\treturn InstrumentPayloadType;\n}({});\n//#endregion\n//#region src/publish/middleware/requestLoggerMiddleware.ts\nvar RequestLoggerMiddlewareEventName = /* @__PURE__ */ function(RequestLoggerMiddlewareEventName) {\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_AR_DEC\"] = \"UpdateInstrument_AR_DEC\";\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_AR_INC\"] = \"UpdateInstrument_AR_INC\";\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_RC_INC\"] = \"UpdateInstrument_RC_INC\";\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_V_INC\"] = \"UpdateInstrument_V_INC\";\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_DH_VAL\"] = \"UpdateInstrument_DH_VAL\";\n\tRequestLoggerMiddlewareEventName[\"UpdateInstrument_D_VAL\"] = \"UpdateInstrument_D_VAL\";\n\treturn RequestLoggerMiddlewareEventName;\n}({});\nvar RequestLoggerMiddleware = class {\n\toptions;\n\t#tinyEmitter = new TinyEmitter();\n\tconstructor(options) {\n\t\tthis.options = options;\n\t}\n\ton(eventName, callBackFn) {\n\t\tthis.#tinyEmitter.on(eventName, callBackFn);\n\t}\n\t#RequestCompleted = (start) => {\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_AR_DEC);\n\t\tconst end = performance.now() - start;\n\t\tconst timeInMs = parseFloat(end.toFixed(4));\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_DH_VAL, timeInMs);\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_D_VAL, timeInMs);\n\t};\n\t/**\n\t* Use with .bind(class instance).\n\t* Example;\n\t* ---\n\t* `let requestLoggerMiddleware = new RequestLoggerMiddleware();\n\t* app.use(requestLoggerMiddleware.Middleware.bind(requestLoggerMiddleware));`\n\t* @param {*} req \n\t* @param {*} res \n\t* @param {*} next \n\t* @returns \n\t*/\n\tMiddleware = async (req, res, next) => {\n\t\tif (this.options.ignoresocketio && req.originalUrl.includes(\"socket.io\")) return next();\n\t\tconst start = performance.now();\n\t\tlet completed = false;\n\t\tconst completeOnce = () => {\n\t\t\tif (completed) return;\n\t\t\tcompleted = true;\n\t\t\tthis.#RequestCompleted(start);\n\t\t};\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_AR_INC);\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_RC_INC);\n\t\tthis.#tinyEmitter.emit(RequestLoggerMiddlewareEventName.UpdateInstrument_V_INC);\n\t\treq.on(\"aborted\", () => {});\n\t\treq.on(\"end\", () => {});\n\t\tres.on(\"close\", () => {\n\t\t\tcompleteOnce();\n\t\t});\n\t\tres.on(\"finish\", () => {\n\t\t\tcompleteOnce();\n\t\t});\n\t\tnext();\n\t};\n};\n//#endregion\n//#region node_modules/chalk/source/vendor/ansi-styles/index.js\nvar ANSI_BACKGROUND_OFFSET = 10;\nvar wrapAnsi16 = (offset = 0) => (code) => `\\u001B[${code + offset}m`;\nvar wrapAnsi256 = (offset = 0) => (code) => `\\u001B[${38 + offset};5;${code}m`;\nvar wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\nvar styles$1 = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29]\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39],\n\t\tgrey: [90, 39],\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39]\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49],\n\t\tbgGrey: [100, 49],\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49]\n\t}\n};\nObject.keys(styles$1.modifier);\nvar foregroundColorNames = Object.keys(styles$1.color);\nvar backgroundColorNames = Object.keys(styles$1.bgColor);\n[...foregroundColorNames, ...backgroundColorNames];\nfunction assembleStyles() {\n\tconst codes = /* @__PURE__ */ new Map();\n\tfor (const [groupName, group] of Object.entries(styles$1)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles$1[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\t\t\tgroup[styleName] = styles$1[styleName];\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\t\tObject.defineProperty(styles$1, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\tObject.defineProperty(styles$1, \"codes\", {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\tstyles$1.color.close = \"\\x1B[39m\";\n\tstyles$1.bgColor.close = \"\\x1B[49m\";\n\tstyles$1.color.ansi = wrapAnsi16();\n\tstyles$1.color.ansi256 = wrapAnsi256();\n\tstyles$1.color.ansi16m = wrapAnsi16m();\n\tstyles$1.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles$1.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles$1.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\tObject.defineProperties(styles$1, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) return 16;\n\t\t\t\t\tif (red > 248) return 231;\n\t\t\t\t\treturn Math.round((red - 8) / 247 * 24) + 232;\n\t\t\t\t}\n\t\t\t\treturn 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) return [\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tlet [colorString] = matches;\n\t\t\t\tif (colorString.length === 3) colorString = [...colorString].map((character) => character + character).join(\"\");\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\t\t\t\treturn [\n\t\t\t\t\tinteger >> 16 & 255,\n\t\t\t\t\tinteger >> 8 & 255,\n\t\t\t\t\tinteger & 255\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: (hex) => styles$1.rgbToAnsi256(...styles$1.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) return 30 + code;\n\t\t\t\tif (code < 16) return 90 + (code - 8);\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = ((code - 232) * 10 + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\t\t\t\t\tconst remainder = code % 36;\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = remainder % 6 / 5;\n\t\t\t\t}\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\t\t\t\tif (value === 0) return 30;\n\t\t\t\tlet result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));\n\t\t\t\tif (value === 2) result += 60;\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles$1.ansi256ToAnsi(styles$1.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: (hex) => styles$1.ansi256ToAnsi(styles$1.hexToAnsi256(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\treturn styles$1;\n}\nvar ansiStyles = assembleStyles();\n//#endregion\n//#region node_modules/chalk/source/vendor/supports-color/browser.js\nvar level = (() => {\n\tif (!(\"navigator\" in globalThis)) return 0;\n\tif (globalThis.navigator.userAgentData) {\n\t\tconst brand = navigator.userAgentData.brands.find(({ brand }) => brand === \"Chromium\");\n\t\tif (brand && brand.version > 93) return 3;\n\t}\n\tif (/\\b(Chrome|Chromium)\\//.test(globalThis.navigator.userAgent)) return 1;\n\treturn 0;\n})();\nvar colorSupport = level !== 0 && {\n\tlevel,\n\thasBasic: true,\n\thas256: level >= 2,\n\thas16m: level >= 3\n};\nvar supportsColor = {\n\tstdout: colorSupport,\n\tstderr: colorSupport\n};\n//#endregion\n//#region node_modules/chalk/source/utilities.js\nfunction stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) return string;\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = \"\";\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\nfunction stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = \"\";\n\tdo {\n\t\tconst gotCR = string[index - 1] === \"\\r\";\n\t\treturnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? \"\\r\\n\" : \"\\n\") + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf(\"\\n\", endIndex);\n\t} while (index !== -1);\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n//#endregion\n//#region node_modules/chalk/source/index.js\nvar { stdout: stdoutColor, stderr: stderrColor } = supportsColor;\nvar GENERATOR = Symbol(\"GENERATOR\");\nvar STYLER = Symbol(\"STYLER\");\nvar IS_EMPTY = Symbol(\"IS_EMPTY\");\nvar levelMapping = [\n\t\"ansi\",\n\t\"ansi\",\n\t\"ansi256\",\n\t\"ansi16m\"\n];\nvar styles = Object.create(null);\nvar applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) throw new Error(\"The `level` option should be an integer from 0 to 3\");\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === void 0 ? colorLevel : options.level;\n};\nvar chalkFactory = (options) => {\n\tconst chalk = (...strings) => strings.join(\" \");\n\tapplyOptions(chalk, options);\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\treturn chalk;\n};\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\nfor (const [styleName, style] of Object.entries(ansiStyles)) styles[styleName] = { get() {\n\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\tObject.defineProperty(this, styleName, { value: builder });\n\treturn builder;\n} };\nstyles.visible = { get() {\n\tconst builder = createBuilder(this, this[STYLER], true);\n\tObject.defineProperty(this, \"visible\", { value: builder });\n\treturn builder;\n} };\nvar getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === \"rgb\") {\n\t\tif (level === \"ansi16m\") return ansiStyles[type].ansi16m(...arguments_);\n\t\tif (level === \"ansi256\") return ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\tif (model === \"hex\") return getModelAnsi(\"rgb\", level, type, ...ansiStyles.hexToRgb(...arguments_));\n\treturn ansiStyles[type][model](...arguments_);\n};\nfor (const model of [\n\t\"rgb\",\n\t\"hex\",\n\t\"ansi256\"\n]) {\n\tstyles[model] = { get() {\n\t\tconst { level } = this;\n\t\treturn function(...arguments_) {\n\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], \"color\", ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t};\n\t} };\n\tconst bgModel = \"bg\" + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = { get() {\n\t\tconst { level } = this;\n\t\treturn function(...arguments_) {\n\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], \"bgColor\", ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t};\n\t} };\n}\nvar proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t}\n\t}\n});\nvar createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === void 0) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\nvar createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? \"\" + arguments_[0] : arguments_.join(\" \"));\n\tObject.setPrototypeOf(builder, proto);\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\treturn builder;\n};\nvar applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) return self[IS_EMPTY] ? \"\" : string;\n\tlet styler = self[STYLER];\n\tif (styler === void 0) return string;\n\tconst { openAll, closeAll } = styler;\n\tif (string.includes(\"\\x1B\")) while (styler !== void 0) {\n\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\t\tstyler = styler.parent;\n\t}\n\tconst lfIndex = string.indexOf(\"\\n\");\n\tif (lfIndex !== -1) string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\treturn openAll + string + closeAll;\n};\nObject.defineProperties(createChalk.prototype, styles);\nvar chalk = createChalk();\ncreateChalk({ level: stderrColor ? stderrColor.level : 0 });\n//#endregion\n//#region node_modules/@nsshunt/stsobservability/dist/index.mjs\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\nvar Gauge = /* @__PURE__ */ function(Gauge) {\n\tGauge[\"ACTIVE_REQUEST_GAUGE\"] = \"a\";\n\tGauge[\"AUTHENTICATION_COUNT_GAUGE\"] = \"b\";\n\tGauge[\"AUTHENTICATION_ERROR_COUNT_GAUGE\"] = \"aa\";\n\tGauge[\"AUTHENTICATION_RETRY_COUNT_GAUGE\"] = \"ab\";\n\tGauge[\"CONNECTION_POOL_IDLE_GAUGE\"] = \"c\";\n\tGauge[\"CONNECTION_POOL_TOTAL_GAUGE\"] = \"d\";\n\tGauge[\"CONNECTION_POOL_WAITING_GAUGE\"] = \"e\";\n\tGauge[\"CPU_LOAD_GAUGE\"] = \"f\";\n\tGauge[\"CPU_SYSTEM_LOAD_GAUGE\"] = \"g\";\n\tGauge[\"DURATION_GAUGE\"] = \"h\";\n\tGauge[\"DURATION_HISTOGRAM_GAUGE\"] = \"i\";\n\tGauge[\"ERROR_COUNT_GAUGE\"] = \"j\";\n\tGauge[\"LATENCY_GAUGE\"] = \"k\";\n\tGauge[\"LATENCY_HISTOGRAM_GAUGE\"] = \"l\";\n\tGauge[\"LOGGER\"] = \"m\";\n\tGauge[\"LOGGER_COPY\"] = \"n\";\n\tGauge[\"NETWORK_RX_GAUGE\"] = \"o\";\n\tGauge[\"NETWORK_TX_GAUGE\"] = \"p\";\n\tGauge[\"REQUEST_COUNT_GAUGE\"] = \"q\";\n\tGauge[\"RETRY_COUNT_GAUGE\"] = \"r\";\n\tGauge[\"TIMER_GAUGE\"] = \"s\";\n\tGauge[\"VELOCITY_GAUGE\"] = \"t\";\n\tGauge[\"CONNECTION_COUNT_GAUGE\"] = \"u\";\n\tGauge[\"OBJECT_GAUGE\"] = \"v\";\n\tGauge[\"PAYLOAD_SIZE\"] = \"w\";\n\tGauge[\"CORE_COUNT_GAUGE\"] = \"x\";\n\tGauge[\"CHILD_COUNT\"] = \"y\";\n\tGauge[\"UNKNOWN\"] = \"z\";\n\treturn Gauge;\n}({});\nvar GaugeTypes = /* @__PURE__ */ function(GaugeTypes) {\n\tGaugeTypes[\"GAUGE_TYPE\"] = \"_\";\n\tGaugeTypes[\"INSTRUMENT_GAUGE\"] = \"a\";\n\tGaugeTypes[\"INSTRUMENT_VELOCITY\"] = \"b\";\n\tGaugeTypes[\"INSTRUMENT_HISTOGRAM\"] = \"c\";\n\tGaugeTypes[\"INSTRUMENT_LOG\"] = \"d\";\n\tGaugeTypes[\"INSTRUMENT_TIMER\"] = \"e\";\n\tGaugeTypes[\"INSTRUMENT_OBJECT\"] = \"f\";\n\treturn GaugeTypes;\n}({});\nvar InstrumentBase = class {\n\t#label = \"\";\n\t#options = null;\n\t#data = {};\n\tconstructor(options = {}) {\n\t\tif (typeof options === \"string\" || options instanceof String) throw new Error(\"Instrument parameter must be an options object.\");\n\t\tthis.#options = options;\n\t\tif (options.label) this.#label = options.label;\n\t\telse this.#label = \"InstrumentGauge\";\n\t}\n\t[GaugeTypes.GAUGE_TYPE] = GaugeTypes.INSTRUMENT_OBJECT;\n\tval;\n\tWithLabel(label) {\n\t\tthis.label = label;\n\t\treturn this;\n\t}\n\tDefineCopyProperties(propertyNames) {\n\t\tpropertyNames.forEach((propertyName) => {\n\t\t\tObject.defineProperty(this, propertyName, {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#data[propertyName],\n\t\t\t\tset: (value) => {\n\t\t\t\t\tif (value === void 0) return;\n\t\t\t\t\tthis.#data[propertyName] = value;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\tGetNumber(val) {\n\t\tif (Number.isInteger(val)) return val;\n\t\telse return Math.round((val + Number.EPSILON) * 100) / 100;\n\t}\n\tget options() {\n\t\treturn this.#options;\n\t}\n\tset options(optionsValue) {\n\t\tthis.#options = optionsValue;\n\t}\n\tget label() {\n\t\treturn this.#label;\n\t}\n\tset label(labelValue) {\n\t\tthis.#label = labelValue;\n\t}\n\tStopTimer() {}\n\tProcessTelemetry(telemetry) {\n\t\tthrow new Error(`Must override in extended class: [ProcessTelemetry]: [${telemetry}].`);\n\t}\n};\nvar InstrumentVelocity = class extends InstrumentBase {\n\t#val = 0;\n\t#interval = null;\n\t#timeoutComputeVelocity = null;\n\t#lastVelocity = 0;\n\t#delta = 0;\n\t#maxVelocity = 0;\n\t#timerInterval = 0;\n\t#copy = false;\n\t#velocity = 0;\n\t#velocityVal = 0;\n\t#valStack = [];\n\t#averageValStack = [];\n\t#maxAverageValStack = 0;\n\t#maxAverageIterations = 0;\n\t#valStackMaxLength = 0;\n\t#valStackAverage = 0;\n\t#timeStamp = 0;\n\t#maxTimeDiff = 0;\n\t#vaTimeDiff = 0;\n\t#velocityTimeDiff = 0;\n\t#autoComputeVelocity = false;\n\t#autoComputeVelocityTimeout = 0;\n\t#countDiff = 0;\n\t#timeDiff = 0;\n\t#deltaCountDiff = 0;\n\t#deltaTimeDif = 0;\n\t#minTimeForReporting = 0;\n\t#averageVelocity = [];\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (typeof options.label === \"undefined\") this.label = \"InstrumentVelocity\";\n\t\telse this.label = options.label;\n\t\tif (typeof options.interval === \"undefined\") this.#timerInterval = 1e3;\n\t\telse this.#timerInterval = options.interval;\n\t\tif (typeof options.valStackMaxLength === \"undefined\") this.#valStackMaxLength = 100;\n\t\telse this.#valStackMaxLength = options.valStackMaxLength;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tif (typeof options.autoComputeVelocity === \"undefined\") this.#autoComputeVelocity = false;\n\t\telse this.#autoComputeVelocity = options.autoComputeVelocity;\n\t\tif (typeof options.maxAverageValStack === \"undefined\") this.#maxAverageValStack = 5;\n\t\telse this.#maxAverageValStack = options.maxAverageValStack;\n\t\tif (typeof options.maxAverageIterations === \"undefined\") this.#maxAverageIterations = 3;\n\t\telse this.#maxAverageIterations = options.maxAverageIterations;\n\t\tif (typeof options.velocityTimeDiff === \"undefined\") this.#velocityTimeDiff = 5e3;\n\t\telse this.#velocityTimeDiff = options.velocityTimeDiff;\n\t\tif (typeof options.vaTimeDiff === \"undefined\") this.#vaTimeDiff = 1e4;\n\t\telse this.#vaTimeDiff = options.vaTimeDiff;\n\t\tif (typeof options.autoComputeVelocityTimeout === \"undefined\") this.#autoComputeVelocityTimeout = 50;\n\t\telse this.#autoComputeVelocityTimeout = options.autoComputeVelocityTimeout;\n\t\tthis.#maxTimeDiff = this.#vaTimeDiff * 2;\n\t\tthis.#minTimeForReporting = this.#vaTimeDiff + 2e3;\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_VELOCITY\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\n\t\t\t\"val\",\n\t\t\t\"maxVelocity\",\n\t\t\t\"delta\",\n\t\t\t\"velocity\",\n\t\t\t\"va\",\n\t\t\t\"timeStamp\",\n\t\t\t\"deltaTimeDif\",\n\t\t\t\"deltaCountDiff\",\n\t\t\t\"timeDiff\",\n\t\t\t\"countDiff\",\n\t\t\t\"averageVelocity\"\n\t\t]);\n\t\telse {\n\t\t\tObject.defineProperty(this, \"val\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetVal(),\n\t\t\t\tset: (value) => {\n\t\t\t\t\tthis.#SetVal(value);\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"maxVelocity\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetMaxVelocity()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"delta\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetDelta()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"velocity\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetVelocity()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"va\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetVelocityStackAverage()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"timeStamp\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetTimeStamp()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"countDiff\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetCountDiff()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"timeDiff\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetTimeDiff()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"deltaCountDiff\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetDeltaCountDiff()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"deltaTimeDif\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetDeltaTimeDif()\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"averageVelocity\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetAverageVelocity()\n\t\t\t});\n\t\t\tif (this.#timerInterval > 0 && this.#autoComputeVelocity === false) this._StartTimer();\n\t\t}\n\t\tif (typeof options.initValue !== \"undefined\") this.val = options.initValue;\n\t\tif (typeof options.fromJSON !== \"undefined\") {\n\t\t\tconst result = _cloneDeep(options.fromJSON);\n\t\t\tthis.val = result.val;\n\t\t\tthis.velocity = result.velocity;\n\t\t\tthis.maxVelocity = result.maxVelocity;\n\t\t\tthis.delta = result.delta;\n\t\t\tthis.va = result.va;\n\t\t\tthis.timeStamp = result.timeStamp;\n\t\t\tthis.countDiff = result.countDiff;\n\t\t\tthis.timeDiff = result.timeDiff;\n\t\t\tthis.deltaCountDiff = result.deltaCountDiff;\n\t\t\tthis.deltaTimeDif = result.deltaTimeDif;\n\t\t\tthis.averageVelocity = _cloneDeep(result.averageVelocity);\n\t\t}\n\t}\n\tmaxVelocity = 0;\n\tdelta = 0;\n\tvelocity = 0;\n\tva = 0;\n\ttimeStamp = 0;\n\tcountDiff = 0;\n\ttimeDiff = 0;\n\tdeltaCountDiff = 0;\n\tdeltaTimeDif = 0;\n\taverageVelocity = [];\n\tval = 0;\n\tWithValStackMaxLength(valStackMaxLength) {\n\t\tthis.#valStackMaxLength = valStackMaxLength;\n\t\tthis.#valStack = [];\n\t\treturn this;\n\t}\n\t_StartTimer() {\n\t\tthis.#interval = setInterval(() => {\n\t\t\tthis.#ComputeVelocity();\n\t\t\tlet pushVal = this.#velocity;\n\t\t\tfor (let i = 0; i < this.#maxAverageIterations; i++) {\n\t\t\t\tif (!this.#averageValStack[i]) this.#averageValStack[i] = [];\n\t\t\t\tthis.#averageValStack[i].push(pushVal);\n\t\t\t\tif (this.#averageValStack[i].length > this.#maxAverageValStack) this.#averageValStack[i].shift();\n\t\t\t\tpushVal = this.#averageValStack[i].reduce((prev, current) => prev + current) / this.#averageValStack[i].length;\n\t\t\t\tthis.#averageVelocity[i] = pushVal;\n\t\t\t}\n\t\t}, this.#timerInterval);\n\t\tif (isNode) this.#interval.unref();\n\t}\n\t#ComputeVelocityByTimeDiff(checkTimeDiff, checkDeltaTimeDiff) {\n\t\tlet val = 0;\n\t\tlet deltaVal = 0;\n\t\tlet countDiff = 0;\n\t\tlet timeDiff = 0;\n\t\tlet deltaCountDiff = 0;\n\t\tlet deltaTimeDiff = 0;\n\t\tif (this.#valStack.length > 1 && this.#valStack[this.#valStack.length - 1].timeStamp - this.#valStack[0].timeStamp > this.#minTimeForReporting) {\n\t\t\tconst dp = this.#valStack[this.#valStack.length - 1];\n\t\t\tlet timeDiffPos = -1;\n\t\t\tlet deltaDiffPos = -1;\n\t\t\tfor (let i = this.#valStack.length - 2; i > -1; i--) {\n\t\t\t\tif (timeDiffPos === -1 && this.#timeStamp - this.#valStack[i].timeStamp >= checkTimeDiff) {\n\t\t\t\t\ttimeDiffPos = i;\n\t\t\t\t\tif (checkDeltaTimeDiff === 0) break;\n\t\t\t\t}\n\t\t\t\tif (deltaDiffPos === -1 && this.#timeStamp - this.#valStack[i].timeStamp >= checkDeltaTimeDiff) deltaDiffPos = i;\n\t\t\t\tif (timeDiffPos !== -1 && deltaDiffPos !== -1) break;\n\t\t\t}\n\t\t\tif (timeDiffPos > -1) {\n\t\t\t\tcountDiff = dp.count - this.#valStack[timeDiffPos].count;\n\t\t\t\tif (countDiff > 0) {\n\t\t\t\t\ttimeDiff = dp.timeStamp - this.#valStack[timeDiffPos].timeStamp;\n\t\t\t\t\tif (timeDiff > 0) val = 1e3 / timeDiff * countDiff;\n\t\t\t\t\telse val = 0;\n\t\t\t\t} else val = 0;\n\t\t\t} else val = 0;\n\t\t\tif (deltaDiffPos > -1) {\n\t\t\t\tdeltaCountDiff = this.#valStack[timeDiffPos].count - this.#valStack[deltaDiffPos].count;\n\t\t\t\tif (deltaCountDiff > 0) {\n\t\t\t\t\tdeltaTimeDiff = this.#valStack[timeDiffPos].timeStamp - this.#valStack[deltaDiffPos].timeStamp;\n\t\t\t\t\tif (deltaTimeDiff > 0) deltaVal = 1e3 / deltaTimeDiff * deltaTimeDiff;\n\t\t\t\t\telse deltaVal = 0;\n\t\t\t\t} else deltaVal = 0;\n\t\t\t} else deltaVal = 0;\n\t\t}\n\t\treturn {\n\t\t\tval,\n\t\t\tcountDiff,\n\t\t\ttimeDiff,\n\t\t\tdeltaVal,\n\t\t\tdeltaCountDiff,\n\t\t\tdeltaTimeDiff\n\t\t};\n\t}\n\t#ComputeVelocity() {\n\t\tconst dp = {\n\t\t\ttimeStamp: performance.now(),\n\t\t\tcount: this.#velocityVal\n\t\t};\n\t\tthis.#valStack.push(dp);\n\t\tthis.#timeStamp = dp.timeStamp;\n\t\twhile (this.#valStack.length > 0 && this.#timeStamp - this.#valStack[0].timeStamp > this.#maxTimeDiff) this.#valStack.shift();\n\t\tthis.#valStackAverage = this.#ComputeVelocityByTimeDiff(this.#vaTimeDiff, 0).val;\n\t\tconst velocityDataPoint = this.#ComputeVelocityByTimeDiff(this.#velocityTimeDiff, this.#velocityTimeDiff * 2);\n\t\tthis.#velocity = velocityDataPoint.val;\n\t\tthis.#delta = velocityDataPoint.val - velocityDataPoint.deltaVal;\n\t\tthis.#countDiff = velocityDataPoint.countDiff;\n\t\tthis.#timeDiff = velocityDataPoint.timeDiff;\n\t\tthis.#deltaCountDiff = velocityDataPoint.deltaCountDiff;\n\t\tthis.#deltaTimeDif = velocityDataPoint.deltaTimeDiff;\n\t\tthis.#lastVelocity = this.#velocity;\n\t\tif (this.#velocity > this.#maxVelocity) this.#maxVelocity = this.#velocity;\n\t}\n\t#SetupAutoComputeVelocity() {\n\t\tif (this.#timeoutComputeVelocity) clearTimeout(this.#timeoutComputeVelocity);\n\t\tthis.#timeoutComputeVelocity = setTimeout(() => {\n\t\t\tthis.#ComputeVelocity();\n\t\t}, this.#autoComputeVelocityTimeout);\n\t}\n\t#GetVelocityStackAverage() {\n\t\treturn this.GetNumber(this.#valStackAverage);\n\t}\n\tInc(incVal = 1) {\n\t\tthis.#velocityVal += incVal;\n\t\tif (this.#autoComputeVelocity) this.#ComputeVelocity();\n\t\telse this.#SetupAutoComputeVelocity();\n\t}\n\t#GetVal() {\n\t\treturn this.GetNumber(this.#velocityVal);\n\t}\n\t#SetVal(updatedValue) {\n\t\tthis.#velocityVal = updatedValue;\n\t\tif (this.#autoComputeVelocity) this.#ComputeVelocity();\n\t\telse this.#SetupAutoComputeVelocity();\n\t}\n\t#GetVelocity() {\n\t\treturn this.GetNumber(this.#velocity);\n\t}\n\t#GetMaxVelocity() {\n\t\treturn this.GetNumber(this.#maxVelocity);\n\t}\n\t#GetDelta() {\n\t\treturn this.GetNumber(this.#delta);\n\t}\n\t#GetTimeStamp() {\n\t\treturn this.GetNumber(this.#timeStamp);\n\t}\n\t#GetCountDiff() {\n\t\treturn this.GetNumber(this.#countDiff);\n\t}\n\t#GetTimeDiff() {\n\t\treturn this.GetNumber(this.#timeDiff);\n\t}\n\t#GetDeltaCountDiff() {\n\t\treturn this.GetNumber(this.#deltaCountDiff);\n\t}\n\t#GetDeltaTimeDif() {\n\t\treturn this.GetNumber(this.#deltaTimeDif);\n\t}\n\t#GetAverageVelocity() {\n\t\treturn this.#averageVelocity;\n\t}\n\tStopTimer() {\n\t\tif (this.#interval !== null) {\n\t\t\tclearTimeout(this.#interval);\n\t\t\tthis.#interval = null;\n\t\t}\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.Inc !== void 0) this.Inc(telemetry.Inc);\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t}\n};\nvar HistogramDataElementPos = /* @__PURE__ */ function(HistogramDataElementPos) {\n\tHistogramDataElementPos[HistogramDataElementPos[\"val\"] = 0] = \"val\";\n\tHistogramDataElementPos[HistogramDataElementPos[\"label\"] = 1] = \"label\";\n\tHistogramDataElementPos[HistogramDataElementPos[\"breakPoint\"] = 2] = \"breakPoint\";\n\treturn HistogramDataElementPos;\n}({});\nvar InstrumentHistogram = class extends InstrumentBase {\n\t#histogramData = [];\n\t#val = 0;\n\t#copy = false;\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (typeof options.label === \"undefined\") this.label = \"InstrumentHistogram\";\n\t\telse this.label = options.label;\n\t\tlet histogramData = null;\n\t\tif (typeof options.histogramData === \"undefined\") histogramData = null;\n\t\telse histogramData = options.histogramData;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tif (histogramData === null) this.#histogramData = [\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"10\",\n\t\t\t\t10\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"20\",\n\t\t\t\t20\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"50\",\n\t\t\t\t50\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"100\",\n\t\t\t\t100\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"1000\",\n\t\t\t\t1e3\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"5000\",\n\t\t\t\t5e3\n\t\t\t],\n\t\t\t[\n\t\t\t\t0,\n\t\t\t\t\"EE\",\n\t\t\t\t0\n\t\t\t]\n\t\t];\n\t\telse if (Array.isArray(histogramData)) {\n\t\t\tthis.#histogramData = [];\n\t\t\tfor (let i = 0; i < histogramData.length; i++) this.#histogramData.push([\n\t\t\t\t0,\n\t\t\t\t\"\" + histogramData[i],\n\t\t\t\tparseFloat(histogramData[i].toString())\n\t\t\t]);\n\t\t\tthis.#histogramData.push([\n\t\t\t\t0,\n\t\t\t\t\"EE\",\n\t\t\t\t0\n\t\t\t]);\n\t\t} else throw new Error(`Passed [${histogramData}] must be an array.`);\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_HISTOGRAM\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\"val\", \"hist\"]);\n\t\telse {\n\t\t\tObject.defineProperty(this, \"val\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetVal(),\n\t\t\t\tset: (value) => {\n\t\t\t\t\tthis.#SetVal(value);\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(this, \"hist\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetHistogramData(),\n\t\t\t\tset: (value) => {\n\t\t\t\t\tthis.#SetHistogramData(value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (typeof options.initValue !== \"undefined\") this.#val = options.initValue;\n\t\tif (typeof options.fromJSON !== \"undefined\") {\n\t\t\tconst result = _cloneDeep(options.fromJSON);\n\t\t\tthis.#val = result.val;\n\t\t\tthis.hist = result.hist;\n\t\t}\n\t}\n\thist = [];\n\tval = 0;\n\tWithInitVal(initVal) {\n\t\tthis.#val = initVal;\n\t\treturn this;\n\t}\n\tResetHistogramData() {\n\t\tfor (let i = 0; i < this.hist.length; i++) this.hist[i][0] = 0;\n\t}\n\tAddObservation(updateValue) {\n\t\tif (this.#copy) throw new Error(\"Cannot add observations from the copy version of this class.\");\n\t\tlet i = 0;\n\t\tfor (; i < this.#histogramData.length - 1; i++) if (updateValue <= this.#histogramData[i][HistogramDataElementPos.breakPoint]) {\n\t\t\tthis.#histogramData[i][HistogramDataElementPos.val]++;\n\t\t\treturn;\n\t\t}\n\t\tthis.#histogramData[i][HistogramDataElementPos.val]++;\n\t}\n\t#GetVal() {\n\t\treturn this.GetNumber(this.#val);\n\t}\n\t#SetVal(value) {\n\t\tthis.#val = value;\n\t\tthis.AddObservation(value);\n\t}\n\tget formattedHistogramData() {\n\t\tlet retVal = \"\";\n\t\tlet sep = \"\";\n\t\tfor (let i = 0; i < this.hist.length; i++) {\n\t\t\tretVal += sep + \"[\" + (this.hist[i][HistogramDataElementPos.val] + \"/\" + this.hist[i][HistogramDataElementPos.label]).padStart(10, \" \") + \"]\";\n\t\t\tsep = \" \";\n\t\t}\n\t\treturn retVal;\n\t}\n\t#GetHistogramData() {\n\t\treturn this.#histogramData;\n\t}\n\t#SetHistogramData(value) {\n\t\tthis.#histogramData = value;\n\t}\n\tstatic AddHistogramDataEx(histoA, histoB) {\n\t\tif (histoA === null) return _cloneDeep(histoB);\n\t\tconst result = _cloneDeep(histoA);\n\t\tconst histogramAData = result.hist;\n\t\tconst histogramBData = histoB.hist;\n\t\tif (histogramAData.length !== histogramBData.length) throw new Error(\"Invalid HistogramData. HistogramData bucket lengths must be the same.\");\n\t\tfor (let i = 0; i < histogramAData.length; i++) {\n\t\t\tif (histogramAData[i][HistogramDataElementPos.breakPoint] !== histogramBData[i][HistogramDataElementPos.breakPoint]) throw new Error(`Invalid HistogramData. HistogramData bucket break-point at index [${i}] must be the same.`);\n\t\t\tif (histogramAData[i][HistogramDataElementPos.label] !== histogramBData[i][HistogramDataElementPos.label]) throw new Error(`Invalid HistogramData. HistogramData bucket label at index [${i}] must be the same.`);\n\t\t\thistogramAData[i][HistogramDataElementPos.val] += histogramBData[i][HistogramDataElementPos.val];\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Adds a value object (from GetFormatted()) to this instance.\n\t* @param {*} value \n\t*/\n\tAddHistogramData(histogramData) {\n\t\tif (histogramData === null) return;\n\t\tif (this.hist.length !== histogramData.hist.length) throw new Error(\"Invalid HistogramData. HistogramData bucket lengths must be the same.\");\n\t\tfor (let i = 0; i < histogramData.hist.length; i++) {\n\t\t\tif (this.hist[i][HistogramDataElementPos.breakPoint] !== histogramData.hist[i][HistogramDataElementPos.breakPoint]) throw new Error(`Invalid HistogramData. HistogramData bucket break-point at index [${i}] must be the same.`);\n\t\t\tif (this.hist[i][HistogramDataElementPos.label] !== histogramData.hist[i][HistogramDataElementPos.label]) throw new Error(`Invalid HistogramData. HistogramData bucket label at index [${i}] must be the same.`);\n\t\t\tthis.hist[i][HistogramDataElementPos.val] += histogramData.hist[i][HistogramDataElementPos.val];\n\t\t}\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t}\n};\nvar InstrumentLog = class extends InstrumentBase {\n\t#messages = [];\n\t#readPos = 0;\n\t#maxSize = 200;\n\t#copy = false;\n\t#useLatestMessages = false;\n\t#consoleLogging = false;\n\t#instrumentLogging = true;\n\t#winstonLogging = false;\n\t#stsLogger;\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (typeof options.label === \"undefined\") this.label = \"InstrumentLog\";\n\t\telse this.label = options.label;\n\t\tif (typeof options.maxSize === \"undefined\") this.#maxSize = 200;\n\t\telse this.#maxSize = options.maxSize;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tif (typeof options.useLatestMessages === \"undefined\") this.#useLatestMessages = false;\n\t\telse this.#useLatestMessages = options.useLatestMessages;\n\t\tif (typeof options.consoleLogging === \"undefined\") this.#consoleLogging = false;\n\t\telse this.#consoleLogging = options.consoleLogging;\n\t\tif (typeof options.instrumentLogging === \"undefined\") this.#instrumentLogging = true;\n\t\telse this.#instrumentLogging = options.instrumentLogging;\n\t\tif (typeof options.winstonLogging === \"undefined\") this.#winstonLogging = false;\n\t\telse this.#winstonLogging = options.winstonLogging;\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_LOG\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\"val\"]);\n\t\telse Object.defineProperty(this, \"val\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => _cloneDeep(this.#GetVal()),\n\t\t\tset: (value) => {\n\t\t\t\tthis.#SetVal(value);\n\t\t\t}\n\t\t});\n\t\tif (typeof options.initValue !== \"undefined\") this.val = options.initValue;\n\t\tif (typeof options.fromJSON !== \"undefined\") this.val = _cloneDeep(options.fromJSON).val;\n\t}\n\tval = [];\n\tWithMaxSize(maxSize) {\n\t\tthis.#maxSize = maxSize;\n\t\treturn this;\n\t}\n\tWithUseLatestMessages(useLatestMessages) {\n\t\tthis.#useLatestMessages = useLatestMessages;\n\t\treturn this;\n\t}\n\tWithConsoleLogging(consoleLogging) {\n\t\tthis.#consoleLogging = consoleLogging;\n\t\treturn this;\n\t}\n\tWithInstrumentLogging(instrumentLogging) {\n\t\tthis.#instrumentLogging = instrumentLogging;\n\t\treturn this;\n\t}\n\tget MaxSize() {\n\t\treturn this.#maxSize;\n\t}\n\tset MaxSize(maxSize) {\n\t\tthis.#maxSize = maxSize;\n\t}\n\t#DumpToConsole() {\n\t\tconst logReport = this.GetMessagesSinceLastRead();\n\t\tfor (let i = 0; i < logReport.length; i++) console.log(logReport[i]);\n\t}\n\tget consoleLogging() {\n\t\treturn this.#consoleLogging;\n\t}\n\tset consoleLogging(value) {\n\t\tthis.#consoleLogging = value;\n\t\tif (value === true) this.#DumpToConsole();\n\t}\n\tget instrumentLogging() {\n\t\treturn this.#instrumentLogging;\n\t}\n\tset instrumentLogging(value) {\n\t\tthis.#instrumentLogging = value;\n\t}\n\tAppend(messageArray) {\n\t\tfor (let i = 0; i < messageArray.length; i++) this.LogMessage(messageArray[i]);\n\t}\n\terror(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.error(message);\n\t}\n\twarn(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.warn(message);\n\t}\n\tinfo(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.info(message);\n\t}\n\thttp(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.http(message);\n\t}\n\tverbose(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.verbose(message);\n\t}\n\tdebug(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.debug(message);\n\t}\n\tsilly(message) {\n\t\tif (this.#winstonLogging && this.#stsLogger) this.#stsLogger.silly(message);\n\t}\n\tLogMessage(message) {\n\t\tif (this.#copy) throw new Error(\"Cannot add log messages from the copy version of this class.\");\n\t\tif (this.#consoleLogging === true) console.log(message);\n\t\tif (this.#instrumentLogging === false) return;\n\t\tthis.#messages.push(message);\n\t\tif (this.#messages.length > this.#maxSize) {\n\t\t\tthis.#messages.shift();\n\t\t\tthis.#readPos = this.#readPos > 0 ? this.#readPos - 1 : 0;\n\t\t}\n\t}\n\t#GetVal() {\n\t\tif (this.#useLatestMessages) return this.GetMessagesSinceLastRead();\n\t\telse return this.#messages;\n\t}\n\t#SetVal(updatedValue) {\n\t\tthis.#messages = updatedValue;\n\t\tthis.#readPos = 0;\n\t}\n\tGetMessagesNoUpdate() {\n\t\treturn this.#messages.slice(this.#readPos);\n\t}\n\tGetMessagesSinceLastRead() {\n\t\tconst retVal = this.#messages.slice(this.#readPos);\n\t\tthis.#readPos = this.#messages.length;\n\t\treturn retVal;\n\t}\n\tResetLog() {\n\t\tthis.#messages = [];\n\t\tthis.#readPos = 0;\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t\tif (telemetry.Append !== void 0) this.Append(telemetry.Append);\n\t\tif (telemetry.LogMessage !== void 0) this.LogMessage(telemetry.LogMessage);\n\t\tif (telemetry.ResetLog !== void 0 && telemetry.ResetLog === true) this.ResetLog();\n\t}\n};\nvar InstrumentTimerGauge = class extends InstrumentBase {\n\t#start = 0;\n\t#copy = false;\n\t#pauseVal = 0;\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (typeof options.label === \"undefined\") this.label = \"InstrumentTimerGauge\";\n\t\telse this.label = options.label;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_TIMER\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\"val\"]);\n\t\telse Object.defineProperty(this, \"val\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => this.#GetVal(),\n\t\t\tset: (value) => {\n\t\t\t\tthis.#SetVal(value);\n\t\t\t}\n\t\t});\n\t\tif (typeof options.initValue !== \"undefined\") this.val = options.initValue;\n\t\tif (typeof options.fromJSON !== \"undefined\") this.val = _cloneDeep(options.fromJSON).val;\n\t\tthis.Reset();\n\t}\n\tval = 0;\n\tPause() {\n\t\tthis.#pauseVal = this.val;\n\t}\n\tResume() {\n\t\tthis.#pauseVal = 0;\n\t}\n\tReset() {\n\t\tthis.#start = performance.now();\n\t}\n\t#GetVal() {\n\t\tif (this.#pauseVal !== 0) return this.GetNumber(this.#pauseVal);\n\t\treturn this.GetNumber(performance.now() - this.#start);\n\t}\n\t#SetVal(updatedValue) {\n\t\tthis.#start = performance.now() - updatedValue;\n\t}\n\tget start() {\n\t\treturn this.#start;\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t\tif (telemetry.Pause !== void 0 && telemetry.Pause === true) this.Pause();\n\t\tif (telemetry.Resume !== void 0 && telemetry.Resume === true) this.Resume();\n\t\tif (telemetry.Reset !== void 0 && telemetry.Reset === true) this.Reset();\n\t}\n};\nvar require_timsort$1 = /* @__PURE__ */ __commonJSMin(((exports) => {\n\t/****\n\t* The MIT License\n\t*\n\t* Copyright (c) 2015 Marco Ziccardi\n\t*\n\t* Permission is hereby granted, free of charge, to any person obtaining a copy\n\t* of this software and associated documentation files (the \"Software\"), to deal\n\t* in the Software without restriction, including without limitation the rights\n\t* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\t* copies of the Software, and to permit persons to whom the Software is\n\t* furnished to do so, subject to the following conditions:\n\t*\n\t* The above copyright notice and this permission notice shall be included in\n\t* all copies or substantial portions of the Software.\n\t*\n\t* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\t* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\t* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\t* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\t* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\t* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\t* THE SOFTWARE.\n\t*\n\t****/\n\t(function(global, factory) {\n\t\tif (typeof define === \"function\" && define.amd) define(\"timsort\", [\"exports\"], factory);\n\t\telse if (typeof exports !== \"undefined\") factory(exports);\n\t\telse {\n\t\t\tvar mod = { exports: {} };\n\t\t\tfactory(mod.exports);\n\t\t\tglobal.timsort = mod.exports;\n\t\t}\n\t})(exports, function(exports$1) {\n\t\t\"use strict\";\n\t\texports$1.__esModule = true;\n\t\texports$1.sort = sort;\n\t\tfunction _classCallCheck(instance, Constructor) {\n\t\t\tif (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n\t\t}\n\t\tvar DEFAULT_MIN_MERGE = 32;\n\t\tvar DEFAULT_MIN_GALLOPING = 7;\n\t\tvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\t\tvar POWERS_OF_TEN = [\n\t\t\t1,\n\t\t\t10,\n\t\t\t100,\n\t\t\t1e3,\n\t\t\t1e4,\n\t\t\t1e5,\n\t\t\t1e6,\n\t\t\t1e7,\n\t\t\t1e8,\n\t\t\t1e9\n\t\t];\n\t\tfunction log10(x) {\n\t\t\tif (x < 1e5) {\n\t\t\t\tif (x < 100) return x < 10 ? 0 : 1;\n\t\t\t\tif (x < 1e4) return x < 1e3 ? 2 : 3;\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t\tif (x < 1e7) return x < 1e6 ? 5 : 6;\n\t\t\tif (x < 1e9) return x < 1e8 ? 7 : 8;\n\t\t\treturn 9;\n\t\t}\n\t\tfunction alphabeticalCompare(a, b) {\n\t\t\tif (a === b) return 0;\n\t\t\tif (~~a === a && ~~b === b) {\n\t\t\t\tif (a === 0 || b === 0) return a < b ? -1 : 1;\n\t\t\t\tif (a < 0 || b < 0) {\n\t\t\t\t\tif (b >= 0) return -1;\n\t\t\t\t\tif (a >= 0) return 1;\n\t\t\t\t\ta = -a;\n\t\t\t\t\tb = -b;\n\t\t\t\t}\n\t\t\t\tvar al = log10(a);\n\t\t\t\tvar bl = log10(b);\n\t\t\t\tvar t = 0;\n\t\t\t\tif (al < bl) {\n\t\t\t\t\ta *= POWERS_OF_TEN[bl - al - 1];\n\t\t\t\t\tb /= 10;\n\t\t\t\t\tt = -1;\n\t\t\t\t} else if (al > bl) {\n\t\t\t\t\tb *= POWERS_OF_TEN[al - bl - 1];\n\t\t\t\t\ta /= 10;\n\t\t\t\t\tt = 1;\n\t\t\t\t}\n\t\t\t\tif (a === b) return t;\n\t\t\t\treturn a < b ? -1 : 1;\n\t\t\t}\n\t\t\tvar aStr = String(a);\n\t\t\tvar bStr = String(b);\n\t\t\tif (aStr === bStr) return 0;\n\t\t\treturn aStr < bStr ? -1 : 1;\n\t\t}\n\t\tfunction minRunLength(n) {\n\t\t\tvar r = 0;\n\t\t\twhile (n >= DEFAULT_MIN_MERGE) {\n\t\t\t\tr |= n & 1;\n\t\t\t\tn >>= 1;\n\t\t\t}\n\t\t\treturn n + r;\n\t\t}\n\t\tfunction makeAscendingRun(array, lo, hi, compare) {\n\t\t\tvar runHi = lo + 1;\n\t\t\tif (runHi === hi) return 1;\n\t\t\tif (compare(array[runHi++], array[lo]) < 0) {\n\t\t\t\twhile (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) runHi++;\n\t\t\t\treverseRun(array, lo, runHi);\n\t\t\t} else while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) runHi++;\n\t\t\treturn runHi - lo;\n\t\t}\n\t\tfunction reverseRun(array, lo, hi) {\n\t\t\thi--;\n\t\t\twhile (lo < hi) {\n\t\t\t\tvar t = array[lo];\n\t\t\t\tarray[lo++] = array[hi];\n\t\t\t\tarray[hi--] = t;\n\t\t\t}\n\t\t}\n\t\tfunction binaryInsertionSort(array, lo, hi, start, compare) {\n\t\t\tif (start === lo) start++;\n\t\t\tfor (; start < hi; start++) {\n\t\t\t\tvar pivot = array[start];\n\t\t\t\tvar left = lo;\n\t\t\t\tvar right = start;\n\t\t\t\twhile (left < right) {\n\t\t\t\t\tvar mid = left + right >>> 1;\n\t\t\t\t\tif (compare(pivot, array[mid]) < 0) right = mid;\n\t\t\t\t\telse left = mid + 1;\n\t\t\t\t}\n\t\t\t\tvar n = start - left;\n\t\t\t\tswitch (n) {\n\t\t\t\t\tcase 3: array[left + 3] = array[left + 2];\n\t\t\t\t\tcase 2: array[left + 2] = array[left + 1];\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tarray[left + 1] = array[left];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: while (n > 0) {\n\t\t\t\t\t\tarray[left + n] = array[left + n - 1];\n\t\t\t\t\t\tn--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tarray[left] = pivot;\n\t\t\t}\n\t\t}\n\t\tfunction gallopLeft(value, array, start, length, hint, compare) {\n\t\t\tvar lastOffset = 0;\n\t\t\tvar maxOffset = 0;\n\t\t\tvar offset = 1;\n\t\t\tif (compare(value, array[start + hint]) > 0) {\n\t\t\t\tmaxOffset = length - hint;\n\t\t\t\twhile (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n\t\t\t\t\tlastOffset = offset;\n\t\t\t\t\toffset = (offset << 1) + 1;\n\t\t\t\t\tif (offset <= 0) offset = maxOffset;\n\t\t\t\t}\n\t\t\t\tif (offset > maxOffset) offset = maxOffset;\n\t\t\t\tlastOffset += hint;\n\t\t\t\toffset += hint;\n\t\t\t} else {\n\t\t\t\tmaxOffset = hint + 1;\n\t\t\t\twhile (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n\t\t\t\t\tlastOffset = offset;\n\t\t\t\t\toffset = (offset << 1) + 1;\n\t\t\t\t\tif (offset <= 0) offset = maxOffset;\n\t\t\t\t}\n\t\t\t\tif (offset > maxOffset) offset = maxOffset;\n\t\t\t\tvar tmp = lastOffset;\n\t\t\t\tlastOffset = hint - offset;\n\t\t\t\toffset = hint - tmp;\n\t\t\t}\n\t\t\tlastOffset++;\n\t\t\twhile (lastOffset < offset) {\n\t\t\t\tvar m = lastOffset + (offset - lastOffset >>> 1);\n\t\t\t\tif (compare(value, array[start + m]) > 0) lastOffset = m + 1;\n\t\t\t\telse offset = m;\n\t\t\t}\n\t\t\treturn offset;\n\t\t}\n\t\tfunction gallopRight(value, array, start, length, hint, compare) {\n\t\t\tvar lastOffset = 0;\n\t\t\tvar maxOffset = 0;\n\t\t\tvar offset = 1;\n\t\t\tif (compare(value, array[start + hint]) < 0) {\n\t\t\t\tmaxOffset = hint + 1;\n\t\t\t\twhile (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n\t\t\t\t\tlastOffset = offset;\n\t\t\t\t\toffset = (offset << 1) + 1;\n\t\t\t\t\tif (offset <= 0) offset = maxOffset;\n\t\t\t\t}\n\t\t\t\tif (offset > maxOffset) offset = maxOffset;\n\t\t\t\tvar tmp = lastOffset;\n\t\t\t\tlastOffset = hint - offset;\n\t\t\t\toffset = hint - tmp;\n\t\t\t} else {\n\t\t\t\tmaxOffset = length - hint;\n\t\t\t\twhile (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n\t\t\t\t\tlastOffset = offset;\n\t\t\t\t\toffset = (offset << 1) + 1;\n\t\t\t\t\tif (offset <= 0) offset = maxOffset;\n\t\t\t\t}\n\t\t\t\tif (offset > maxOffset) offset = maxOffset;\n\t\t\t\tlastOffset += hint;\n\t\t\t\toffset += hint;\n\t\t\t}\n\t\t\tlastOffset++;\n\t\t\twhile (lastOffset < offset) {\n\t\t\t\tvar m = lastOffset + (offset - lastOffset >>> 1);\n\t\t\t\tif (compare(value, array[start + m]) < 0) offset = m;\n\t\t\t\telse lastOffset = m + 1;\n\t\t\t}\n\t\t\treturn offset;\n\t\t}\n\t\tvar TimSort = (function() {\n\t\t\tfunction TimSort(array, compare) {\n\t\t\t\t_classCallCheck(this, TimSort);\n\t\t\t\tthis.array = null;\n\t\t\t\tthis.compare = null;\n\t\t\t\tthis.minGallop = DEFAULT_MIN_GALLOPING;\n\t\t\t\tthis.length = 0;\n\t\t\t\tthis.tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n\t\t\t\tthis.stackLength = 0;\n\t\t\t\tthis.runStart = null;\n\t\t\t\tthis.runLength = null;\n\t\t\t\tthis.stackSize = 0;\n\t\t\t\tthis.array = array;\n\t\t\t\tthis.compare = compare;\n\t\t\t\tthis.length = array.length;\n\t\t\t\tif (this.length < 2 * DEFAULT_TMP_STORAGE_LENGTH) this.tmpStorageLength = this.length >>> 1;\n\t\t\t\tthis.tmp = new Array(this.tmpStorageLength);\n\t\t\t\tthis.stackLength = this.length < 120 ? 5 : this.length < 1542 ? 10 : this.length < 119151 ? 19 : 40;\n\t\t\t\tthis.runStart = new Array(this.stackLength);\n\t\t\t\tthis.runLength = new Array(this.stackLength);\n\t\t\t}\n\t\t\tTimSort.prototype.pushRun = function pushRun(runStart, runLength) {\n\t\t\t\tthis.runStart[this.stackSize] = runStart;\n\t\t\t\tthis.runLength[this.stackSize] = runLength;\n\t\t\t\tthis.stackSize += 1;\n\t\t\t};\n\t\t\tTimSort.prototype.mergeRuns = function mergeRuns() {\n\t\t\t\twhile (this.stackSize > 1) {\n\t\t\t\t\tvar n = this.stackSize - 2;\n\t\t\t\t\tif (n >= 1 && this.runLength[n - 1] <= this.runLength[n] + this.runLength[n + 1] || n >= 2 && this.runLength[n - 2] <= this.runLength[n] + this.runLength[n - 1]) {\n\t\t\t\t\t\tif (this.runLength[n - 1] < this.runLength[n + 1]) n--;\n\t\t\t\t\t} else if (this.runLength[n] > this.runLength[n + 1]) break;\n\t\t\t\t\tthis.mergeAt(n);\n\t\t\t\t}\n\t\t\t};\n\t\t\tTimSort.prototype.forceMergeRuns = function forceMergeRuns() {\n\t\t\t\twhile (this.stackSize > 1) {\n\t\t\t\t\tvar n = this.stackSize - 2;\n\t\t\t\t\tif (n > 0 && this.runLength[n - 1] < this.runLength[n + 1]) n--;\n\t\t\t\t\tthis.mergeAt(n);\n\t\t\t\t}\n\t\t\t};\n\t\t\tTimSort.prototype.mergeAt = function mergeAt(i) {\n\t\t\t\tvar compare = this.compare;\n\t\t\t\tvar array = this.array;\n\t\t\t\tvar start1 = this.runStart[i];\n\t\t\t\tvar length1 = this.runLength[i];\n\t\t\t\tvar start2 = this.runStart[i + 1];\n\t\t\t\tvar length2 = this.runLength[i + 1];\n\t\t\t\tthis.runLength[i] = length1 + length2;\n\t\t\t\tif (i === this.stackSize - 3) {\n\t\t\t\t\tthis.runStart[i + 1] = this.runStart[i + 2];\n\t\t\t\t\tthis.runLength[i + 1] = this.runLength[i + 2];\n\t\t\t\t}\n\t\t\t\tthis.stackSize--;\n\t\t\t\tvar k = gallopRight(array[start2], array, start1, length1, 0, compare);\n\t\t\t\tstart1 += k;\n\t\t\t\tlength1 -= k;\n\t\t\t\tif (length1 === 0) return;\n\t\t\t\tlength2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\t\t\t\tif (length2 === 0) return;\n\t\t\t\tif (length1 <= length2) this.mergeLow(start1, length1, start2, length2);\n\t\t\t\telse this.mergeHigh(start1, length1, start2, length2);\n\t\t\t};\n\t\t\tTimSort.prototype.mergeLow = function mergeLow(start1, length1, start2, length2) {\n\t\t\t\tvar compare = this.compare;\n\t\t\t\tvar array = this.array;\n\t\t\t\tvar tmp = this.tmp;\n\t\t\t\tvar i = 0;\n\t\t\t\tfor (i = 0; i < length1; i++) tmp[i] = array[start1 + i];\n\t\t\t\tvar cursor1 = 0;\n\t\t\t\tvar cursor2 = start2;\n\t\t\t\tvar dest = start1;\n\t\t\t\tarray[dest++] = array[cursor2++];\n\t\t\t\tif (--length2 === 0) {\n\t\t\t\t\tfor (i = 0; i < length1; i++) array[dest + i] = tmp[cursor1 + i];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (length1 === 1) {\n\t\t\t\t\tfor (i = 0; i < length2; i++) array[dest + i] = array[cursor2 + i];\n\t\t\t\t\tarray[dest + length2] = tmp[cursor1];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar minGallop = this.minGallop;\n\t\t\t\twhile (true) {\n\t\t\t\t\tvar count1 = 0;\n\t\t\t\t\tvar count2 = 0;\n\t\t\t\t\tvar exit = false;\n\t\t\t\t\tdo\n\t\t\t\t\t\tif (compare(array[cursor2], tmp[cursor1]) < 0) {\n\t\t\t\t\t\t\tarray[dest++] = array[cursor2++];\n\t\t\t\t\t\t\tcount2++;\n\t\t\t\t\t\t\tcount1 = 0;\n\t\t\t\t\t\t\tif (--length2 === 0) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tarray[dest++] = tmp[cursor1++];\n\t\t\t\t\t\t\tcount1++;\n\t\t\t\t\t\t\tcount2 = 0;\n\t\t\t\t\t\t\tif (--length1 === 1) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\twhile ((count1 | count2) < minGallop);\n\t\t\t\t\tif (exit) break;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tcount1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\t\t\t\t\t\tif (count1 !== 0) {\n\t\t\t\t\t\t\tfor (i = 0; i < count1; i++) array[dest + i] = tmp[cursor1 + i];\n\t\t\t\t\t\t\tdest += count1;\n\t\t\t\t\t\t\tcursor1 += count1;\n\t\t\t\t\t\t\tlength1 -= count1;\n\t\t\t\t\t\t\tif (length1 <= 1) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tarray[dest++] = array[cursor2++];\n\t\t\t\t\t\tif (--length2 === 0) {\n\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcount2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\t\t\t\t\t\tif (count2 !== 0) {\n\t\t\t\t\t\t\tfor (i = 0; i < count2; i++) array[dest + i] = array[cursor2 + i];\n\t\t\t\t\t\t\tdest += count2;\n\t\t\t\t\t\t\tcursor2 += count2;\n\t\t\t\t\t\t\tlength2 -= count2;\n\t\t\t\t\t\t\tif (length2 === 0) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tarray[dest++] = tmp[cursor1++];\n\t\t\t\t\t\tif (--length1 === 1) {\n\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tminGallop--;\n\t\t\t\t\t} while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\t\t\t\t\tif (exit) break;\n\t\t\t\t\tif (minGallop < 0) minGallop = 0;\n\t\t\t\t\tminGallop += 2;\n\t\t\t\t}\n\t\t\t\tthis.minGallop = minGallop;\n\t\t\t\tif (minGallop < 1) this.minGallop = 1;\n\t\t\t\tif (length1 === 1) {\n\t\t\t\t\tfor (i = 0; i < length2; i++) array[dest + i] = array[cursor2 + i];\n\t\t\t\t\tarray[dest + length2] = tmp[cursor1];\n\t\t\t\t} else if (length1 === 0) throw new Error(\"mergeLow preconditions were not respected\");\n\t\t\t\telse for (i = 0; i < length1; i++) array[dest + i] = tmp[cursor1 + i];\n\t\t\t};\n\t\t\tTimSort.prototype.mergeHigh = function mergeHigh(start1, length1, start2, length2) {\n\t\t\t\tvar compare = this.compare;\n\t\t\t\tvar array = this.array;\n\t\t\t\tvar tmp = this.tmp;\n\t\t\t\tvar i = 0;\n\t\t\t\tfor (i = 0; i < length2; i++) tmp[i] = array[start2 + i];\n\t\t\t\tvar cursor1 = start1 + length1 - 1;\n\t\t\t\tvar cursor2 = length2 - 1;\n\t\t\t\tvar dest = start2 + length2 - 1;\n\t\t\t\tvar customCursor = 0;\n\t\t\t\tvar customDest = 0;\n\t\t\t\tarray[dest--] = array[cursor1--];\n\t\t\t\tif (--length1 === 0) {\n\t\t\t\t\tcustomCursor = dest - (length2 - 1);\n\t\t\t\t\tfor (i = 0; i < length2; i++) array[customCursor + i] = tmp[i];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (length2 === 1) {\n\t\t\t\t\tdest -= length1;\n\t\t\t\t\tcursor1 -= length1;\n\t\t\t\t\tcustomDest = dest + 1;\n\t\t\t\t\tcustomCursor = cursor1 + 1;\n\t\t\t\t\tfor (i = length1 - 1; i >= 0; i--) array[customDest + i] = array[customCursor + i];\n\t\t\t\t\tarray[dest] = tmp[cursor2];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar minGallop = this.minGallop;\n\t\t\t\twhile (true) {\n\t\t\t\t\tvar count1 = 0;\n\t\t\t\t\tvar count2 = 0;\n\t\t\t\t\tvar exit = false;\n\t\t\t\t\tdo\n\t\t\t\t\t\tif (compare(tmp[cursor2], array[cursor1]) < 0) {\n\t\t\t\t\t\t\tarray[dest--] = array[cursor1--];\n\t\t\t\t\t\t\tcount1++;\n\t\t\t\t\t\t\tcount2 = 0;\n\t\t\t\t\t\t\tif (--length1 === 0) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tarray[dest--] = tmp[cursor2--];\n\t\t\t\t\t\t\tcount2++;\n\t\t\t\t\t\t\tcount1 = 0;\n\t\t\t\t\t\t\tif (--length2 === 1) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\twhile ((count1 | count2) < minGallop);\n\t\t\t\t\tif (exit) break;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tcount1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\t\t\t\t\t\tif (count1 !== 0) {\n\t\t\t\t\t\t\tdest -= count1;\n\t\t\t\t\t\t\tcursor1 -= count1;\n\t\t\t\t\t\t\tlength1 -= count1;\n\t\t\t\t\t\t\tcustomDest = dest + 1;\n\t\t\t\t\t\t\tcustomCursor = cursor1 + 1;\n\t\t\t\t\t\t\tfor (i = count1 - 1; i >= 0; i--) array[customDest + i] = array[customCursor + i];\n\t\t\t\t\t\t\tif (length1 === 0) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tarray[dest--] = tmp[cursor2--];\n\t\t\t\t\t\tif (--length2 === 1) {\n\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcount2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\t\t\t\t\t\tif (count2 !== 0) {\n\t\t\t\t\t\t\tdest -= count2;\n\t\t\t\t\t\t\tcursor2 -= count2;\n\t\t\t\t\t\t\tlength2 -= count2;\n\t\t\t\t\t\t\tcustomDest = dest + 1;\n\t\t\t\t\t\t\tcustomCursor = cursor2 + 1;\n\t\t\t\t\t\t\tfor (i = 0; i < count2; i++) array[customDest + i] = tmp[customCursor + i];\n\t\t\t\t\t\t\tif (length2 <= 1) {\n\t\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tarray[dest--] = array[cursor1--];\n\t\t\t\t\t\tif (--length1 === 0) {\n\t\t\t\t\t\t\texit = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tminGallop--;\n\t\t\t\t\t} while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\t\t\t\t\tif (exit) break;\n\t\t\t\t\tif (minGallop < 0) minGallop = 0;\n\t\t\t\t\tminGallop += 2;\n\t\t\t\t}\n\t\t\t\tthis.minGallop = minGallop;\n\t\t\t\tif (minGallop < 1) this.minGallop = 1;\n\t\t\t\tif (length2 === 1) {\n\t\t\t\t\tdest -= length1;\n\t\t\t\t\tcursor1 -= length1;\n\t\t\t\t\tcustomDest = dest + 1;\n\t\t\t\t\tcustomCursor = cursor1 + 1;\n\t\t\t\t\tfor (i = length1 - 1; i >= 0; i--) array[customDest + i] = array[customCursor + i];\n\t\t\t\t\tarray[dest] = tmp[cursor2];\n\t\t\t\t} else if (length2 === 0) throw new Error(\"mergeHigh preconditions were not respected\");\n\t\t\t\telse {\n\t\t\t\t\tcustomCursor = dest - (length2 - 1);\n\t\t\t\t\tfor (i = 0; i < length2; i++) array[customCursor + i] = tmp[i];\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn TimSort;\n\t\t})();\n\t\tfunction sort(array, compare, lo, hi) {\n\t\t\tif (!Array.isArray(array)) throw new TypeError(\"Can only sort arrays\");\n\t\t\tif (!compare) compare = alphabeticalCompare;\n\t\t\telse if (typeof compare !== \"function\") {\n\t\t\t\thi = lo;\n\t\t\t\tlo = compare;\n\t\t\t\tcompare = alphabeticalCompare;\n\t\t\t}\n\t\t\tif (!lo) lo = 0;\n\t\t\tif (!hi) hi = array.length;\n\t\t\tvar remaining = hi - lo;\n\t\t\tif (remaining < 2) return;\n\t\t\tvar runLength = 0;\n\t\t\tif (remaining < DEFAULT_MIN_MERGE) {\n\t\t\t\trunLength = makeAscendingRun(array, lo, hi, compare);\n\t\t\t\tbinaryInsertionSort(array, lo, hi, lo + runLength, compare);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar ts = new TimSort(array, compare);\n\t\t\tvar minRun = minRunLength(remaining);\n\t\t\tdo {\n\t\t\t\trunLength = makeAscendingRun(array, lo, hi, compare);\n\t\t\t\tif (runLength < minRun) {\n\t\t\t\t\tvar force = remaining;\n\t\t\t\t\tif (force > minRun) force = minRun;\n\t\t\t\t\tbinaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n\t\t\t\t\trunLength = force;\n\t\t\t\t}\n\t\t\t\tts.pushRun(lo, runLength);\n\t\t\t\tts.mergeRuns();\n\t\t\t\tremaining -= runLength;\n\t\t\t\tlo += runLength;\n\t\t\t} while (remaining !== 0);\n\t\t\tts.forceMergeRuns();\n\t\t}\n\t});\n}));\nvar require_timsort = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = require_timsort$1();\n}));\nvar require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\t/**\n\t@typedef {(Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array)} TypedArray\n\t*/\n\t/**\n\t* Error message for a case when percentile is less than 0.\n\t*\n\t* @param {Number} p\n\t*\n\t* @return {String}\n\t*/\n\tfunction lessThanZeroError(p) {\n\t\treturn \"Expect percentile to be >= 0 but given \\\"\" + p + \"\\\" and its type is \\\"\" + typeof p + \"\\\".\";\n\t}\n\t/**\n\t* Error message for a case when percentile is greater than 100.\n\t*\n\t* @param {Number} p\n\t*\n\t* @return {String}\n\t*/\n\tfunction greaterThanHundredError(p) {\n\t\treturn \"Expect percentile to be <= 100 but given \\\"\" + p + \"\\\" and its type is \\\"\" + typeof p + \"\\\".\";\n\t}\n\t/**\n\t* Error message for a case when percentile is not a number (NaN).\n\t*\n\t* @param {Number} p\n\t*\n\t* @return {String}\n\t*/\n\tfunction nanError(p) {\n\t\treturn \"Expect percentile to be a number but given \\\"\" + p + \"\\\" and its type is \\\"\" + typeof p + \"\\\".\";\n\t}\n\t/**\n\t* Checks that a list of percentiles are all numbers and they lie in range 0..100.\n\t*\n\t* @param {Array<Number>} ps - percentiles to calculate\n\t*\n\t* @return {Array} List of errors\n\t*/\n\tfunction validateInput(ps) {\n\t\treturn ps.reduce(function(errors, p) {\n\t\t\tif (isNaN(Number(p))) errors.push(nanError(p));\n\t\t\telse if (p < 0) errors.push(lessThanZeroError(p));\n\t\t\telse if (p > 100) errors.push(greaterThanHundredError(p));\n\t\t\treturn errors;\n\t\t}, []);\n\t}\n\t/**\n\t* Get percentile value from an array.\n\t*\n\t* @param {Number} p - percentile\n\t* @param {Array|TypedArray} list - list of values\n\t*\n\t* @return {*}\n\t*/\n\tfunction getPsValue(p, list) {\n\t\tif (p === 0) return list[0];\n\t\treturn list[Math.ceil(list.length * (p / 100)) - 1];\n\t}\n\t/**\n\t* Calculate percentile for given array of values.\n\t*\n\t* @template T\n\t* @param {Number|Array<Number>} pOrPs - percentile or a list of percentiles\n\t* @param {Array<T>|Array<Number>|TypedArray} list - array of values\n\t* @param {function(T): Number} [fn] - optional function to extract a value from an array item\n\t*\n\t* @return {Number|T|Array<Number>|Array<T>}\n\t*/\n\tfunction percentile(pOrPs, list, fn) {\n\t\tvar ps = Array.isArray(pOrPs) ? pOrPs : [pOrPs];\n\t\tvar validationErrors = validateInput(ps);\n\t\tif (validationErrors.length) throw new Error(validationErrors.join(\" \"));\n\t\tlist = list.slice().sort(function(a, b) {\n\t\t\tif (fn) {\n\t\t\t\ta = fn(a);\n\t\t\t\tb = fn(b);\n\t\t\t}\n\t\t\ta = Number.isNaN(a) ? Number.NEGATIVE_INFINITY : a;\n\t\t\tb = Number.isNaN(b) ? Number.NEGATIVE_INFINITY : b;\n\t\t\tif (a > b) return 1;\n\t\t\tif (a < b) return -1;\n\t\t\treturn 0;\n\t\t});\n\t\tif (ps.length === 1) return getPsValue(ps[0], list);\n\t\treturn ps.map(function(p) {\n\t\t\treturn getPsValue(p, list);\n\t\t});\n\t}\n\tmodule.exports = percentile;\n}));\nvar import_timsort = /* @__PURE__ */ __toESM(require_timsort(), 1);\nvar import_lib = /* @__PURE__ */ __toESM(require_lib(), 1);\nvar InstrumentGauge = class extends InstrumentBase {\n\t#val = 0;\n\t#maxval = null;\n\t#lastObservedValue = 0;\n\t#timeSeriesList = [];\n\t#maxSampleSize = 0;\n\t#timerInterval = 0;\n\t#observer = null;\n\t#min = null;\n\t#max = 0;\n\t#observations = 0;\n\t#total = 0;\n\t#copy = false;\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (!options.label) this.label = \"InstrumentGauge\";\n\t\telse this.label = options.label;\n\t\tif (typeof options.interval === \"undefined\") this.#timerInterval = 0;\n\t\telse this.#timerInterval = options.interval;\n\t\tif (typeof options.sampleSize === \"undefined\") this.#maxSampleSize = 600;\n\t\telse this.#maxSampleSize = options.sampleSize;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_GAUGE\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\n\t\t\t\"val\",\n\t\t\t\"min\",\n\t\t\t\"max\",\n\t\t\t\"avg\",\n\t\t\t\"percentile\"\n\t\t]);\n\t\telse {\n\t\t\tObject.defineProperty(this, \"val\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: () => this.#GetVal(),\n\t\t\t\tset: (value) => {\n\t\t\t\t\tthis.#SetVal(value);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (this.#timerInterval > 0) {\n\t\t\t\tObject.defineProperty(this, \"percentile\", {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: () => this.#GetPercentileData()\n\t\t\t\t});\n\t\t\t\tthis._StartTimer();\n\t\t\t}\n\t\t}\n\t\tif (typeof options.initValue !== \"undefined\") this.val = options.initValue;\n\t\tif (typeof options.fromJSON !== \"undefined\") {\n\t\t\tconst result = _cloneDeep(options.fromJSON);\n\t\t\tthis.val = result.val;\n\t\t\tif (result.percentile) this.percentile = result.percentile;\n\t\t\tif (result.min) this.min = result.min;\n\t\t\tif (result.max) this.max = result.max;\n\t\t\tif (result.avg) this.avg = result.avg;\n\t\t}\n\t}\n\tpercentile;\n\tmin;\n\tmax;\n\tavg;\n\tval = 0;\n\tWithInitVal(initVal) {\n\t\tthis.val = initVal;\n\t\treturn this;\n\t}\n\tWithMin() {\n\t\tObject.defineProperty(this, \"min\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => this.#GetMin()\n\t\t});\n\t\treturn this;\n\t}\n\tWithMax() {\n\t\tObject.defineProperty(this, \"max\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => this.#GetMax()\n\t\t});\n\t\treturn this;\n\t}\n\tWithAverage() {\n\t\tObject.defineProperty(this, \"avg\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => this.#GetAverage()\n\t\t});\n\t\treturn this;\n\t}\n\t_StartTimer() {\n\t\tif (this.#timerInterval > 0) {\n\t\t\tthis.#timeSeriesList = [];\n\t\t\tthis.#observer = setInterval(() => {\n\t\t\t\tif (this.#timeSeriesList.length > this.#maxSampleSize) this.#timeSeriesList.shift();\n\t\t\t\tconst maxval = this.#GetAndResetMaxVal();\n\t\t\t\tthis.#timeSeriesList.push(maxval);\n\t\t\t}, this.#timerInterval);\n\t\t\tif (isNode) this.#observer.unref();\n\t\t} else throw new Error(`Unable to StartTimer for this instrument. The interval is set to <= 0.`);\n\t}\n\tStopTimer() {\n\t\tif (this.#observer) {\n\t\t\tclearTimeout(this.#observer);\n\t\t\tthis.#observer = null;\n\t\t\tthis.#timeSeriesList = [];\n\t\t}\n\t}\n\t/**\n\t* If the gauge is being monitored as part of a time series, get the most recent recorded value (max value) from within the time interval\n\t* otherwise, just return the current instant value.\n\t*/\n\t#GetVal() {\n\t\tif (this.#timerInterval > 0 && this.#observer !== null) if (this.#maxval === null) return this.GetNumber(this.#lastObservedValue);\n\t\telse return this.GetNumber(this.#maxval);\n\t\treturn this.GetNumber(this.#val);\n\t}\n\t#SetVal(updatedValue) {\n\t\tthis.#val = updatedValue;\n\t\tthis.#observations++;\n\t\tthis.#total += updatedValue;\n\t\tif (this.#val > this.#max) this.#max = this.#val;\n\t\tif (this.#min !== null) {\n\t\t\tif (this.#val < this.#min) this.#min = this.#val;\n\t\t} else this.#min = this.#val;\n\t\tif (this.#timerInterval > 0) {\n\t\t\tthis.#lastObservedValue = updatedValue;\n\t\t\tif (this.#maxval === null) this.#maxval = this.#val;\n\t\t\telse if (this.#val > this.#maxval) this.#maxval = this.#val;\n\t\t}\n\t}\n\t#GetMin() {\n\t\tif (this.#min !== null) return this.#min;\n\t\treturn 0;\n\t}\n\t#GetMax() {\n\t\treturn this.#max;\n\t}\n\t#GetAverage() {\n\t\tif (this.#observations > 0) return this.#total / this.#observations;\n\t\treturn 0;\n\t}\n\tReset() {\n\t\tthis.StopTimer();\n\t\tthis.#maxval = 0;\n\t\tthis.#lastObservedValue = 0;\n\t\tthis.#val = 0;\n\t\tthis.#min = null;\n\t\tthis.#max = 0;\n\t\tthis.#observations = 0;\n\t\tthis.#total = 0;\n\t\tif (this.#timerInterval > 0) this._StartTimer();\n\t}\n\t#GetAndResetMaxVal() {\n\t\tif (this.#maxval === null) return this.#lastObservedValue;\n\t\tconst retVal = this.#maxval;\n\t\tthis.#maxval = null;\n\t\treturn retVal;\n\t}\n\tInc(incVal = 1) {\n\t\tthis.#SetVal(this.#val + incVal);\n\t}\n\tDec(decVal = 1) {\n\t\tthis.#SetVal(this.#val - decVal);\n\t}\n\t#NumberCompare(a, b) {\n\t\treturn a - b;\n\t}\n\t#GetPercentileData() {\n\t\tconst sortedList = this.#timeSeriesList.slice(0);\n\t\timport_timsort.sort(sortedList, this.#NumberCompare);\n\t\treturn (0, import_lib.default)([\n\t\t\t50,\n\t\t\t80,\n\t\t\t90,\n\t\t\t95,\n\t\t\t99,\n\t\t\t99.95\n\t\t], sortedList);\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.Inc !== void 0) this.Inc(telemetry.Inc);\n\t\tif (telemetry.Dec !== void 0) this.Dec(telemetry.Dec);\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t}\n};\nvar InstrumentObject = class extends InstrumentBase {\n\t#val = {};\n\t#copy = false;\n\tconstructor(options = {}) {\n\t\tsuper(options);\n\t\tif (typeof options.label === \"undefined\") this.label = \"InstrumentObject\";\n\t\telse this.label = options.label;\n\t\tif (typeof options.fromJSON === \"undefined\") this.#copy = false;\n\t\telse this.#copy = true;\n\t\tObject.defineProperty(this, GaugeTypes.GAUGE_TYPE, {\n\t\t\tenumerable: true,\n\t\t\tget: () => GaugeTypes.INSTRUMENT_OBJECT\n\t\t});\n\t\tif (this.#copy) this.DefineCopyProperties([\"val\"]);\n\t\telse Object.defineProperty(this, \"val\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => this.#GetVal(),\n\t\t\tset: (value) => {\n\t\t\t\tthis.#SetVal(value);\n\t\t\t}\n\t\t});\n\t\tif (typeof options.initValue !== \"undefined\") this.val = options.initValue;\n\t\telse this.val = {};\n\t\tif (typeof options.fromJSON !== \"undefined\") this.val = _cloneDeep(options.fromJSON).val;\n\t}\n\tval;\n\tWithInitVal(initVal) {\n\t\tthis.val = initVal;\n\t\treturn this;\n\t}\n\t#GetVal() {\n\t\treturn this.#val;\n\t}\n\t#SetVal(updatedValue) {\n\t\tthis.#val = updatedValue;\n\t}\n\tProcessTelemetry(telemetry) {\n\t\tif (telemetry.val !== void 0) this.val = telemetry.val;\n\t}\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/utils/utf8.mjs\nfunction utf8Count(str) {\n\tconst strLength = str.length;\n\tlet byteLength = 0;\n\tlet pos = 0;\n\twhile (pos < strLength) {\n\t\tlet value = str.charCodeAt(pos++);\n\t\tif ((value & 4294967168) === 0) {\n\t\t\tbyteLength++;\n\t\t\tcontinue;\n\t\t} else if ((value & 4294965248) === 0) byteLength += 2;\n\t\telse {\n\t\t\tif (value >= 55296 && value <= 56319) {\n\t\t\t\tif (pos < strLength) {\n\t\t\t\t\tconst extra = str.charCodeAt(pos);\n\t\t\t\t\tif ((extra & 64512) === 56320) {\n\t\t\t\t\t\t++pos;\n\t\t\t\t\t\tvalue = ((value & 1023) << 10) + (extra & 1023) + 65536;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ((value & 4294901760) === 0) byteLength += 3;\n\t\t\telse byteLength += 4;\n\t\t}\n\t}\n\treturn byteLength;\n}\nfunction utf8EncodeJs(str, output, outputOffset) {\n\tconst strLength = str.length;\n\tlet offset = outputOffset;\n\tlet pos = 0;\n\twhile (pos < strLength) {\n\t\tlet value = str.charCodeAt(pos++);\n\t\tif ((value & 4294967168) === 0) {\n\t\t\toutput[offset++] = value;\n\t\t\tcontinue;\n\t\t} else if ((value & 4294965248) === 0) output[offset++] = value >> 6 & 31 | 192;\n\t\telse {\n\t\t\tif (value >= 55296 && value <= 56319) {\n\t\t\t\tif (pos < strLength) {\n\t\t\t\t\tconst extra = str.charCodeAt(pos);\n\t\t\t\t\tif ((extra & 64512) === 56320) {\n\t\t\t\t\t\t++pos;\n\t\t\t\t\t\tvalue = ((value & 1023) << 10) + (extra & 1023) + 65536;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ((value & 4294901760) === 0) {\n\t\t\t\toutput[offset++] = value >> 12 & 15 | 224;\n\t\t\t\toutput[offset++] = value >> 6 & 63 | 128;\n\t\t\t} else {\n\t\t\t\toutput[offset++] = value >> 18 & 7 | 240;\n\t\t\t\toutput[offset++] = value >> 12 & 63 | 128;\n\t\t\t\toutput[offset++] = value >> 6 & 63 | 128;\n\t\t\t}\n\t\t}\n\t\toutput[offset++] = value & 63 | 128;\n\t}\n}\nvar sharedTextEncoder = new TextEncoder();\nvar TEXT_ENCODER_THRESHOLD = 50;\nfunction utf8EncodeTE(str, output, outputOffset) {\n\tsharedTextEncoder.encodeInto(str, output.subarray(outputOffset));\n}\nfunction utf8Encode(str, output, outputOffset) {\n\tif (str.length > TEXT_ENCODER_THRESHOLD) utf8EncodeTE(str, output, outputOffset);\n\telse utf8EncodeJs(str, output, outputOffset);\n}\nnew TextDecoder();\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/ExtData.mjs\n/**\n* ExtData is used to handle Extension Types that are not registered to ExtensionCodec.\n*/\nvar ExtData = class {\n\ttype;\n\tdata;\n\tconstructor(type, data) {\n\t\tthis.type = type;\n\t\tthis.data = data;\n\t}\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/DecodeError.mjs\nvar DecodeError = class DecodeError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tconst proto = Object.create(DecodeError.prototype);\n\t\tObject.setPrototypeOf(this, proto);\n\t\tObject.defineProperty(this, \"name\", {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: DecodeError.name\n\t\t});\n\t}\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/utils/int.mjs\nfunction setUint64(view, offset, value) {\n\tconst high = value / 4294967296;\n\tconst low = value;\n\tview.setUint32(offset, high);\n\tview.setUint32(offset + 4, low);\n}\nfunction setInt64(view, offset, value) {\n\tconst high = Math.floor(value / 4294967296);\n\tconst low = value;\n\tview.setUint32(offset, high);\n\tview.setUint32(offset + 4, low);\n}\nfunction getInt64(view, offset) {\n\tconst high = view.getInt32(offset);\n\tconst low = view.getUint32(offset + 4);\n\treturn high * 4294967296 + low;\n}\nvar TIMESTAMP32_MAX_SEC = 4294967295;\nvar TIMESTAMP64_MAX_SEC = 17179869183;\nfunction encodeTimeSpecToTimestamp({ sec, nsec }) {\n\tif (sec >= 0 && nsec >= 0 && sec <= TIMESTAMP64_MAX_SEC) if (nsec === 0 && sec <= TIMESTAMP32_MAX_SEC) {\n\t\tconst rv = new Uint8Array(4);\n\t\tnew DataView(rv.buffer).setUint32(0, sec);\n\t\treturn rv;\n\t} else {\n\t\tconst secHigh = sec / 4294967296;\n\t\tconst secLow = sec & 4294967295;\n\t\tconst rv = new Uint8Array(8);\n\t\tconst view = new DataView(rv.buffer);\n\t\tview.setUint32(0, nsec << 2 | secHigh & 3);\n\t\tview.setUint32(4, secLow);\n\t\treturn rv;\n\t}\n\telse {\n\t\tconst rv = new Uint8Array(12);\n\t\tconst view = new DataView(rv.buffer);\n\t\tview.setUint32(0, nsec);\n\t\tsetInt64(view, 4, sec);\n\t\treturn rv;\n\t}\n}\nfunction encodeDateToTimeSpec(date) {\n\tconst msec = date.getTime();\n\tconst sec = Math.floor(msec / 1e3);\n\tconst nsec = (msec - sec * 1e3) * 1e6;\n\tconst nsecInSec = Math.floor(nsec / 1e9);\n\treturn {\n\t\tsec: sec + nsecInSec,\n\t\tnsec: nsec - nsecInSec * 1e9\n\t};\n}\nfunction encodeTimestampExtension(object) {\n\tif (object instanceof Date) return encodeTimeSpecToTimestamp(encodeDateToTimeSpec(object));\n\telse return null;\n}\nfunction decodeTimestampToTimeSpec(data) {\n\tconst view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\tswitch (data.byteLength) {\n\t\tcase 4: return {\n\t\t\tsec: view.getUint32(0),\n\t\t\tnsec: 0\n\t\t};\n\t\tcase 8: {\n\t\t\tconst nsec30AndSecHigh2 = view.getUint32(0);\n\t\t\tconst secLow32 = view.getUint32(4);\n\t\t\treturn {\n\t\t\t\tsec: (nsec30AndSecHigh2 & 3) * 4294967296 + secLow32,\n\t\t\t\tnsec: nsec30AndSecHigh2 >>> 2\n\t\t\t};\n\t\t}\n\t\tcase 12: return {\n\t\t\tsec: getInt64(view, 4),\n\t\t\tnsec: view.getUint32(0)\n\t\t};\n\t\tdefault: throw new DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${data.length}`);\n\t}\n}\nfunction decodeTimestampExtension(data) {\n\tconst timeSpec = decodeTimestampToTimeSpec(data);\n\treturn /* @__PURE__ */ new Date(timeSpec.sec * 1e3 + timeSpec.nsec / 1e6);\n}\nvar timestampExtension = {\n\ttype: -1,\n\tencode: encodeTimestampExtension,\n\tdecode: decodeTimestampExtension\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/ExtensionCodec.mjs\nvar ExtensionCodec = class ExtensionCodec {\n\tstatic defaultCodec = new ExtensionCodec();\n\t__brand;\n\tbuiltInEncoders = [];\n\tbuiltInDecoders = [];\n\tencoders = [];\n\tdecoders = [];\n\tconstructor() {\n\t\tthis.register(timestampExtension);\n\t}\n\tregister({ type, encode, decode }) {\n\t\tif (type >= 0) {\n\t\t\tthis.encoders[type] = encode;\n\t\t\tthis.decoders[type] = decode;\n\t\t} else {\n\t\t\tconst index = -1 - type;\n\t\t\tthis.builtInEncoders[index] = encode;\n\t\t\tthis.builtInDecoders[index] = decode;\n\t\t}\n\t}\n\ttryToEncode(object, context) {\n\t\tfor (let i = 0; i < this.builtInEncoders.length; i++) {\n\t\t\tconst encodeExt = this.builtInEncoders[i];\n\t\t\tif (encodeExt != null) {\n\t\t\t\tconst data = encodeExt(object, context);\n\t\t\t\tif (data != null) return new ExtData(-1 - i, data);\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < this.encoders.length; i++) {\n\t\t\tconst encodeExt = this.encoders[i];\n\t\t\tif (encodeExt != null) {\n\t\t\t\tconst data = encodeExt(object, context);\n\t\t\t\tif (data != null) return new ExtData(i, data);\n\t\t\t}\n\t\t}\n\t\tif (object instanceof ExtData) return object;\n\t\treturn null;\n\t}\n\tdecode(data, type, context) {\n\t\tconst decodeExt = type < 0 ? this.builtInDecoders[-1 - type] : this.decoders[type];\n\t\tif (decodeExt) return decodeExt(data, type, context);\n\t\telse return new ExtData(type, data);\n\t}\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/utils/typedArrays.mjs\nfunction isArrayBufferLike(buffer) {\n\treturn buffer instanceof ArrayBuffer || typeof SharedArrayBuffer !== \"undefined\" && buffer instanceof SharedArrayBuffer;\n}\nfunction ensureUint8Array(buffer) {\n\tif (buffer instanceof Uint8Array) return buffer;\n\telse if (ArrayBuffer.isView(buffer)) return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n\telse if (isArrayBufferLike(buffer)) return new Uint8Array(buffer);\n\telse return Uint8Array.from(buffer);\n}\nvar Encoder = class Encoder {\n\textensionCodec;\n\tcontext;\n\tuseBigInt64;\n\tmaxDepth;\n\tinitialBufferSize;\n\tsortKeys;\n\tforceFloat32;\n\tignoreUndefined;\n\tforceIntegerToFloat;\n\tpos;\n\tview;\n\tbytes;\n\tentered = false;\n\tconstructor(options) {\n\t\tthis.extensionCodec = options?.extensionCodec ?? ExtensionCodec.defaultCodec;\n\t\tthis.context = options?.context;\n\t\tthis.useBigInt64 = options?.useBigInt64 ?? false;\n\t\tthis.maxDepth = options?.maxDepth ?? 100;\n\t\tthis.initialBufferSize = options?.initialBufferSize ?? 2048;\n\t\tthis.sortKeys = options?.sortKeys ?? false;\n\t\tthis.forceFloat32 = options?.forceFloat32 ?? false;\n\t\tthis.ignoreUndefined = options?.ignoreUndefined ?? false;\n\t\tthis.forceIntegerToFloat = options?.forceIntegerToFloat ?? false;\n\t\tthis.pos = 0;\n\t\tthis.view = new DataView(new ArrayBuffer(this.initialBufferSize));\n\t\tthis.bytes = new Uint8Array(this.view.buffer);\n\t}\n\tclone() {\n\t\treturn new Encoder({\n\t\t\textensionCodec: this.extensionCodec,\n\t\t\tcontext: this.context,\n\t\t\tuseBigInt64: this.useBigInt64,\n\t\t\tmaxDepth: this.maxDepth,\n\t\t\tinitialBufferSize: this.initialBufferSize,\n\t\t\tsortKeys: this.sortKeys,\n\t\t\tforceFloat32: this.forceFloat32,\n\t\t\tignoreUndefined: this.ignoreUndefined,\n\t\t\tforceIntegerToFloat: this.forceIntegerToFloat\n\t\t});\n\t}\n\treinitializeState() {\n\t\tthis.pos = 0;\n\t}\n\t/**\n\t* This is almost equivalent to {@link Encoder#encode}, but it returns an reference of the encoder's internal buffer and thus much faster than {@link Encoder#encode}.\n\t*\n\t* @returns Encodes the object and returns a shared reference the encoder's internal buffer.\n\t*/\n\tencodeSharedRef(object) {\n\t\tif (this.entered) return this.clone().encodeSharedRef(object);\n\t\ttry {\n\t\t\tthis.entered = true;\n\t\t\tthis.reinitializeState();\n\t\t\tthis.doEncode(object, 1);\n\t\t\treturn this.bytes.subarray(0, this.pos);\n\t\t} finally {\n\t\t\tthis.entered = false;\n\t\t}\n\t}\n\t/**\n\t* @returns Encodes the object and returns a copy of the encoder's internal buffer.\n\t*/\n\tencode(object) {\n\t\tif (this.entered) return this.clone().encode(object);\n\t\ttry {\n\t\t\tthis.entered = true;\n\t\t\tthis.reinitializeState();\n\t\t\tthis.doEncode(object, 1);\n\t\t\treturn this.bytes.slice(0, this.pos);\n\t\t} finally {\n\t\t\tthis.entered = false;\n\t\t}\n\t}\n\tdoEncode(object, depth) {\n\t\tif (depth > this.maxDepth) throw new Error(`Too deep objects in depth ${depth}`);\n\t\tif (object == null) this.encodeNil();\n\t\telse if (typeof object === \"boolean\") this.encodeBoolean(object);\n\t\telse if (typeof object === \"number\") if (!this.forceIntegerToFloat) this.encodeNumber(object);\n\t\telse this.encodeNumberAsFloat(object);\n\t\telse if (typeof object === \"string\") this.encodeString(object);\n\t\telse if (this.useBigInt64 && typeof object === \"bigint\") this.encodeBigInt64(object);\n\t\telse this.encodeObject(object, depth);\n\t}\n\tensureBufferSizeToWrite(sizeToWrite) {\n\t\tconst requiredSize = this.pos + sizeToWrite;\n\t\tif (this.view.byteLength < requiredSize) this.resizeBuffer(requiredSize * 2);\n\t}\n\tresizeBuffer(newSize) {\n\t\tconst newBuffer = new ArrayBuffer(newSize);\n\t\tconst newBytes = new Uint8Array(newBuffer);\n\t\tconst newView = new DataView(newBuffer);\n\t\tnewBytes.set(this.bytes);\n\t\tthis.view = newView;\n\t\tthis.bytes = newBytes;\n\t}\n\tencodeNil() {\n\t\tthis.writeU8(192);\n\t}\n\tencodeBoolean(object) {\n\t\tif (object === false) this.writeU8(194);\n\t\telse this.writeU8(195);\n\t}\n\tencodeNumber(object) {\n\t\tif (!this.forceIntegerToFloat && Number.isSafeInteger(object)) if (object >= 0) if (object < 128) this.writeU8(object);\n\t\telse if (object < 256) {\n\t\t\tthis.writeU8(204);\n\t\t\tthis.writeU8(object);\n\t\t} else if (object < 65536) {\n\t\t\tthis.writeU8(205);\n\t\t\tthis.writeU16(object);\n\t\t} else if (object < 4294967296) {\n\t\t\tthis.writeU8(206);\n\t\t\tthis.writeU32(object);\n\t\t} else if (!this.useBigInt64) {\n\t\t\tthis.writeU8(207);\n\t\t\tthis.writeU64(object);\n\t\t} else this.encodeNumberAsFloat(object);\n\t\telse if (object >= -32) this.writeU8(224 | object + 32);\n\t\telse if (object >= -128) {\n\t\t\tthis.writeU8(208);\n\t\t\tthis.writeI8(object);\n\t\t} else if (object >= -32768) {\n\t\t\tthis.writeU8(209);\n\t\t\tthis.writeI16(object);\n\t\t} else if (object >= -2147483648) {\n\t\t\tthis.writeU8(210);\n\t\t\tthis.writeI32(object);\n\t\t} else if (!this.useBigInt64) {\n\t\t\tthis.writeU8(211);\n\t\t\tthis.writeI64(object);\n\t\t} else this.encodeNumberAsFloat(object);\n\t\telse this.encodeNumberAsFloat(object);\n\t}\n\tencodeNumberAsFloat(object) {\n\t\tif (this.forceFloat32) {\n\t\t\tthis.writeU8(202);\n\t\t\tthis.writeF32(object);\n\t\t} else {\n\t\t\tthis.writeU8(203);\n\t\t\tthis.writeF64(object);\n\t\t}\n\t}\n\tencodeBigInt64(object) {\n\t\tif (object >= BigInt(0)) {\n\t\t\tthis.writeU8(207);\n\t\t\tthis.writeBigUint64(object);\n\t\t} else {\n\t\t\tthis.writeU8(211);\n\t\t\tthis.writeBigInt64(object);\n\t\t}\n\t}\n\twriteStringHeader(byteLength) {\n\t\tif (byteLength < 32) this.writeU8(160 + byteLength);\n\t\telse if (byteLength < 256) {\n\t\t\tthis.writeU8(217);\n\t\t\tthis.writeU8(byteLength);\n\t\t} else if (byteLength < 65536) {\n\t\t\tthis.writeU8(218);\n\t\t\tthis.writeU16(byteLength);\n\t\t} else if (byteLength < 4294967296) {\n\t\t\tthis.writeU8(219);\n\t\t\tthis.writeU32(byteLength);\n\t\t} else throw new Error(`Too long string: ${byteLength} bytes in UTF-8`);\n\t}\n\tencodeString(object) {\n\t\tconst maxHeaderSize = 5;\n\t\tconst byteLength = utf8Count(object);\n\t\tthis.ensureBufferSizeToWrite(maxHeaderSize + byteLength);\n\t\tthis.writeStringHeader(byteLength);\n\t\tutf8Encode(object, this.bytes, this.pos);\n\t\tthis.pos += byteLength;\n\t}\n\tencodeObject(object, depth) {\n\t\tconst ext = this.extensionCodec.tryToEncode(object, this.context);\n\t\tif (ext != null) this.encodeExtension(ext);\n\t\telse if (Array.isArray(object)) this.encodeArray(object, depth);\n\t\telse if (ArrayBuffer.isView(object)) this.encodeBinary(object);\n\t\telse if (typeof object === \"object\") this.encodeMap(object, depth);\n\t\telse throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(object)}`);\n\t}\n\tencodeBinary(object) {\n\t\tconst size = object.byteLength;\n\t\tif (size < 256) {\n\t\t\tthis.writeU8(196);\n\t\t\tthis.writeU8(size);\n\t\t} else if (size < 65536) {\n\t\t\tthis.writeU8(197);\n\t\t\tthis.writeU16(size);\n\t\t} else if (size < 4294967296) {\n\t\t\tthis.writeU8(198);\n\t\t\tthis.writeU32(size);\n\t\t} else throw new Error(`Too large binary: ${size}`);\n\t\tconst bytes = ensureUint8Array(object);\n\t\tthis.writeU8a(bytes);\n\t}\n\tencodeArray(object, depth) {\n\t\tconst size = object.length;\n\t\tif (size < 16) this.writeU8(144 + size);\n\t\telse if (size < 65536) {\n\t\t\tthis.writeU8(220);\n\t\t\tthis.writeU16(size);\n\t\t} else if (size < 4294967296) {\n\t\t\tthis.writeU8(221);\n\t\t\tthis.writeU32(size);\n\t\t} else throw new Error(`Too large array: ${size}`);\n\t\tfor (const item of object) this.doEncode(item, depth + 1);\n\t}\n\tcountWithoutUndefined(object, keys) {\n\t\tlet count = 0;\n\t\tfor (const key of keys) if (object[key] !== void 0) count++;\n\t\treturn count;\n\t}\n\tencodeMap(object, depth) {\n\t\tconst keys = Object.keys(object);\n\t\tif (this.sortKeys) keys.sort();\n\t\tconst size = this.ignoreUndefined ? this.countWithoutUndefined(object, keys) : keys.length;\n\t\tif (size < 16) this.writeU8(128 + size);\n\t\telse if (size < 65536) {\n\t\t\tthis.writeU8(222);\n\t\t\tthis.writeU16(size);\n\t\t} else if (size < 4294967296) {\n\t\t\tthis.writeU8(223);\n\t\t\tthis.writeU32(size);\n\t\t} else throw new Error(`Too large map object: ${size}`);\n\t\tfor (const key of keys) {\n\t\t\tconst value = object[key];\n\t\t\tif (!(this.ignoreUndefined && value === void 0)) {\n\t\t\t\tthis.encodeString(key);\n\t\t\t\tthis.doEncode(value, depth + 1);\n\t\t\t}\n\t\t}\n\t}\n\tencodeExtension(ext) {\n\t\tif (typeof ext.data === \"function\") {\n\t\t\tconst data = ext.data(this.pos + 6);\n\t\t\tconst size = data.length;\n\t\t\tif (size >= 4294967296) throw new Error(`Too large extension object: ${size}`);\n\t\t\tthis.writeU8(201);\n\t\t\tthis.writeU32(size);\n\t\t\tthis.writeI8(ext.type);\n\t\t\tthis.writeU8a(data);\n\t\t\treturn;\n\t\t}\n\t\tconst size = ext.data.length;\n\t\tif (size === 1) this.writeU8(212);\n\t\telse if (size === 2) this.writeU8(213);\n\t\telse if (size === 4) this.writeU8(214);\n\t\telse if (size === 8) this.writeU8(215);\n\t\telse if (size === 16) this.writeU8(216);\n\t\telse if (size < 256) {\n\t\t\tthis.writeU8(199);\n\t\t\tthis.writeU8(size);\n\t\t} else if (size < 65536) {\n\t\t\tthis.writeU8(200);\n\t\t\tthis.writeU16(size);\n\t\t} else if (size < 4294967296) {\n\t\t\tthis.writeU8(201);\n\t\t\tthis.writeU32(size);\n\t\t} else throw new Error(`Too large extension object: ${size}`);\n\t\tthis.writeI8(ext.type);\n\t\tthis.writeU8a(ext.data);\n\t}\n\twriteU8(value) {\n\t\tthis.ensureBufferSizeToWrite(1);\n\t\tthis.view.setUint8(this.pos, value);\n\t\tthis.pos++;\n\t}\n\twriteU8a(values) {\n\t\tconst size = values.length;\n\t\tthis.ensureBufferSizeToWrite(size);\n\t\tthis.bytes.set(values, this.pos);\n\t\tthis.pos += size;\n\t}\n\twriteI8(value) {\n\t\tthis.ensureBufferSizeToWrite(1);\n\t\tthis.view.setInt8(this.pos, value);\n\t\tthis.pos++;\n\t}\n\twriteU16(value) {\n\t\tthis.ensureBufferSizeToWrite(2);\n\t\tthis.view.setUint16(this.pos, value);\n\t\tthis.pos += 2;\n\t}\n\twriteI16(value) {\n\t\tthis.ensureBufferSizeToWrite(2);\n\t\tthis.view.setInt16(this.pos, value);\n\t\tthis.pos += 2;\n\t}\n\twriteU32(value) {\n\t\tthis.ensureBufferSizeToWrite(4);\n\t\tthis.view.setUint32(this.pos, value);\n\t\tthis.pos += 4;\n\t}\n\twriteI32(value) {\n\t\tthis.ensureBufferSizeToWrite(4);\n\t\tthis.view.setInt32(this.pos, value);\n\t\tthis.pos += 4;\n\t}\n\twriteF32(value) {\n\t\tthis.ensureBufferSizeToWrite(4);\n\t\tthis.view.setFloat32(this.pos, value);\n\t\tthis.pos += 4;\n\t}\n\twriteF64(value) {\n\t\tthis.ensureBufferSizeToWrite(8);\n\t\tthis.view.setFloat64(this.pos, value);\n\t\tthis.pos += 8;\n\t}\n\twriteU64(value) {\n\t\tthis.ensureBufferSizeToWrite(8);\n\t\tsetUint64(this.view, this.pos, value);\n\t\tthis.pos += 8;\n\t}\n\twriteI64(value) {\n\t\tthis.ensureBufferSizeToWrite(8);\n\t\tsetInt64(this.view, this.pos, value);\n\t\tthis.pos += 8;\n\t}\n\twriteBigUint64(value) {\n\t\tthis.ensureBufferSizeToWrite(8);\n\t\tthis.view.setBigUint64(this.pos, value);\n\t\tthis.pos += 8;\n\t}\n\twriteBigInt64(value) {\n\t\tthis.ensureBufferSizeToWrite(8);\n\t\tthis.view.setBigInt64(this.pos, value);\n\t\tthis.pos += 8;\n\t}\n};\n//#endregion\n//#region node_modules/@msgpack/msgpack/dist.esm/encode.mjs\n/**\n* It encodes `value` in the MessagePack format and\n* returns a byte buffer.\n*\n* The returned buffer is a slice of a larger `ArrayBuffer`, so you have to use its `#byteOffset` and `#byteLength` in order to convert it to another typed arrays including NodeJS `Buffer`.\n*/\nfunction encode(value, options) {\n\treturn new Encoder(options).encodeSharedRef(value);\n}\n//#endregion\n//#region src/publish/publishers/publishTransportRESTServer.ts\nvar PublishTransportRESTServer = class {\n\toptions;\n\tconstructor(options) {\n\t\tthis.options = options;\n\t}\n\tPublish = async (payload) => {\n\t\ttry {\n\t\t\tif (this.options.showPublishPayload) {\n\t\t\t\tconsole.log(chalk.grey(`PublishTransportRESTServer::Publish() url: [${this.options.url}]`));\n\t\t\t\tconsole.log(payload);\n\t\t\t}\n\t\t\tconst encodedData = encode(payload, { ignoreUndefined: true });\n\t\t\tconst headers = { \"Content-Type\": \"application/octet-stream\" };\n\t\t\tlet retVal = null;\n\t\t\tif (this.options.socketPath) retVal = await axios({\n\t\t\t\tmethod: \"post\",\n\t\t\t\tdata: Buffer.from(encodedData),\n\t\t\t\theaders,\n\t\t\t\tsocketPath: this.options.socketPath\n\t\t\t});\n\t\t\telse if (isNode) if (this.options.agentManager) retVal = await axios(new STSAxiosConfig(this.options.url, \"post\", headers).withData(Buffer.from(encodedData)).withAgentManager(this.options.agentManager).config);\n\t\t\telse retVal = await axios(new STSAxiosConfig(this.options.url, \"post\", headers).withData(Buffer.from(encodedData)).config);\n\t\t\telse {\n\t\t\t\tconst blob = new Blob([new Uint8Array(encodedData)], { type: \"application/octet-stream\" });\n\t\t\t\tretVal = await axios(new STSAxiosConfig(this.options.url, \"post\", headers).withData(blob).config);\n\t\t\t}\n\t\t\tif (retVal.status !== 200) {\n\t\t\t\tif (this.options.showPublishPayload) console.log(chalk.red(`PublishTransportRESTServer::Publish() Error (_PerformPublishRESTAPI:_PerformPublish:#publishmessage): Invalid response from server: [${retVal.status}]`));\n\t\t\t\tthis.options.logger.debug(chalk.red(`Error (_PerformPublishRESTAPI:_PerformPublish:#publishmessage): Invalid response from server: [${retVal.status}]`));\n\t\t\t\treturn false;\n\t\t\t} else if (this.options.showPublishPayload) console.log(chalk.grey(`PublishTransportRESTServer::Publish() _PerformPublishRESTAPI:_PerformPublish:#publishmessage: [${this.options.url}] - Valid response from server: [${retVal.status}]`));\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tif (this.options.showPublishPayload) console.log(chalk.red(`PublishTransportRESTServer::Publish() Error (PublishRESTServer:_PerformPublishRESTAPI:Error: [${error}]`));\n\t\t\treturn false;\n\t\t}\n\t};\n\tasync Close() {\n\t\tif (this.options.agentManager) this.options.agentManager.Terminate();\n\t\treturn true;\n\t}\n};\n//#endregion\n//#region src/publish/publishInstruments.ts\nvar ePublishState$1 = /* @__PURE__ */ function(ePublishState) {\n\tePublishState[ePublishState[\"init\"] = 0] = \"init\";\n\tePublishState[ePublishState[\"started\"] = 1] = \"started\";\n\tePublishState[ePublishState[\"stopping\"] = 2] = \"stopping\";\n\treturn ePublishState;\n}({});\n/**\n* This class managers the creation of instruments and the publication of instrumentation telemetry to the instrument manager service.\n*/\nvar PublishInstruments = class {\n\toptions;\n\t#inPublish = false;\n\t#observer = null;\n\t#publishState = ePublishState$1.init;\n\t#publisherTransport = null;\n\tconstructor(options) {\n\t\tthis.options = options;\n\t\tthis.#publisherTransport = null;\n\t\tswitch (options.publishTransportBaseOptions.transportType) {\n\t\t\tcase TransportType.RESTAPI:\n\t\t\t\tthis.#publisherTransport = new PublishTransportRESTServer(options.publishTransportBaseOptions);\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.#UpdateState(ePublishState$1.init, \"constructor()\");\n\t}\n\tasync Publish() {\n\t\tif (this.#inPublish) return false;\n\t\tif (this.#publisherTransport) try {\n\t\t\tthis.#inPublish = true;\n\t\t\tif (this.options.publishInstrumentController) {\n\t\t\t\tconst instrumentPayload = this.options.publishInstrumentController.GetPayloadData();\n\t\t\t\treturn await this.#publisherTransport.Publish(instrumentPayload);\n\t\t\t}\n\t\t\treturn false;\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\tthis.#inPublish = false;\n\t\t}\n\t\telse return false;\n\t}\n\t#PublishTimeoutLoop(publishInterval) {\n\t\tthis.#observer = setTimeout(async () => {\n\t\t\tconst start = performance.now();\n\t\t\tconst result = await this.Publish();\n\t\t\tconst diff = performance.now() - start;\n\t\t\tif (this.#publishState === ePublishState$1.started) if (result === true) this.#PublishTimeoutLoop(this.options.publishInterval - diff);\n\t\t\telse this.#PublishTimeoutLoop(this.options.publishPostFailInterval - diff);\n\t\t}, publishInterval);\n\t\tif (isNode) this.#observer.unref();\n\t}\n\tasync StartPublish() {\n\t\tif (this.#publishState !== ePublishState$1.init) {\n\t\t\tthis.options.logger.debug(chalk.yellow(`StartPublish:${this.options.processContext.nid}: StartPublish called when not currently in the init state. Current State: [${this.#publishState}]`));\n\t\t\treturn false;\n\t\t}\n\t\tthis.#UpdateState(ePublishState$1.started, \"StartPublish()\");\n\t\tthis.#PublishTimeoutLoop(this.options.publishInterval);\n\t\treturn true;\n\t}\n\t#UpdateState(newState, comment) {\n\t\tconst previousState = this.#publishState;\n\t\tthis.#publishState = newState;\n\t\tthis.options.logger.debug(chalk.yellow(`#UpdateState:${this.options.processContext.nid}: Previous State: [${previousState}]. Current State: [${this.#publishState}]. Comment: [${comment}]`));\n\t}\n\tasync EndPublish() {\n\t\tif (this.#publishState !== ePublishState$1.started) {\n\t\t\tthis.options.logger.debug(chalk.yellow(`EndPublish:${this.options.processContext.nid}: EndPublish called when not within the started state. Current State: [${this.#publishState}]`));\n\t\t\treturn false;\n\t\t}\n\t\tthis.#UpdateState(ePublishState$1.stopping, \"EndPublish() (1)\");\n\t\tif (this.#observer !== null) {\n\t\t\tclearTimeout(this.#observer);\n\t\t\tthis.#observer = null;\n\t\t\tawait this.Publish();\n\t\t}\n\t\tif (this.#publisherTransport) await this.#publisherTransport.Close();\n\t\tthis.#UpdateState(ePublishState$1.init, \"EndPublish() (2)\");\n\t\treturn true;\n\t}\n};\n//#endregion\n//#region src/publish/publishInstrumentController.ts\nvar ePublishState = /* @__PURE__ */ function(ePublishState) {\n\tePublishState[ePublishState[\"init\"] = 0] = \"init\";\n\tePublishState[ePublishState[\"started\"] = 1] = \"started\";\n\tePublishState[ePublishState[\"stopping\"] = 2] = \"stopping\";\n\treturn ePublishState;\n}({});\n/**\n* This class managers the creation of instruments and the publication of instrumentation telemetry to the instrument manager service.\n*/\nvar PublishInstrumentController = class PublishInstrumentController {\n\toptions;\n\t#instruments = {};\n\t#publisher = null;\n\tconstructor(options) {\n\t\tthis.options = options;\n\t\tthis.SetupInstrumentation();\n\t\tthis.#publisher = new PublishInstruments({\n\t\t\tlogger: options.logger,\n\t\t\tprocessContext: { ...options.processContext },\n\t\t\tpublishInterval: options.publishInterval,\n\t\t\tpublishPostFailInterval: options.publishPostFailInterval,\n\t\t\tpublishInstrumentController: this,\n\t\t\tpublishTransportBaseOptions: { ...options.publishTransportBaseOptions }\n\t\t});\n\t\tif (this.options.autoStart === true) this.StartPublish();\n\t}\n\tasync StartPublish() {\n\t\treturn this.#publisher.StartPublish();\n\t}\n\tasync EndPublish() {\n\t\treturn this.#publisher.EndPublish();\n\t}\n\tasync Publish() {\n\t\treturn this.#publisher.Publish();\n\t}\n\tLogEx = (message) => {\n\t\tthis.UpdateInstrument(Gauge.LOGGER, { LogMessage: message });\n\t};\n\t#GetInstrument(instrumentName) {\n\t\treturn this.#instruments[instrumentName];\n\t}\n\t#ProcessTelemetryCommand(instrumentName, telemetry) {\n\t\tconst instrument = this.#GetInstrument(instrumentName);\n\t\tif (instrument) instrument.ProcessTelemetry(telemetry);\n\t}\n\t#CreateInstrument(instrumentType, options) {\n\t\tlet instrument;\n\t\tswitch (instrumentType) {\n\t\t\tcase GaugeTypes.INSTRUMENT_GAUGE:\n\t\t\t\tinstrument = new InstrumentGauge(options);\n\t\t\t\tbreak;\n\t\t\tcase GaugeTypes.INSTRUMENT_HISTOGRAM:\n\t\t\t\tinstrument = new InstrumentHistogram(options);\n\t\t\t\tbreak;\n\t\t\tcase GaugeTypes.INSTRUMENT_LOG:\n\t\t\t\tinstrument = new InstrumentLog(options);\n\t\t\t\tbreak;\n\t\t\tcase GaugeTypes.INSTRUMENT_OBJECT:\n\t\t\t\tinstrument = new InstrumentObject(options);\n\t\t\t\tbreak;\n\t\t\tcase GaugeTypes.INSTRUMENT_TIMER:\n\t\t\t\tinstrument = new InstrumentTimerGauge(options);\n\t\t\t\tbreak;\n\t\t\tcase GaugeTypes.INSTRUMENT_VELOCITY:\n\t\t\t\tinstrument = new InstrumentVelocity(options);\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error(`Gauge type: [${instrumentType} not known.]`);\n\t\t}\n\t\treturn instrument;\n\t}\n\t#CreateInstruments(payload) {\n\t\tpayload.forEach((instrumentDefinition) => {\n\t\t\tconst g = instrumentDefinition[0];\n\t\t\tconst gt = instrumentDefinition[1];\n\t\t\tconst instrumentBaseOptions = instrumentDefinition[2];\n\t\t\tconst instrument = this.#CreateInstrument(gt, instrumentBaseOptions);\n\t\t\tthis.#instruments[g] = instrument;\n\t\t});\n\t}\n\tGetPayloadData() {\n\t\tconst context = this.options.processContext;\n\t\tconst instruments = this.#instruments;\n\t\tconst payloadInstruments = {};\n\t\tfor (const [key, value] of Object.entries(instruments)) if (value instanceof InstrumentLog) payloadInstruments[key] = { ...value.WithUseLatestMessages(true) };\n\t\telse payloadInstruments[key] = { ...value };\n\t\treturn {\n\t\t\tcontext,\n\t\t\tinstruments: payloadInstruments\n\t\t};\n\t}\n\tSetupInstrumentation() {\n\t\tif (!this.options.instrumentDefinitions) {\n\t\t\tthis.options.logger.debug(chalk.yellow(`SetupInstrumentation:${this.options.processContext.nid}: No instrument(s) defined within supplied options.`));\n\t\t\treturn;\n\t\t}\n\t\tif (!this.options.processContext) {\n\t\t\tthis.options.logger.debug(chalk.yellow(`SetupInstrumentation: No context defined within supplied options.`));\n\t\t\treturn;\n\t\t}\n\t\tthis.#CreateInstruments(this.options.instrumentDefinitions);\n\t}\n\t/**\n\t* Check if an instrument exists within the managed instrument collection\n\t* @param instrumentName \n\t* @returns \n\t*/\n\tInstrumentExists(instrumentName) {\n\t\tif (this.#instruments[instrumentName]) return true;\n\t\treturn false;\n\t}\n\t/**\n\t* Update instrument telemetry.\n\t* @param instrumentName \n\t* @param telemetry \n\t*/\n\tUpdateInstrument(instrumentName, telemetry) {\n\t\tif (this.#instruments[instrumentName]) this.#ProcessTelemetryCommand(instrumentName, telemetry);\n\t\telse this.options.logger.debug(chalk.red(`UpdateInstrument:${this.options.processContext.nid}: Attempted to UpdateInstrument before initialised.`));\n\t}\n\t/**\n\t* Add additional instrument publishers. Usually invoked when adding workers to the app and/or async runners within a worker.\n\t* @param processContext \n\t* @returns Returns the newly created PublishInstrumentController\n\t*/\n\tAddPublishInstrumentController(processContext) {\n\t\tconst options = { ...this.options };\n\t\toptions.processContext = processContext;\n\t\treturn new PublishInstrumentController(options);\n\t}\n};\n//#endregion\n//#region src/publish/stsPluginKeys.ts\nvar STSInstrumentControllerPluginKey = Symbol(\"instrumentController\");\n//#endregion\n//#region src/publish/agentinstrumentcontroller.ts\nvar GetSTSInstrumentControllerPluginKey = () => STSInstrumentControllerPluginKey;\nvar CompareSTSInstrumentControllerPluginKey = (val) => val === STSInstrumentControllerPluginKey;\nvar useSTSInstrumentControllerPlugin = () => inject(STSInstrumentControllerPluginKey);\nvar GetSTSInstrumentController = (app) => {\n\treturn app.config.globalProperties.$sts[STSInstrumentControllerPluginKey];\n};\nvar STSInstrumentControllerPlugin = { install: (app, options) => {\n\toptions.logger.debug(chalk.yellow(`STSInstrumentControllerPlugin:install:Start`));\n\tconst aic = new PublishInstrumentController(options);\n\tif (!app.config.globalProperties.$sts) {\n\t\toptions.logger.debug(chalk.cyan(`STSInstrumentControllerPlugin:install: [app.config.globalProperties.$sts] does not exist.`));\n\t\tapp.config.globalProperties.$sts = {};\n\t\toptions.logger.debug(chalk.cyan(`STSInstrumentControllerPlugin:install: created empty [app.config.globalProperties.$sts].`));\n\t} else options.logger.debug(chalk.cyan(`STSInstrumentControllerPlugin:install: [app.config.globalProperties.$sts] already exists.`));\n\tapp.config.globalProperties.$sts.aic = aic;\n\tapp.config.globalProperties.$sts[STSInstrumentControllerPluginKey] = aic;\n\toptions.logger.debug(chalk.cyan(`STSInstrumentControllerPlugin:install: AgentInstrumentController installed into [app.config.globalProperties.$sts] using: [${String(STSInstrumentControllerPluginKey)}].`));\n\tapp.provide(STSInstrumentControllerPluginKey, aic);\n\toptions.logger.debug(chalk.cyan(`STSInstrumentControllerPlugin:install: AgentInstrumentController installed into 'provide' using: [${String(STSInstrumentControllerPluginKey)}].`));\n\toptions.logger.debug(chalk.green(`STSInstrumentControllerPlugin:install:End`));\n} };\n//#endregion\n//#region src/globalServiceDefinitions.ts\nvar influxDBDataType = /* @__PURE__ */ function(influxDBDataType) {\n\tinfluxDBDataType[\"intField\"] = \"intField\";\n\tinfluxDBDataType[\"floatField\"] = \"floatField\";\n\tinfluxDBDataType[\"stringField\"] = \"stringField\";\n\treturn influxDBDataType;\n}({});\nvar instrumentationObservationInterval = 1e3;\nvar instrumentationTimeWindow = 600;\nvar globalServiceDefinitions = {\n\tcoreFieldList: [\n\t\t{\n\t\t\tfieldName: \"requestCount\",\n\t\t\tgauge: Gauge.REQUEST_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"errorCount\",\n\t\t\tgauge: Gauge.ERROR_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"retryCount\",\n\t\t\tgauge: Gauge.RETRY_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"authenticationCount\",\n\t\t\tgauge: Gauge.AUTHENTICATION_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"authenticationErrorCount\",\n\t\t\tgauge: Gauge.AUTHENTICATION_ERROR_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"authenticationRetryCount\",\n\t\t\tgauge: Gauge.AUTHENTICATION_RETRY_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"velocity\",\n\t\t\tgauge: Gauge.VELOCITY_GAUGE,\n\t\t\tinstrumentProperty: \"va\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_VELOCITY\n\t\t},\n\t\t{\n\t\t\tfieldName: \"activeRequestCount\",\n\t\t\tgauge: Gauge.ACTIVE_REQUEST_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\ttimeSeriesIndex: true,\n\t\t\tquantile: true,\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE,\n\t\t\tinstrumentOptions: {\n\t\t\t\tinterval: instrumentationObservationInterval,\n\t\t\t\tsampleSize: instrumentationTimeWindow\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tfieldName: \"coreCount\",\n\t\t\tgauge: Gauge.CORE_COUNT_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"rx\",\n\t\t\tgauge: Gauge.NETWORK_RX_GAUGE,\n\t\t\tinstrumentProperty: \"va\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_VELOCITY\n\t\t},\n\t\t{\n\t\t\tfieldName: \"tx\",\n\t\t\tgauge: Gauge.NETWORK_TX_GAUGE,\n\t\t\tinstrumentProperty: \"va\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_VELOCITY\n\t\t},\n\t\t{\n\t\t\tfieldName: \"timer\",\n\t\t\tgauge: Gauge.TIMER_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_TIMER\n\t\t},\n\t\t{\n\t\t\tfieldName: \"duration\",\n\t\t\tgauge: Gauge.DURATION_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\ttimeSeriesIndex: true,\n\t\t\tquantile: true,\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE,\n\t\t\tinstrumentOptions: {\n\t\t\t\tinterval: instrumentationObservationInterval,\n\t\t\t\tsampleSize: instrumentationTimeWindow\n\t\t\t},\n\t\t\thisto: [\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B10\",\n\t\t\t\t\tbucketLimit: 10\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B20\",\n\t\t\t\t\tbucketLimit: 20\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B50\",\n\t\t\t\t\tbucketLimit: 50\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B100\",\n\t\t\t\t\tbucketLimit: 100\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B1000\",\n\t\t\t\t\tbucketLimit: 1e3\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B50000\",\n\t\t\t\t\tbucketLimit: 5e4\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"BInfinity\",\n\t\t\t\t\tbucketLimit: -1\n\t\t\t\t}\n\t\t\t],\n\t\t\thistoGauge: Gauge.DURATION_HISTOGRAM_GAUGE\n\t\t},\n\t\t{\n\t\t\tfieldName: \"latency\",\n\t\t\tgauge: Gauge.LATENCY_GAUGE,\n\t\t\tinstrumentProperty: \"val\",\n\t\t\tdataType: \"number\",\n\t\t\ttimeSeriesIndex: true,\n\t\t\tquantile: true,\n\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE,\n\t\t\tinstrumentOptions: {\n\t\t\t\tinterval: instrumentationObservationInterval,\n\t\t\t\tsampleSize: instrumentationTimeWindow\n\t\t\t},\n\t\t\thisto: [\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B10\",\n\t\t\t\t\tbucketLimit: 10\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B20\",\n\t\t\t\t\tbucketLimit: 20\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B50\",\n\t\t\t\t\tbucketLimit: 50\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B100\",\n\t\t\t\t\tbucketLimit: 100\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B1000\",\n\t\t\t\t\tbucketLimit: 1e3\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"B50000\",\n\t\t\t\t\tbucketLimit: 5e4\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: \"BInfinity\",\n\t\t\t\t\tbucketLimit: -1\n\t\t\t\t}\n\t\t\t],\n\t\t\thistoGauge: Gauge.LATENCY_HISTOGRAM_GAUGE\n\t\t}\n\t],\n\tlogFieldList: [{\n\t\tfieldName: \"log\",\n\t\tgauge: Gauge.LOGGER,\n\t\tinstrumentProperty: \"val\",\n\t\tdataType: \"string\",\n\t\ttimeSeriesIndex: false,\n\t\tquantile: false,\n\t\tinfluxdbDataType: influxDBDataType.stringField,\n\t\tgaugeType: GaugeTypes.INSTRUMENT_LOG,\n\t\tinstrumentOptions: {\n\t\t\tconsoleLogging: false,\n\t\t\tinstrumentLogging: true\n\t\t}\n\t}],\n\tservices: {\n\t\t[\"service\"]: {\n\t\t\tinfluxDBContextTags: [\n\t\t\t\t\"serviceId\",\n\t\t\t\t\"serviceName\",\n\t\t\t\t\"serviceVersion\",\n\t\t\t\t\"serviceInstanceId\",\n\t\t\t\t\"serviceInstanceProcessId\",\n\t\t\t\t\"hostName\",\n\t\t\t\t\"pid\",\n\t\t\t\t\"ppid\"\n\t\t\t],\n\t\t\tredisIndexPrefixDefinitions: {\n\t\t\t\ttimeSeriesIndex: \"idx:serviceIndexTimeSeries\",\n\t\t\t\ttimeSeriesPrefix: \"/serviceTimeSeries:\",\n\t\t\t\tinstantIndex: \"idx:serviceIndexInstant\",\n\t\t\t\tinstantPrefix: \"/serviceInstant:\"\n\t\t\t},\n\t\t\tfieldList: [\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"cpu\",\n\t\t\t\t\tgauge: Gauge.CPU_LOAD_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE,\n\t\t\t\t\tinstrumentOptions: {\n\t\t\t\t\t\tinterval: instrumentationObservationInterval,\n\t\t\t\t\t\tsampleSize: instrumentationTimeWindow\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_COUNT_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE,\n\t\t\t\t\tinstrumentOptions: {\n\t\t\t\t\t\tinterval: instrumentationObservationInterval,\n\t\t\t\t\t\tsampleSize: instrumentationTimeWindow\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionPoolCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_TOTAL_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionIdleCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_IDLE_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionWaitingCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_WAITING_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"systemcpu\",\n\t\t\t\t\tgauge: Gauge.CPU_SYSTEM_LOAD_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"memory\",\n\t\t\t\t\tgauge: Gauge.OBJECT_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"JSON\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.stringField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_OBJECT,\n\t\t\t\t\tinstrumentOptions: { label: \"InstrumentObjectMaster\" }\n\t\t\t\t}\n\t\t\t],\n\t\t\tGetPathFromContext(context) {\n\t\t\t\tconst { serviceId, serviceInstanceId, serviceInstanceProcessId } = context;\n\t\t\t\treturn `/${serviceId}/${serviceInstanceId}/${serviceInstanceProcessId}`;\n\t\t\t},\n\t\t\tredisQueryFilters: {\n\t\t\t\tlevel1ContextField: \"serviceType\",\n\t\t\t\tlevel2ContextField: \"appid\",\n\t\t\t\tlevel3ContextField: \"appinstanceid\"\n\t\t\t},\n\t\t\tsubscriptionTopics: [\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.AllServicesCombined,\n\t\t\t\t\troute: \"/metrics\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.Services,\n\t\t\t\t\troute: \"/metrics/services\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.ServiceInstances,\n\t\t\t\t\troute: \"/metrics/services/:key\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.ServiceInstance,\n\t\t\t\t\troute: \"/metrics/services/:key/:subkey\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t[\"agent\"]: {\n\t\t\tinfluxDBContextTags: [\n\t\t\t\t\"id\",\n\t\t\t\t\"hostName\",\n\t\t\t\t\"agentName\",\n\t\t\t\t\"threadId\",\n\t\t\t\t\"asyncRunnerId\"\n\t\t\t],\n\t\t\tredisIndexPrefixDefinitions: {\n\t\t\t\ttimeSeriesIndex: \"idx:agentIndexTimeSeries\",\n\t\t\t\ttimeSeriesPrefix: \"/agentTimeSeries:\",\n\t\t\t\tinstantIndex: \"idx:agentIndexInstant\",\n\t\t\t\tinstantPrefix: \"/agentInstant:\"\n\t\t\t},\n\t\t\tfieldList: [{\n\t\t\t\tfieldName: \"childCount\",\n\t\t\t\tgauge: Gauge.CHILD_COUNT,\n\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\tdataType: \"number\",\n\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t}],\n\t\t\tGetPathFromContext(context) {\n\t\t\t\tconst { agentName, threadId, asyncRunnerId } = context;\n\t\t\t\treturn `/${agentName}/${threadId}/${asyncRunnerId}`;\n\t\t\t},\n\t\t\tredisQueryFilters: {\n\t\t\t\tlevel1ContextField: \"serviceType\",\n\t\t\t\tlevel2ContextField: \"appid\",\n\t\t\t\tlevel3ContextField: \"appinstanceid\"\n\t\t\t},\n\t\t\tsubscriptionTopics: [\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.AllAgentsCombined,\n\t\t\t\t\troute: \"/metrics\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.Agents,\n\t\t\t\t\troute: \"/metrics/agents\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.AgentWorkers,\n\t\t\t\t\troute: \"/metrics/agents/:key\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.AgentWorker,\n\t\t\t\t\troute: \"/metrics/agents/:key/:subkey\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t[\"lambda\"]: {\n\t\t\tinfluxDBContextTags: [\n\t\t\t\t\"technology\",\n\t\t\t\t\"subTechnology\",\n\t\t\t\t\"lambdaFunctionName\",\n\t\t\t\t\"lambdaInstance\",\n\t\t\t\t\"hostName\",\n\t\t\t\t\"processId\",\n\t\t\t\t\"parentProcessId\",\n\t\t\t\t\"useCase\",\n\t\t\t\t\"pattern\"\n\t\t\t],\n\t\t\tredisIndexPrefixDefinitions: {\n\t\t\t\ttimeSeriesIndex: \"idx:lambdaIndexTimeSeries\",\n\t\t\t\ttimeSeriesPrefix: \"/lambdaTimeSeries:\",\n\t\t\t\tinstantIndex: \"idx:lambdaIndexInstant\",\n\t\t\t\tinstantPrefix: \"/lambdaInstant:\"\n\t\t\t},\n\t\t\tfieldList: [\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"cpu\",\n\t\t\t\t\tgauge: Gauge.CPU_LOAD_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_COUNT_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionPoolCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_TOTAL_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionIdleCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_IDLE_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"connectionWaitingCount\",\n\t\t\t\t\tgauge: Gauge.CONNECTION_POOL_WAITING_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.intField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"systemcpu\",\n\t\t\t\t\tgauge: Gauge.CPU_SYSTEM_LOAD_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"number\",\n\t\t\t\t\ttimeSeriesIndex: true,\n\t\t\t\t\tquantile: true,\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.floatField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_GAUGE\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldName: \"memory\",\n\t\t\t\t\tgauge: Gauge.OBJECT_GAUGE,\n\t\t\t\t\tinstrumentProperty: \"val\",\n\t\t\t\t\tdataType: \"JSON\",\n\t\t\t\t\tinfluxdbDataType: influxDBDataType.stringField,\n\t\t\t\t\tgaugeType: GaugeTypes.INSTRUMENT_OBJECT\n\t\t\t\t}\n\t\t\t],\n\t\t\tGetPathFromContext(context) {\n\t\t\t\tconst { technology, subTechnology, lambdaInstance } = context;\n\t\t\t\treturn `/${technology}/${subTechnology}/${lambdaInstance}`;\n\t\t\t},\n\t\t\tredisQueryFilters: {\n\t\t\t\tlevel1ContextField: \"serviceType\",\n\t\t\t\tlevel2ContextField: \"technology\",\n\t\t\t\tlevel3ContextField: \"subTechnology\"\n\t\t\t},\n\t\t\tsubscriptionTopics: [\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.AllLambdasCombined,\n\t\t\t\t\troute: \"/metrics\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.LambdaTechnologies,\n\t\t\t\t\troute: \"/metrics/lambdas\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.LambdaSubTechnologies,\n\t\t\t\t\troute: \"/metrics/lambdas/:key\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsubscriptionTopic: SubscriptionTopic.LambdaSubTechnologiesInstance,\n\t\t\t\t\troute: \"/metrics/lambdas/:key/:subkey\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}\n};\nvar GetInstruments = (service) => {\n\tconst fieldList = [\n\t\t...globalServiceDefinitions.coreFieldList,\n\t\t...globalServiceDefinitions.logFieldList,\n\t\t...globalServiceDefinitions.services[service].fieldList\n\t];\n\tconst retVal = [];\n\tfieldList.forEach((v) => {\n\t\tif (v.instrumentOptions) retVal.push([\n\t\t\tv.gauge,\n\t\t\tv.gaugeType,\n\t\t\tv.instrumentOptions\n\t\t]);\n\t\telse retVal.push([v.gauge, v.gaugeType]);\n\t\tif (v.histo) retVal.push([v.histoGauge, GaugeTypes.INSTRUMENT_HISTOGRAM]);\n\t});\n\treturn retVal;\n};\n//#endregion\n//#region src/subscribe/observabilitymodelutils.ts\nvar ObservabilityModelUtils = class ObservabilityModelUtils {\n\tstatic GetModelNode(data) {\n\t\tconst fixedSize = 2;\n\t\tconst padLength = 9;\n\t\ttry {\n\t\t\treturn {\n\t\t\t\tval: data,\n\t\t\t\tvf: parseFloat(data.toString()).toFixed(fixedSize).padStart(padLength, \" \"),\n\t\t\t\tvalue: parseFloat(data.toString()).toFixed(fixedSize)\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tval: 0,\n\t\t\t\tvf: \"\",\n\t\t\t\tvalue: \"\"\n\t\t\t};\n\t\t}\n\t}\n\tstatic GetModelNodeRawStringArray(data) {\n\t\ttry {\n\t\t\treturn { val: data };\n\t\t} catch (error) {\n\t\t\treturn { val: [] };\n\t\t}\n\t}\n\tstatic GetModelNodeObject(data) {\n\t\ttry {\n\t\t\treturn { val: JSON.parse(data) };\n\t\t} catch (error) {\n\t\t\treturn { val: null };\n\t\t}\n\t}\n\tstatic GetModelNodeWithQuantile(data, quantileData) {\n\t\tlet quantile = \"\";\n\t\tconst quantileDataElementArray = [];\n\t\tfor (const [key, val] of Object.entries(quantileData)) {\n\t\t\tquantile += parseFloat(val.toFixed(2)).toString().padStart(8, \" \");\n\t\t\tquantileDataElementArray.push([key, val]);\n\t\t}\n\t\tconst fixedSize = 2;\n\t\tconst padLength = 9;\n\t\ttry {\n\t\t\treturn {\n\t\t\t\tval: data,\n\t\t\t\tvf: parseFloat(data.toString()).toFixed(fixedSize).padStart(padLength, \" \"),\n\t\t\t\tvalue: parseFloat(data.toString()).toFixed(fixedSize),\n\t\t\t\tpercentile: quantileDataElementArray,\n\t\t\t\tpercentileFormatted: quantile\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tval: 0,\n\t\t\t\tvf: \"\",\n\t\t\t\tvalue: \"\",\n\t\t\t\tpercentile: [],\n\t\t\t\tpercentileFormatted: \"\"\n\t\t\t};\n\t\t}\n\t}\n\tstatic GetModelNodeHistFromInfluxData(data) {\n\t\ttry {\n\t\t\tconst histVal = [];\n\t\t\tif (data) for (const [key, val] of Object.entries(data)) {\n\t\t\t\tconst dataElement = [\n\t\t\t\t\tval,\n\t\t\t\t\tkey,\n\t\t\t\t\tparseInt(key)\n\t\t\t\t];\n\t\t\t\thistVal.push(dataElement);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\treturn { hist: histVal };\n\t\t\t} catch (error) {\n\t\t\t\treturn { hist: [] };\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn { hist: [] };\n\t\t}\n\t}\n\tstatic ParseModelNode = (model, data, parseLog, gaugeName, fieldName) => {\n\t\tif (fieldName in data) model.instruments[gaugeName] = this.GetModelNode(data[fieldName]);\n\t\telse {\n\t\t\tparseLog.push(`ObservabilityModelUtils:ParseModelNode(): Field not present: [${fieldName}], default to [0]`);\n\t\t\tmodel.instruments[gaugeName] = this.GetModelNode(0);\n\t\t}\n\t};\n\tstatic ParseModelNodeWithQuantile = (model, data, parseLog, gaugeName, fieldName, quantileFieldName) => {\n\t\tif (fieldName in data && quantileFieldName in data) model.instruments[gaugeName] = this.GetModelNodeWithQuantile(data[fieldName], data[quantileFieldName]);\n\t\telse if (fieldName in data) {\n\t\t\tconst dataVal = data[fieldName];\n\t\t\tparseLog.push(`ObservabilityModelUtils:ParseModelNodeWithQuantile(): QuantileFieldName not present: [${quantileFieldName}], default to [${dataVal},{}]`);\n\t\t\tmodel.instruments[gaugeName] = this.GetModelNodeWithQuantile(dataVal, {});\n\t\t} else {\n\t\t\tparseLog.push(`ObservabilityModelUtils:ParseModelNodeWithQuantile(): Field not present: [${fieldName}], QuantileFieldName not present: [${quantileFieldName}], default to [0,{}]`);\n\t\t\tmodel.instruments[gaugeName] = this.GetModelNodeWithQuantile(0, {});\n\t\t}\n\t};\n\tstatic ParseModelNodeHisto = (model, data, parseLog, gaugeName, fieldName) => {\n\t\tif (fieldName in data) model.instruments[gaugeName] = this.GetModelNodeHistFromInfluxData(data[fieldName]);\n\t\telse {\n\t\t\tparseLog.push(`ObservabilityModelUtils:ParseModelNodeHisto(): Field not present: [${fieldName}], default to [{}]`);\n\t\t\tmodel.instruments[gaugeName] = this.GetModelNodeHistFromInfluxData({});\n\t\t}\n\t};\n\tstatic ParseModelNodeObject = (model, data, parseLog, gaugeName, fieldName) => {\n\t\tif (fieldName in data) model.instruments[gaugeName] = this.GetModelNodeObject(data[fieldName]);\n\t\telse {\n\t\t\tparseLog.push(`ObservabilityModelUtils:ParseModelNodeObject(): Field not present: [${fieldName}], default to [{}]`);\n\t\t\tmodel.instruments[gaugeName] = this.GetModelNodeObject({});\n\t\t}\n\t};\n\tstatic GetModelData(serviceType, model, data, parseLog) {\n\t\t[...globalServiceDefinitions.coreFieldList, ...globalServiceDefinitions.services[serviceType].fieldList].forEach((field) => {\n\t\t\tif (field.quantile) ObservabilityModelUtils.ParseModelNodeWithQuantile(model, data, parseLog, field.gauge, field.fieldName, `${field.fieldName}_quantile`);\n\t\t\telse if (field.gaugeType.localeCompare(GaugeTypes.INSTRUMENT_OBJECT) === 0) ObservabilityModelUtils.ParseModelNodeObject(model, data, parseLog, field.gauge, field.fieldName);\n\t\t\telse ObservabilityModelUtils.ParseModelNode(model, data, parseLog, field.gauge, field.fieldName);\n\t\t\tif (field.histo) ObservabilityModelUtils.ParseModelNodeHisto(model, data, parseLog, field.histoGauge, `${field.fieldName}_histo`);\n\t\t});\n\t}\n\tstatic GetModelForService(id, data, logger) {\n\t\ttry {\n\t\t\tconst parseLog = [];\n\t\t\tconst model = {\n\t\t\t\tid,\n\t\t\t\tinstruments: {}\n\t\t\t};\n\t\t\tthis.GetModelData(\"service\", model, data, parseLog);\n\t\t\tmodel.instruments[Gauge.LOGGER] = ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n\t\t\tif (parseLog.length > 0) parseLog.forEach((logEntry) => logger.debug(logEntry));\n\t\t\treturn model;\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t}\n\tstatic GetModelForLambda(id, data, logger) {\n\t\ttry {\n\t\t\tconst parseLog = [];\n\t\t\tconst model = {\n\t\t\t\tid,\n\t\t\t\tinstruments: {}\n\t\t\t};\n\t\t\tthis.GetModelData(\"lambda\", model, data, parseLog);\n\t\t\tmodel.instruments[Gauge.LOGGER] = ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n\t\t\tif (parseLog.length > 0) parseLog.forEach((logEntry) => logger.debug(logEntry));\n\t\t\treturn model;\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t}\n\tstatic GetModelForAgent(id, data, logger) {\n\t\ttry {\n\t\t\tif (Object.keys(data).length === 0) return null;\n\t\t\tconst parseLog = [];\n\t\t\tconst model = {\n\t\t\t\tid,\n\t\t\t\tinstruments: {}\n\t\t\t};\n\t\t\tthis.GetModelData(\"agent\", model, data, parseLog);\n\t\t\tmodel.instruments[Gauge.LOGGER] = ObservabilityModelUtils.GetModelNodeRawStringArray(data[\"logMessages\"]);\n\t\t\tif (parseLog.length > 0) parseLog.forEach((logEntry) => logger.debug(logEntry));\n\t\t\treturn model;\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t}\n};\n//#endregion\n//#region src/subscribe/observabilityPayloadTransformer.ts\nvar runStates = /* @__PURE__ */ function(runStates) {\n\trunStates[\"idle\"] = \"idle\";\n\trunStates[\"started\"] = \"started\";\n\trunStates[\"stopped\"] = \"stopped\";\n\treturn runStates;\n}({});\nvar ObservabilityPayloadTransformer = class {\n\t#serviceModel = {};\n\t#agentModel = {};\n\t#lambdaModel = {};\n\t#options;\n\t#LogDebugMessage(message) {\n\t\tthis.#options.logger.debug(message);\n\t}\n\t#LogErrorMessage(message) {\n\t\tthis.#options.logger.error(message);\n\t}\n\tconstructor(options) {\n\t\tthis.#options = options;\n\t}\n\tget serviceModel() {\n\t\treturn this.#serviceModel;\n\t}\n\tget agentModel() {\n\t\treturn this.#agentModel;\n\t}\n\tget lambdaModel() {\n\t\treturn this.#lambdaModel;\n\t}\n\tTransformSubscriptionPayloadCallback(subscriptionPayload) {\n\t\tswitch (subscriptionPayload.subscriptionKey.topic) {\n\t\t\tcase SubscriptionTopic.AllServicesCombined:\n\t\t\t\tthis.CreateModelAllServicesCombined(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.Services:\n\t\t\t\tthis.CreateModelServices(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.ServiceInstances:\n\t\t\t\tthis.CreateModelServiceInstances(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.ServiceInstance:\n\t\t\t\tthis.CreateModelServiceInstance(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.AllLambdasCombined:\n\t\t\t\tthis.CreateModelAllLambdasCombined(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.LambdaTechnologies:\n\t\t\t\tthis.CreateModelLambdaTechnologies(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.LambdaSubTechnologies:\n\t\t\t\tthis.CreateModelLambdaSubTechnologies(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.LambdaSubTechnologiesInstance:\n\t\t\t\tthis.CreateModelLambdaSubTechnologiesInstance(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.AllAgentsCombined:\n\t\t\t\tthis.CreateModelAllAgentsCombined(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.Agents:\n\t\t\t\tthis.CreateModelAgents(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.AgentWorkers:\n\t\t\t\tthis.CreateModelAgentWorkers(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.AgentWorker:\n\t\t\t\tthis.CreateModelAgentWorker(subscriptionPayload);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tCreateModelAllServicesCombined(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#serviceModel = {};\n\t\t\tif (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined.toString()) === 0) {\n\t\t\t\tthis.#serviceModel[\"STS-Service\"] = ObservabilityModelUtils.GetModelForService(\"STS-Service\", subscriptionPayload.data, this.#options.logger);\n\t\t\t\tif (this.#serviceModel[\"STS-Service\"] === null) this.#LogDebugMessage(chalk.red(`CreateModelAllServicesCombined():Error: GetModelForService() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(error);\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelServices(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#serviceModel = {};\n\t\t\tfor (const [serviceId, serviceTelemetry] of Object.entries(subscriptionPayload.data)) {\n\t\t\t\tthis.#serviceModel[serviceId] = ObservabilityModelUtils.GetModelForService(serviceId, serviceTelemetry, this.#options.logger);\n\t\t\t\tif (this.#serviceModel[serviceId] === null) this.#LogDebugMessage(chalk.red(`CreateModelServices():Error: GetModelForService() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelServiceInstances(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#serviceModel = {};\n\t\t\tfor (const [serviceId, service] of Object.entries(subscriptionPayload.data)) for (const [serviceInstanceId, serviceInstanceTelemetry] of Object.entries(service)) if (serviceInstanceTelemetry.cpu && serviceInstanceTelemetry.cpu > 0) {\n\t\t\t\tthis.#serviceModel[serviceInstanceId] = ObservabilityModelUtils.GetModelForService(serviceInstanceId, serviceInstanceTelemetry, this.#options.logger);\n\t\t\t\tif (this.#serviceModel[serviceInstanceId] !== null) this.#serviceModel[serviceInstanceId].options = { serviceId };\n\t\t\t\telse this.#LogDebugMessage(chalk.red(`CreateModelServiceInstances():Error: GetModelForService() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelServiceInstance(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#serviceModel = {};\n\t\t\tfor (const [serviceId, service] of Object.entries(subscriptionPayload.data)) for (const [serviceInstanceId, serviceInstance] of Object.entries(service)) for (const [serviceInstanceProcessId, serviceInstanceProcessTelemetry] of Object.entries(serviceInstance)) if (serviceInstanceProcessTelemetry.cpu && serviceInstanceProcessTelemetry.cpu > 0) {\n\t\t\t\tthis.#serviceModel[serviceInstanceProcessId] = ObservabilityModelUtils.GetModelForService(serviceInstanceProcessId, serviceInstanceProcessTelemetry, this.#options.logger);\n\t\t\t\tif (this.#serviceModel[serviceInstanceProcessId] !== null) this.#serviceModel[serviceInstanceProcessId].options = {\n\t\t\t\t\tserviceId,\n\t\t\t\t\tserviceInstanceId\n\t\t\t\t};\n\t\t\t\telse this.#LogDebugMessage(chalk.red(`CreateModelServiceInstance():Error: GetModelForService() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelAllAgentsCombined(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#agentModel = {};\n\t\t\tif (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined.toString()) === 0) {\n\t\t\t\tif (Object.keys(subscriptionPayload.data).length !== 0) {\n\t\t\t\t\tthis.#agentModel[\"STS-Agent\"] = ObservabilityModelUtils.GetModelForAgent(\"STS-Agent\", subscriptionPayload.data, this.#options.logger);\n\t\t\t\t\tif (this.#agentModel[\"STS-Agent\"] === null) this.#LogDebugMessage(chalk.red(`CreateModelAllAgentsCombined():Error: GetModelForAgent() returned null`));\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(error);\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelAgents(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#agentModel = {};\n\t\t\tfor (const [agentId, agentInstanceTelemetry] of Object.entries(subscriptionPayload.data)) if (agentInstanceTelemetry.timer) {\n\t\t\t\tthis.#agentModel[agentId] = ObservabilityModelUtils.GetModelForAgent(agentId, agentInstanceTelemetry, this.#options.logger);\n\t\t\t\tif (this.#agentModel[agentId] !== null) {} else this.#LogDebugMessage(chalk.red(`CreateModelAgents():Error: GetModelForAgent() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(chalk.red(`UIControllerAgent:CreateModel(): Error: [${error}]`));\n\t\t}\n\t}\n\tCreateModelAgentWorkers(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#agentModel = {};\n\t\t\tfor (const [agentId, agentWorker] of Object.entries(subscriptionPayload.data)) for (const [agentWorkerId, agentInstanceTelemetry] of Object.entries(agentWorker)) if (agentInstanceTelemetry.timer) {\n\t\t\t\tconst threadKey = `${agentWorkerId}`;\n\t\t\t\tthis.#agentModel[threadKey] = ObservabilityModelUtils.GetModelForAgent(threadKey, agentInstanceTelemetry, this.#options.logger);\n\t\t\t\tif (this.#agentModel[threadKey] !== null) {\n\t\t\t\t\tconst coreCount = this.#agentModel[threadKey].instruments[Gauge.CORE_COUNT_GAUGE].val;\n\t\t\t\t\tthis.#agentModel[threadKey].canNavigate = coreCount > 0;\n\t\t\t\t\tthis.#agentModel[threadKey].options = { agentId };\n\t\t\t\t} else this.#LogDebugMessage(chalk.red(`CreateModelAgentWorkers():Error: GetModelForAgent() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(chalk.red(`UIControllerAgentThreads:CreateModel(): Error: [${error}]`));\n\t\t}\n\t}\n\tCreateModelAgentWorker(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#agentModel = {};\n\t\t\tfor (const [agentId, agentWorker] of Object.entries(subscriptionPayload.data)) for (const [agentWorkerId, asyncRunnerData] of Object.entries(agentWorker)) for (const [asyncRunnerId, agentInstanceTelemetry] of Object.entries(asyncRunnerData)) if (agentInstanceTelemetry.timer) this.#agentModel[asyncRunnerId] = ObservabilityModelUtils.GetModelForAgent(asyncRunnerId, agentInstanceTelemetry, this.#options.logger);\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(chalk.red(`UIControllerAgentThread:CreateModel(): Error: [${error}]`));\n\t\t}\n\t}\n\tCreateModelAllLambdasCombined(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#lambdaModel = {};\n\t\t\tif (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllLambdasCombined.toString()) === 0) {\n\t\t\t\tthis.#lambdaModel[\"STS-Lambda\"] = ObservabilityModelUtils.GetModelForLambda(\"STS-Lambda\", subscriptionPayload.data, this.#options.logger);\n\t\t\t\tif (this.#lambdaModel[\"STS-Lambda\"] === null) this.#LogDebugMessage(chalk.red(`CreateModelAllLambdasCombined():Error: GetModelForLambda() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(error);\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelLambdaTechnologies(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#lambdaModel = {};\n\t\t\tfor (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) {\n\t\t\t\tthis.#lambdaModel[technologyId] = ObservabilityModelUtils.GetModelForLambda(technologyId, technologyTelemetry, this.#options.logger);\n\t\t\t\tif (this.#lambdaModel[technologyId] === null) this.#LogDebugMessage(chalk.red(`CreateModelLambdaTechnologies():Error: GetModelForLambda() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelLambdaSubTechnologies(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#lambdaModel = {};\n\t\t\tfor (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) for (const [subTechnologyId, subTechnologyTelemetry] of Object.entries(technologyTelemetry)) if (subTechnologyTelemetry.cpu && subTechnologyTelemetry.cpu > 0) {\n\t\t\t\tthis.#lambdaModel[subTechnologyId] = ObservabilityModelUtils.GetModelForLambda(subTechnologyId, subTechnologyTelemetry, this.#options.logger);\n\t\t\t\tif (this.#lambdaModel[subTechnologyId] !== null) this.#lambdaModel[subTechnologyId].options = { technologyId };\n\t\t\t\telse this.#LogDebugMessage(chalk.red(`CreateModelLambdaSubTechnologies():Error: GetModelForLambda() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\tCreateModelLambdaSubTechnologiesInstance(subscriptionPayload) {\n\t\ttry {\n\t\t\tthis.#lambdaModel = {};\n\t\t\tfor (const [technologyId, technologyTelemetry] of Object.entries(subscriptionPayload.data)) for (const [subTechnologyId, subTechnologyTelemetry] of Object.entries(technologyTelemetry)) for (const [subTechnologyInstanceId, subTechnologyInstanceTelemetry] of Object.entries(subTechnologyTelemetry)) if (subTechnologyInstanceTelemetry.cpu && subTechnologyInstanceTelemetry.cpu > 0) {\n\t\t\t\tthis.#lambdaModel[subTechnologyInstanceId] = ObservabilityModelUtils.GetModelForLambda(subTechnologyInstanceId, subTechnologyInstanceTelemetry, this.#options.logger);\n\t\t\t\tif (this.#lambdaModel[subTechnologyInstanceId] !== null) this.#lambdaModel[subTechnologyInstanceId].options = {\n\t\t\t\t\ttechnologyId,\n\t\t\t\t\tsubTechnologyId\n\t\t\t\t};\n\t\t\t\telse this.#LogDebugMessage(chalk.red(`CreateModelLambdaSubTechnologiesInstance():Error: GetModelForLambda() returned null`));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n};\n//#endregion\n//#region src/subscribe/restClientSubscriber.ts\nvar RESTClientSubscriber = class {\n\t#socketSubscribeKeepAlive = {};\n\t#options;\n\tKeepAliveAckBoundFunction;\n\t#currentSubscriptions = [];\n\tconstructor(options) {\n\t\tthis.#options = options;\n\t}\n\t#LogDebugMessage(message) {\n\t\tthis.#options.logger.debug(message);\n\t}\n\t#LogErrorMessage(message) {\n\t\tthis.#options.logger.error(message);\n\t}\n\tasync Subscribe(subscriptions) {\n\t\tsubscriptions.map(async (subId) => {\n\t\t\tthis.#RemoveKeepAlive(subId);\n\t\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:Subscribe(): Sending subscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n\t\t\ttry {\n\t\t\t\tthis.#AddKeepAlive(subId);\n\t\t\t} catch (error) {\n\t\t\t\tthis.#LogErrorMessage(chalk.red(`RESTClientSubscriber:Subscribe(): Error: response: [${JSON.stringify(error)}]`));\n\t\t\t\tthis.#RemoveKeepAlive(subId);\n\t\t\t}\n\t\t});\n\t}\n\tUnSubscribe(subscriptions) {\n\t\tsubscriptions.map(async (subId) => {\n\t\t\tthis.#RemoveKeepAlive(subId);\n\t\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:UnSubscribe(): Sending unsubscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n\t\t});\n\t}\n\tUpdateModelCursor = (subscriptions) => {\n\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:UnSubscribe(): UpdateModelCursor()`));\n\t\tthis.UnSubscribe(this.#currentSubscriptions);\n\t\tthis.#currentSubscriptions = subscriptions;\n\t\tthis.Subscribe(this.#currentSubscriptions);\n\t};\n\tasync #InvokeRESTAPI(subscription) {\n\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#InvokeRESTAPI(): subscriptionKey: [${subscription.subscriptionKey.id}]`));\n\t\tconst { subscriptionKey } = subscription;\n\t\tlet url = \"\";\n\t\tswitch (subscriptionKey.topic) {\n\t\t\tcase SubscriptionTopic.AllServicesCombined:\n\t\t\t\turl = `/metrics`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.Services:\n\t\t\t\turl = `/metrics/services`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.ServiceInstances: if (subscriptionKey.key) {\n\t\t\t\turl = `/metrics/services/${subscriptionKey.key}`;\n\t\t\t\tbreak;\n\t\t\t} else throw new Error(`#OutputSubscription(Services): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n\t\t\tcase SubscriptionTopic.ServiceInstance:\n\t\t\t\turl = `/metrics/services/${subscriptionKey.key}`;\n\t\t\t\tif (subscriptionKey.key && subscriptionKey.subkey) {\n\t\t\t\t\turl = `/metrics/services/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n\t\t\t\t\tbreak;\n\t\t\t\t} else throw new Error(`#OutputSubscription(Services): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n\t\t\tcase SubscriptionTopic.AllLambdasCombined:\n\t\t\t\turl = `/metrics`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.LambdaTechnologies:\n\t\t\t\turl = `/metrics/lambdas`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.LambdaSubTechnologies: if (subscriptionKey.key) {\n\t\t\t\turl = `/metrics/lambdas/${subscriptionKey.key}`;\n\t\t\t\tbreak;\n\t\t\t} else throw new Error(`#OutputSubscription(Lambdas): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n\t\t\tcase SubscriptionTopic.LambdaSubTechnologiesInstance:\n\t\t\t\turl = `/metrics/lambdas/${subscriptionKey.key}`;\n\t\t\t\tif (subscriptionKey.key && subscriptionKey.subkey) {\n\t\t\t\t\turl = `/metrics/lambdas/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n\t\t\t\t\tbreak;\n\t\t\t\t} else throw new Error(`#OutputSubscription(Lambdas): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n\t\t\tcase SubscriptionTopic.AllAgentsCombined:\n\t\t\t\turl = `/metrics`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.Agents:\n\t\t\t\turl = `/metrics/agents`;\n\t\t\t\tbreak;\n\t\t\tcase SubscriptionTopic.AgentWorkers: if (subscriptionKey.key) {\n\t\t\t\turl = `/metrics/agents/${subscriptionKey.key}`;\n\t\t\t\tbreak;\n\t\t\t} else throw new Error(`#OutputSubscription(Agents): key not provided for subscription: [${JSON.stringify(subscriptionKey)}]`);\n\t\t\tcase SubscriptionTopic.AgentWorker: if (subscriptionKey.key && subscriptionKey.subkey) {\n\t\t\t\turl = `/metrics/agents/${subscriptionKey.key}/${subscriptionKey.subkey}`;\n\t\t\t\tbreak;\n\t\t\t} else throw new Error(`#OutputSubscription(Agents): key and/or subkey not provided for subscription: [${JSON.stringify(subscriptionKey.topic)}]`);\n\t\t}\n\t\tif (url.localeCompare(\"\") !== 0) {\n\t\t\tconst endPointUrl = `${this.#options.urlBase}${url}`;\n\t\t\tlet retVal;\n\t\t\tconst start = performance.now();\n\t\t\ttry {\n\t\t\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#InvokeRESTAPI(): axios call: endPointUrl: [${endPointUrl}]`));\n\t\t\t\tif (isNode && this.#options.agentManager) retVal = await axios(new STSAxiosConfig(endPointUrl, \"get\").withDefaultHeaders().withAgentManager(this.#options.agentManager).config);\n\t\t\t\telse retVal = await axios(new STSAxiosConfig(endPointUrl, \"get\").withDefaultHeaders().config);\n\t\t\t\tif (retVal) if (retVal.data) {} else this.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#InvokeRESTAPI(): no retVal.data`));\n\t\t\t\telse this.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#InvokeRESTAPI(): no retVal`));\n\t\t\t\tperformance.now() - start;\n\t\t\t\tif (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined) === 0) return retVal.data[\"services\"];\n\t\t\t\tif (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined) === 0) return retVal.data[\"agents\"];\n\t\t\t\tif (subscriptionKey.topic.localeCompare(SubscriptionTopic.AllLambdasCombined) === 0) return retVal.data[\"lambdas\"];\n\t\t\t\treturn retVal.data;\n\t\t\t} catch (error) {\n\t\t\t\tthis.#LogErrorMessage(chalk.red(`RESTClientSubscriber:#InvokeRESTAPI(): subscriptionKey: [${subscription.subscriptionKey.id}], Error: [${error}]`));\n\t\t\t\treturn null;\n\t\t\t}\n\t\t} else return null;\n\t}\n\t#GetData = async (subscription) => {\n\t\ttry {\n\t\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#GetData(): subscriptionKey: [${JSON.stringify(subscription.subscriptionKey)}`));\n\t\t\tconst retVal = await this.#InvokeRESTAPI(subscription);\n\t\t\tif (retVal) {\n\t\t\t\tconst payload = {\n\t\t\t\t\tsubscriptionKey: subscription.subscriptionKey,\n\t\t\t\t\tdata: retVal\n\t\t\t\t};\n\t\t\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#GetData(): data returned: subscriptionKey: [${JSON.stringify(subscription.subscriptionKey)}`));\n\t\t\t\tsubscription.cb(payload);\n\t\t\t} else this.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#GetData(): No data returned: subscriptionKey: [${JSON.stringify(subscription.subscriptionKey)}`));\n\t\t} catch (error) {\n\t\t\tthis.#LogErrorMessage(chalk.red(`RESTClientSubscriber:#AddKeepAlive(): Error response: [${JSON.stringify(error)}]`));\n\t\t\tthis.#RemoveKeepAlive(subscription);\n\t\t}\n\t};\n\t#SetupTimeout(socketSubscribeKeepAlive, subscription, timeout) {\n\t\treturn setTimeout(async () => {\n\t\t\ttry {\n\t\t\t\tconst start = performance.now();\n\t\t\t\tawait this.#GetData(subscription);\n\t\t\t\tif (socketSubscribeKeepAlive.timeout) {\n\t\t\t\t\tconst diff = performance.now() - start;\n\t\t\t\t\tlet timeoutDuration = (this.#options.keepAlive ?? 1e3) - diff;\n\t\t\t\t\tif (timeoutDuration < 500) timeoutDuration = 500;\n\t\t\t\t\tthis.#LogDebugMessage(chalk.yellow(`Total duration for subscription: [${diff}], waiting: [${timeoutDuration}]`));\n\t\t\t\t\tsocketSubscribeKeepAlive.timeout = this.#SetupTimeout(socketSubscribeKeepAlive, subscription, timeoutDuration);\n\t\t\t\t} else this.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber: Subscription removed: [${socketSubscribeKeepAlive.id}]. Processing terminate.`));\n\t\t\t} catch (error) {\n\t\t\t\tthis.#LogErrorMessage(chalk.red(`RESTClientSubscriber:#AddKeepAlive(): Error response: [${JSON.stringify(error)}]`));\n\t\t\t\tthis.#RemoveKeepAlive(subscription);\n\t\t\t}\n\t\t}, timeout);\n\t}\n\t#AddKeepAlive(subscription) {\n\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#AddKeepAlive(): subscriptionKey: [${subscription.subscriptionKey.id}]`));\n\t\tthis.#RemoveKeepAlive(subscription);\n\t\tconst socketSubscribeKeepAlive = { id: subscription.subscriptionKey.id };\n\t\tsocketSubscribeKeepAlive.timeout = this.#SetupTimeout(socketSubscribeKeepAlive, subscription, this.#options.keepAlive ?? 1e3);\n\t\tthis.#socketSubscribeKeepAlive[subscription.subscriptionKey.id] = socketSubscribeKeepAlive;\n\t\tthis.#LogDebugMessage(chalk.yellow(`RESTClientSubscriber:#AddKeepAlive(): Getting Data: subscriptionKey: [${subscription.subscriptionKey.id}]`));\n\t\tthis.#GetData(subscription);\n\t}\n\t#RemoveKeepAlive(subscription) {\n\t\tif (this.#socketSubscribeKeepAlive[subscription.subscriptionKey.id]) {\n\t\t\tthis.#LogDebugMessage(chalk.gray(`RESTClientSubscriber:#RemoveKeepAlive(): subscriptionKey: [${subscription.subscriptionKey.id}]`));\n\t\t\tclearTimeout(this.#socketSubscribeKeepAlive[subscription.subscriptionKey.id].timeout);\n\t\t\tdelete this.#socketSubscribeKeepAlive[subscription.subscriptionKey.id].timeout;\n\t\t\tdelete this.#socketSubscribeKeepAlive[subscription.subscriptionKey.id];\n\t\t}\n\t}\n};\n//#endregion\n//#region src/subscribe/socketClientSubscriber.ts\nvar SOCKET_NAMESPACE$1 = \"stsinstrumentmanager/stsmonitor\";\nvar SocketClientSubscriber = class extends SocketIoClient {\n\t#options;\n\t#id;\n\t#currentSubscriptions = [];\n\tsubscriptions = {};\n\tconstructor(options) {\n\t\tsuper(\"STSVueTilsTester\");\n\t\tthis.#id = globalThis.crypto.randomUUID();\n\t\tthis.#options = options;\n\t\tthis.LogDebugMessage(chalk.cyan(`${this.logPrefix}Start()`));\n\t\tconst url = `${this.#options.instrumentManagerEndpoint}:${this.#options.instrumentManagerPort}/${SOCKET_NAMESPACE$1}/`;\n\t\tthis.LogDebugMessage(chalk.cyan(`${this.logPrefix}SetupSocket() url: [${url}]`));\n\t\tthis.WithAddress(url).WithLogger(this.#options.logger ?? defaultLogger).SetupSocket();\n\t}\n\tget id() {\n\t\treturn this.#id;\n\t}\n\tget logPrefix() {\n\t\tif (this.#options) return `stsimclient:ObservabilitySubscriberManager[${this.#options.consumeInstrumentationMode}]:`;\n\t\telse return `stsimclient:ObservabilitySubscriberManager:`;\n\t}\n\tUpdateModelCursor = (subscriptions) => {\n\t\tthis.UnSubscribe(this.#currentSubscriptions);\n\t\tthis.#currentSubscriptions = subscriptions;\n\t\tthis.Subscribe(this.#currentSubscriptions);\n\t};\n\tSubscribe(subscriptions) {\n\t\tsubscriptions.map(async (subId) => {\n\t\t\ttry {\n\t\t\t\tif (this.socket) {\n\t\t\t\t\tthis.LogDebugMessage(chalk.yellow(`ObservabilitySocketIOSubscriber:Subscribe(): Sending subscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n\t\t\t\t\tthis.socket.timeout(1e3).emit(\"subscribe\", subId.subscriptionKey, (error, data) => {\n\t\t\t\t\t\tif (error) this.LogErrorMessage(chalk.red(`ObservabilitySocketIOSubscriber:Subscribe(): Error: [${error}], data: [${data}]`));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.LogDebugMessage(chalk.green(`ObservabilitySocketIOSubscriber:Subscribe(): Response: [${JSON.stringify(data)}]`));\n\t\t\t\t\t\t\tthis.subscriptions[subId.subscriptionKey.id] = subId;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.LogErrorMessage(chalk.red(`ObservabilitySocketIOSubscriber:Subscribe(): Error: response: [${JSON.stringify(error)}]`));\n\t\t\t}\n\t\t});\n\t}\n\tUnSubscribe(subscriptions) {\n\t\tsubscriptions.map(async (subId) => {\n\t\t\ttry {\n\t\t\t\tif (this.socket) {\n\t\t\t\t\tthis.LogDebugMessage(chalk.yellow(`ObservabilitySocketIOSubscriber:UnSubscribe(): Sending unsubscribe: subscriptionKey: [${subId.subscriptionKey.id}]`));\n\t\t\t\t\tthis.socket.timeout(1e3).emit(\"unsubscribe\", subId.subscriptionKey, (error, data) => {\n\t\t\t\t\t\tif (error) this.LogErrorMessage(chalk.red(`ObservabilitySocketIOSubscriber:UnSubscribe(): Error: [${error}], data: [${data}]`));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.LogDebugMessage(chalk.green(`ObservabilitySocketIOSubscriber:UnSubscribe(): Response: [${JSON.stringify(data)}]`));\n\t\t\t\t\t\t\tdelete this.subscriptions[subId.subscriptionKey.id];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.LogErrorMessage(chalk.red(`ObservabilitySocketIOSubscriber:UnSubscribe(): Error response: [${JSON.stringify(error)}]`));\n\t\t\t}\n\t\t});\n\t}\n\tSocketConnect(socket) {\n\t\tthis.LogDebugMessage(chalk.magenta(`${this.logPrefix}SocketConnect(): Socket ID: [${socket.id}]`));\n\t\tthis.UpdateModelCursor(this.#currentSubscriptions);\n\t}\n\tSocketError(error) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketError(): Error: [${error}]`));\n\t}\n\tSetupSocketEvents(socket) {\n\t\tthis.LogDebugMessage(chalk.magenta(`${this.logPrefix}SetupSocketEvents(): Socket ID: [${socket.id}]`));\n\t\tif (this.socket) this.socket.on(\"subscriptionData\", (data, cb) => {\n\t\t\tthis.LogDebugMessage(chalk.magenta(`${this.logPrefix}SetupSocketEvents(): on subscriptionData(): Socket ID: [${socket.id}]`));\n\t\t\tconst subId = data.subscriptionKey.id;\n\t\t\tconst currentSubscriptions = Object.keys(this.subscriptions).toString();\n\t\t\tif (this.subscriptions[subId]) {\n\t\t\t\tthis.subscriptions[subId].cb(data);\n\t\t\t\tcb(`stsuxvue:subscriptionData Response: [${JSON.stringify(data.subscriptionKey)}], Current Subscriptions: [${currentSubscriptions}]`);\n\t\t\t} else cb(`stsuxvue:subscriptionData Response: No subscription found in subscriptions: [${JSON.stringify(data.subscriptionKey)}], Current Subscriptions: [${currentSubscriptions}]`);\n\t\t});\n\t}\n\tSocketConnectError(error) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketConnectError(): Error: [${error}]`));\n\t}\n\tSocketDisconnect(reason) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketDisconnect(): reason: [${reason}]`));\n\t}\n};\n//#endregion\n//#region src/socketBrowserClientLogPublisher.ts\nvar SOCKET_NAMESPACE = \"stsinstrumentmanager/stsmonitor\";\nvar SocketBrowserClientLogPublisher = class extends SocketIoClient {\n\t#id;\n\t#options;\n\tconstructor(options) {\n\t\tsuper(\"stsinstrumentmanagerclient:SocketBrowserClientLogPublisher\");\n\t\tthis.#options = options;\n\t\tthis.#id = globalThis.crypto.randomUUID();\n\t\tthis.LogDebugMessage(chalk.cyan(`${this.logPrefix}Start()`));\n\t\tconst url = `${this.#options.imendpoint}:${this.#options.import}/${SOCKET_NAMESPACE}/`;\n\t\tthis.LogDebugMessage(chalk.cyan(`${this.logPrefix}SetupSocket() url: [${url}]`));\n\t\tthis.WithAddress(url).WithLogger(defaultLogger).SetupSocket();\n\t}\n\tget id() {\n\t\treturn this.#id;\n\t}\n\tget logPrefix() {\n\t\treturn `stsinstrumentmanagerclient:SocketBrowserClientLogPublisher:`;\n\t}\n\tSocketConnect(socket) {\n\t\tthis.LogDebugMessage(chalk.magenta(`${this.logPrefix}SocketConnect(): Socket ID: [${socket.id}], Joining Room: [${this.#options.rooms}]`));\n\t\tsocket.emit(\"__STSjoinRoom\", this.#options.rooms);\n\t}\n\tSocketError(error) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketError(): Error: [${error}]`));\n\t}\n\tSetupSocketEvents(socket) {\n\t\tthis.LogDebugMessage(chalk.magenta(`${this.logPrefix}SetupSocketEvents(): Socket ID: [${socket.id}]`));\n\t}\n\tSocketConnectError(error) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketConnectError(): Error: [${error}]`));\n\t}\n\tSocketDisconnect(reason) {\n\t\tthis.LogErrorMessage(chalk.red(`${this.logPrefix}SocketDisconnect(): reason: [${reason}]`));\n\t}\n};\n//#endregion\n//#region src/stsLoggerSocket.ts\nvar STSLoggerSocket = class {\n\t#options;\n\t#socketIoClient;\n\tconstructor(opts) {\n\t\tthis.#options = opts;\n\t\tthis.#socketIoClient = new SocketBrowserClientLogPublisher({\n\t\t\trooms: this.#options.rooms,\n\t\t\timendpoint: this.#options.imendpoint,\n\t\t\timport: this.#options.import\n\t\t});\n\t\tthis.#socketIoClient.socket?.emit(\"__STSjoinRoom\", this.#options.rooms);\n\t}\n\tJoinRoom = () => {\n\t\tthis.#socketIoClient.socket?.emit(\"__STSjoinRoom\", this.#options.rooms);\n\t};\n\terror(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"error\",\n\t\t\tmessage\n\t\t});\n\t}\n\twarn(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"warn\",\n\t\t\tmessage\n\t\t});\n\t}\n\tinfo(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"info\",\n\t\t\tmessage\n\t\t});\n\t}\n\thttp(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"http\",\n\t\t\tmessage\n\t\t});\n\t}\n\tverbose(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"verbose\",\n\t\t\tmessage\n\t\t});\n\t}\n\tdebug(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"debug\",\n\t\t\tmessage\n\t\t});\n\t}\n\tsilly(message) {\n\t\tthis.#log({\n\t\t\tlevel: \"silly\",\n\t\t\tmessage\n\t\t});\n\t}\n\t#log(info) {\n\t\tthis.#socketIoClient.socket?.emit(\"__STSsendToRoom\", this.#options.rooms, {\n\t\t\tcommand: \"logmessage\",\n\t\t\tpayload: {\n\t\t\t\tlevel: info.level,\n\t\t\t\tmessage: info.message,\n\t\t\t\tdateTime: Date.now()\n\t\t\t}\n\t\t});\n\t}\n};\n//#endregion\nexport { CompareSTSInstrumentControllerPluginKey, GetInstruments, GetSTSInstrumentController, GetSTSInstrumentControllerPluginKey, GetSocketIOSubscriptionKey, GetTransportMode, InstrumentPayloadType, KAFKA_PREFIX, ObservabilityPayloadTransformer, PublishInstrumentController, PublishTransportRESTServer, RESTClientSubscriber, RequestLoggerMiddleware, RequestLoggerMiddlewareEventName, STSInstrumentControllerPlugin, STSInstrumentControllerPluginKey, STSLoggerSocket, SocketBrowserClientLogPublisher, SocketClientSubscriber, SubscriptionTopic, TransportType, ePublishState, globalServiceDefinitions, influxDBDataType, runStates, useSTSInstrumentControllerPlugin };\n\n//# sourceMappingURL=index.mjs.map","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","<template>\n <v-sheet\n theme=\"light\"\n rounded=\"lg\"\n class=\"ma-4 mr-0 pa-2\"\n :elevation=\"10\"\n >\n UXModelNavigator - Path: {{ navigationPath }}\n <v-row no-gutters>\n <v-col>\n <v-tabs\n v-model=\"tab\"\n background-color=\"primary\"\n >\n <v-tab value=\"summary\">\n Summary\n </v-tab>\n <v-tab value=\"detailed\">\n Detailed\n </v-tab>\n </v-tabs>\n <v-window v-model=\"tab\">\n <v-window-item value=\"summary\">\n <UXModelNode\n :model-id=\"props.modelId\"\n :nodeid=\"'_'\"\n :small-mode=\"true\"\n @myclick=\"clicked\"\n />\n </v-window-item>\n <v-window-item value=\"detailed\">\n <UXModelNode\n :model-id=\"props.modelId\"\n :nodeid=\"'_'\"\n :small-mode=\"false\"\n @myclick=\"clicked\"\n />\n </v-window-item>\n </v-window> \n </v-col>\n </v-row>\n <div class=\"d-flex flex-wrap justify-space-between\">\n <v-btn\n color=\"secondary\"\n class=\"ma-1\"\n @click=\"TopLevel\"\n >\n Top Level<v-icon\n end\n icon=\"fa-regular fa-house\"\n />\n </v-btn>\n <v-btn\n class=\"ma-1\"\n color=\"secondary\"\n :disabled=\"BackDisabled\"\n @click=\"GoBack\"\n >\n Go Back<v-icon\n end\n icon=\"fa-solid fa-backward-step\"\n />\n </v-btn>\n </div>\n </v-sheet>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, computed, reactive, onMounted, onBeforeUnmount, toRaw } from 'vue'\n\nimport { ModelStore, _estate } from './../stores/modelStore.js'\n\nimport UXModelNode from './UXModelNode.vue'\n\nimport { ObservabilityPayloadTransformer, IObservabilityPayloadTransformerOptions, SubscriptionTopic, type ISubscriptionPayload, \n type ISubscriptions, type ISubscription } from '@nsshunt/stsinstrumentmanagerclient'\n\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { IObservabilitySubscriberManagerOptions } from './../commonTypes.js'\n\nimport { defaultLogger, Sleep } from '@nsshunt/stsutils';\n\nimport { SocketClientSubscriber, RESTClientSubscriber } from '@nsshunt/stsinstrumentmanagerclient'\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nlet subscriptionOptions: IObservabilitySubscriberManagerOptions\n\nconst props = defineProps<{ \n modelId: string\n}>();\n\nconst store = ModelStore()\n\nlet observabilityPayloadTransformer: ObservabilityPayloadTransformer = new ObservabilityPayloadTransformer({\n logger: defaultLogger,\n maxLogLength: 200\n})\n\nlet metricsSubscriber: SocketClientSubscriber | RESTClientSubscriber | undefined;\n\nconst baseColour = chalk.hex('#57A1A8');\n\nconst LogDebug = (message: any) => {\n defaultLogger.debug(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst LogError = (message: any) => {\n defaultLogger.error(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst LogWarning = (message: any) => {\n defaultLogger.warn(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst TransformSubscriptionPayloadCallback = (subscriptionPayload: ISubscriptionPayload): void => {\n try {\n observabilityPayloadTransformer.TransformSubscriptionPayloadCallback(subscriptionPayload);\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined) === 0) {\n const agentModel = observabilityPayloadTransformer.agentModel;\n store.UpdateAgentModel(props.modelId, agentModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.Services) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.ServiceInstances) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.ServiceInstance) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n } catch (error) {\n LogError(`TransformSubscriptionPayloadCallback(): #modelId: [${props.modelId}], Error: [${error}]`);\n }\n}\n\n// Note: Every call to this function will yield a new id\nconst GetRootLevelSubscriptions = () => [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.AllServicesCombined\n },\n cb: TransformSubscriptionPayloadCallback\n}, {\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.AllAgentsCombined\n },\n cb: TransformSubscriptionPayloadCallback\n}];\n\n// Note: Every call to this function will yield a new id\nconst GetServicesSubscriptions = () => [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.Services\n },\n cb: TransformSubscriptionPayloadCallback\n}];\n\n// Note: Every call to this function will yield a new id\nconst GetServiceInstancesSubscriptions = (serviceId: string) => {\n return [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.ServiceInstances,\n key: serviceId\n },\n cb: TransformSubscriptionPayloadCallback\n }];\n}\n\n// Note: Every call to this function will yield a new id\nconst GetServiceInstanceSubscriptions = (serviceId: string, serviceInstanceId: string) => {\n return [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.ServiceInstance,\n key: serviceId,\n subkey: serviceInstanceId\n },\n cb: TransformSubscriptionPayloadCallback\n }];\n}\n \ninterface INavigationSubscriptions {\n subscriptionHistoryStack: ISubscriptions[]\n currentSubscriptions: ISubscriptions | null\n}\n\nlet navigationSubscriptions: INavigationSubscriptions = {\n subscriptionHistoryStack: [ ],\n currentSubscriptions: null\n}\n\nlet reactiveNavigationSubscriptions: INavigationSubscriptions = reactive(navigationSubscriptions);\n\nconst getPathString = (sub: ISubscription): string => {\n if (sub.subscriptionKey.key && sub.subscriptionKey.subkey) {\n return `${sub.subscriptionKey.topic}[${sub.subscriptionKey.key}/${sub.subscriptionKey.subkey}]`\n }\n if (sub.subscriptionKey.key) {\n return `${sub.subscriptionKey.topic}[${sub.subscriptionKey.key}]`\n }\n return `${sub.subscriptionKey.topic}`\n}\nconst navigationPath = computed(() => {\n let pathString = '';\n let sep = '';\n reactiveNavigationSubscriptions.subscriptionHistoryStack.forEach((s) => {\n pathString += sep + getPathString(s[0])\n sep = '/';\n })\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n return pathString + sep + getPathString(reactiveNavigationSubscriptions.currentSubscriptions[0])\n }\n return pathString;\n})\n\nconst BackDisabled = computed(() => {\n return reactiveNavigationSubscriptions.subscriptionHistoryStack.length < 1\n});\n \nconst modelNode = reactive({\n node: { }\n});\n \nconst modelPos = computed({\n get: () => modelNode.node,\n set: (val) => {\n modelNode.node = val;\n }\n})\n\nconst clicked = function(id: any) {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].serviceModelSubscriptionKey) {\n switch (store._models[props.modelId].serviceModelSubscriptionKey?.topic) {\n case SubscriptionTopic.AllServicesCombined :\n navigate(GetServicesSubscriptions());\n break;\n case SubscriptionTopic.Services :\n navigate(GetServiceInstancesSubscriptions(id));\n break;\n case SubscriptionTopic.ServiceInstances :\n navigate(GetServiceInstanceSubscriptions(store._models[props.modelId].serviceModelSubscriptionKey?.key as string, id));\n break;\n }\n }\n }\n}\n\nconst UpdateModelCursor = () => { \n const subscriptions: ISubscriptions | null = reactiveNavigationSubscriptions.currentSubscriptions;\n if (metricsSubscriber && subscriptions) {\n metricsSubscriber.UpdateModelCursor(subscriptions);\n }\n}\n\nconst navigate = function(subscriptions: ISubscriptions) {\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n reactiveNavigationSubscriptions.subscriptionHistoryStack.push(reactiveNavigationSubscriptions.currentSubscriptions);\n } else {\n LogWarning(`navigate: obj.currentSubscriptions not defined`);\n }\n reactiveNavigationSubscriptions.currentSubscriptions = subscriptions;\n LogDebug(`navigate: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(subscriptions)})`)\n UpdateModelCursor();\n}\n \nconst GoBack = function() {\n if (reactiveNavigationSubscriptions.subscriptionHistoryStack.length > 0) {\n let key = reactiveNavigationSubscriptions.subscriptionHistoryStack.pop();\n if (key) {\n reactiveNavigationSubscriptions.currentSubscriptions = key;\n LogDebug(`GoBack: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)})`)\n UpdateModelCursor();\n } else {\n LogDebug(`GoBack: subscriptions key not defined`) \n }\n } else {\n LogDebug(`GoBack: subscriptions empty`)\n }\n}\n \nconst TopLevel = function() {\n reactiveNavigationSubscriptions.subscriptionHistoryStack = [ ];\n reactiveNavigationSubscriptions.currentSubscriptions = GetRootLevelSubscriptions();\n LogDebug(`TopLevel: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)})`)\n UpdateModelCursor();\n}\n\nonMounted(() => {\n LogDebug(`onMounted()`);\n})\n\nonBeforeUnmount(() => {\n LogDebug(`onBeforeUnmount()`)\n Stop();\n});\n\nlet tab = ref(null);\n\nconst Stop = async () => {\n LogDebug(`Stop()`)\n store.UpdateSate(props.modelId, _estate.STOPPING);\n\n if (metricsSubscriber) {\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n metricsSubscriber.UnSubscribe(reactiveNavigationSubscriptions.currentSubscriptions)\n await Sleep(250); // Given some time for the server to cleanly unsubscribe ...\n }\n if (metricsSubscriber && subscriptionOptions.consumeInstrumentationMode === 'PROXY') {\n const socketClientSubscriber: SocketClientSubscriber = (metricsSubscriber as SocketClientSubscriber);\n if (socketClientSubscriber.socket) {\n socketClientSubscriber.socket.disconnect();\n }\n }\n metricsSubscriber = undefined;\n }\n store.UpdateSate(props.modelId, _estate.IDLE);\n}\n\nconst Start = async (options: IObservabilitySubscriberManagerOptions) => {\n LogDebug(`Start()`)\n store.UpdateSate(props.modelId, _estate.STARTING);\n subscriptionOptions = options;\n LogDebug(`Start(): Options: [${JSON.stringify(subscriptionOptions)}]`)\n if (options.consumeInstrumentationMode === 'PROXY') {\n LogDebug(`Start(): consumeInstrumentationMode: [${options.consumeInstrumentationMode}]`)\n metricsSubscriber = new SocketClientSubscriber({\n instrumentManagerEndpoint: options.instrumentManagerEndpoint,\n instrumentManagerPort: options.instrumentManagerPort,\n consumeInstrumentationMode: options.consumeInstrumentationMode,\n instrumentManagerAPIRoot: options.instrumentManagerAPIRoot,\n modelId: options.modelId\n });\n } else {\n LogDebug(`Start(): consumeInstrumentationMode: [${options.consumeInstrumentationMode}]`)\n metricsSubscriber = new RESTClientSubscriber({\n urlBase: `${options.instrumentManagerEndpoint}:${options.instrumentManagerPort}${options.instrumentManagerAPIRoot}`,\n logger: defaultLogger,\n keepAlive: 1000,\n })\n }\n\n reactiveNavigationSubscriptions.currentSubscriptions = GetRootLevelSubscriptions();\n LogDebug(`Start(): observabilitySubscriberManager().UpdateModelCursor(): Mode: [${options.consumeInstrumentationMode}] rootLevelSubscriptions: [(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)}]`)\n UpdateModelCursor();\n \n store.UpdateSate(props.modelId, _estate.STARTED);\n}\n\ndefineExpose({\n Start,\n Stop\n})\n\n</script>\n\n<style>\n.brown {\n background-color: brown\n}\n</style>\n\n","<template>\n <v-sheet\n theme=\"light\"\n rounded=\"lg\"\n class=\"ma-4 mr-0 pa-2\"\n :elevation=\"10\"\n >\n UXModelNavigator - Path: {{ navigationPath }}\n <v-row no-gutters>\n <v-col>\n <v-tabs\n v-model=\"tab\"\n background-color=\"primary\"\n >\n <v-tab value=\"summary\">\n Summary\n </v-tab>\n <v-tab value=\"detailed\">\n Detailed\n </v-tab>\n </v-tabs>\n <v-window v-model=\"tab\">\n <v-window-item value=\"summary\">\n <UXModelNode\n :model-id=\"props.modelId\"\n :nodeid=\"'_'\"\n :small-mode=\"true\"\n @myclick=\"clicked\"\n />\n </v-window-item>\n <v-window-item value=\"detailed\">\n <UXModelNode\n :model-id=\"props.modelId\"\n :nodeid=\"'_'\"\n :small-mode=\"false\"\n @myclick=\"clicked\"\n />\n </v-window-item>\n </v-window> \n </v-col>\n </v-row>\n <div class=\"d-flex flex-wrap justify-space-between\">\n <v-btn\n color=\"secondary\"\n class=\"ma-1\"\n @click=\"TopLevel\"\n >\n Top Level<v-icon\n end\n icon=\"fa-regular fa-house\"\n />\n </v-btn>\n <v-btn\n class=\"ma-1\"\n color=\"secondary\"\n :disabled=\"BackDisabled\"\n @click=\"GoBack\"\n >\n Go Back<v-icon\n end\n icon=\"fa-solid fa-backward-step\"\n />\n </v-btn>\n </div>\n </v-sheet>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint @typescript-eslint/no-unused-vars: 0, @typescript-eslint/no-explicit-any: 0 */ // --> OFF\nimport { ref, computed, reactive, onMounted, onBeforeUnmount, toRaw } from 'vue'\n\nimport { ModelStore, _estate } from './../stores/modelStore.js'\n\nimport UXModelNode from './UXModelNode.vue'\n\nimport { ObservabilityPayloadTransformer, IObservabilityPayloadTransformerOptions, SubscriptionTopic, type ISubscriptionPayload, \n type ISubscriptions, type ISubscription } from '@nsshunt/stsinstrumentmanagerclient'\n\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { IObservabilitySubscriberManagerOptions } from './../commonTypes.js'\n\nimport { defaultLogger, Sleep } from '@nsshunt/stsutils';\n\nimport { SocketClientSubscriber, RESTClientSubscriber } from '@nsshunt/stsinstrumentmanagerclient'\n\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nlet subscriptionOptions: IObservabilitySubscriberManagerOptions\n\nconst props = defineProps<{ \n modelId: string\n}>();\n\nconst store = ModelStore()\n\nlet observabilityPayloadTransformer: ObservabilityPayloadTransformer = new ObservabilityPayloadTransformer({\n logger: defaultLogger,\n maxLogLength: 200\n})\n\nlet metricsSubscriber: SocketClientSubscriber | RESTClientSubscriber | undefined;\n\nconst baseColour = chalk.hex('#57A1A8');\n\nconst LogDebug = (message: any) => {\n defaultLogger.debug(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst LogError = (message: any) => {\n defaultLogger.error(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst LogWarning = (message: any) => {\n defaultLogger.warn(baseColour(`stsuxvue:UXModelNavigator:${message}`));\n}\n\nconst TransformSubscriptionPayloadCallback = (subscriptionPayload: ISubscriptionPayload): void => {\n try {\n observabilityPayloadTransformer.TransformSubscriptionPayloadCallback(subscriptionPayload);\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllAgentsCombined) === 0) {\n const agentModel = observabilityPayloadTransformer.agentModel;\n store.UpdateAgentModel(props.modelId, agentModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.AllServicesCombined) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.Services) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.ServiceInstances) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n\n if (subscriptionPayload.subscriptionKey.topic.localeCompare(SubscriptionTopic.ServiceInstance) === 0) {\n const serviceModel = observabilityPayloadTransformer.serviceModel;\n store.UpdateServiceModel(props.modelId, serviceModel, subscriptionPayload.subscriptionKey);\n }\n } catch (error) {\n LogError(`TransformSubscriptionPayloadCallback(): #modelId: [${props.modelId}], Error: [${error}]`);\n }\n}\n\n// Note: Every call to this function will yield a new id\nconst GetRootLevelSubscriptions = () => [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.AllServicesCombined\n },\n cb: TransformSubscriptionPayloadCallback\n}, {\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.AllAgentsCombined\n },\n cb: TransformSubscriptionPayloadCallback\n}];\n\n// Note: Every call to this function will yield a new id\nconst GetServicesSubscriptions = () => [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.Services\n },\n cb: TransformSubscriptionPayloadCallback\n}];\n\n// Note: Every call to this function will yield a new id\nconst GetServiceInstancesSubscriptions = (serviceId: string) => {\n return [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.ServiceInstances,\n key: serviceId\n },\n cb: TransformSubscriptionPayloadCallback\n }];\n}\n\n// Note: Every call to this function will yield a new id\nconst GetServiceInstanceSubscriptions = (serviceId: string, serviceInstanceId: string) => {\n return [{\n subscriptionKey: {\n id: uuidv4(),\n topic: SubscriptionTopic.ServiceInstance,\n key: serviceId,\n subkey: serviceInstanceId\n },\n cb: TransformSubscriptionPayloadCallback\n }];\n}\n \ninterface INavigationSubscriptions {\n subscriptionHistoryStack: ISubscriptions[]\n currentSubscriptions: ISubscriptions | null\n}\n\nlet navigationSubscriptions: INavigationSubscriptions = {\n subscriptionHistoryStack: [ ],\n currentSubscriptions: null\n}\n\nlet reactiveNavigationSubscriptions: INavigationSubscriptions = reactive(navigationSubscriptions);\n\nconst getPathString = (sub: ISubscription): string => {\n if (sub.subscriptionKey.key && sub.subscriptionKey.subkey) {\n return `${sub.subscriptionKey.topic}[${sub.subscriptionKey.key}/${sub.subscriptionKey.subkey}]`\n }\n if (sub.subscriptionKey.key) {\n return `${sub.subscriptionKey.topic}[${sub.subscriptionKey.key}]`\n }\n return `${sub.subscriptionKey.topic}`\n}\nconst navigationPath = computed(() => {\n let pathString = '';\n let sep = '';\n reactiveNavigationSubscriptions.subscriptionHistoryStack.forEach((s) => {\n pathString += sep + getPathString(s[0])\n sep = '/';\n })\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n return pathString + sep + getPathString(reactiveNavigationSubscriptions.currentSubscriptions[0])\n }\n return pathString;\n})\n\nconst BackDisabled = computed(() => {\n return reactiveNavigationSubscriptions.subscriptionHistoryStack.length < 1\n});\n \nconst modelNode = reactive({\n node: { }\n});\n \nconst modelPos = computed({\n get: () => modelNode.node,\n set: (val) => {\n modelNode.node = val;\n }\n})\n\nconst clicked = function(id: any) {\n if (store._models[props.modelId]) {\n if (store._models[props.modelId].serviceModelSubscriptionKey) {\n switch (store._models[props.modelId].serviceModelSubscriptionKey?.topic) {\n case SubscriptionTopic.AllServicesCombined :\n navigate(GetServicesSubscriptions());\n break;\n case SubscriptionTopic.Services :\n navigate(GetServiceInstancesSubscriptions(id));\n break;\n case SubscriptionTopic.ServiceInstances :\n navigate(GetServiceInstanceSubscriptions(store._models[props.modelId].serviceModelSubscriptionKey?.key as string, id));\n break;\n }\n }\n }\n}\n\nconst UpdateModelCursor = () => { \n const subscriptions: ISubscriptions | null = reactiveNavigationSubscriptions.currentSubscriptions;\n if (metricsSubscriber && subscriptions) {\n metricsSubscriber.UpdateModelCursor(subscriptions);\n }\n}\n\nconst navigate = function(subscriptions: ISubscriptions) {\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n reactiveNavigationSubscriptions.subscriptionHistoryStack.push(reactiveNavigationSubscriptions.currentSubscriptions);\n } else {\n LogWarning(`navigate: obj.currentSubscriptions not defined`);\n }\n reactiveNavigationSubscriptions.currentSubscriptions = subscriptions;\n LogDebug(`navigate: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(subscriptions)})`)\n UpdateModelCursor();\n}\n \nconst GoBack = function() {\n if (reactiveNavigationSubscriptions.subscriptionHistoryStack.length > 0) {\n let key = reactiveNavigationSubscriptions.subscriptionHistoryStack.pop();\n if (key) {\n reactiveNavigationSubscriptions.currentSubscriptions = key;\n LogDebug(`GoBack: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)})`)\n UpdateModelCursor();\n } else {\n LogDebug(`GoBack: subscriptions key not defined`) \n }\n } else {\n LogDebug(`GoBack: subscriptions empty`)\n }\n}\n \nconst TopLevel = function() {\n reactiveNavigationSubscriptions.subscriptionHistoryStack = [ ];\n reactiveNavigationSubscriptions.currentSubscriptions = GetRootLevelSubscriptions();\n LogDebug(`TopLevel: observabilitySubscriberManager().UpdateModelCursor(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)})`)\n UpdateModelCursor();\n}\n\nonMounted(() => {\n LogDebug(`onMounted()`);\n})\n\nonBeforeUnmount(() => {\n LogDebug(`onBeforeUnmount()`)\n Stop();\n});\n\nlet tab = ref(null);\n\nconst Stop = async () => {\n LogDebug(`Stop()`)\n store.UpdateSate(props.modelId, _estate.STOPPING);\n\n if (metricsSubscriber) {\n if (reactiveNavigationSubscriptions.currentSubscriptions) {\n metricsSubscriber.UnSubscribe(reactiveNavigationSubscriptions.currentSubscriptions)\n await Sleep(250); // Given some time for the server to cleanly unsubscribe ...\n }\n if (metricsSubscriber && subscriptionOptions.consumeInstrumentationMode === 'PROXY') {\n const socketClientSubscriber: SocketClientSubscriber = (metricsSubscriber as SocketClientSubscriber);\n if (socketClientSubscriber.socket) {\n socketClientSubscriber.socket.disconnect();\n }\n }\n metricsSubscriber = undefined;\n }\n store.UpdateSate(props.modelId, _estate.IDLE);\n}\n\nconst Start = async (options: IObservabilitySubscriberManagerOptions) => {\n LogDebug(`Start()`)\n store.UpdateSate(props.modelId, _estate.STARTING);\n subscriptionOptions = options;\n LogDebug(`Start(): Options: [${JSON.stringify(subscriptionOptions)}]`)\n if (options.consumeInstrumentationMode === 'PROXY') {\n LogDebug(`Start(): consumeInstrumentationMode: [${options.consumeInstrumentationMode}]`)\n metricsSubscriber = new SocketClientSubscriber({\n instrumentManagerEndpoint: options.instrumentManagerEndpoint,\n instrumentManagerPort: options.instrumentManagerPort,\n consumeInstrumentationMode: options.consumeInstrumentationMode,\n instrumentManagerAPIRoot: options.instrumentManagerAPIRoot,\n modelId: options.modelId\n });\n } else {\n LogDebug(`Start(): consumeInstrumentationMode: [${options.consumeInstrumentationMode}]`)\n metricsSubscriber = new RESTClientSubscriber({\n urlBase: `${options.instrumentManagerEndpoint}:${options.instrumentManagerPort}${options.instrumentManagerAPIRoot}`,\n logger: defaultLogger,\n keepAlive: 1000,\n })\n }\n\n reactiveNavigationSubscriptions.currentSubscriptions = GetRootLevelSubscriptions();\n LogDebug(`Start(): observabilitySubscriberManager().UpdateModelCursor(): Mode: [${options.consumeInstrumentationMode}] rootLevelSubscriptions: [(${JSON.stringify(reactiveNavigationSubscriptions.currentSubscriptions)}]`)\n UpdateModelCursor();\n \n store.UpdateSate(props.modelId, _estate.STARTED);\n}\n\ndefineExpose({\n Start,\n Stop\n})\n\n</script>\n\n<style>\n.brown {\n background-color: brown\n}\n</style>\n\n","<template>\n <v-container class=\"yellowgreen\">\n <v-row>\n <div>\n UXTestForm\n </div>\n <v-divider /> \n </v-row>\n\n <v-row v-if=\"showFormValues\">\n <v-col\n cols=\"12\"\n >\n <v-row\n v-for=\"(formDataElement, index) in formData\"\n :key=\"index\"\n class=\"ml-1 text-caption\"\n >\n {{ formDataElement.model }}\n </v-row>\n </v-col>\n </v-row>\n\n <v-row>\n <v-divider />\n </v-row>\n\n <v-row\n v-for=\"(formDataElement, index) in formData\"\n :key=\"index\"\n >\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('divider') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-divider />\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('radio') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-radio-group\n v-model=\"formDataElement.model\"\n :hide-details=\"true\"\n >\n <v-radio\n v-for=\"n in formDataElement.radioGroup\"\n :key=\"n.key\"\n :label=\"`${n.label}`\"\n :value=\"n.value\"\n />\n </v-radio-group>\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('textField') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-text-field\n v-model=\"formDataElement.model\"\n :label=\"formDataElement.label\"\n required\n :hint=\"formDataElement.hint\"\n persistent-hint\n />\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('checkbox') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-checkbox\n v-model=\"formDataElement.model\"\n :hide-details=\"true\"\n >\n <template #label>\n <div class=\"text-wrap\">\n {{ formDataElement.description }}\n </div>\n </template>\n </v-checkbox>\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('slider') === 0\"\n cols=\"12\"\n class=\"mx-3\"\n style=\"padding: 0 10px 0 0;\"\n >\n <div class=\"ml-0 text-caption\">\n {{ formDataElement.description }}\n </div>\n <v-slider\n v-model=\"(formDataElement.model as number)\"\n class=\"align-center\"\n max=\"5\"\n min=\"1\"\n step=\"1\"\n show-ticks=\"always\"\n tick-size=\"6\"\n hide-details\n >\n <template #append>\n <v-text-field\n v-model=\"formDataElement.model\"\n hide-details\n single-line\n density=\"compact\"\n type=\"number\"\n style=\"width: 110px\"\n variant=\"outlined\"\n />\n </template>\n </v-slider>\n </v-col>\n </v-row>\n </v-container>\n</template>\n\n<script setup lang=\"ts\">\n//import 'vuetify/styles'\n\n//import * as directives from 'vuetify/directives'\n//import * as VSlider from 'vuetify/components/VSlider'\n//import * as VTextField from 'vuetify/components/VTextField'\n\nimport { ref, onMounted } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\n\nimport chalk from 'chalk';\n\nimport { IFormData } from './../commonTypes.js'\n\n//const props = withDefaults(defineProps<{\nwithDefaults(defineProps<{\n showFormValues?: boolean\n}>(), {\n showFormValues: true,\n})\n\n/*\nconst radioGroup = computed({\n get: () => { return applicationStore.testProfiles[cursor.value].profileName; },\n set: (value) => { \n //locate(value);\n emit('profileSelected', value);\n }\n});\n*/\n\n//const formData = computed(() => applicationStore.testProfiles[cursor.value]);\n\nonMounted(() => {\n //radioGroup.value = applicationStore.testProfiles[0].profileName;\n console.log(chalk.green('onMounted'))\n});\n\nconst formData = ref<IFormData>([\n {\n elementType: 'textField',\n model: 'My test Profile',\n label: 'Profile Name',\n hint: 'Profile name. Used as output file name.'\n },\n {\n elementType: 'radio',\n model: 'so2',\n radioGroup: [{\n key: 'o1',\n label:'Option One',\n value: 'so1'\n },\n {\n key: 'o2',\n label:'Option Two',\n value: 'so2'\n }] \n },\n {\n elementType: 'slider',\n model: 5,\n description: 'Some description for the slider one.'\n },\n {\n elementType: 'slider',\n model: 2,\n description: 'Some description for the slider two.'\n },\n {\n elementType: 'checkbox',\n model: true,\n description: 'Some description for checkbox 1'\n },\n {\n elementType: 'divider'\n },\n {\n elementType: 'checkbox',\n model: false,\n description: 'Some description for checkbox 2'\n }\n]);\n\ndefineExpose({\n formData\n})\n\n</script>\n\n<style>\n.yellowgreen {\n background-color: yellowgreen;\n}\n.cyan {\n background-color: cyan;\n}\n</style>\n","<template>\n <v-container class=\"yellowgreen\">\n <v-row>\n <div>\n UXTestForm\n </div>\n <v-divider /> \n </v-row>\n\n <v-row v-if=\"showFormValues\">\n <v-col\n cols=\"12\"\n >\n <v-row\n v-for=\"(formDataElement, index) in formData\"\n :key=\"index\"\n class=\"ml-1 text-caption\"\n >\n {{ formDataElement.model }}\n </v-row>\n </v-col>\n </v-row>\n\n <v-row>\n <v-divider />\n </v-row>\n\n <v-row\n v-for=\"(formDataElement, index) in formData\"\n :key=\"index\"\n >\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('divider') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-divider />\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('radio') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-radio-group\n v-model=\"formDataElement.model\"\n :hide-details=\"true\"\n >\n <v-radio\n v-for=\"n in formDataElement.radioGroup\"\n :key=\"n.key\"\n :label=\"`${n.label}`\"\n :value=\"n.value\"\n />\n </v-radio-group>\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('textField') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-text-field\n v-model=\"formDataElement.model\"\n :label=\"formDataElement.label\"\n required\n :hint=\"formDataElement.hint\"\n persistent-hint\n />\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('checkbox') === 0\"\n cols=\"12\"\n class=\"ma-0 pa-0\"\n >\n <v-checkbox\n v-model=\"formDataElement.model\"\n :hide-details=\"true\"\n >\n <template #label>\n <div class=\"text-wrap\">\n {{ formDataElement.description }}\n </div>\n </template>\n </v-checkbox>\n </v-col>\n <v-col\n v-if=\"formDataElement.elementType.localeCompare('slider') === 0\"\n cols=\"12\"\n class=\"mx-3\"\n style=\"padding: 0 10px 0 0;\"\n >\n <div class=\"ml-0 text-caption\">\n {{ formDataElement.description }}\n </div>\n <v-slider\n v-model=\"(formDataElement.model as number)\"\n class=\"align-center\"\n max=\"5\"\n min=\"1\"\n step=\"1\"\n show-ticks=\"always\"\n tick-size=\"6\"\n hide-details\n >\n <template #append>\n <v-text-field\n v-model=\"formDataElement.model\"\n hide-details\n single-line\n density=\"compact\"\n type=\"number\"\n style=\"width: 110px\"\n variant=\"outlined\"\n />\n </template>\n </v-slider>\n </v-col>\n </v-row>\n </v-container>\n</template>\n\n<script setup lang=\"ts\">\n//import 'vuetify/styles'\n\n//import * as directives from 'vuetify/directives'\n//import * as VSlider from 'vuetify/components/VSlider'\n//import * as VTextField from 'vuetify/components/VTextField'\n\nimport { ref, onMounted } from \"vue\"; //Docs say this is not needed, but it throws an error without it. Ref: https://stackoverflow.com/questions/69998772/problems-with-vue-3-2-script-setup-tag-and-typescript-types\n\nimport chalk from 'chalk';\n\nimport { IFormData } from './../commonTypes.js'\n\n//const props = withDefaults(defineProps<{\nwithDefaults(defineProps<{\n showFormValues?: boolean\n}>(), {\n showFormValues: true,\n})\n\n/*\nconst radioGroup = computed({\n get: () => { return applicationStore.testProfiles[cursor.value].profileName; },\n set: (value) => { \n //locate(value);\n emit('profileSelected', value);\n }\n});\n*/\n\n//const formData = computed(() => applicationStore.testProfiles[cursor.value]);\n\nonMounted(() => {\n //radioGroup.value = applicationStore.testProfiles[0].profileName;\n console.log(chalk.green('onMounted'))\n});\n\nconst formData = ref<IFormData>([\n {\n elementType: 'textField',\n model: 'My test Profile',\n label: 'Profile Name',\n hint: 'Profile name. Used as output file name.'\n },\n {\n elementType: 'radio',\n model: 'so2',\n radioGroup: [{\n key: 'o1',\n label:'Option One',\n value: 'so1'\n },\n {\n key: 'o2',\n label:'Option Two',\n value: 'so2'\n }] \n },\n {\n elementType: 'slider',\n model: 5,\n description: 'Some description for the slider one.'\n },\n {\n elementType: 'slider',\n model: 2,\n description: 'Some description for the slider two.'\n },\n {\n elementType: 'checkbox',\n model: true,\n description: 'Some description for checkbox 1'\n },\n {\n elementType: 'divider'\n },\n {\n elementType: 'checkbox',\n model: false,\n description: 'Some description for checkbox 2'\n }\n]);\n\ndefineExpose({\n formData\n})\n\n</script>\n\n<style>\n.yellowgreen {\n background-color: yellowgreen;\n}\n.cyan {\n background-color: cyan;\n}\n</style>\n"],"x_google_ignoreList":[10,11,12,13,14,15,16,17,18,19,22,23,24,25,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,IAAY,UAAL,yBAAA,SAAA;AACH,SAAA,UAAA;AACA,SAAA,cAAA;AACA,SAAA,aAAA;AACA,SAAA,cAAA;AACA,SAAA,mBAAA;;KACH;AAED,IAAa,cAAA,GAAA,MAAA,aAAyB,qBAAqB;CAGvD,aAA2B;AACvB,SAAO;GACH,SAAS,EAAG;GACZ,QAAQ,EAAG;GAEd;;CAiBL,SAAS;EAyDL,QAAQ,SAAyB;AAC7B,OAAI,CAAC,KAAK,OAAO,SACb,MAAK,OAAO,WAAW,QAAQ;AAEnC,UAAO,KAAK,OAAO;;EAGvB,WAAW,SAAiB,SAAuB;AAC/C,QAAK,OAAO,WAAW;;EAa3B,gBAAgB,SAAuB;AACnC,QAAK,QAAQ,WAAW;IACpB,cAAc,EAAG;IACjB,YAAY,EAAG;IACf,WAAW,EAAG;IACd,6BAA6B;IAC7B,2BAA2B;IAC3B,cAAc,EAAG;IACjB,iBAAiB;IACjB,OAAO;IACV;;EAGL,mBAAmB,SAAiB,OAAmB,iBAAyC;AAC5F,OAAI;AACA,QAAI,CAAC,KAAK,QAAQ,SACd,MAAK,gBAAgB,QAAQ;AAEjC,SAAK,QAAQ,SAAS,gBAAA,GAAA,iBAAA,SAA0B,MAAM;AACtD,SAAK,QAAQ,SAAS,8BAA8B;YAC/C,OAAO;AACZ,YAAQ,MAAM,MAAM;;;EAI5B,iBAAiB,SAAiB,OAAmB,iBAAyC;AAC1F,OAAI,CAAC,KAAK,QAAQ,SACd,MAAK,gBAAgB,QAAQ;AAEjC,QAAK,QAAQ,SAAS,cAAA,GAAA,iBAAA,SAAwB,MAAM;AACpD,QAAK,QAAQ,SAAS,4BAA4B;;EAKtD,cAAc,SAAiB,IAAoB;AAC/C,OAAI;AACA,QAAI,CAAC,KAAK,QAAQ,SACd,MAAK,gBAAgB,QAAQ;AAEjC,QAAI,CAAC,KAAK,QAAQ,SAAS,aAAa,IACpC,MAAK,QAAQ,SAAS,aAAa,MAAM,KAAK,KAAK,QAAQ,SAAS,kBAAkB,GAAG,GAAG,MAAM,IAAI,CAAC;AAE3G,WAAO,KAAK,QAAQ,SAAS,aAAa;YACrC,OAAO;AACZ,WAAO,UAAU;;;EAG5B;CACJ,CAAC;;;AChMF,IAAa,oBAA4B;;;;;;ECIzC,MAAM,iBAAA,GAAA,IAAA,4BAA2C,OAAO,mBAAmB;EAG3E,MAAM,SAAS,CAAC;GACZ,MAAM;GACN,MAAM;IAAC;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAC;GAC7B,EAAE;GACC,MAAM;GACN,MAAM;IAAC;IAAG;IAAG;IAAG;IAAG;IAAG;IAAG;IAAC;GAC7B,CAAA;EAED,MAAM,UAAU;GACZ,OAAO;IACH,MAAM;IACN,QAAQ;IACR,YAAY,EACR,SAAS,OACZ;IACD,SAAS,EACL,MAAM,OACT;IACJ;GACD,aAAa,EACT,KAAK;IACD,YAAY;IACZ,aAAa;IACb,aAAa;IAChB,EACJ;GACD,YAAY,EACR,SAAS,OACZ;GACD,QAAQ;IACJ,MAAM;IACN,OAAO;IACP,QAAQ,CAAC,cAAa;IACzB;GACD,OAAO,EACH,YAAY;IAAC;IAAM;IAAM;IAAM;IAAO;IAAQ;IAAQ;IAAK,EAC9D;GACD,OAAO,EACH,OAAO,EACH,MAAM,SACV,EACH;GACD,MAAM,EACF,SAAS,GACZ;GACD,SAAS;IACL,SAAS;IACT,GAAG,EAEC,WAAW,SAAU,KAAU;AAC3B,YAAO,OAAO,MAAM;OAE5B;IACJ;GAEH;EAED,MAAM,YAAA,GAAA,IAAA,KAAe,KAAK;EAG1B,MAAM,eAAe,gBAAuB,kBAAyB;AACjE,UAAO,GAAG,OAAO,eAAe,KAAK,MAAM,EAAE,GAAG;AAChD,UAAO,GAAG,OAAO,cAAc,KAAK,MAAM,EAAE,GAAG;AAG9C,YAAS,MAAc,aAAa,QAAQ,KAAK;;AAGtD,WAAa,EACT,aACH,CAAA;;4DAaS,OAAA,MAAA,EAAA,GAAA,IAAA,cAAA,GAAA,IAAA,OADA,cAAA,EAAA;aALM;IAAJ,KAAI;IACJ,QAAO;IACP,OAAM;IACI;IACD;;;;;;;;;;EEjFrB,MAAM,iBAAA,GAAA,IAAA,4BAA2C,OAAO,mBAAmB;EAE3E,IAAI,WAAW;EAUf,MAAM,UAAA,GAAA,IAAA,UAA4B,CAAE,EAAE,MAAM,EAAG,EAAE,CAAE,CAAC;EAEpD,MAAM,eAAe,QAAgB;AACjC,UAAO,GAAG,KAAK,KAAK;IAChB,GAAG;IACH,GAAG;IACN,CAAC;AACF,OAAI,OAAO,GAAG,KAAK,SAAS,GACxB,QAAO,GAAG,KAAK,OAAO;;EAI9B,MAAM,UAAU;GACZ,OAAO;IACH,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,YAAY;KACR,SAAS;KACT,QAAQ;KACR,kBAAkB,EACd,OAAO,KACX;KACH;IACD,SAAS,EACL,MAAM,OACT;IACD,MAAM,EACF,SAAS,OACZ;IACD,WAAW,EACP,SAAS,OACb;IACH;GACD,YAAY,EACR,SAAS,OACZ;GACD,QAAQ;IACJ,OAAO;IACP,OAAO;IACP,QAAQ,CAAE,UAAU;IACvB;GACD,SAAS,EACL,MAAM,GACT;GACD,MAAM;IAGF,MAAM;IACN,UAAU;KACN,gBAAgB;KAChB,aAAa;KACb,WAAW;KACX,OAAO;MAAC;MAAG;MAAK;MAAG;KACvB;IACH;GACD,SAAS,EACL,SAAS,OACZ;GACD,OAAO;IAGH,MAAM;IACN,OAAO;IACP,YAAY;IACZ,QAAQ,EACJ,MAAM,OACV;IACH;GACD,OAAO;IACH,KAAK;IAEL,YAAY;IACZ,QAAQ,EACJ,WAAW,SAAS,KAAU,OAAY;AACtC,YAAO,IAAI,QAAQ,EAAE;OAE7B;IACH;GACD,QAAQ,EACJ,MAAM,OACV;GAEH;AAED,WAAa,EACT,aACH,CAAA;;4DAYS,OAAA,MAAA,EAAA,GAAA,IAAA,cAAA,GAAA,IAAA,OADA,cAAA,EAAA;IALE,KAAI;IACJ,QAAO;IACP,OAAM;IACI;IACD;;;;;;;;;;;;;;EEnGrB,MAAM,iBAAA,GAAA,IAAA,4BAA2C,OAAO,mBAAmB;EAQ3E,MAAM,oBAAoB;EAe1B,MAAM,UAAU;GACZ,OAAO;IACH,IAAI;IAEJ,MAAM;IACN,YAAY,EACR,SAAS,OACZ;IACD,SAAS,EACL,MAAM,OACT;IACD,SAAS;IACT,SAAS;IACT,oBAAoB;IACvB;GACD,aAAa,EACT,KAAK;IACD,WAAW;IACX,aAAa;IACb,YAAY;IAMhB,EACH;GACD,QAAQ;IAAC;IAAW;IAAW;IAAU;GACzC,YAAY;IACR,SAAS;IACT,YAAY;IAEZ,OAAO,EACH,QAAQ,CAAC,OAAM,EAClB;IAED,WAAW,SAAU,KAAU,KAAU;AAErC,YAAO;;IAEX,SAAS;IACT,SAAS;IACT,YAAY,EACR,SAAS,MACb;IACH;GACD,QAAQ;IACJ,OAAO;IACP,QAAQ,CAAC,OAAM;IAClB;GACD,OAAO,EACH,YAAY;IAAC;IAAM;IAAO;IAAO,EACpC;GACD,OAAO,EACH,QAAQ,EACJ,MAAM,MACV,EACH;GACD,QAAQ,EACJ,MAAM,OACT;GACD,SAAS,EACL,SAAS,OACZ;GACD,MAAM;IACF,MAAM;IACN,SAAS;KACL,KAAK;KACL,OAAO;KACP,QAAQ;KACR,MAAM;KACT;IACL;GAEH;AAED,WAAa,EACT,aACH,CAAA;;4DA5GS,OAAA,MAAA,EAAA,GAAA,IAAA,cAAA,GAAA,IAAA,OADA,cAAA,EAAA;IANE,KAAI;IACJ,QAAO;IACP,OAAM;IACI;IACT,QAAQ,QAAA;IACT,OAAA,EAAA,cAAA,OAAuB;;;;;;;;;;;;;;EEOnC,MAAM,iBAAA,GAAA,IAAA,4BAA2C,OAAO,mBAAmB;EAG3E,MAAM,QAAQ;EAKd,MAAM,oBAAoB;EAe1B,MAAM,WAAA,GAAA,IAAA,gBAAyB;AAC3B,UAAO;IACH,OAAO;KACH,IAAI;KAEJ,MAAM;KACT;IACD,aAAa,EACT,WAAW;KACP,SAAS;KACT,YAAY;KACZ,UAAU;KACV,QAAQ;MACJ,QAAQ;MACR,MAAM;MACN,YAAY;MACZ,OAAO,KAAA;MACV;KACD,YAAY;MACR,MAAM,EACF,MAAM,OACT;MACD,OAAO,EACH,MAAM,OACV;MACJ;KACJ,EACH;IACD,QAAQ;KAAC;KAAW;KAAW;KAAU;IACzC,QAAQ,MAAM;IACd,QAAQ;KACJ,MAAM;KACN,UAAU;KACV,UAAU;KACV,UAAU;KACV,SAAS;KACT,SAAS;KACT,QAAQ,EACJ,iBAAiB,MACpB;KACD,SAAS,EACL,MAAM,GACT;KAID,YAAY,EACR,UAAU,GACd;KACJ;IAEH;IACH;AAEF,WAAa,EACT,aACH,CAAA;;4DArFS,OAAA,MAAA,EAAA,GAAA,IAAA,cAAA,GAAA,IAAA,OADA,cAAA,EAAA;IALE,KAAI;IACJ,QAAO;IACP,OAAM;IACL,SAAS,QAAA;IACT,QAAQ,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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AiB;GACnC,WAAW,WAAW;GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,iBAAiB;GACjB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB,mBAAmB;IAClB,UAAU;IACV,YAAY;IACZ;GACD;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,iBAAiB;GACjB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB,mBAAmB;IAClB,UAAU;IACV,YAAY;IACZ;GACD,OAAO;IACN;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;GACD,YAAY,MAAM;GAClB;EACD;GACC,WAAW;GACX,OAAO,MAAM;GACb,oBAAoB;GACpB,UAAU;GACV,iBAAiB;GACjB,UAAU;GACV,kBAAkB,iBAAiB;GACnC,WAAW,WAAW;GACtB,mBAAmB;IAClB,UAAU;IACV,YAAY;IACZ;GACD,OAAO;IACN;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;KACC,OAAO;KACP,aAAa;KACb;IACD;GACD,YAAY,MAAM;GAClB;EACD;CACD,cAAc,CAAC;EACd,WAAW;EACX,OAAO,MAAM;EACb,oBAAoB;EACpB,UAAU;EACV,iBAAiB;EACjB,UAAU;EACV,kBAAkB,iBAAiB;EACnC,WAAW,WAAW;EACtB,mBAAmB;GAClB,gBAAgB;GAChB,mBAAmB;GACnB;EACD,CAAC;CACF,UAAU;GACR,YAAY;GACZ,qBAAqB;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD,6BAA6B;IAC5B,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf;GACD,WAAW;IACV;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,iBAAiB;KACjB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB,mBAAmB;MAClB,UAAU;MACV,YAAY;MACZ;KACD;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,iBAAiB;KACjB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB,mBAAmB;MAClB,UAAU;MACV,YAAY;MACZ;KACD;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KACb,oBAAoB;KACpB,UAAU;KACV,kBAAkB,iBAAiB;KACnC,WAAW,WAAW;KACtB;IACD;KACC,WAAW;KACX,OAAO,MAAM;KA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"}
|